├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Example App ├── MCEmojiPicker.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── ivanizumkin.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist └── iOS Example App │ ├── App │ └── AppDelegate.swift │ ├── Controllers │ └── ViewController.swift │ └── Resources │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json │ ├── Base.lproj │ └── LaunchScreen.storyboard │ ├── Info.plist │ └── Localization │ ├── ar.lproj │ └── Localizable.strings │ ├── ca.lproj │ └── Localizable.strings │ ├── cs.lproj │ └── Localizable.strings │ ├── da.lproj │ └── Localizable.strings │ ├── de.lproj │ └── Localizable.strings │ ├── el.lproj │ └── Localizable.strings │ ├── en-AU.lproj │ └── Localizable.strings │ ├── en-GB.lproj │ └── Localizable.strings │ ├── en-IN.lproj │ └── Localizable.strings │ ├── en.lproj │ └── Localizable.strings │ ├── es-419.lproj │ └── Localizable.strings │ ├── es.lproj │ └── Localizable.strings │ ├── fi.lproj │ └── Localizable.strings │ ├── fr-CA.lproj │ └── Localizable.strings │ ├── fr.lproj │ └── Localizable.strings │ ├── he.lproj │ └── Localizable.strings │ ├── hi.lproj │ └── Localizable.strings │ ├── hr.lproj │ └── Localizable.strings │ ├── hu.lproj │ └── Localizable.strings │ ├── id.lproj │ └── Localizable.strings │ ├── it.lproj │ └── Localizable.strings │ ├── ja.lproj │ └── Localizable.strings │ ├── ko.lproj │ └── Localizable.strings │ ├── ms.lproj │ └── Localizable.strings │ ├── nb.lproj │ └── Localizable.strings │ ├── nl.lproj │ └── Localizable.strings │ ├── pl.lproj │ └── Localizable.strings │ ├── pt-BR.lproj │ └── Localizable.strings │ ├── pt-PT.lproj │ └── Localizable.strings │ ├── ro.lproj │ └── Localizable.strings │ ├── ru.lproj │ └── Localizable.strings │ ├── sk.lproj │ └── Localizable.strings │ ├── sv.lproj │ └── Localizable.strings │ ├── th.lproj │ └── Localizable.strings │ ├── tr.lproj │ └── Localizable.strings │ ├── uk.lproj │ └── Localizable.strings │ ├── vi.lproj │ └── Localizable.strings │ ├── zh-HK.lproj │ └── Localizable.strings │ ├── zh-Hans.lproj │ └── Localizable.strings │ └── zh-Hant.lproj │ └── Localizable.strings ├── LICENSE ├── MCEmojiPicker.podspec ├── Package.swift ├── README.md └── Sources ├── MCEmojiPicker ├── Bindings │ └── Observable.swift ├── Common │ └── Extensions │ │ ├── Array+Extension.swift │ │ ├── Bundle+Extension.swift │ │ ├── Double+Extension.swift │ │ ├── NSNotification.Name+Extension.swift │ │ ├── UICollectionReusableView+Extension.swift │ │ ├── UIColor+Extension.swift │ │ └── View+Extension.swift ├── Model │ ├── MCEmoji.swift │ ├── MCEmojiCategory.swift │ └── MCPickerArrowDirection.swift ├── Resources │ └── Localization │ │ ├── ar.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── ca.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── cs.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── da.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── de.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── el.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── en-AU.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── en-GB.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── en-IN.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── en.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── es-419.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── es.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── fi.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── fr-CA.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── fr.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── he.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── hi.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── hr.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── hu.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── id.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── it.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── ja.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── ko.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── ms.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── nb.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── nl.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── pl.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── pt-BR.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── pt-PT.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── ro.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── ru.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── sk.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── sv.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── th.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── tr.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── uk.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── vi.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── zh-HK.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ ├── zh-Hans.lproj │ │ └── MCEmojiPickerLocalizable.strings │ │ └── zh-Hant.lproj │ │ └── MCEmojiPickerLocalizable.strings ├── Services │ └── MCUnicodeManager.swift ├── View │ ├── MCEmojiPickerRepresentableController.swift │ ├── MCEmojiPickerViewController.swift │ └── Views │ │ ├── EmojiCategoryView │ │ ├── MCEmojiCategoryIconView.swift │ │ └── MCTouchableEmojiCategoryView.swift │ │ ├── EmojiPreviewView │ │ ├── MCEmojiPreviewBackgroundView.swift │ │ └── MCEmojiPreviewView.swift │ │ ├── EmojiSkinTonePickerView │ │ ├── MCEmojiSkinTonePickerBackgroundView.swift │ │ ├── MCEmojiSkinTonePickerContainerView.swift │ │ └── MCEmojiSkinTonePickerView.swift │ │ ├── MCEmojiCollectionViewCell.swift │ │ ├── MCEmojiPickerView.swift │ │ └── MCEmojiSectionHeader.swift └── ViewModel │ └── MCEmojiPickerViewModel.swift └── Supporting Files └── MCEmojiPicker.h /.gitignore: -------------------------------------------------------------------------------- 1 | .swiftpm/ 2 | .DS_Store -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | izzyumkin@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Here provided info about contribution process and recommendations. 4 | 5 | ## Codestyle 6 | 7 | I try to follow the [Ray Wenderlich](https://github.com/RedMadRobot/RMR-swift-style-guide) code style. Please observe it too in this repository. 8 | 9 | ## Apps Using section 10 | 11 | To add your application to this list, just add this line of code to [README.md](https://github.com/izyumkin/MCEmojiPicker/blob/main/README.md) file by replacing only the application identifiers with yours. 12 | 13 | ``` 14 | 15 | ``` 16 | 17 | > ❗️ Don't worry when your apps logo doesn't load after the contributing. I'll take care of it when I see your Pull Request. 18 | -------------------------------------------------------------------------------- /Example App/MCEmojiPicker.xcodeproj/xcuserdata/ivanizumkin.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | MCEmojiPicker.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | iOS Example App.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 0 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Example App/iOS Example App/App/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | @main 26 | class AppDelegate: UIResponder, UIApplicationDelegate { 27 | 28 | var window: UIWindow? 29 | 30 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 31 | window = UIWindow(frame: UIScreen.main.bounds) 32 | window?.rootViewController = ViewController() 33 | window?.makeKeyAndVisible() 34 | return true 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Controllers/ViewController.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | import MCEmojiPicker 25 | 26 | class ViewController: UIViewController { 27 | 28 | // MARK: - Private Properties 29 | 30 | private lazy var emojiButton: UIButton = { 31 | let button = UIButton(type: .system) 32 | button.translatesAutoresizingMaskIntoConstraints = false 33 | button.layer.cornerRadius = 12 34 | if #available(iOS 13.0, *) { 35 | button.backgroundColor = .systemGray4 36 | button.layer.cornerCurve = .continuous 37 | } else { 38 | button.backgroundColor = UIColor(red: 209.0, green: 209.0, blue: 214.0, alpha: 1.0) 39 | } 40 | button.setTitle("🙋🏻‍♂️", for: .normal) 41 | button.titleLabel?.font = UIFont.systemFont(ofSize: 65) 42 | button.addTarget(self, action: #selector(emojiButtonAction(_:)), for: .touchUpInside) 43 | button.addGestureRecognizer( 44 | UIPanGestureRecognizer( 45 | target: self, 46 | action: #selector(didPanEmojiButton(_:)) 47 | ) 48 | ) 49 | return button 50 | }() 51 | 52 | // MARK: - Initializers 53 | 54 | init() { 55 | super.init(nibName: nil, bundle: nil) 56 | setupBackgroundColor() 57 | setupEmojiButtonLayout() 58 | } 59 | 60 | required init?(coder: NSCoder) { 61 | fatalError("init(coder:) has not been implemented") 62 | } 63 | 64 | // MARK: - Life Cycle 65 | 66 | override func viewDidAppear(_ animated: Bool) { 67 | super.viewDidAppear(animated) 68 | showHintAlertIfNeeded() 69 | } 70 | 71 | // MARK: - Actions 72 | 73 | @objc private func emojiButtonAction(_ sender: UIButton) { 74 | let viewController = MCEmojiPickerViewController() 75 | viewController.delegate = self 76 | viewController.sourceView = sender 77 | present(viewController, animated: true) 78 | } 79 | 80 | @objc private func didPanEmojiButton( 81 | _ gestureRecognizer: UIPanGestureRecognizer 82 | ) { 83 | emojiButton.center = gestureRecognizer.location(in: view) 84 | } 85 | 86 | // MARK: - Private Methods 87 | 88 | private func showHintAlertIfNeeded() { 89 | let firstLaunchKey = "firstLaunch" 90 | guard !UserDefaults.standard.bool(forKey: firstLaunchKey) else { return } 91 | UserDefaults.standard.set(true, forKey: firstLaunchKey) 92 | let hintAlert = UIAlertController( 93 | title: NSLocalizedString("hintAlertTitle", comment: ""), 94 | message: NSLocalizedString("hintAlertMessage", comment: ""), 95 | preferredStyle: .alert 96 | ) 97 | hintAlert.addAction(.init(title: "OK", style: .default)) 98 | present(hintAlert, animated: true) 99 | } 100 | 101 | private func setupBackgroundColor() { 102 | if #available(iOS 13.0, *) { 103 | view.backgroundColor = .systemGroupedBackground 104 | } else { 105 | view.backgroundColor = .white 106 | } 107 | } 108 | 109 | private func setupEmojiButtonLayout() { 110 | view.addSubview(emojiButton) 111 | 112 | NSLayoutConstraint.activate([ 113 | emojiButton.widthAnchor.constraint(equalToConstant: 88), 114 | emojiButton.heightAnchor.constraint(equalToConstant: 88), 115 | emojiButton.centerXAnchor.constraint(equalTo: view.centerXAnchor), 116 | emojiButton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: -200) 117 | ]) 118 | } 119 | } 120 | 121 | // MARK: - MCEmojiPickerDelegate 122 | 123 | extension ViewController: MCEmojiPickerDelegate { 124 | func didGetEmoji(emoji: String) { 125 | emojiButton.setTitle(emoji, for: .normal) 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ar.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "تلميح 👻"; 24 | "hintAlertMessage" = "للتوضيح ، أضفت القدرة على تحريك زر استدعاء منتقي الرموز التعبيرية."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ca.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Indici 👻"; 24 | "hintAlertMessage" = "Per demostrar-ho, he afegit la possibilitat de moure el botó de trucada del selector d'emojis."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/cs.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Náznak 👻"; 24 | "hintAlertMessage" = "Pro demonstraci jsem přidal možnost přesunout tlačítko pro volání výběru emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/da.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Antydning 👻"; 24 | "hintAlertMessage" = "For demonstrere tilføjede jeg muligheden for at flytte emoji-vælgeropkaldsknappen."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/de.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Hinweis 👻"; 24 | "hintAlertMessage" = "Zur Demonstration habe ich die Möglichkeit hinzugefügt, die Emoji-Picker-Schaltfläche zu verschieben."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/el.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Υπαινιγμός 👻"; 24 | "hintAlertMessage" = "Για επίδειξη, πρόσθεσα τη δυνατότητα μετακίνησης του κουμπιού κλήσης επιλογής emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/en-AU.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Hint 👻"; 24 | "hintAlertMessage" = "For demonstrate, I added the ability to move the emoji picker call button."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/en-GB.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Hint 👻"; 24 | "hintAlertMessage" = "For demonstrate, I added the ability to move the emoji picker call button."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/en-IN.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Hint 👻"; 24 | "hintAlertMessage" = "For demonstrate, I added the ability to move the emoji picker call button."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Hint 👻"; 24 | "hintAlertMessage" = "For demonstrate, I added the ability to move the emoji picker call button."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/es-419.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Indirecta 👻"; 24 | "hintAlertMessage" = "Para demostrar, agregué la capacidad de mover el botón de llamada del selector de emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/es.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Indirecta 👻"; 24 | "hintAlertMessage" = "Para demostrar, agregué la capacidad de mover el botón de llamada del selector de emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/fi.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Vihje 👻"; 24 | "hintAlertMessage" = "Esittelyä varten lisäsin mahdollisuuden siirtää emoji-valitsimen soittopainiketta."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/fr-CA.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Indice 👻"; 24 | "hintAlertMessage" = "Pour démontrer, j’ai ajouté la possibilité de déplacer le bouton d’appel du sélecteur d’emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/fr.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Indice 👻"; 24 | "hintAlertMessage" = "Pour démontrer, j’ai ajouté la possibilité de déplacer le bouton d’appel du sélecteur d’emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/he.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "רמז 👻"; 24 | "hintAlertMessage" = "לצורך הדגמה, הוספתי את היכולת להזיז את כפתור השיחה של בורר האימוג'י."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/hi.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "संकेत 👻"; 24 | "hintAlertMessage" = "प्रदर्शन के लिए, मैंने इमोजी पिकर कॉल बटन को स्थानांतरित करने की क्षमता जोड़ी।"; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/hr.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Nagovještaj 👻"; 24 | "hintAlertMessage" = "Za demonstraciju sam dodao mogućnost pomicanja gumba za poziv birača emojija."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/hu.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Célzás 👻"; 24 | "hintAlertMessage" = "A demonstráláshoz hozzáadtam az emojiválasztó hívásgomb mozgatásának lehetőségét."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/id.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Petunjuk 👻"; 24 | "hintAlertMessage" = "Untuk demonstrasi, saya menambahkan kemampuan untuk memindahkan tombol panggilan pemilih emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/it.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Alludere 👻"; 24 | "hintAlertMessage" = "Per dimostrare, ho aggiunto la possibilità di spostare il pulsante di chiamata del selettore emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ja.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "ヒント 👻"; 24 | "hintAlertMessage" = "デモンストレーションのために、絵文字ピッカーの呼び出しボタンを移動する機能を追加しました。"; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ko.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "힌트 👻"; 24 | "hintAlertMessage" = "시연을 위해 이모티콘 선택기 통화 버튼을 이동하는 기능을 추가했습니다."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ms.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Pembayang 👻"; 24 | "hintAlertMessage" = "Untuk menunjukkan, saya menambah keupayaan untuk menggerakkan butang panggilan pemilih emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/nb.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Vink 👻"; 24 | "hintAlertMessage" = "For å demonstrere la jeg til muligheten til å flytte emoji-velgerens ringeknapp."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/nl.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Tip 👻"; 24 | "hintAlertMessage" = "Om te demonstreren, heb ik de mogelijkheid toegevoegd om de emoji picker call-knop te verplaatsen."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/pl.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Aluzja 👻"; 24 | "hintAlertMessage" = "Aby to zademonstrować, dodałem możliwość przesuwania przycisku wyboru emoji."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/pt-BR.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Dica 👻"; 24 | "hintAlertMessage" = "Para demonstrar, adicionei a capacidade de mover o botão de chamada do seletor de emojis."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/pt-PT.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Dica 👻"; 24 | "hintAlertMessage" = "Para demonstrar, adicionei a capacidade de mover o botão de chamada de apanhador de emojis."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ro.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Indiciu 👻"; 24 | "hintAlertMessage" = "Pentru a demonstra, am adăugat capacitatea de a muta butonul de apel emoji picker."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/ru.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Подсказка 👻"; 24 | "hintAlertMessage" = "Для демонстрации я добавил возможность перемещать кнопку вызова выбора эмодзи."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/sk.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Rada 👻"; 24 | "hintAlertMessage" = "Na demonštráciu som pridal možnosť presunúť tlačidlo volania emodži."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/sv.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Antydan 👻"; 24 | "hintAlertMessage" = "För att demonstrera lade jag till möjligheten att flytta emoji-väljarens samtalsknapp."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/th.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "เกริ่น 👻"; 24 | "hintAlertMessage" = "สําหรับการสาธิตฉันเพิ่มความสามารถในการย้ายปุ่มโทรตัวเลือกอีโมจิ"; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/tr.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "İma 👻"; 24 | "hintAlertMessage" = "Göstermek için, emoji seçici çağrı düğmesini hareket ettirme yeteneğini ekledim."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/uk.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Підказка 👻"; 24 | "hintAlertMessage" = "Для демонстрації я додав можливість переміщати кнопку виклику вибору емодзі."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/vi.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "Kháy 👻"; 24 | "hintAlertMessage" = "Để minh họa, tôi đã thêm khả năng di chuyển nút gọi bộ chọn biểu tượng cảm xúc."; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/zh-HK.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "提示 👻"; 24 | "hintAlertMessage" = "为了演示,我添加了移动表情符号选择器呼叫按钮的功能。"; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "提示 👻"; 24 | "hintAlertMessage" = "为了演示,我添加了移动表情符号选择器呼叫按钮的功能。"; 25 | -------------------------------------------------------------------------------- /Example App/iOS Example App/Resources/Localization/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "hintAlertTitle" = "提示 👻"; 24 | "hintAlertMessage" = "為咗演示,我添加了移動表情符號選擇器呼叫掣嘅功能。"; 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Ivan Izyumkin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MCEmojiPicker.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'MCEmojiPicker' 3 | s.version = '1.2.3' 4 | s.license = 'MIT' 5 | s.summary = 'Emoji picker for iOS like on MacOS' 6 | s.homepage = 'https://github.com/izyumkin/MCEmojiPicker' 7 | s.authors = { 'Ivan Izyumkin' => 'izzyumkin@gmail.com' } 8 | 9 | s.source = { :git => 'https://github.com/izyumkin/MCEmojiPicker.git', :tag => s.version.to_s } 10 | s.source_files = 'Sources/MCEmojiPicker/**/*.swift' 11 | s.resource_bundle = { "MCEmojiPicker" => ["Sources/MCEmojiPicker/**/*.lproj/*.strings"] } 12 | s.swift_version = '4.2' 13 | s.platform = :ios, '11.1' 14 | end 15 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.7 2 | 3 | import PackageDescription 4 | 5 | let package = Package( 6 | name: "MCEmojiPicker", 7 | defaultLocalization: "en", 8 | platforms: [.iOS("11.1")], 9 | products: [.library(name: "MCEmojiPicker", targets: ["MCEmojiPicker"])], 10 | dependencies: [], 11 | targets: [.target( 12 | name: "MCEmojiPicker", 13 | dependencies: [], 14 | path: "Sources/MCEmojiPicker" 15 | )], 16 | swiftLanguageVersions: [.v4_2] 17 | ) 18 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Bindings/Observable.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | /// Simple implementation of the observer pattern. 26 | final class Observable { 27 | 28 | // MARK: - Public Properties 29 | 30 | public typealias Listener = (T) -> Void 31 | 32 | /// Holds the current value of the observable. 33 | /// 34 | /// The `didSet` block ensures that the `Listener` closure is called whenever the value changes. 35 | public var value: T { 36 | didSet { 37 | listeners.forEach { $0(value) } 38 | } 39 | } 40 | 41 | // MARK: - Private Properties 42 | 43 | /// Holds a closure that will be called whenever the value changes. 44 | private var listeners = [Listener]() 45 | 46 | // MARK: - Initializers 47 | 48 | init(value: T) { 49 | self.value = value 50 | } 51 | 52 | // MARK: - Public Methods 53 | 54 | /// Allows you to set the `Listener` closure. 55 | public func bind(_ listener: @escaping Listener) { 56 | self.listeners.append(listener) 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/Array+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | extension Array where Element == Int { 26 | /// Converts hex values into emoji. 27 | /// 28 | /// This example shows that one emoji can consist of either one hex value or several. 29 | /// ``` 30 | /// print([0x1F600].emoji()) // "😀" 31 | /// print([0x1F635, 0x200D, 0x1F4AB].emoji()) // "😵‍💫" 32 | /// ``` 33 | /// But if you put hex values not related to one emoji in one array. You will get a string of several emojis. 34 | /// ``` 35 | /// print([0x1F600, 0x1F635, 0x200D, 0x1F4AB].emoji()) // "😀😵‍💫" 36 | /// ``` 37 | func emoji() -> String { 38 | return self 39 | // Converting hex value into a 32-bit integer representation of emoji in the Unicode table. 40 | .map({ UnicodeScalar($0) }) 41 | // Removing the optional. 42 | .compactMap({ $0 }) 43 | // Converting a 32-bit integer to a character for correct representation. 44 | .map({ String($0) }) 45 | // Combine all the received values to get the final emoji. 46 | .joined() 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/Bundle+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | /// In SPM, the parameter `Bundle.module` is used to access resources, but in CocoaPods this is done differently. 26 | /// In order for the library to support both dependency managers, it is necessary to add a similar parameter to the CocoaPods version. 27 | /// 28 | /// To do this, a check has been added before the extension. 29 | #if !SWIFT_PACKAGE 30 | extension Bundle { 31 | /// Resources bundle. 32 | static var module: Bundle { 33 | let path = Bundle(for: MCUnicodeManager.self).path( 34 | forResource: "MCEmojiPicker", 35 | ofType: "bundle" 36 | ) ?? "" 37 | return Bundle(path: path) ?? Bundle.main 38 | } 39 | } 40 | #endif 41 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/Double+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | extension Double { 26 | /// Angle `270°` in radians. 27 | static let downAngle: CGFloat = 1.5 * Double.pi 28 | /// Angle `180°` in radians. 29 | static let leftAngle: CGFloat = Double.pi 30 | /// Angle `90°` in radians. 31 | static let upAngle: CGFloat = Double.pi / 2 32 | /// Angle `0°` in radians. 33 | static let rightAngle: CGFloat = 0.0 34 | 35 | /// Used to increase various sizes (fonts, heights and widths). 36 | /// - Parameter isOnlyToIncrease: Responsible for whether the value will decrease if the screen size is smaller than the default. 37 | func fit(isOnlyToIncrease: Bool = true) -> Double { 38 | let defaultScreenSize = CGSize(width: 375, height: 812) 39 | let currentScreenSize = UIScreen.main.bounds.size 40 | // Check the type of the current device, if it is not a phone, return the original value. 41 | guard UIDevice.current.userInterfaceIdiom == .phone else { return self } 42 | var scale = 1.0 43 | if isOnlyToIncrease && currentScreenSize.height > defaultScreenSize.height || !isOnlyToIncrease { 44 | scale = currentScreenSize.height / defaultScreenSize.height 45 | } 46 | return self * scale 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/NSNotification.Name+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2023 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | extension NSNotification.Name { 26 | static let MCEmojiPickerDidDisappear = NSNotification.Name("MCEmojiPickerDidDisappear") 27 | } 28 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/UICollectionReusableView+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | extension UICollectionReusableView { 26 | /// Converts the class name to a string. 27 | static var reuseIdentifier: String { 28 | return String(describing: self) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/UIColor+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | extension UIColor { 26 | /// Background color for `MCEmojiPickerView`. 27 | /// 28 | /// This is a standard color from UIKit - `.systemGroupedBackground`. 29 | static let popoverBackgroundColor = UIColor( 30 | light: UIColor(red: 0.95, green: 0.95, blue: 0.97, alpha: 1.0), 31 | dark: UIColor(red: 0.11, green: 0.11, blue: 0.12, alpha: 1.0) 32 | ) 33 | /// Background color for `MCEmojiSkinTonePickerBackgroundView` and `MCEmojiPreviewView`. 34 | /// 35 | /// The colors were taken from similar iOS elements. 36 | static let previewAndSkinToneBackgroundViewColor = UIColor( 37 | light: UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0), 38 | dark: UIColor(red: 0.45, green: 0.45, blue: 0.46, alpha: 1.0) 39 | ) 40 | } 41 | 42 | extension UIColor { 43 | /// Adds support for dark and light interface style modes. 44 | convenience init(light: UIColor, dark: UIColor) { 45 | if #available(iOS 13.0, *) { 46 | self.init(dynamicProvider: { trait in 47 | trait.userInterfaceStyle == .dark ? dark : light 48 | }) 49 | } else { 50 | self.init(cgColor: light.cgColor) 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Common/Extensions/View+Extension.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2023 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import SwiftUI 24 | 25 | @available(iOS 13, *) 26 | extension View { 27 | /// The method adds a macOS style emoji picker. 28 | /// 29 | /// - Parameters: 30 | /// - isPresented: Observed value which is responsible for the state of the picker. 31 | /// - selectedEmoji: Observed value which is updated by the selected emoji. 32 | /// - arrowDirection: The direction of the arrow for EmojiPicker. 33 | /// - customHeight: Custom height for EmojiPicker. 34 | /// - horizontalInset: Inset from the sourceView border. 35 | /// - isDismissAfterChoosing: A boolean value that determines whether the screen will be hidden after the emoji is selected. 36 | /// - selectedEmojiCategoryTintColor: Color for the selected emoji category. 37 | /// - feedBackGeneratorStyle: Feedback generator style. To turn off, set `nil` to this parameter. 38 | @ViewBuilder public func emojiPicker( 39 | isPresented: Binding, 40 | selectedEmoji: Binding, 41 | arrowDirection: MCPickerArrowDirection? = nil, 42 | customHeight: CGFloat? = nil, 43 | horizontalInset: CGFloat? = nil, 44 | isDismissAfterChoosing: Bool? = nil, 45 | selectedEmojiCategoryTintColor: UIColor? = nil, 46 | feedBackGeneratorStyle: UIImpactFeedbackGenerator.FeedbackStyle? = nil 47 | ) -> some View { 48 | self.overlay( 49 | MCEmojiPickerRepresentableController( 50 | isPresented: isPresented, 51 | selectedEmoji: selectedEmoji, 52 | arrowDirection: arrowDirection, 53 | customHeight: customHeight, 54 | horizontalInset: horizontalInset, 55 | isDismissAfterChoosing: isDismissAfterChoosing, 56 | selectedEmojiCategoryTintColor: selectedEmojiCategoryTintColor, 57 | feedBackGeneratorStyle: feedBackGeneratorStyle 58 | ) 59 | .allowsHitTesting(false) 60 | ) 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Model/MCEmoji.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | /// The main model for interacting with emojis. 26 | struct MCEmoji { 27 | 28 | // MARK: - Types 29 | 30 | /// Keys for storage in UserDefaults. 31 | private enum StorageKeys { 32 | case skinTone(_ emoji: MCEmoji) 33 | case usageTimestamps(_ emoji: MCEmoji) 34 | 35 | var key: String { 36 | switch self { 37 | case .skinTone(let emoji): 38 | return emoji.emojiKeys.emoji() 39 | case .usageTimestamps(let emoji): 40 | return StorageKeys.skinTone(emoji).key + "-usage-timestamps" 41 | } 42 | } 43 | } 44 | 45 | // MARK: - Public Properties 46 | 47 | /// A boolean indicating whether the skin for this emoji has been selected before. 48 | public var isSkinBeenSelectedBefore: Bool { 49 | skinTone != nil 50 | } 51 | /// The current skin tone for this emoji, if one has been selected. 52 | public var skinTone: MCEmojiSkinTone? { 53 | let skinToneRawValue = UserDefaults.standard.integer(forKey: StorageKeys.skinTone(self).key) 54 | return MCEmojiSkinTone(rawValue: skinToneRawValue) 55 | } 56 | /// All times when the emoji has been selected. 57 | public var usage: [TimeInterval] { 58 | (UserDefaults.standard.array(forKey: StorageKeys.usageTimestamps(self).key) as? [TimeInterval]) ?? [] 59 | } 60 | /// The number of times this emoji has been selected. 61 | public var usageCount: Int { 62 | usage.count 63 | } 64 | /// The last time when this emoji has been selected. 65 | public var lastUsage: TimeInterval { 66 | usage.first ?? .zero 67 | } 68 | 69 | /// The string representation of the emoji. 70 | private(set) public var string: String = "" 71 | /// The keys used to represent the emoji. 72 | private(set) public var emojiKeys: [Int] 73 | /// A boolean indicating whether this emoji has different skin tones available. 74 | private(set) public var isSkinToneSupport: Bool 75 | /// The search key for the emoji. 76 | private(set) public var searchKey: String 77 | /// The emoji version. 78 | private(set) public var version: Double 79 | 80 | // MARK: - Initializers 81 | 82 | /// Initializes a new instance of the `MCEmoji` struct. 83 | 84 | /// - Parameters: 85 | /// - emojiKeys: The keys used to represent the emoji. 86 | /// - isSkinToneSupport: A boolean indicating whether this emoji has different skin tones available. 87 | /// - searchKey: The search key for the emoji. 88 | /// - version: The emoji version. 89 | public init( 90 | emojiKeys: [Int], 91 | isSkinToneSupport: Bool, 92 | searchKey: String, 93 | version: Double 94 | ) { 95 | self.emojiKeys = emojiKeys 96 | self.isSkinToneSupport = isSkinToneSupport 97 | self.searchKey = searchKey 98 | self.version = version 99 | 100 | string = getEmoji() 101 | } 102 | 103 | // MARK: - Public Methods 104 | 105 | /// Sets the skin tone of the emoji. 106 | 107 | /// - Parameters: 108 | /// - skinToneRawValue: The raw value of the `MCEmojiSkinTone`. 109 | public mutating func set(skinToneRawValue: Int) { 110 | UserDefaults.standard.set(skinToneRawValue, forKey: StorageKeys.skinTone(self).key) 111 | string = getEmoji() 112 | } 113 | 114 | /// Increments the usage count for this emoji. 115 | public func incrementUsageCount() { 116 | let nowTimestamp = Date().timeIntervalSince1970 117 | UserDefaults.standard.set([nowTimestamp] + usage, forKey: StorageKeys.usageTimestamps(self).key) 118 | } 119 | 120 | // MARK: - Private Methods 121 | 122 | /// Returns the string representation of this smiley. Considering the skin tone, if it has been selected. 123 | private func getEmoji() -> String { 124 | guard isSkinToneSupport, 125 | let skinTone = skinTone, 126 | let skinToneKey = skinTone.skinKey else { 127 | return emojiKeys.emoji() 128 | } 129 | var bufferEmojiKeys = emojiKeys 130 | bufferEmojiKeys.insert(skinToneKey, at: 1) 131 | return bufferEmojiKeys.emoji() 132 | } 133 | } 134 | 135 | /// This enumeration allows you to determine which skin tones can be set for `MCEmoji`. 136 | enum MCEmojiSkinTone: Int, CaseIterable { 137 | case none = 1 138 | case light = 2 139 | case mediumLight = 3 140 | case medium = 4 141 | case mediumDark = 5 142 | case dark = 6 143 | 144 | /// Hex value for the skin tone. 145 | var skinKey: Int? { 146 | switch self { 147 | case .none: 148 | return nil 149 | case .light: 150 | return 0x1F3FB 151 | case .mediumLight: 152 | return 0x1F3FC 153 | case .medium: 154 | return 0x1F3FD 155 | case .mediumDark: 156 | return 0x1F3FE 157 | case .dark: 158 | return 0x1F3FF 159 | } 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Model/MCEmojiCategory.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | /// The main model that is used to configure the main collection. 26 | struct MCEmojiCategory { 27 | var type: MCEmojiCategoryType 28 | var categoryName: String 29 | var emojis: [MCEmoji] 30 | } 31 | 32 | /// This enumeration shows a list of categories that are contained in the main collection. 33 | enum MCEmojiCategoryType: Int, CaseIterable { 34 | case frequentlyUsed 35 | case people 36 | case nature 37 | case foodAndDrink 38 | case activity 39 | case travelAndPlaces 40 | case objects 41 | case symbols 42 | case flags 43 | 44 | /// A constant key for accessing name localization resources for each category. 45 | var localizeKey: String { 46 | switch self { 47 | case .frequentlyUsed: 48 | return "frequentlyUsed" 49 | case .people: 50 | return "emotionsAndPeople" 51 | case .nature: 52 | return "animalsAndNature" 53 | case .foodAndDrink: 54 | return "foodAndDrinks" 55 | case .activity: 56 | return "activities" 57 | case .travelAndPlaces: 58 | return "travellingAndPlaces" 59 | case .objects: 60 | return "items" 61 | case .symbols: 62 | return "symbols" 63 | case .flags: 64 | return "flags" 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Model/MCPickerArrowDirection.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | /// This is a temporary enumeration that duplicates two cases from `UIPopoverArrowDirection'. 26 | public enum MCPickerArrowDirection: UInt { 27 | case up = 1 28 | case down = 2 29 | } 30 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ar.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "الأكثر استخداما"; 24 | "emotionsAndPeople" = "ابتسامات وأشخاص"; 25 | "animalsAndNature" = "حيوانات وطبيعة"; 26 | "foodAndDrinks" = "طعام وشراب"; 27 | "activities" = "نشاط"; 28 | "travellingAndPlaces" = "سفر وأماكن"; 29 | "items" = "عناصر"; 30 | "symbols" = "رموز"; 31 | "flags" = "أعلام"; 32 | 33 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ca.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ÜS FREQUENT"; 24 | "emotionsAndPeople" = "EMOTICONES I PERSONES"; 25 | "animalsAndNature" = "ANIMALS I NATURA"; 26 | "foodAndDrinks" = "MENJAR I BEGUDA"; 27 | "activities" = "ACTIVITATS"; 28 | "travellingAndPlaces" = "VIATGES I LLOCS"; 29 | "items" = "OBJECTES"; 30 | "symbols" = "SÍMBOLS"; 31 | "flags" = "BANDERES"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/cs.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ČASTO POUŽÍVANÉ"; 24 | "emotionsAndPeople" = "SMAJLÍCI A LIDÉ"; 25 | "animalsAndNature" = "ZVÍŘATA A PŘRODA"; 26 | "foodAndDrinks" = "JÍDLO A PITÍ"; 27 | "activities" = "AKTIVITA"; 28 | "travellingAndPlaces" = "CESTOVÁNÍ A MÍSTA"; 29 | "items" = "OBJEKTY"; 30 | "symbols" = "SYMBOLY"; 31 | "flags" = "VLAJKY"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/da.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "HYPPIGT BRUGTE"; 24 | "emotionsAndPeople" = "SMILEYS OG PERSONER"; 25 | "animalsAndNature" = "DYR OG NATUR"; 26 | "foodAndDrinks" = "MAD OG DRIKKEVARER"; 27 | "activities" = "AKTIVITET"; 28 | "travellingAndPlaces" = "REJSER OG STEDER"; 29 | "items" = "OBJEKTER"; 30 | "symbols" = "SYMBOLER"; 31 | "flags" = "FLAG"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/de.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "OFT BENUTZT"; 24 | "emotionsAndPeople" = "SMILEYS & PERSONEN"; 25 | "animalsAndNature" = "TIERE & NATUR"; 26 | "foodAndDrinks" = "ESSEN & TRINKEN"; 27 | "activities" = "AKTIVITÄT"; 28 | "travellingAndPlaces" = "REISEN & ORTE"; 29 | "items" = "OBJEKTE"; 30 | "symbols" = "SYMBOLE"; 31 | "flags" = "FLAGGEN"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/el.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ΣΥΧΝΗ ΧΡΗΣΗ"; 24 | "emotionsAndPeople" = "ΦΑΤΣΟΥΛΕΣ ΚΑΙ ΑΤΟΜΑ"; 25 | "animalsAndNature" = "ΖΩΑ ΚΑΙ ΦΥΣΗ"; 26 | "foodAndDrinks" = "ΦΑΓΗΤΟ ΚΑΙ ΠΟΤΟ"; 27 | "activities" = "ΔΡΑΣΤΗΡΙΟΤΗΤΑ"; 28 | "travellingAndPlaces" = "ΤΑΞΙΔΙΑ ΚΑΙ ΜΕΡΗ"; 29 | "items" = "ANTIKEIMENA"; 30 | "symbols" = "ΣΥΜΒΟΛΑ"; 31 | "flags" = "ΣΗΜΑΙΕΣ"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/en-AU.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "FREQUENTLY USED"; 24 | "emotionsAndPeople" = "SMILEYS & PEOPLE"; 25 | "animalsAndNature" = "ANIMALS & NATURE"; 26 | "foodAndDrinks" = "FOOD & DRINK"; 27 | "activities" = "ACTIVITY"; 28 | "travellingAndPlaces" = "TRAVEL & PLACES"; 29 | "items" = "OBJECTS"; 30 | "symbols" = "SYMBOLS"; 31 | "flags" = "FLAGS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/en-GB.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "FREQUENTLY USED"; 24 | "emotionsAndPeople" = "SMILEYS & PEOPLE"; 25 | "animalsAndNature" = "ANIMALS & NATURE"; 26 | "foodAndDrinks" = "FOOD & DRINK"; 27 | "activities" = "ACTIVITY"; 28 | "travellingAndPlaces" = "TRAVEL & PLACES"; 29 | "items" = "OBJECTS"; 30 | "symbols" = "SYMBOLS"; 31 | "flags" = "FLAGS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/en-IN.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "FREQUENTLY USED"; 24 | "emotionsAndPeople" = "SMILEYS & PEOPLE"; 25 | "animalsAndNature" = "ANIMALS & NATURE"; 26 | "foodAndDrinks" = "FOOD & DRINK"; 27 | "activities" = "ACTIVITY"; 28 | "travellingAndPlaces" = "TRAVEL & PLACES"; 29 | "items" = "OBJECTS"; 30 | "symbols" = "SYMBOLS"; 31 | "flags" = "FLAGS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/en.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "FREQUENTLY USED"; 24 | "emotionsAndPeople" = "SMILEYS & PEOPLE"; 25 | "animalsAndNature" = "ANIMALS & NATURE"; 26 | "foodAndDrinks" = "FOOD & DRINK"; 27 | "activities" = "ACTIVITY"; 28 | "travellingAndPlaces" = "TRAVEL & PLACES"; 29 | "items" = "OBJECTS"; 30 | "symbols" = "SYMBOLS"; 31 | "flags" = "FLAGS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/es-419.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "MÁS FRECUENTES"; 24 | "emotionsAndPeople" = "CARAS Y PERSONAS"; 25 | "animalsAndNature" = "ANIMALES Y NATURALEZA"; 26 | "foodAndDrinks" = "ALIMENTOS Y BEBIDAS"; 27 | "activities" = "ACTIVIDAD"; 28 | "travellingAndPlaces" = "VIAJES Y LUGARES"; 29 | "items" = "OBJETOS"; 30 | "symbols" = "SÍMBOLOS"; 31 | "flags" = "BANDERAS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/es.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "USADOS CON FRECUENCIA"; 24 | "emotionsAndPeople" = "EMOTICONOS Y PERSONAS"; 25 | "animalsAndNature" = "ANIMALES Y NATURALEZA"; 26 | "foodAndDrinks" = "COMIDA Y BEBIDA"; 27 | "activities" = "ACTIVIDADES"; 28 | "travellingAndPlaces" = "VIAJES Y DESTINOS"; 29 | "items" = "OBJETOS"; 30 | "symbols" = "SÍMBOLOS"; 31 | "flags" = "BANDERAS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/fi.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "USEIN KÄYTETYT"; 24 | "emotionsAndPeople" = "HYMIÖT JA IHMISET"; 25 | "animalsAndNature" = "ELÄIMET JA LUONTO"; 26 | "foodAndDrinks" = "RUOKA JA JUOMA"; 27 | "activities" = "TOIMINTA"; 28 | "travellingAndPlaces" = "MATKAILU JA PAIKAT"; 29 | "items" = "ESINEET"; 30 | "symbols" = "SYMBOLIT"; 31 | "flags" = "LIPUT"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/fr-CA.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "UTILISÉS FRÉQUEMMENT"; 24 | "emotionsAndPeople" = "ÉMOTICÔNES ET PERSONNES"; 25 | "animalsAndNature" = "ANIMAUX ET NATURE"; 26 | "foodAndDrinks" = "ALIMENT ET BOISSON"; 27 | "activities" = "ACTIVITÉ"; 28 | "travellingAndPlaces" = "VOYAGES ET LIEUX"; 29 | "items" = "OBJETS"; 30 | "symbols" = "SYMBOLES"; 31 | "flags" = "DRAPEAUX"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/fr.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "SOUVENT UTILISÉS"; 24 | "emotionsAndPeople" = "ÉMOTICÔNES ET PERSONNAGES"; 25 | "animalsAndNature" = "ANIMAUX ET NATURE"; 26 | "foodAndDrinks" = "NOURRITURE ET BOISSONS"; 27 | "activities" = "ACTIVITÉS"; 28 | "travellingAndPlaces" = "VOYAGES ET LIEUX"; 29 | "items" = "OBJETS"; 30 | "symbols" = "SYMBOLES"; 31 | "flags" = "DRAPEAUX"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/he.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "בשימוש תדיר"; 24 | "emotionsAndPeople" = "סמיילי ואנשים"; 25 | "animalsAndNature" = "בעלי חיים וטבע"; 26 | "foodAndDrinks" = "מזון ומשקאות"; 27 | "activities" = "פעילות"; 28 | "travellingAndPlaces" = "נסיעות ומקומות"; 29 | "items" = "חפצים"; 30 | "symbols" = "סימנים"; 31 | "flags" = "דגלים"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/hi.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "अक्सर उपयोग होने वाले"; 24 | "emotionsAndPeople" = "स्माइली और लोग"; 25 | "animalsAndNature" = "पशु और प्रकृति"; 26 | "foodAndDrinks" = "खाद्य और पेय"; 27 | "activities" = "ऐक्टिविटी"; 28 | "travellingAndPlaces" = "यात्रा और स्थान"; 29 | "items" = "चीजें"; 30 | "symbols" = "चिह्न"; 31 | "flags" = "फ़्लैग"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/hr.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ČESTO KORIŠTENO"; 24 | "emotionsAndPeople" = "SMAJLIĆI I OSOBE"; 25 | "animalsAndNature" = "ŽIVOTINJE I NATURE"; 26 | "foodAndDrinks" = "HRANA I PIĆE"; 27 | "activities" = "AKTIVNOST"; 28 | "travellingAndPlaces" = "PUTOVANJA I MJESTA"; 29 | "items" = "PREDMETI"; 30 | "symbols" = "SIMBOLI"; 31 | "flags" = "ZASTAVE"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/hu.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "GYAKRAN HASZNÁLTAK"; 24 | "emotionsAndPeople" = "HANGULATJELEK ÉS EMBEREK"; 25 | "animalsAndNature" = "ÁLLATOK ÉS TERMÉSZET"; 26 | "foodAndDrinks" = "ÉTELEK ÉS ITALOK"; 27 | "activities" = "TEVÉKENYSÉG"; 28 | "travellingAndPlaces" = "UTAZÁS ÉS HELYEK"; 29 | "items" = "TÁRGYAK"; 30 | "symbols" = "SZIMBÓLUMOK"; 31 | "flags" = "ZÁSZLÓK"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/id.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "SERING DIGUNAKAN"; 24 | "emotionsAndPeople" = "SMILEY & ORANG"; 25 | "animalsAndNature" = "HEWAN & ALAM"; 26 | "foodAndDrinks" = "MAKANAN & MINUMAN"; 27 | "activities" = "AKTIVITAS"; 28 | "travellingAndPlaces" = "PERJALANAN & TEMPAT"; 29 | "items" = "OBJEK"; 30 | "symbols" = "SIMBOL"; 31 | "flags" = "BENDERA"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/it.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "USATE DI FREQUENTE"; 24 | "emotionsAndPeople" = "EMOTICON E PERSONE"; 25 | "animalsAndNature" = "ANIMALI E NATURA"; 26 | "foodAndDrinks" = "CIBO E BEVANDE"; 27 | "activities" = "ATTIVITÀ"; 28 | "travellingAndPlaces" = "VIAGGI E LUOGHI"; 29 | "items" = "OGGETTI"; 30 | "symbols" = "SIMBOLI"; 31 | "flags" = "BANDIERE"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ja.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "よく使う項目"; 24 | "emotionsAndPeople" = "スマイリーと人々"; 25 | "animalsAndNature" = "動物と自然"; 26 | "foodAndDrinks" = "食べ物と飲み物"; 27 | "activities" = "活動"; 28 | "travellingAndPlaces" = "旅行と場所"; 29 | "items" = "物"; 30 | "symbols" = "記号"; 31 | "flags" = "旗"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ko.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "자주 사용하는 항목"; 24 | "emotionsAndPeople" = "스마일리 및 사람"; 25 | "animalsAndNature" = "동물 및 자연"; 26 | "foodAndDrinks" = "음식 및 음료"; 27 | "activities" = "활동"; 28 | "travellingAndPlaces" = "여행 및 장소"; 29 | "items" = "사물"; 30 | "symbols" = "기호"; 31 | "flags" = "깃발"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ms.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "KERAP DIGUNAKAN"; 24 | "emotionsAndPeople" = "MUKA SENYUM & ORANG"; 25 | "animalsAndNature" = "HAIWAN & ALAM"; 26 | "foodAndDrinks" = "MAKANAN & MINUMAN"; 27 | "activities" = "AKTIVITI"; 28 | "travellingAndPlaces" = "PERJALANAN & TEMPAT"; 29 | "items" = "OBJEK"; 30 | "symbols" = "SIMBOL"; 31 | "flags" = "BENDERA"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/nb.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "OFTE BRUKT"; 24 | "emotionsAndPeople" = "SMILEFJES OG PERSONER"; 25 | "animalsAndNature" = "DYR OG NATUR"; 26 | "foodAndDrinks" = "MAT OG DRIKKE"; 27 | "activities" = "AKTIVITET"; 28 | "travellingAndPlaces" = "REISE OG STEDER"; 29 | "items" = "OBJEKTER"; 30 | "symbols" = "SYMBOLER"; 31 | "flags" = "FLAGG"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/nl.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "VAAK GEBRUIKT"; 24 | "emotionsAndPeople" = "SMILEYS EN MENSEN"; 25 | "animalsAndNature" = "DIEREN EN NATUUR"; 26 | "foodAndDrinks" = "ETEN EN DRINKEN"; 27 | "activities" = "ACTIVITEIT"; 28 | "travellingAndPlaces" = "REIZEN EN PLAATSEN"; 29 | "items" = "OBJECTEN"; 30 | "symbols" = "SYMBOLEN"; 31 | "flags" = "VLAGGEN"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/pl.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "CZĘSTO UŻYWANE"; 24 | "emotionsAndPeople" = "BUŻKI I OSOBY"; 25 | "animalsAndNature" = "ZWIERZĘTA I NATURA"; 26 | "foodAndDrinks" = "ŻYWNOŚĆ I NAPOJE"; 27 | "activities" = "AKTYWNOŚĆ"; 28 | "travellingAndPlaces" = "PODRÓŻE I MIEJSCA"; 29 | "items" = "OBIEKTY"; 30 | "symbols" = "SYMBOLE"; 31 | "flags" = "FLAGI"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/pt-BR.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "MAIS USADOS"; 24 | "emotionsAndPeople" = "SORRISOS E PESSOAS"; 25 | "animalsAndNature" = "ANIMAIS E NATUREZA"; 26 | "foodAndDrinks" = "COMIDA E BEBIDA"; 27 | "activities" = "ATIVIDADES"; 28 | "travellingAndPlaces" = "VIAGEM E LUGARES"; 29 | "items" = "OBJETOS"; 30 | "symbols" = "SÍMBOLOS"; 31 | "flags" = "BANDEIRAS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/pt-PT.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "USADOS COM FREQUÊNCIA"; 24 | "emotionsAndPeople" = "SMILEYS E PESSOAS"; 25 | "animalsAndNature" = "ANIMAIS E NATUREZA"; 26 | "foodAndDrinks" = "ALIMENTAÇÃO E BEBIDAS"; 27 | "activities" = "ATIVIDADE"; 28 | "travellingAndPlaces" = "VIAGENS E LUGARES"; 29 | "items" = "OBJETOS"; 30 | "symbols" = "SÍMBOLOS"; 31 | "flags" = "BANDEIRAS"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ro.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "UTILIZATE FRECVENT"; 24 | "emotionsAndPeople" = "EMOTICOANE ȘI PERSOANE"; 25 | "animalsAndNature" = "ANIMALE ȘI NATURĂ"; 26 | "foodAndDrinks" = "MÂNCĂRURI ȘI BĂUTURI"; 27 | "activities" = "ACTIVITĂȚI"; 28 | "travellingAndPlaces" = "CĂLĂTORII ȘI LOCURI"; 29 | "items" = "OBIECTE"; 30 | "symbols" = "SIMBOLURI"; 31 | "flags" = "STEAGURI"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/ru.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ЧАСТО ИСПОЛЬЗУЕМЫЕ"; 24 | "emotionsAndPeople" = "СМАЙЛИКИ И ЛЮДИ"; 25 | "animalsAndNature" = "ЖИВОТНЫЕ И ПРИРОДА"; 26 | "foodAndDrinks" = "ЕДА И НАПИТКИ"; 27 | "activities" = "АКТИВНОСТЬ"; 28 | "travellingAndPlaces" = "ПУТЕШЕСТВИЯ И МЕСТНОСТИ"; 29 | "items" = "ПРЕДМЕТЫ"; 30 | "symbols" = "СИМВОЛЫ"; 31 | "flags" = "ФЛАГИ"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/sk.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ČASTO POUŽÍVANÉ"; 24 | "emotionsAndPeople" = "SMAJLÍKY A ĽUDIA"; 25 | "animalsAndNature" = "ZVIERATÁ A PRÍRODA"; 26 | "foodAndDrinks" = "JEDLO A NÁPOJE"; 27 | "activities" = "AKTIVITA"; 28 | "travellingAndPlaces" = "CESTOVANIE A MIESTA"; 29 | "items" = "OBJEKTY"; 30 | "symbols" = "SYMBOLY"; 31 | "flags" = "VLAJKY"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/sv.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "OFTA ANVÄNDA"; 24 | "emotionsAndPeople" = "SMILEYS OCH MÄNNISKOR"; 25 | "animalsAndNature" = "DJUR OCH NATUR"; 26 | "foodAndDrinks" = "MAT OCH DRYCK"; 27 | "activities" = "AKTIVITET"; 28 | "travellingAndPlaces" = "RESOR OCH PLATSER"; 29 | "items" = "OBJEKT"; 30 | "symbols" = "SYMBOLER"; 31 | "flags" = "FLAGGOR"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/th.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ที่ใช้ประจำ"; 24 | "emotionsAndPeople" = "ใบหน้ายิ้มและผู้คน"; 25 | "animalsAndNature" = "สัตว์และธรรมชาติ"; 26 | "foodAndDrinks" = "อาหารและเครื่องดื่ม"; 27 | "activities" = "กิจกรรม"; 28 | "travellingAndPlaces" = "การท่องเที่ยวและสถานที่"; 29 | "items" = "วัตถุ"; 30 | "symbols" = "สัญลักษณ์"; 31 | "flags" = "ธง"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/tr.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "SIK KULLANILANLAR"; 24 | "emotionsAndPeople" = "YÜZ İFADELERİ VE İNSANLAR"; 25 | "animalsAndNature" = "HAYVANLAR VE DOĞA"; 26 | "foodAndDrinks" = "YİYECEK VE İÇECEK"; 27 | "activities" = "ETKİNLİK"; 28 | "travellingAndPlaces" = "SEYAHAT VE YERLER"; 29 | "items" = "NESNELER"; 30 | "symbols" = "SEMBOLLER"; 31 | "flags" = "BAYRAKLAR"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/uk.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "ЧАСТО ВЖИВАНІ"; 24 | "emotionsAndPeople" = "СМАЙЛИКИ Й ЛЮДИ"; 25 | "animalsAndNature" = "ФЛОРА І ФАУНА"; 26 | "foodAndDrinks" = "ЇЖА І НАПОЇ"; 27 | "activities" = "АКТИВНІСТЬ"; 28 | "travellingAndPlaces" = "ПОДОРОЖІ Й МІСЦЯ"; 29 | "objects" = "ОБʼЄКТИ"; 30 | "symbols" = "СИМВОЛИ"; 31 | "flags" = "ПРАПОРИ"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/vi.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "THƯỜNG DÙNG"; 24 | "emotionsAndPeople" = "MẶT CƯỜI & NGƯỜI"; 25 | "animalsAndNature" = "ĐỘNG VẬT & TỰ NHIÊN"; 26 | "foodAndDrinks" = "ĐỒ ĂN & ĐỒ UỐNG"; 27 | "activities" = "HOẠT ĐỘNG"; 28 | "travellingAndPlaces" = "DU LỊCH & ĐỊA ĐIỂM"; 29 | "items" = "ĐỒ VẬT"; 30 | "symbols" = "KÝ HIỆU"; 31 | "flags" = "CỜ"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/zh-HK.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "常用"; 24 | "emotionsAndPeople" = "表情與人物"; 25 | "animalsAndNature" = "動物與自然"; 26 | "foodAndDrinks" = "飲食"; 27 | "activities" = "活動"; 28 | "travellingAndPlaces" = "旅行與地點"; 29 | "items" = "物件"; 30 | "symbols" = "符號"; 31 | "flags" = "旗幟"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/zh-Hans.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "常用"; 24 | "emotionsAndPeople" = "表情符号与人物"; 25 | "animalsAndNature" = "动物与自然"; 26 | "foodAndDrinks" = "食物与饮料"; 27 | "activities" = "活动"; 28 | "travellingAndPlaces" = "旅行与地点"; 29 | "items" = "物体"; 30 | "symbols" = "符号"; 31 | "flags" = "旗帜"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/Resources/Localization/zh-Hant.lproj/MCEmojiPickerLocalizable.strings: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | "frequentlyUsed" = "常用項目"; 24 | "emotionsAndPeople" = "表情符號與人物"; 25 | "animalsAndNature" = "動物與自然"; 26 | "foodAndDrinks" = "美食佳飲"; 27 | "activities" = "活動"; 28 | "travellingAndPlaces" = "旅遊與地點"; 29 | "items" = "物品"; 30 | "symbols" = "符號"; 31 | "flags" = "旗幟"; 32 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/MCEmojiPickerRepresentableController.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2023 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import SwiftUI 24 | 25 | @available(iOS 13.0, *) 26 | public struct MCEmojiPickerRepresentableController: UIViewControllerRepresentable { 27 | 28 | // MARK: - Public Properties 29 | 30 | /// Observed value which is responsible for the state of the picker. 31 | /// 32 | /// If the value of this property is `true`, the EmojiPicker will be presented. 33 | /// If the value of this property is `false`, the EmojiPicker will be hidden. 34 | @Binding var isPresented: Bool 35 | 36 | /// Observed value which is updated by the selected emoji. 37 | @Binding var selectedEmoji: String 38 | 39 | /// The direction of the arrow for EmojiPicker. 40 | /// 41 | /// The default value of this property is `.up`. 42 | public var arrowDirection: MCPickerArrowDirection? 43 | 44 | /// Custom height for EmojiPicker. 45 | /// But it will be limited by the distance from sourceView.origin.y to the upper or lower bound(depends on permittedArrowDirections). 46 | /// 47 | /// The default value of this property is `nil`. 48 | public var customHeight: CGFloat? 49 | 50 | /// Inset from the sourceView border. 51 | /// 52 | /// The default value of this property is `0`. 53 | public var horizontalInset: CGFloat? 54 | 55 | /// A boolean value that determines whether the screen will be hidden after the emoji is selected. 56 | /// 57 | /// If this property’s value is `true`, the EmojiPicker will be dismissed after the emoji is selected. 58 | /// If you want EmojiPicker not to dismissed after emoji selection, you must set this property to `false`. 59 | /// The default value of this property is `true`. 60 | public var isDismissAfterChoosing: Bool? 61 | 62 | /// Color for the selected emoji category. 63 | /// 64 | /// The default value of this property is `.systemBlue`. 65 | public var selectedEmojiCategoryTintColor: UIColor? 66 | 67 | /// Feedback generator style. To turn off, set `nil` to this parameter. 68 | /// 69 | /// The default value of this property is `.light`. 70 | public var feedBackGeneratorStyle: UIImpactFeedbackGenerator.FeedbackStyle? 71 | 72 | // MARK: - Initializers 73 | 74 | public init( 75 | isPresented: Binding, 76 | selectedEmoji: Binding, 77 | arrowDirection: MCPickerArrowDirection? = nil, 78 | customHeight: CGFloat? = nil, 79 | horizontalInset: CGFloat? = nil, 80 | isDismissAfterChoosing: Bool? = nil, 81 | selectedEmojiCategoryTintColor: UIColor? = nil, 82 | feedBackGeneratorStyle: UIImpactFeedbackGenerator.FeedbackStyle? = nil 83 | ) { 84 | self._isPresented = isPresented 85 | self._selectedEmoji = selectedEmoji 86 | self.arrowDirection = arrowDirection 87 | self.customHeight = customHeight 88 | self.horizontalInset = horizontalInset 89 | self.isDismissAfterChoosing = isDismissAfterChoosing 90 | self.selectedEmojiCategoryTintColor = selectedEmojiCategoryTintColor 91 | self.feedBackGeneratorStyle = feedBackGeneratorStyle 92 | } 93 | 94 | // MARK: - Public Methods 95 | 96 | public func makeCoordinator() -> Coordinator { 97 | Coordinator(self) 98 | } 99 | 100 | public func makeUIViewController(context: Context) -> UIViewController { 101 | UIViewController() 102 | } 103 | 104 | public func updateUIViewController(_ representableController: UIViewController, context: Context) { 105 | guard !context.coordinator.isNewEmojiSet else { 106 | context.coordinator.isNewEmojiSet.toggle() 107 | return 108 | } 109 | switch isPresented { 110 | case true: 111 | guard representableController.presentedViewController == nil else { return } 112 | let emojiPicker = MCEmojiPickerViewController() 113 | emojiPicker.delegate = context.coordinator 114 | emojiPicker.sourceView = representableController.view 115 | if let arrowDirection { emojiPicker.arrowDirection = arrowDirection } 116 | if let customHeight { emojiPicker.customHeight = customHeight } 117 | if let horizontalInset { emojiPicker.horizontalInset = horizontalInset } 118 | if let isDismissAfterChoosing { emojiPicker.isDismissAfterChoosing = isDismissAfterChoosing } 119 | if let selectedEmojiCategoryTintColor { 120 | emojiPicker.selectedEmojiCategoryTintColor = selectedEmojiCategoryTintColor 121 | } 122 | if let feedBackGeneratorStyle { emojiPicker.feedBackGeneratorStyle = feedBackGeneratorStyle } 123 | context.coordinator.addPickerDismissingObserver() 124 | representableController.present(emojiPicker, animated: true) 125 | case false: 126 | if representableController.presentedViewController is MCEmojiPickerViewController && context.coordinator.isPresented { 127 | representableController.presentedViewController?.dismiss(animated: true) 128 | } 129 | } 130 | context.coordinator.isPresented = isPresented 131 | } 132 | } 133 | 134 | // MARK: - Coordinator 135 | 136 | @available(iOS 13.0, *) 137 | extension MCEmojiPickerRepresentableController { 138 | public class Coordinator: NSObject, MCEmojiPickerDelegate { 139 | 140 | public var isNewEmojiSet = false 141 | public var isPresented = false 142 | 143 | private var representableController: MCEmojiPickerRepresentableController 144 | 145 | init(_ representableController: MCEmojiPickerRepresentableController) { 146 | self.representableController = representableController 147 | } 148 | 149 | public func addPickerDismissingObserver() { 150 | NotificationCenter.default.addObserver(self, selector: #selector(pickerDismissingAction), name: .MCEmojiPickerDidDisappear, object: nil) 151 | } 152 | 153 | public func didGetEmoji(emoji: String) { 154 | isNewEmojiSet.toggle() 155 | representableController.selectedEmoji = emoji 156 | } 157 | 158 | @objc public func pickerDismissingAction() { 159 | NotificationCenter.default.removeObserver(self, name: .MCEmojiPickerDidDisappear, object: nil) 160 | representableController.isPresented = false 161 | } 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/Views/EmojiCategoryView/MCTouchableEmojiCategoryView.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | /// Delegate for handling touch gesture. 26 | protocol MCEmojiCategoryViewDelegate: AnyObject { 27 | /** 28 | Processes an event by category selection. 29 | 30 | - Parameter index: index of the selected category. 31 | */ 32 | func didChoiceCategory(at index: Int) 33 | } 34 | 35 | /// The class store the category icon and processes handling touches. 36 | final class MCTouchableEmojiCategoryView: UIView { 37 | 38 | // MARK: - Private Properties 39 | 40 | private var categoryIconView: MCEmojiCategoryIconView 41 | /// Insets for categoryIconView. 42 | private lazy var categoryIconViewInsets: UIEdgeInsets = { 43 | // The number 0.23 was taken based on the proportion of this element to the width of the EmojiPicker on MacOS. 44 | let inset = bounds.width * 0.23 45 | return UIEdgeInsets(top: inset, left: inset, bottom: inset, right: inset) 46 | }() 47 | /// Target category index. 48 | private var categoryIndex: Int 49 | 50 | private weak var delegate: MCEmojiCategoryViewDelegate? 51 | 52 | // MARK: - Initializers 53 | 54 | init( 55 | delegate: MCEmojiCategoryViewDelegate, 56 | categoryIndex: Int, 57 | categoryType: MCEmojiCategoryType, 58 | selectedEmojiCategoryTintColor: UIColor 59 | ) { 60 | self.delegate = delegate 61 | self.categoryIndex = categoryIndex 62 | self.categoryIconView = MCEmojiCategoryIconView( 63 | type: categoryType, 64 | selectedIconTintColor: selectedEmojiCategoryTintColor 65 | ) 66 | super.init(frame: .zero) 67 | } 68 | 69 | required init?(coder: NSCoder) { 70 | fatalError("init(coder:) has not been implemented") 71 | } 72 | 73 | // MARK: - Life Cycle 74 | 75 | override func layoutSubviews() { 76 | super.layoutSubviews() 77 | setupCategoryIconViewLayout() 78 | } 79 | 80 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 81 | super.touchesBegan(touches, with: event) 82 | categoryIconView.updateIconTintColor(for: .highlighted) 83 | } 84 | 85 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 86 | super.touchesEnded(touches, with: event) 87 | categoryIconView.updateIconTintColor(for: .selected) 88 | delegate?.didChoiceCategory(at: categoryIndex) 89 | } 90 | 91 | // MARK: - Public Methods 92 | 93 | /** 94 | Updates the icon state to the selected one if the indexes match and the standard one if not. 95 | 96 | - Parameter selectedCategoryIndex: Selected category index. 97 | */ 98 | public func updateCategoryViewState(selectedCategoryIndex: Int) { 99 | categoryIconView.updateIconTintColor( 100 | for: categoryIndex == selectedCategoryIndex ? .selected : .standard 101 | ) 102 | } 103 | 104 | // MARK: - Private Methods 105 | 106 | private func setupCategoryIconViewLayout() { 107 | guard !categoryIconView.isDescendant(of: self) else { return } 108 | addSubview(categoryIconView) 109 | NSLayoutConstraint.activate([ 110 | categoryIconView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: categoryIconViewInsets.left), 111 | categoryIconView.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -categoryIconViewInsets.right), 112 | categoryIconView.topAnchor.constraint(equalTo: topAnchor, constant: categoryIconViewInsets.top), 113 | categoryIconView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -categoryIconViewInsets.bottom) 114 | ]) 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/Views/EmojiPreviewView/MCEmojiPreviewBackgroundView.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | /// The class where the background is drawn for `MCEmojiPreviewView`. 26 | final class MCEmojiPreviewBackgroundView: UIView { 27 | 28 | // MARK: - Public Properties 29 | 30 | public var contentFrame: CGRect { 31 | return .init( 32 | origin: .init( 33 | x: 0, 34 | y: Constants.mainCornerRadius / 2 35 | ), 36 | size: topRectangleFrame.size 37 | ) 38 | } 39 | 40 | // MARK: - Constants 41 | 42 | private enum Constants { 43 | static let mainCornerRadius = 10.0 44 | static let bottomCornerRadius = 6.0 45 | 46 | static let shadowRadius: Double = 2.5 47 | static let shadowOpacity: Float = 0.05 48 | static let shadowOffset: CGSize = .init(width: 0, height: 5) 49 | 50 | static let borderWidth = 0.1 51 | } 52 | 53 | // MARK: - Private Properties 54 | 55 | private var backgroundPath: CGPath? { 56 | didSet { 57 | setupShadow() 58 | setupBorders() 59 | } 60 | } 61 | 62 | private var senderFrame: CGRect 63 | private var topRectangleFrame: CGRect = .zero 64 | private var bottomRectangleFrame: CGRect = .zero 65 | 66 | // MARK: - Initializers 67 | 68 | init( 69 | frame: CGRect, 70 | senderFrame: CGRect 71 | ) { 72 | self.senderFrame = senderFrame 73 | super.init(frame: frame) 74 | backgroundColor = .clear 75 | initFramesForRectangles() 76 | } 77 | 78 | required init?(coder: NSCoder) { 79 | fatalError("init(coder:) has not been implemented") 80 | } 81 | 82 | // MARK: - Private Methods 83 | 84 | private func initFramesForRectangles() { 85 | bottomRectangleFrame = .init( 86 | x: senderFrame.origin.x, 87 | y: senderFrame.origin.y - (senderFrame.height * 1.25 - senderFrame.height), 88 | width: senderFrame.width, 89 | height: senderFrame.height * 1.25 90 | ) 91 | topRectangleFrame = .init( 92 | origin: .zero, 93 | size: .init( 94 | width: frame.width, 95 | height: frame.height - ( 96 | bottomRectangleFrame.height 97 | ) 98 | ) 99 | ) 100 | } 101 | 102 | private func setupShadow() { 103 | layer.shadowPath = backgroundPath 104 | layer.shadowColor = UIColor.black.cgColor 105 | layer.shadowRadius = Constants.shadowRadius 106 | layer.shadowOpacity = Constants.shadowOpacity 107 | layer.shadowOffset = Constants.shadowOffset 108 | } 109 | 110 | private func setupBorders() { 111 | let borderLayer = CAShapeLayer() 112 | borderLayer.path = backgroundPath 113 | borderLayer.fillColor = UIColor.clear.cgColor 114 | borderLayer.strokeColor = UIColor.gray.cgColor 115 | borderLayer.lineWidth = Constants.borderWidth 116 | borderLayer.frame = bounds 117 | layer.addSublayer(borderLayer) 118 | } 119 | } 120 | 121 | // MARK: - Drawing 122 | 123 | extension MCEmojiPreviewBackgroundView { 124 | public override func draw(_ rect: CGRect) { 125 | super.draw(rect) 126 | drawBackground() 127 | } 128 | 129 | private func drawBackground() { 130 | UIColor.previewAndSkinToneBackgroundViewColor.setFill() 131 | 132 | let path = UIBezierPath() 133 | path.addArc( 134 | withCenter: .init( 135 | x: bottomRectangleFrame.minX + Constants.bottomCornerRadius, 136 | y: bottomRectangleFrame.maxY - Constants.bottomCornerRadius 137 | ), 138 | radius: Constants.bottomCornerRadius, 139 | startAngle: Double.upAngle, 140 | endAngle: Double.leftAngle, 141 | clockwise: true 142 | ) 143 | path.addLine( 144 | to: .init( 145 | x: bottomRectangleFrame.minX, 146 | y: bottomRectangleFrame.minY + Constants.mainCornerRadius * 2 147 | ) 148 | ) 149 | path.addCurve( 150 | to: .init( 151 | x: topRectangleFrame.minX, 152 | y: topRectangleFrame.maxY - Constants.mainCornerRadius 153 | ), 154 | controlPoint1: .init( 155 | x: bottomRectangleFrame.minX, 156 | y: bottomRectangleFrame.minY - Constants.mainCornerRadius / 2 157 | ), 158 | controlPoint2: .init( 159 | x: topRectangleFrame.minX, 160 | y: topRectangleFrame.maxY + Constants.mainCornerRadius / 2 161 | ) 162 | ) 163 | path.addArc( 164 | withCenter: .init( 165 | x: topRectangleFrame.minX + Constants.mainCornerRadius, 166 | y: topRectangleFrame.minY + Constants.mainCornerRadius 167 | ), 168 | radius: Constants.mainCornerRadius, 169 | startAngle: Double.leftAngle, 170 | endAngle: Double.downAngle, 171 | clockwise: true 172 | ) 173 | path.addArc( 174 | withCenter: .init( 175 | x: topRectangleFrame.maxX - Constants.mainCornerRadius, 176 | y: topRectangleFrame.minY + Constants.mainCornerRadius 177 | ), 178 | radius: Constants.mainCornerRadius, 179 | startAngle: Double.downAngle, 180 | endAngle: Double.rightAngle, 181 | clockwise: true 182 | ) 183 | path.addLine( 184 | to: .init( 185 | x: topRectangleFrame.maxX, 186 | y: topRectangleFrame.maxY - Constants.mainCornerRadius 187 | ) 188 | ) 189 | path.addCurve( 190 | to: .init( 191 | x: bottomRectangleFrame.maxX, 192 | y: bottomRectangleFrame.minY + Constants.mainCornerRadius * 2 193 | ), 194 | controlPoint1: .init( 195 | x: topRectangleFrame.maxX, 196 | y: topRectangleFrame.maxY + Constants.mainCornerRadius / 2 197 | ), 198 | controlPoint2: .init( 199 | x: bottomRectangleFrame.maxX, 200 | y: bottomRectangleFrame.minY - Constants.mainCornerRadius / 2 201 | ) 202 | ) 203 | path.addArc( 204 | withCenter: .init( 205 | x: bottomRectangleFrame.maxX - Constants.bottomCornerRadius, 206 | y: bottomRectangleFrame.maxY - Constants.bottomCornerRadius 207 | ), 208 | radius: Constants.bottomCornerRadius, 209 | startAngle: Double.rightAngle, 210 | endAngle: Double.upAngle, 211 | clockwise: true 212 | ) 213 | path.close() 214 | path.fill() 215 | 216 | backgroundPath = path.cgPath 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/Views/EmojiPreviewView/MCEmojiPreviewView.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | final class MCEmojiPreviewView: UIView { 26 | 27 | // MARK: - Private Properties 28 | 29 | private let emojiLabel: UILabel = { 30 | let label = UILabel() 31 | label.font = UIFont.systemFont(ofSize: 30.fit()) 32 | label.textAlignment = .center 33 | return label 34 | }() 35 | 36 | private lazy var backgroundView = MCEmojiPreviewBackgroundView( 37 | frame: bounds, 38 | senderFrame: sender.convert(sender.bounds, to: self) 39 | ) 40 | 41 | private var sender: UIView 42 | private var sourceView: UIView 43 | 44 | // MARK: - Initializers 45 | 46 | init( 47 | emoji: MCEmoji?, 48 | sender: UIView, 49 | sourceView: UIView 50 | ) { 51 | self.emojiLabel.text = emoji?.string 52 | self.sender = sender 53 | self.sourceView = sourceView 54 | super.init(frame: .zero) 55 | setupLayout() 56 | setupBackground() 57 | setupEmojiLabelLayout() 58 | } 59 | 60 | required init?(coder: NSCoder) { 61 | fatalError("init(coder:) has not been implemented") 62 | } 63 | 64 | // MARK: - Private Methods 65 | 66 | private func setupLayout() { 67 | let sourceRect = sender.convert(sender.bounds, to: sourceView) 68 | let targetViewSize = CGSize( 69 | width: sourceRect.height * 1.5, 70 | height: sourceRect.height * 2.65 71 | ) 72 | 73 | frame = .init( 74 | x: sourceRect.midX - targetViewSize.width / 2, 75 | y: sourceRect.maxY - targetViewSize.height, 76 | width: targetViewSize.width, 77 | height: targetViewSize.height 78 | ) 79 | } 80 | 81 | private func setupBackground() { 82 | addSubview(backgroundView) 83 | } 84 | 85 | private func setupEmojiLabelLayout() { 86 | emojiLabel.frame = backgroundView.contentFrame 87 | addSubview(emojiLabel) 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/Views/EmojiSkinTonePickerView/MCEmojiSkinTonePickerBackgroundView.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | /// The class where the background is drawn for `MCEmojiSkinTonePickerView`. 26 | final class MCEmojiSkinTonePickerBackgroundView: UIView { 27 | 28 | // MARK: - Public Properties 29 | 30 | public var contentFrame: CGRect { 31 | return topRectangleFrame 32 | } 33 | 34 | // MARK: - Constants 35 | 36 | private enum Constants { 37 | static let mainCornerRadius = 10.0 38 | static let bottomCornerRadius = 6.0 39 | 40 | static let shadowRadius: Double = 2.5 41 | static let shadowOpacity: Float = 0.05 42 | static let shadowOffset: CGSize = .init(width: 0, height: 5) 43 | 44 | static let borderWidth = 0.1 45 | } 46 | 47 | // MARK: - Private Properties 48 | 49 | private var senderFrame: CGRect 50 | private var topRectangleFrame: CGRect = .zero 51 | private var bottomRectangleFrame: CGRect = .zero 52 | 53 | private var backgroundPath: CGPath? { 54 | didSet { 55 | setupShadow() 56 | setupBorders() 57 | } 58 | } 59 | 60 | // MARK: - Initializers 61 | 62 | init( 63 | frame: CGRect, 64 | senderFrame: CGRect 65 | ) { 66 | self.senderFrame = senderFrame 67 | super.init(frame: frame) 68 | backgroundColor = .clear 69 | initFramesForRectangles() 70 | } 71 | 72 | required init?(coder: NSCoder) { 73 | fatalError("init(coder:) has not been implemented") 74 | } 75 | 76 | // MARK: - Life Cycle 77 | 78 | override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 79 | if let backgroundPath = backgroundPath, backgroundPath.contains(point) { 80 | return super.hitTest(point, with: event) 81 | } 82 | return nil 83 | } 84 | 85 | // MARK: - Private Methods 86 | 87 | private func initFramesForRectangles() { 88 | bottomRectangleFrame = .init( 89 | x: senderFrame.origin.x, 90 | y: senderFrame.origin.y - (senderFrame.height * 1.25 - senderFrame.height), 91 | width: senderFrame.width, 92 | height: senderFrame.height * 1.25 93 | ) 94 | topRectangleFrame = .init( 95 | x: 0, 96 | y: 0, 97 | width: frame.width, 98 | height: frame.height - ( 99 | bottomRectangleFrame.height 100 | ) 101 | ) 102 | } 103 | 104 | private func setupShadow() { 105 | layer.shadowPath = backgroundPath 106 | layer.shadowColor = UIColor.black.cgColor 107 | layer.shadowRadius = Constants.shadowRadius 108 | layer.shadowOpacity = Constants.shadowOpacity 109 | layer.shadowOffset = Constants.shadowOffset 110 | } 111 | 112 | private func setupBorders() { 113 | let borderLayer = CAShapeLayer() 114 | borderLayer.path = backgroundPath 115 | borderLayer.fillColor = UIColor.clear.cgColor 116 | borderLayer.strokeColor = UIColor.gray.cgColor 117 | borderLayer.lineWidth = Constants.borderWidth 118 | borderLayer.frame = bounds 119 | layer.addSublayer(borderLayer) 120 | } 121 | } 122 | 123 | // MARK: - Drawing 124 | 125 | extension MCEmojiSkinTonePickerBackgroundView { 126 | public override func draw(_ rect: CGRect) { 127 | super.draw(rect) 128 | drawBackground() 129 | } 130 | 131 | private func drawBackground() { 132 | UIColor.previewAndSkinToneBackgroundViewColor.setFill() 133 | 134 | let path = UIBezierPath() 135 | path.addArc( 136 | withCenter: .init( 137 | x: topRectangleFrame.minX + Constants.mainCornerRadius, 138 | y: topRectangleFrame.minY + Constants.mainCornerRadius 139 | ), 140 | radius: Constants.mainCornerRadius, 141 | startAngle: Double.leftAngle, 142 | endAngle: Double.downAngle, 143 | clockwise: true 144 | ) 145 | path.addArc( 146 | withCenter: .init( 147 | x: topRectangleFrame.maxX - Constants.mainCornerRadius, 148 | y: topRectangleFrame.minY + Constants.mainCornerRadius 149 | ), 150 | radius: Constants.mainCornerRadius, 151 | startAngle: Double.downAngle, 152 | endAngle: Double.rightAngle, 153 | clockwise: true 154 | ) 155 | path.addArc( 156 | withCenter: .init( 157 | x: topRectangleFrame.maxX - Constants.mainCornerRadius, 158 | y: topRectangleFrame.maxY - Constants.mainCornerRadius 159 | ), 160 | radius: Constants.mainCornerRadius, 161 | startAngle: Double.rightAngle, 162 | endAngle: Double.upAngle, 163 | clockwise: true 164 | ) 165 | path.addArc( 166 | withCenter: .init( 167 | x: bottomRectangleFrame.maxX + Constants.mainCornerRadius, 168 | y: bottomRectangleFrame.minY + Constants.mainCornerRadius 169 | ), 170 | radius: Constants.mainCornerRadius, 171 | startAngle: Double.downAngle, 172 | endAngle: Double.leftAngle, 173 | clockwise: false 174 | ) 175 | path.addArc( 176 | withCenter: .init( 177 | x: bottomRectangleFrame.maxX - Constants.bottomCornerRadius, 178 | y: bottomRectangleFrame.maxY - Constants.bottomCornerRadius 179 | ), 180 | radius: Constants.bottomCornerRadius, 181 | startAngle: Double.rightAngle, 182 | endAngle: Double.upAngle, 183 | clockwise: true 184 | ) 185 | path.addArc( 186 | withCenter: .init( 187 | x: bottomRectangleFrame.minX + Constants.bottomCornerRadius, 188 | y: bottomRectangleFrame.maxY - Constants.bottomCornerRadius 189 | ), 190 | radius: Constants.bottomCornerRadius, 191 | startAngle: Double.upAngle, 192 | endAngle: Double.leftAngle, 193 | clockwise: true 194 | ) 195 | path.addArc( 196 | withCenter: .init( 197 | x: bottomRectangleFrame.minX - Constants.mainCornerRadius, 198 | y: bottomRectangleFrame.minY + Constants.mainCornerRadius 199 | ), 200 | radius: Constants.mainCornerRadius, 201 | startAngle: Double.rightAngle, 202 | endAngle: Double.downAngle, 203 | clockwise: false 204 | ) 205 | path.addArc( 206 | withCenter: .init( 207 | x: topRectangleFrame.minX + Constants.mainCornerRadius, 208 | y: topRectangleFrame.maxY - Constants.mainCornerRadius 209 | ), 210 | radius: Constants.mainCornerRadius, 211 | startAngle: Double.upAngle, 212 | endAngle: Double.leftAngle, 213 | clockwise: true 214 | ) 215 | path.close() 216 | path.fill() 217 | 218 | backgroundPath = path.cgPath 219 | } 220 | } 221 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/Views/EmojiSkinTonePickerView/MCEmojiSkinTonePickerContainerView.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | protocol MCEmojiSkinTonePickerDelegate: AnyObject { 26 | func updateSkinTone( 27 | _ skinToneRawValue: Int, 28 | in cell: MCEmojiCollectionViewCell 29 | ) 30 | func feedbackImpactOccurred() 31 | func didEmojiSkinTonePickerDismissed() 32 | } 33 | 34 | final class MCEmojiSkinTonePickerContainerView: UIView { 35 | 36 | // MARK: - Private Properties 37 | 38 | private var sender: UIView 39 | private var sourceView: UIView 40 | private var emojiPickerFrame: CGRect 41 | private var cell: MCEmojiCollectionViewCell 42 | private var emoji: MCEmoji? 43 | 44 | private weak var delegate: MCEmojiSkinTonePickerDelegate? 45 | 46 | private lazy var skinTonePicker = MCEmojiSkinTonePickerView( 47 | delegate: self, 48 | emoji: emoji, 49 | sender: sender, 50 | sourceView: sourceView, 51 | emojiPickerFrame: emojiPickerFrame 52 | ) 53 | 54 | // MARK: - Initializers 55 | 56 | init( 57 | delegate: MCEmojiSkinTonePickerDelegate, 58 | cell: MCEmojiCollectionViewCell, 59 | emoji: MCEmoji?, 60 | frame: CGRect, 61 | sourceView: UIView, 62 | emojiPickerFrame: CGRect 63 | ) { 64 | self.delegate = delegate 65 | self.cell = cell 66 | self.emoji = emoji 67 | self.sender = cell.emojiLabel 68 | self.sourceView = sourceView 69 | self.emojiPickerFrame = emojiPickerFrame 70 | super.init(frame: frame) 71 | setupSkinTonePicker() 72 | setupNotifications() 73 | setupGestureRecognizers() 74 | } 75 | 76 | required init?(coder: NSCoder) { 77 | fatalError("init(coder:) has not been implemented") 78 | } 79 | 80 | deinit { 81 | NotificationCenter.default.removeObserver( 82 | self, 83 | name: UIDevice.orientationDidChangeNotification, 84 | object: nil 85 | ) 86 | } 87 | 88 | // MARK: - Actions 89 | 90 | @objc private func orientationChanged() { 91 | removeFromSuperview() 92 | delegate?.didEmojiSkinTonePickerDismissed() 93 | } 94 | 95 | @objc private func backgroundTapAction() { 96 | removeFromSuperview() 97 | delegate?.didEmojiSkinTonePickerDismissed() 98 | } 99 | 100 | // MARK: - Private Methods 101 | 102 | private func setupSkinTonePicker() { 103 | addSubview(skinTonePicker) 104 | } 105 | 106 | private func setupNotifications() { 107 | NotificationCenter.default.addObserver( 108 | self, 109 | selector: #selector(orientationChanged), 110 | name: UIDevice.orientationDidChangeNotification, 111 | object: nil 112 | ) 113 | } 114 | 115 | private func setupGestureRecognizers() { 116 | addGestureRecognizer( 117 | UITapGestureRecognizer( 118 | target: self, 119 | action: #selector(backgroundTapAction) 120 | ) 121 | ) 122 | } 123 | } 124 | 125 | // MARK: - MCEmojiSkinTonePickerViewDelegate 126 | 127 | extension MCEmojiSkinTonePickerContainerView: MCEmojiSkinTonePickerViewDelegate { 128 | func didSelectEmojiTone(_ emojiToneIndex: Int?) { 129 | removeFromSuperview() 130 | delegate?.didEmojiSkinTonePickerDismissed() 131 | guard let emojiToneIndex = emojiToneIndex else { return } 132 | delegate?.updateSkinTone(emojiToneIndex + 1, in: cell) 133 | } 134 | 135 | func feedbackImpactOccurred() { 136 | delegate?.feedbackImpactOccurred() 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/View/Views/MCEmojiSectionHeader.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import UIKit 24 | 25 | final class MCEmojiSectionHeader: UICollectionReusableView { 26 | 27 | // MARK: - Constants 28 | 29 | private enum Constants { 30 | static let backgroundColor = UIColor.popoverBackgroundColor 31 | 32 | static let headerLabelColor = UIColor.systemGray 33 | static let headerLabelFont = UIFont.systemFont(ofSize: 14.fit(), weight: .regular) 34 | static let headerLabelInsets = UIEdgeInsets(top: 0, left: 7, bottom: -4, right: -16) 35 | } 36 | 37 | // MARK: - Private Properties 38 | 39 | private let headerLabel: UILabel = { 40 | let label: UILabel = UILabel() 41 | label.textColor = Constants.headerLabelColor 42 | label.font = Constants.headerLabelFont 43 | label.translatesAutoresizingMaskIntoConstraints = false 44 | return label 45 | }() 46 | 47 | // MARK: - Initializers 48 | 49 | override init(frame: CGRect) { 50 | super.init(frame: frame) 51 | setupBackgroundColor() 52 | setupHeaderLabelLayout() 53 | } 54 | 55 | required init?(coder aDecoder: NSCoder) { 56 | fatalError("init(coder:) has not been implemented") 57 | } 58 | 59 | // MARK: - Public Methods 60 | 61 | public func configure(with categoryName: String) { 62 | headerLabel.text = categoryName 63 | } 64 | 65 | // MARK: - Private Methods 66 | 67 | private func setupBackgroundColor() { 68 | backgroundColor = Constants.backgroundColor 69 | } 70 | 71 | private func setupHeaderLabelLayout() { 72 | addSubview(headerLabel) 73 | 74 | NSLayoutConstraint.activate([ 75 | headerLabel.leadingAnchor.constraint( 76 | equalTo: leadingAnchor, 77 | constant: Constants.headerLabelInsets.left 78 | ), 79 | headerLabel.trailingAnchor.constraint( 80 | equalTo: trailingAnchor, 81 | constant: Constants.headerLabelInsets.right 82 | ), 83 | headerLabel.bottomAnchor.constraint( 84 | equalTo: bottomAnchor, 85 | constant: Constants.headerLabelInsets.bottom 86 | ) 87 | ]) 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /Sources/MCEmojiPicker/ViewModel/MCEmojiPickerViewModel.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright © 2022 Ivan Izyumkin 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | import Foundation 24 | 25 | /// Protocol for the `MCEmojiPickerViewModel`. 26 | protocol MCEmojiPickerViewModelProtocol { 27 | /// Whether the picker shows empty categories. Default false. 28 | var showEmptyEmojiCategories: Bool { get set } 29 | /// The emoji categories being used 30 | var emojiCategories: [MCEmojiCategory] { get } 31 | /// The observed variable that is responsible for the choice of emoji. 32 | var selectedEmoji: Observable { get set } 33 | /// The observed variable that is responsible for the choice of emoji category. 34 | var selectedEmojiCategoryIndex: Observable { get set } 35 | /// Clears the selected emoji, setting to `nil`. 36 | func clearSelectedEmoji() 37 | /// Returns the number of categories with emojis. 38 | func numberOfSections() -> Int 39 | /// Returns the number of emojis in the target section. 40 | func numberOfItems(in section: Int) -> Int 41 | /// Returns the `MCEmoji` for the target `IndexPath`. 42 | func emoji(at indexPath: IndexPath) -> MCEmoji 43 | /// Returns the localized section name for the target section. 44 | func sectionHeaderName(for section: Int) -> String 45 | /// Updates the emoji skin tone and returns the updated `MCEmoji`. 46 | func updateEmojiSkinTone(_ skinToneRawValue: Int, in indexPath: IndexPath) -> MCEmoji 47 | } 48 | 49 | /// View model which using in `MCEmojiPickerViewController`. 50 | final class MCEmojiPickerViewModel: MCEmojiPickerViewModelProtocol { 51 | 52 | // MARK: - Public Properties 53 | 54 | public var selectedEmoji = Observable(value: nil) 55 | public var selectedEmojiCategoryIndex = Observable(value: 0) 56 | public var showEmptyEmojiCategories = false 57 | public var emojiCategories: [MCEmojiCategory] { 58 | allEmojiCategories.filter({ showEmptyEmojiCategories || $0.emojis.count > 0 }) 59 | } 60 | 61 | // MARK: - Private Properties 62 | 63 | /// All emoji categories. 64 | private var allEmojiCategories = [MCEmojiCategory]() 65 | 66 | // MARK: - Initializers 67 | 68 | init(unicodeManager: MCUnicodeManagerProtocol = MCUnicodeManager()) { 69 | allEmojiCategories = unicodeManager.getEmojisForCurrentIOSVersion() 70 | // Increment usage of each emoji upon selection 71 | selectedEmoji.bind { emoji in 72 | emoji?.incrementUsageCount() 73 | } 74 | } 75 | 76 | // MARK: - Public Methods 77 | 78 | public func clearSelectedEmoji() { 79 | selectedEmoji.value = nil 80 | } 81 | 82 | public func numberOfSections() -> Int { 83 | return emojiCategories.count 84 | } 85 | 86 | public func numberOfItems(in section: Int) -> Int { 87 | return emojiCategories[section].emojis.count 88 | } 89 | 90 | public func emoji(at indexPath: IndexPath) -> MCEmoji { 91 | return emojiCategories[indexPath.section].emojis[indexPath.row] 92 | } 93 | 94 | public func sectionHeaderName(for section: Int) -> String { 95 | return emojiCategories[section].categoryName 96 | } 97 | 98 | public func updateEmojiSkinTone(_ skinToneRawValue: Int, in indexPath: IndexPath) -> MCEmoji { 99 | let categoryType: MCEmojiCategoryType = emojiCategories[indexPath.section].type 100 | let allCategoriesIndex: Int = allEmojiCategories.firstIndex { $0.type == categoryType } ?? 0 101 | allEmojiCategories[allCategoriesIndex].emojis[indexPath.row].set(skinToneRawValue: skinToneRawValue) 102 | return allEmojiCategories[allCategoriesIndex].emojis[indexPath.row] 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /Sources/Supporting Files/MCEmojiPicker.h: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // Copyright © 2022 Ivan Izyumkin 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy 5 | // of this software and associated documentation files (the "Software"), to deal 6 | // in the Software without restriction, including without limitation the rights 7 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | // copies of the Software, and to permit persons to whom the Software is 9 | // furnished to do so, subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | // SOFTWARE. 21 | 22 | #import 23 | 24 | //! Project version number for MCEmojiPicker. 25 | FOUNDATION_EXPORT double MCEmojiPickerVersionNumber; 26 | 27 | //! Project version string for MCEmojiPicker. 28 | FOUNDATION_EXPORT const unsigned char MCEmojiPickerVersionString[]; 29 | 30 | // In this header, you should import all the public headers of your framework using statements like #import 31 | 32 | 33 | --------------------------------------------------------------------------------