├── .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 |
--------------------------------------------------------------------------------