@sanity/document-internationalization 0.0.1-beta.9 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +24 -15
  2. package/lib/actions/index.js +263 -17457
  3. package/lib/actions/index.js.map +1 -1
  4. package/lib/badges/index.js +1 -17206
  5. package/lib/badges/index.js.map +1 -1
  6. package/lib/constants/SupportedEmojiFlagCodes.d.ts +1 -0
  7. package/lib/constants/UiMessages.d.ts +11 -0
  8. package/lib/constants/index.d.ts +1 -0
  9. package/lib/constants/index.js +19 -1
  10. package/lib/constants/index.js.map +1 -1
  11. package/lib/language-select/components/LanguageSelect/LanguageSelect.d.ts +9 -0
  12. package/lib/language-select/components/LanguageSelect/LanguageSelectContext.d.ts +10 -0
  13. package/lib/language-select/components/LanguageSelect/LanguageSelectLabel.d.ts +2 -0
  14. package/lib/language-select/components/LanguageSelect/LanguageSelectList.d.ts +9 -0
  15. package/lib/language-select/components/LanguageSelect/LanguageSelectListItem.d.ts +8 -0
  16. package/lib/language-select/components/LanguageSelect/index.d.ts +1 -0
  17. package/lib/{structure/components/LangCultureFlagsBlock → language-select/components/SingleFlag}/SingleFlag.d.ts +2 -1
  18. package/lib/{structure/components/LangCultureFlagsBlock → language-select/components/SingleFlag}/allEmojiFlagCodes.d.ts +0 -0
  19. package/lib/language-select/components/SingleFlag/index.d.ts +1 -0
  20. package/lib/language-select/components/SplitPaneIcon/SplitPaneIcon.d.ts +2 -0
  21. package/lib/language-select/components/SplitPaneIcon/index.d.ts +1 -0
  22. package/lib/language-select/components/index.d.ts +2 -0
  23. package/lib/language-select/hooks/index.d.ts +2 -0
  24. package/lib/language-select/hooks/useLanguages.d.ts +3 -0
  25. package/lib/language-select/hooks/useManyEditStates.d.ts +1 -0
  26. package/lib/language-select/hooks/useManyObservables.d.ts +2 -0
  27. package/lib/language-select/index.d.ts +7 -0
  28. package/lib/language-select/index.js +1972 -0
  29. package/lib/language-select/index.js.map +1 -0
  30. package/lib/structure/index.d.ts +1 -3
  31. package/lib/structure/index.js +187 -17958
  32. package/lib/structure/index.js.map +1 -1
  33. package/lib/types/IExtendedLanguageObject.d.ts +5 -0
  34. package/lib/types/ILanguageObject.d.ts +0 -2
  35. package/lib/types/index.d.ts +1 -0
  36. package/lib/utils/baseToTop.d.ts +2 -1
  37. package/lib/utils/getTranslationsForId.d.ts +2 -2
  38. package/lib/utils/index.js +9 -17212
  39. package/lib/utils/index.js.map +1 -1
  40. package/lib/validators/index.js +11 -17211
  41. package/lib/validators/index.js.map +1 -1
  42. package/package.json +20 -27
  43. package/sanity.json +4 -0
  44. package/lib/structure/components/LangCultureFlagsBlock/LangCultureFlagsBlock.d.ts +0 -8
  45. package/lib/structure/components/LangCultureFlagsBlock/index.d.ts +0 -1
  46. package/lib/structure/components/TranslationLink/TranslationLink.d.ts +0 -12
  47. package/lib/structure/components/TranslationLink/index.d.ts +0 -1
  48. package/lib/structure/components/TranslationsComponentFactory/TranslationsComponentFactory.d.ts +0 -5
  49. package/lib/structure/components/TranslationsComponentFactory/index.d.ts +0 -1
@@ -0,0 +1,1972 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var DocumentPaneContext = require('@sanity/desk-tool/lib/panes/document/DocumentPaneContext');
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
7
+ var ui = require('@sanity/ui');
8
+ var icons = require('@sanity/icons');
9
+ var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
10
+ var styled = require('styled-components');
11
+ var customFlagComponents = require('part:@sanity/document-internationalization/ui/flags?');
12
+ var config = require('config:@sanity/document-internationalization');
13
+ var schemas = require('part:@sanity/base/schema');
14
+ var client = require('part:@sanity/base/client');
15
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
16
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
17
+ var languagesLoaderFn = require('part:@sanity/document-internationalization/languages/loader?');
18
+ require('lodash');
19
+ require('@sanity/types');
20
+ var reactHooks = require('@sanity/react-hooks');
21
+ var shouldReloadFn = require('part:@sanity/document-internationalization/languages/should-reload?');
22
+ var documentStore = require('part:@sanity/base/datastore/document');
23
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
24
+ var _extends = require('@babel/runtime/helpers/extends');
25
+ var color = require('@sanity/color');
26
+ var deskTool = require('@sanity/desk-tool');
27
+ var RouterContext = require('@sanity/state-router/lib/RouterContext');
28
+
29
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
30
+
31
+ function _interopNamespace(e) {
32
+ if (e && e.__esModule) return e;
33
+ var n = Object.create(null);
34
+ if (e) {
35
+ Object.keys(e).forEach(function (k) {
36
+ if (k !== 'default') {
37
+ var d = Object.getOwnPropertyDescriptor(e, k);
38
+ Object.defineProperty(n, k, d.get ? d : {
39
+ enumerable: true,
40
+ get: function () { return e[k]; }
41
+ });
42
+ }
43
+ });
44
+ }
45
+ n["default"] = e;
46
+ return Object.freeze(n);
47
+ }
48
+
49
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
50
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
51
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
52
+ var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
53
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
54
+ var customFlagComponents__namespace = /*#__PURE__*/_interopNamespace(customFlagComponents);
55
+ var config__default = /*#__PURE__*/_interopDefaultLegacy(config);
56
+ var schemas__default = /*#__PURE__*/_interopDefaultLegacy(schemas);
57
+ var client__default = /*#__PURE__*/_interopDefaultLegacy(client);
58
+ var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
59
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
60
+ var languagesLoaderFn__default = /*#__PURE__*/_interopDefaultLegacy(languagesLoaderFn);
61
+ var shouldReloadFn__default = /*#__PURE__*/_interopDefaultLegacy(shouldReloadFn);
62
+ var documentStore__default = /*#__PURE__*/_interopDefaultLegacy(documentStore);
63
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
64
+ var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
65
+
66
+ var objectSafeGet = get;
67
+
68
+ /*
69
+ const obj = {a: {aa: {aaa: 2}}, b: 4};
70
+
71
+ get(obj, 'a.aa.aaa'); // 2
72
+ get(obj, ['a', 'aa', 'aaa']); // 2
73
+
74
+ get(obj, 'b.bb.bbb'); // undefined
75
+ get(obj, ['b', 'bb', 'bbb']); // undefined
76
+
77
+ get(obj.a, 'aa.aaa'); // 2
78
+ get(obj.a, ['aa', 'aaa']); // 2
79
+
80
+ get(obj.b, 'bb.bbb'); // undefined
81
+ get(obj.b, ['bb', 'bbb']); // undefined
82
+
83
+ get(obj.b, 'bb.bbb', 42); // 42
84
+ get(obj.b, ['bb', 'bbb'], 42); // 42
85
+
86
+ get(null, 'a'); // undefined
87
+ get(undefined, ['a']); // undefined
88
+
89
+ get(null, 'a', 42); // 42
90
+ get(undefined, ['a'], 42); // 42
91
+
92
+ const obj = {a: {}};
93
+ const sym = Symbol();
94
+ obj.a[sym] = 4;
95
+ get(obj.a, sym); // 4
96
+ */
97
+
98
+ function get(obj, propsArg, defaultValue) {
99
+ if (!obj) {
100
+ return defaultValue;
101
+ }
102
+ var props, prop;
103
+ if (Array.isArray(propsArg)) {
104
+ props = propsArg.slice(0);
105
+ }
106
+ if (typeof propsArg == 'string') {
107
+ props = propsArg.split('.');
108
+ }
109
+ if (typeof propsArg == 'symbol') {
110
+ props = [propsArg];
111
+ }
112
+ if (!Array.isArray(props)) {
113
+ throw new Error('props arg must be an array, a string or a symbol');
114
+ }
115
+ while (props.length) {
116
+ prop = props.shift();
117
+ if (!obj) {
118
+ return defaultValue;
119
+ }
120
+ obj = obj[prop];
121
+ if (obj === undefined) {
122
+ return defaultValue;
123
+ }
124
+ }
125
+ return obj;
126
+ }
127
+
128
+ // Inspiration: https://github.com/facebook/react/issues/3386
129
+
130
+ function replace (string, regexpOrSubstr, newValueOrFn, globalOffset) {
131
+ if (typeof string !== 'string') throw new Error('First param must be a string')
132
+ if (typeof regexpOrSubstr !== 'string' && !(regexpOrSubstr instanceof RegExp)) throw new Error('Second param must be a string pattern or a regular expression')
133
+
134
+ var fn = (typeof regexpOrSubstr === 'string') ? replaceUsingString : replaceUsingRegexp;
135
+
136
+ return fn(string, regexpOrSubstr, newValueOrFn, globalOffset)
137
+ }
138
+
139
+ function replaceUsingString (string, patternString, newValueOrFn, globalOffset) {
140
+ var index = string.indexOf(patternString);
141
+
142
+ if (index >= 0) {
143
+ var arr = [];
144
+ var endIndex = index + patternString.length;
145
+
146
+ if (index > 0) {
147
+ arr.push(string.substring(0, index));
148
+ }
149
+
150
+ arr.push(
151
+ (typeof newValueOrFn === 'function') ?
152
+ newValueOrFn(
153
+ string.substring(index, endIndex),
154
+ index + globalOffset,
155
+ string
156
+ ) :
157
+ newValueOrFn
158
+ );
159
+
160
+ if (endIndex < string.length) {
161
+ arr.push(string.substring(endIndex));
162
+ }
163
+
164
+ return arr
165
+ } else {
166
+ return [string]
167
+ }
168
+ }
169
+
170
+ function replaceUsingRegexp (string, regexp, newValueOrFn, globalOffset) {
171
+ var output = [];
172
+
173
+ var replacerIsFn = (typeof newValueOrFn === 'function');
174
+
175
+ var storedLastIndex = regexp.lastIndex;
176
+ regexp.lastIndex = 0;
177
+
178
+ var result;
179
+ var lastIndex = 0;
180
+ while (result = regexp.exec(string)) {
181
+ var index = result.index;
182
+
183
+ if (result[0] === '') {
184
+ // When the regexp is an empty string
185
+ // we still want to advance our cursor to the next item.
186
+ // This is the behavior of String.replace.
187
+ regexp.lastIndex++;
188
+ }
189
+
190
+ if (index !== lastIndex) {
191
+ output.push(string.substring(lastIndex, index));
192
+ }
193
+
194
+ var match = result[0];
195
+ lastIndex = index + match.length;
196
+
197
+ var out = replacerIsFn ?
198
+ newValueOrFn.apply(this, result.concat(index + globalOffset, result.input)) :
199
+ newValueOrFn;
200
+ output.push(out);
201
+
202
+ if (!regexp.global) {
203
+ break
204
+ }
205
+ }
206
+
207
+ if (lastIndex < string.length) {
208
+ output.push(string.substring(lastIndex));
209
+ }
210
+
211
+ regexp.lastIndex = storedLastIndex;
212
+ return output
213
+ }
214
+
215
+ var stringReplaceToArray = function stringReplaceToArray (stringOrArray, regexpOrSubstr, newSubStrOrFn) {
216
+ if (typeof stringOrArray === 'string') {
217
+ return replace(stringOrArray, regexpOrSubstr, newSubStrOrFn, 0)
218
+ } else if (!Array.isArray(stringOrArray) || !stringOrArray[0]) {
219
+ throw new TypeError('First argument must be an array or non-empty string')
220
+ } else {
221
+ var len = stringOrArray.length;
222
+ var output = [];
223
+ var globalOffset = 0;
224
+ for (var i = 0; i < len; ++i) {
225
+ var arrayItem = stringOrArray[i];
226
+ if (typeof arrayItem === 'string') {
227
+ output.push.apply(output, replace(arrayItem, regexpOrSubstr, newSubStrOrFn, globalOffset));
228
+ globalOffset += arrayItem.length;
229
+ } else {
230
+ output.push(arrayItem);
231
+ }
232
+ }
233
+ return output
234
+ }
235
+ };
236
+
237
+ // This is based off of https://github.com/twitter/twemoji/blob/gh-pages/2/twemoji.js
238
+ //
239
+ // Ideally we'd use twemoji instead of replicating its logic.
240
+ // The reason we can't is that we need to run our own replace.
241
+ //
242
+ // We could use it for most things (by essentially running twemoji.parse for each
243
+ // regex match, and reading the code from the callback), but the one thing we'd always need
244
+ // to copy and paste into this file is the regex since we need it to run the replace.
245
+ //
246
+ // Another option is to fork twemoji and expose a method in it that could help us, then
247
+ // ask them to pull it in.
248
+ //
249
+
250
+ // RegExp based on emoji's official Unicode standards
251
+ // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
252
+ var re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g;
253
+
254
+ function toCodePoint(unicodeSurrogates, sep) {
255
+ var
256
+ r = [],
257
+ c = 0,
258
+ p = 0,
259
+ i = 0;
260
+
261
+ while (i < unicodeSurrogates.length) {
262
+ c = unicodeSurrogates.charCodeAt(i++);
263
+ if (p) {
264
+ r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
265
+ p = 0;
266
+ } else if (0xD800 <= c && c <= 0xDBFF) {
267
+ p = c;
268
+ } else {
269
+ r.push(c.toString(16));
270
+ }
271
+ }
272
+ return r.join(sep || '-')
273
+ }
274
+
275
+ // avoid runtime RegExp creation for not so smart,
276
+ // not JIT based, and old browsers / engines
277
+ var UFE0Fg = /\uFE0F/g;
278
+
279
+ // avoid using a string literal like '\u200D' here because minifiers expand it inline
280
+ var U200D = String.fromCharCode(0x200D);
281
+
282
+ /**
283
+ * Used to both remove the possible variant
284
+ * and to convert utf16 into code points.
285
+ * If there is a zero-width-joiner (U+200D), leave the variants in.
286
+ * @param string the raw text of the emoji match
287
+ */
288
+ function grabTheRightIcon(rawText) {
289
+ // if variant is present as \uFE0F
290
+ return toCodePoint(rawText.indexOf(U200D) < 0 ?
291
+ rawText.replace(UFE0Fg, '') :
292
+ rawText
293
+ );
294
+ }
295
+
296
+ var replaceEmoji$1 = function replaceEmoji (string, render) {
297
+ // Note: the latest regex added an empty matching group, so we ignore it.
298
+ return stringReplaceToArray(string, re, function emojiReplacer (match, _, offset) {
299
+ var icon = grabTheRightIcon(match);
300
+ return render(icon, match, offset)
301
+ })
302
+ };
303
+
304
+ var createElement = React__default["default"].createElement;
305
+
306
+ var pageProtocol = (typeof location === 'undefined') ? '' : ((location.protocol === 'https:') ? 'https:' : 'http:');
307
+
308
+ var emojiStyle = {
309
+ height: '1em',
310
+ width: '1em',
311
+ margin: '0 .05em 0 .1em',
312
+ verticalAlign: '-0.1em'
313
+ };
314
+
315
+ // Accept protocol with or without a colon
316
+ function normalizeProtocol(protocol) {
317
+ if (protocol && protocol.length > 0 && protocol.charAt(protocol.length - 1) !== ':') {
318
+ return protocol + ':'
319
+ }
320
+ return protocol
321
+ }
322
+
323
+ var makeTwemojiRenderer$1 = function makeTwemojiRenderer(options) {
324
+ options = merge({
325
+ protocol: pageProtocol,
326
+ baseUrl: '//twemoji.maxcdn.com/2/',
327
+ size: '72x72',
328
+ ext: '.png',
329
+ props: null
330
+ }, options);
331
+
332
+ return function renderTwemoji (icon, match, offset) {
333
+ var src = '';
334
+ if (options.baseUrl.indexOf('http') !== 0) {
335
+ src += normalizeProtocol(options.protocol);
336
+ }
337
+
338
+ src += options.baseUrl + options.size + '/' + icon + options.ext;
339
+
340
+ return createElement(
341
+ 'img',
342
+ merge({
343
+ key: offset,
344
+ alt: match,
345
+ draggable: false,
346
+ src: src,
347
+ style: emojiStyle
348
+ }, options.props)
349
+ )
350
+ }
351
+ };
352
+
353
+ function merge() {
354
+ var out = {}, len = arguments.length;
355
+ for(var i = 0; i < len; ++i) {
356
+ var source = arguments[i];
357
+ if (source) {
358
+ for (var key in source) {
359
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
360
+ out[key] = source[key];
361
+ }
362
+ }
363
+ }
364
+ }
365
+ return out
366
+ }
367
+
368
+ var replaceEmoji = replaceEmoji$1;
369
+
370
+ var makeTwemojiRenderer = makeTwemojiRenderer$1;
371
+
372
+ var reactEasyEmoji = function reactEasyEmoji (element, optionsOrFn) {
373
+ var render = (typeof optionsOrFn === 'function') ? optionsOrFn : makeTwemojiRenderer(optionsOrFn);
374
+ return replaceEmoji(element, render)
375
+ };
376
+
377
+ var emoji = reactEasyEmoji;
378
+
379
+ /*
380
+ These magic numbers are charCode math, where we take advantage of the offset
381
+ between any two uppercase leters (e.g. A - C = 2) being the same as the one
382
+ between the emoji flag variant of those letters (e.g. (emoji A) - (emoji C) = 2).
383
+ */
384
+ const FLAG_LETTER_EMOJI_FIRST_CODEPOINT = 55356; // "🇦".charCodeAt(0)
385
+ const UPPERCASE_AND_FLAG_LETTER_EMOJI_SECOND_CODEPOINT_OFFSET = 56741; // "🇦".charCodeAt(1) - "A".charCodeAt(0)
386
+ const getEmojiFlag = (countryCode) => {
387
+ countryCode = countryCode.toUpperCase();
388
+ /* Emoji flags are made from combination of two emoji sequences of two codepoints each. */
389
+ return String.fromCharCode(FLAG_LETTER_EMOJI_FIRST_CODEPOINT, UPPERCASE_AND_FLAG_LETTER_EMOJI_SECOND_CODEPOINT_OFFSET +
390
+ countryCode.charCodeAt(0), FLAG_LETTER_EMOJI_FIRST_CODEPOINT, UPPERCASE_AND_FLAG_LETTER_EMOJI_SECOND_CODEPOINT_OFFSET +
391
+ countryCode.charCodeAt(1));
392
+ };
393
+
394
+ var SupportedEmojiFlagCodes = ['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW'];
395
+
396
+ var LanguageCultures = [{
397
+ value: 'af',
398
+ title: 'Afrikaans'
399
+ }, {
400
+ value: 'af-ZA',
401
+ title: 'Afrikaans (South Africa)'
402
+ }, {
403
+ value: 'ar',
404
+ title: 'Arabic'
405
+ }, {
406
+ value: 'ar-AE',
407
+ title: 'Arabic (U.A.E.)'
408
+ }, {
409
+ value: 'ar-BH',
410
+ title: 'Arabic (Bahrain)'
411
+ }, {
412
+ value: 'ar-DZ',
413
+ title: 'Arabic (Algeria)'
414
+ }, {
415
+ value: 'ar-EG',
416
+ title: 'Arabic (Egypt)'
417
+ }, {
418
+ value: 'ar-IQ',
419
+ title: 'Arabic (Iraq)'
420
+ }, {
421
+ value: 'ar-JO',
422
+ title: 'Arabic (Jordan)'
423
+ }, {
424
+ value: 'ar-KW',
425
+ title: 'Arabic (Kuwait)'
426
+ }, {
427
+ value: 'ar-LB',
428
+ title: 'Arabic (Lebanon)'
429
+ }, {
430
+ value: 'ar-LY',
431
+ title: 'Arabic (Libya)'
432
+ }, {
433
+ value: 'ar-MA',
434
+ title: 'Arabic (Morocco)'
435
+ }, {
436
+ value: 'ar-OM',
437
+ title: 'Arabic (Oman)'
438
+ }, {
439
+ value: 'ar-QA',
440
+ title: 'Arabic (Qatar)'
441
+ }, {
442
+ value: 'ar-SA',
443
+ title: 'Arabic (Saudi Arabia)'
444
+ }, {
445
+ value: 'ar-SY',
446
+ title: 'Arabic (Syria)'
447
+ }, {
448
+ value: 'ar-TN',
449
+ title: 'Arabic (Tunisia)'
450
+ }, {
451
+ value: 'ar-YE',
452
+ title: 'Arabic (Yemen)'
453
+ }, {
454
+ value: 'az',
455
+ title: 'Azeri'
456
+ }, {
457
+ value: 'az-Cyrl-AZ',
458
+ title: 'Azeri (Cyrillic, Azerbaijan)'
459
+ }, {
460
+ value: 'az-Latn-AZ',
461
+ title: 'Azeri (Latin, Azerbaijan)'
462
+ }, {
463
+ value: 'be',
464
+ title: 'Belarusian'
465
+ }, {
466
+ value: 'be-BY',
467
+ title: 'Belarusian (Belarus)'
468
+ }, {
469
+ value: 'bg',
470
+ title: 'Bulgarian'
471
+ }, {
472
+ value: 'bg-BG',
473
+ title: 'Bulgarian (Bulgaria)'
474
+ }, {
475
+ value: 'bs-Latn-BA',
476
+ title: 'Bosnian (Bosnia and Herzegovina)'
477
+ }, {
478
+ value: 'ca',
479
+ title: 'Catalan'
480
+ }, {
481
+ value: 'ca-ES',
482
+ title: 'Catalan (Catalan)'
483
+ }, {
484
+ value: 'cs',
485
+ title: 'Czech'
486
+ }, {
487
+ value: 'cs-CZ',
488
+ title: 'Czech (Czech Republic)'
489
+ }, {
490
+ value: 'cy-GB',
491
+ title: 'Welsh (United Kingdom)'
492
+ }, {
493
+ value: 'da',
494
+ title: 'Danish'
495
+ }, {
496
+ value: 'da-DK',
497
+ title: 'Danish (Denmark)'
498
+ }, {
499
+ value: 'de',
500
+ title: 'German'
501
+ }, {
502
+ value: 'de-AT',
503
+ title: 'German (Austria)'
504
+ }, {
505
+ value: 'de-DE',
506
+ title: 'German (Germany)'
507
+ }, {
508
+ value: 'de-CH',
509
+ title: 'German (Switzerland)'
510
+ }, {
511
+ value: 'de-LI',
512
+ title: 'German (Liechtenstein)'
513
+ }, {
514
+ value: 'de-LU',
515
+ title: 'German (Luxembourg)'
516
+ }, {
517
+ value: 'dv',
518
+ title: 'Divehi'
519
+ }, {
520
+ value: 'dv-MV',
521
+ title: 'Divehi (Maldives)'
522
+ }, {
523
+ value: 'el',
524
+ title: 'Greek'
525
+ }, {
526
+ value: 'el-GR',
527
+ title: 'Greek (Greece)'
528
+ }, {
529
+ value: 'en',
530
+ title: 'English'
531
+ }, {
532
+ value: 'en-029',
533
+ title: 'English (Caribbean)'
534
+ }, {
535
+ value: 'en-AU',
536
+ title: 'English (Australia)'
537
+ }, {
538
+ value: 'en-BZ',
539
+ title: 'English (Belize)'
540
+ }, {
541
+ value: 'en-CA',
542
+ title: 'English (Canada)'
543
+ }, {
544
+ value: 'en-GB',
545
+ title: 'English (United Kingdom)'
546
+ }, {
547
+ value: 'en-IE',
548
+ title: 'English (Ireland)'
549
+ }, {
550
+ value: 'en-JM',
551
+ title: 'English (Jamaica)'
552
+ }, {
553
+ value: 'en-NZ',
554
+ title: 'English (New Zealand)'
555
+ }, {
556
+ value: 'en-PH',
557
+ title: 'English (Republic of the Philippines)'
558
+ }, {
559
+ value: 'en-TT',
560
+ title: 'English (Trinidad and Tobago)'
561
+ }, {
562
+ value: 'en-US',
563
+ title: 'English (United States)'
564
+ }, {
565
+ value: 'en-ZA',
566
+ title: 'English (South Africa)'
567
+ }, {
568
+ value: 'en-ZW',
569
+ title: 'English (Zimbabwe)'
570
+ }, {
571
+ value: 'es',
572
+ title: 'Spanish'
573
+ }, {
574
+ value: 'es-AR',
575
+ title: 'Spanish (Argentina)'
576
+ }, {
577
+ value: 'es-BO',
578
+ title: 'Spanish (Bolivia)'
579
+ }, {
580
+ value: 'es-CL',
581
+ title: 'Spanish (Chile)'
582
+ }, {
583
+ value: 'es-CO',
584
+ title: 'Spanish (Colombia)'
585
+ }, {
586
+ value: 'es-CR',
587
+ title: 'Spanish (Costa Rica)'
588
+ }, {
589
+ value: 'es-DO',
590
+ title: 'Spanish (Dominican Republic)'
591
+ }, {
592
+ value: 'es-EC',
593
+ title: 'Spanish (Ecuador)'
594
+ }, {
595
+ value: 'es-ES',
596
+ title: 'Spanish (Spain)'
597
+ }, {
598
+ value: 'es-GT',
599
+ title: 'Spanish (Guatemala)'
600
+ }, {
601
+ value: 'es-HN',
602
+ title: 'Spanish (Honduras)'
603
+ }, {
604
+ value: 'es-MX',
605
+ title: 'Spanish (Mexico)'
606
+ }, {
607
+ value: 'es-NI',
608
+ title: 'Spanish (Nicaragua)'
609
+ }, {
610
+ value: 'es-PA',
611
+ title: 'Spanish (Panama)'
612
+ }, {
613
+ value: 'es-PE',
614
+ title: 'Spanish (Peru)'
615
+ }, {
616
+ value: 'es-PR',
617
+ title: 'Spanish (Puerto Rico)'
618
+ }, {
619
+ value: 'es-PY',
620
+ title: 'Spanish (Paraguay)'
621
+ }, {
622
+ value: 'es-SV',
623
+ title: 'Spanish (El Salvador)'
624
+ }, {
625
+ value: 'es-UY',
626
+ title: 'Spanish (Uruguay)'
627
+ }, {
628
+ value: 'es-VE',
629
+ title: 'Spanish (Venezuela)'
630
+ }, {
631
+ value: 'et',
632
+ title: 'Estonian'
633
+ }, {
634
+ value: 'et-EE',
635
+ title: 'Estonian (Estonia)'
636
+ }, {
637
+ value: 'eu',
638
+ title: 'Basque'
639
+ }, {
640
+ value: 'eu-ES',
641
+ title: 'Basque (Basque)'
642
+ }, {
643
+ value: 'fa',
644
+ title: 'Persian'
645
+ }, {
646
+ value: 'fa-IR',
647
+ title: 'Persian (Iran)'
648
+ }, {
649
+ value: 'fi',
650
+ title: 'Finnish'
651
+ }, {
652
+ value: 'fi-FI',
653
+ title: 'Finnish (Finland)'
654
+ }, {
655
+ value: 'fo',
656
+ title: 'Faroese'
657
+ }, {
658
+ value: 'fo-FO',
659
+ title: 'Faroese (Faroe Islands)'
660
+ }, {
661
+ value: 'fr',
662
+ title: 'French'
663
+ }, {
664
+ value: 'fr-BE',
665
+ title: 'French (Belgium)'
666
+ }, {
667
+ value: 'fr-CA',
668
+ title: 'French (Canada)'
669
+ }, {
670
+ value: 'fr-FR',
671
+ title: 'French (France)'
672
+ }, {
673
+ value: 'fr-CH',
674
+ title: 'French (Switzerland)'
675
+ }, {
676
+ value: 'fr-LU',
677
+ title: 'French (Luxembourg)'
678
+ }, {
679
+ value: 'fr-MC',
680
+ title: 'French (Principality of Monaco)'
681
+ }, {
682
+ value: 'gl',
683
+ title: 'Galician'
684
+ }, {
685
+ value: 'gl-ES',
686
+ title: 'Galician (Galician)'
687
+ }, {
688
+ value: 'gu',
689
+ title: 'Gujarati'
690
+ }, {
691
+ value: 'gu-IN',
692
+ title: 'Gujarati (India)'
693
+ }, {
694
+ value: 'he',
695
+ title: 'Hebrew'
696
+ }, {
697
+ value: 'he-IL',
698
+ title: 'Hebrew (Israel)'
699
+ }, {
700
+ value: 'hi',
701
+ title: 'Hindi'
702
+ }, {
703
+ value: 'hi-IN',
704
+ title: 'Hindi (India)'
705
+ }, {
706
+ value: 'hr',
707
+ title: 'Croatian'
708
+ }, {
709
+ value: 'hr-BA',
710
+ title: 'Croatian (Bosnia and Herzegovina)'
711
+ }, {
712
+ value: 'hr-HR',
713
+ title: 'Croatian (Croatia)'
714
+ }, {
715
+ value: 'hu',
716
+ title: 'Hungarian'
717
+ }, {
718
+ value: 'hu-HU',
719
+ title: 'Hungarian (Hungary)'
720
+ }, {
721
+ value: 'hy',
722
+ title: 'Armenian'
723
+ }, {
724
+ value: 'hy-AM',
725
+ title: 'Armenian (Armenia)'
726
+ }, {
727
+ value: 'id',
728
+ title: 'Indonesian'
729
+ }, {
730
+ value: 'id-ID',
731
+ title: 'Indonesian (Indonesia)'
732
+ }, {
733
+ value: 'is',
734
+ title: 'Icelandic'
735
+ }, {
736
+ value: 'is-IS',
737
+ title: 'Icelandic (Iceland)'
738
+ }, {
739
+ value: 'it',
740
+ title: 'Italian'
741
+ }, {
742
+ value: 'it-CH',
743
+ title: 'Italian (Switzerland)'
744
+ }, {
745
+ value: 'it-IT',
746
+ title: 'Italian (Italy)'
747
+ }, {
748
+ value: 'ja',
749
+ title: 'Japanese'
750
+ }, {
751
+ value: 'ja-JP',
752
+ title: 'Japanese (Japan)'
753
+ }, {
754
+ value: 'ka',
755
+ title: 'Georgian'
756
+ }, {
757
+ value: 'ka-GE',
758
+ title: 'Georgian (Georgia)'
759
+ }, {
760
+ value: 'kk',
761
+ title: 'Kazakh'
762
+ }, {
763
+ value: 'kk-KZ',
764
+ title: 'Kazakh (Kazakhstan)'
765
+ }, {
766
+ value: 'kn',
767
+ title: 'Kannada'
768
+ }, {
769
+ value: 'kn-IN',
770
+ title: 'Kannada (India)'
771
+ }, {
772
+ value: 'ko',
773
+ title: 'Korean'
774
+ }, {
775
+ value: 'kok',
776
+ title: 'Konkani'
777
+ }, {
778
+ value: 'kok-IN',
779
+ title: 'Konkani (India)'
780
+ }, {
781
+ value: 'ko-KR',
782
+ title: 'Korean (Korea)'
783
+ }, {
784
+ value: 'ky',
785
+ title: 'Kyrgyz'
786
+ }, {
787
+ value: 'ky-KG',
788
+ title: 'Kyrgyz (Kyrgyzstan)'
789
+ }, {
790
+ value: 'lt',
791
+ title: 'Lithuanian'
792
+ }, {
793
+ value: 'lt-LT',
794
+ title: 'Lithuanian (Lithuania)'
795
+ }, {
796
+ value: 'lv',
797
+ title: 'Latvian'
798
+ }, {
799
+ value: 'lv-LV',
800
+ title: 'Latvian (Latvia)'
801
+ }, {
802
+ value: 'mi-NZ',
803
+ title: 'Maori (New Zealand)'
804
+ }, {
805
+ value: 'mk',
806
+ title: 'Macedonian'
807
+ }, {
808
+ value: 'mk-MK',
809
+ title: 'Macedonian (Former Yugoslav Republic of Macedonia)'
810
+ }, {
811
+ value: 'mn',
812
+ title: 'Mongolian'
813
+ }, {
814
+ value: 'mn-MN',
815
+ title: 'Mongolian (Cyrillic, Mongolia)'
816
+ }, {
817
+ value: 'mr',
818
+ title: 'Marathi'
819
+ }, {
820
+ value: 'mr-IN',
821
+ title: 'Marathi (India)'
822
+ }, {
823
+ value: 'ms',
824
+ title: 'Malay'
825
+ }, {
826
+ value: 'ms-BN',
827
+ title: 'Malay (Brunei Darussalam)'
828
+ }, {
829
+ value: 'ms-MY',
830
+ title: 'Malay (Malaysia)'
831
+ }, {
832
+ value: 'mt-MT',
833
+ title: 'Maltese (Malta)'
834
+ }, {
835
+ value: 'nb-NO',
836
+ title: 'Norwegian, Bokmal (Norway)'
837
+ }, {
838
+ value: 'nl',
839
+ title: 'Dutch'
840
+ }, {
841
+ value: 'nl-BE',
842
+ title: 'Dutch (Belgium)'
843
+ }, {
844
+ value: 'nl-NL',
845
+ title: 'Dutch (Netherlands)'
846
+ }, {
847
+ value: 'nn-NO',
848
+ title: 'Norwegian, Nynorsk (Norway)'
849
+ }, {
850
+ value: 'no',
851
+ title: 'Norwegian'
852
+ }, {
853
+ value: 'ns-ZA',
854
+ title: 'Northern Sotho (South Africa)'
855
+ }, {
856
+ value: 'pa',
857
+ title: 'Punjabi'
858
+ }, {
859
+ value: 'pa-IN',
860
+ title: 'Punjabi (India)'
861
+ }, {
862
+ value: 'pl',
863
+ title: 'Polish'
864
+ }, {
865
+ value: 'pl-PL',
866
+ title: 'Polish (Poland)'
867
+ }, {
868
+ value: 'pt',
869
+ title: 'Portuguese'
870
+ }, {
871
+ value: 'pt-BR',
872
+ title: 'Portuguese (Brazil)'
873
+ }, {
874
+ value: 'pt-PT',
875
+ title: 'Portuguese (Portugal)'
876
+ }, {
877
+ value: 'quz-BO',
878
+ title: 'Quechua (Bolivia)'
879
+ }, {
880
+ value: 'quz-EC',
881
+ title: 'Quechua (Ecuador)'
882
+ }, {
883
+ value: 'quz-PE',
884
+ title: 'Quechua (Peru)'
885
+ }, {
886
+ value: 'ro',
887
+ title: 'Romanian'
888
+ }, {
889
+ value: 'ro-RO',
890
+ title: 'Romanian (Romania)'
891
+ }, {
892
+ value: 'ru',
893
+ title: 'Russian'
894
+ }, {
895
+ value: 'ru-RU',
896
+ title: 'Russian (Russia)'
897
+ }, {
898
+ value: 'sa',
899
+ title: 'Sanskrit'
900
+ }, {
901
+ value: 'sa-IN',
902
+ title: 'Sanskrit (India)'
903
+ }, {
904
+ value: 'se-FI',
905
+ title: 'Sami (Northern) (Finland)'
906
+ }, {
907
+ value: 'se-NO',
908
+ title: 'Sami (Northern) (Norway)'
909
+ }, {
910
+ value: 'se-SE',
911
+ title: 'Sami (Northern) (Sweden)'
912
+ }, {
913
+ value: 'sk',
914
+ title: 'Slovak'
915
+ }, {
916
+ value: 'sk-SK',
917
+ title: 'Slovak (Slovakia)'
918
+ }, {
919
+ value: 'sl',
920
+ title: 'Slovenian'
921
+ }, {
922
+ value: 'sl-SI',
923
+ title: 'Slovenian (Slovenia)'
924
+ }, {
925
+ value: 'sma-NO',
926
+ title: 'Sami (Southern) (Norway)'
927
+ }, {
928
+ value: 'sma-SE',
929
+ title: 'Sami (Southern) (Sweden)'
930
+ }, {
931
+ value: 'smj-NO',
932
+ title: 'Sami (Lule) (Norway)'
933
+ }, {
934
+ value: 'smj-SE',
935
+ title: 'Sami (Lule) (Sweden)'
936
+ }, {
937
+ value: 'smn-FI',
938
+ title: 'Sami (Inari) (Finland)'
939
+ }, {
940
+ value: 'sms-FI',
941
+ title: 'Sami (Skolt) (Finland)'
942
+ }, {
943
+ value: 'sq',
944
+ title: 'Albanian'
945
+ }, {
946
+ value: 'sq-AL',
947
+ title: 'Albanian (Albania)'
948
+ }, {
949
+ value: 'sr',
950
+ title: 'Serbian'
951
+ }, {
952
+ value: 'sr-Cyrl-BA',
953
+ title: 'Serbian (Cyrillic) (Bosnia and Herzegovina)'
954
+ }, {
955
+ value: 'sr-Cyrl-CS',
956
+ title: 'Serbian (Cyrillic, Serbia)'
957
+ }, {
958
+ value: 'sr-Latn-BA',
959
+ title: 'Serbian (Latin) (Bosnia and Herzegovina)'
960
+ }, {
961
+ value: 'sr-Latn-CS',
962
+ title: 'Serbian (Latin, Serbia)'
963
+ }, {
964
+ value: 'sv',
965
+ title: 'Swedish'
966
+ }, {
967
+ value: 'sv-FI',
968
+ title: 'Swedish (Finland)'
969
+ }, {
970
+ value: 'sv-SE',
971
+ title: 'Swedish (Sweden)'
972
+ }, {
973
+ value: 'sw',
974
+ title: 'Kiswahili'
975
+ }, {
976
+ value: 'sw-KE',
977
+ title: 'Kiswahili (Kenya)'
978
+ }, {
979
+ value: 'syr',
980
+ title: 'Syriac'
981
+ }, {
982
+ value: 'syr-SY',
983
+ title: 'Syriac (Syria)'
984
+ }, {
985
+ value: 'ta',
986
+ title: 'Tamil'
987
+ }, {
988
+ value: 'ta-IN',
989
+ title: 'Tamil (India)'
990
+ }, {
991
+ value: 'te',
992
+ title: 'Telugu'
993
+ }, {
994
+ value: 'te-IN',
995
+ title: 'Telugu (India)'
996
+ }, {
997
+ value: 'th',
998
+ title: 'Thai'
999
+ }, {
1000
+ value: 'th-TH',
1001
+ title: 'Thai (Thailand)'
1002
+ }, {
1003
+ value: 'tn-ZA',
1004
+ title: 'Tswana (South Africa)'
1005
+ }, {
1006
+ value: 'tr',
1007
+ title: 'Turkish'
1008
+ }, {
1009
+ value: 'tr-TR',
1010
+ title: 'Turkish (Turkey)'
1011
+ }, {
1012
+ value: 'tt',
1013
+ title: 'Tatar'
1014
+ }, {
1015
+ value: 'tt-RU',
1016
+ title: 'Tatar (Russia)'
1017
+ }, {
1018
+ value: 'uk',
1019
+ title: 'Ukrainian'
1020
+ }, {
1021
+ value: 'uk-UA',
1022
+ title: 'Ukrainian (Ukraine)'
1023
+ }, {
1024
+ value: 'ur',
1025
+ title: 'Urdu'
1026
+ }, {
1027
+ value: 'ur-PK',
1028
+ title: 'Urdu (Islamic Republic of Pakistan)'
1029
+ }, {
1030
+ value: 'uz',
1031
+ title: 'Uzbek'
1032
+ }, {
1033
+ value: 'uz-Cyrl-UZ',
1034
+ title: 'Uzbek (Cyrillic, Uzbekistan)'
1035
+ }, {
1036
+ value: 'uz-Latn-UZ',
1037
+ title: 'Uzbek (Latin, Uzbekistan)'
1038
+ }, {
1039
+ value: 'vi',
1040
+ title: 'Vietnamese'
1041
+ }, {
1042
+ value: 'vi-VN',
1043
+ title: 'Vietnamese (Vietnam)'
1044
+ }, {
1045
+ value: 'xh-ZA',
1046
+ title: 'Xhosa (South Africa)'
1047
+ }, {
1048
+ value: 'zh-CN',
1049
+ title: "Chinese (People's Republic of China)"
1050
+ }, {
1051
+ value: 'zh-HK',
1052
+ title: 'Chinese (Hong Kong S.A.R.)'
1053
+ }, {
1054
+ value: 'zh-CHS',
1055
+ title: 'Chinese (Simplified)'
1056
+ }, {
1057
+ value: 'zh-CHT',
1058
+ title: 'Chinese (Traditional)'
1059
+ }, {
1060
+ value: 'zh-MO',
1061
+ title: 'Chinese (Macao S.A.R.)'
1062
+ }, {
1063
+ value: 'zh-SG',
1064
+ title: 'Chinese (Singapore)'
1065
+ }, {
1066
+ value: 'zh-TW',
1067
+ title: 'Chinese (Taiwan)'
1068
+ }, {
1069
+ value: 'zu-ZA',
1070
+ title: 'Zulu (South Africa)'
1071
+ }];
1072
+
1073
+ var I18nPrefix = 'i18n';
1074
+
1075
+ var I18nDelimiter = '__i18n_';
1076
+
1077
+ var ReferenceBehavior;
1078
+
1079
+ (function (ReferenceBehavior) {
1080
+ ReferenceBehavior["STRONG"] = "strong";
1081
+ ReferenceBehavior["WEAK"] = "weak";
1082
+ ReferenceBehavior["DISABLED"] = "disabled";
1083
+ })(ReferenceBehavior || (ReferenceBehavior = {}));
1084
+
1085
+ var IdStructure;
1086
+
1087
+ (function (IdStructure) {
1088
+ IdStructure["SUBPATH"] = "subpath";
1089
+ IdStructure["DELIMITER"] = "delimiter";
1090
+ })(IdStructure || (IdStructure = {}));
1091
+
1092
+ var UiMessages = {
1093
+ publishing: 'Publishing...',
1094
+ publish: 'Publish',
1095
+ updatingIntlFields: 'Updating i18n fields',
1096
+ intlFieldsUpdated: 'I18n fields updated',
1097
+ baseDocumentCopied: 'Base document copied',
1098
+ translationCreatedToast: {
1099
+ title: function title(name) {
1100
+ return "Translation created: ".concat(name);
1101
+ },
1102
+ description: function description(name) {
1103
+ return "The content from \u2018".concat(name, "\u2019 is copied into the new document translation.");
1104
+ }
1105
+ },
1106
+ loading: 'Loading languages...',
1107
+ draft: 'Draft',
1108
+ missingTranslations: 'Following languages are missing some translations compared to the base language',
1109
+ base: 'Base Translation',
1110
+ missing: 'Missing',
1111
+ deleteAll: {
1112
+ buttonTitle: 'Delete (incl. translations)',
1113
+ deleting: 'Deleting...'
1114
+ },
1115
+ duplicateAll: {
1116
+ buttonTitle: 'Duplicate (incl. translations)',
1117
+ duplicating: 'Duplicating...'
1118
+ },
1119
+ translationsMaintenance: {
1120
+ title: 'Translation Maintenance',
1121
+ selectSchemaPlaceholder: 'Select schema type',
1122
+ idStructureMismatch: 'document(s) with mismatched ID structures',
1123
+ missingLanguageField: 'document(s) are missing the language field',
1124
+ missingDocumentRefs: 'document(s) have missing translation references',
1125
+ missingBaseDocumentRefs: 'document(s) have missing base document references',
1126
+ orphanDocuments: 'orphaned translation document(s)',
1127
+ referenceBehaviorMismatch: 'document(s) with mismatched reference behaviors',
1128
+ baseLanguageMismatch: 'base document(s) with mismatched language field',
1129
+ fix: 'Fix'
1130
+ },
1131
+ errors: {
1132
+ baseDocumentNotPublished: 'It looks like you have not published your base translation yet. When using strong references it is required to publish the base document before publishing any translated entries'
1133
+ },
1134
+ languageSelect: {
1135
+ placeholder: 'Switch language',
1136
+ listLabels: {
1137
+ existing: 'Select document translations',
1138
+ missing: 'Create new document translations'
1139
+ }
1140
+ }
1141
+ };
1142
+
1143
+ var getFlag = function getFlag() {
1144
+ var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
1145
+
1146
+ if (!code) {
1147
+ return "";
1148
+ }
1149
+
1150
+ var flagCode = getFlagCode(code);
1151
+
1152
+ if (!SupportedEmojiFlagCodes.includes(flagCode.toUpperCase())) {
1153
+ return "";
1154
+ }
1155
+
1156
+ var emoji = getEmojiFlag(flagCode);
1157
+ return emoji;
1158
+ }; // Convert some language codes to country codes
1159
+
1160
+ var getFlagCode = function getFlagCode() {
1161
+ var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
1162
+
1163
+ if (!code) {
1164
+ return "";
1165
+ }
1166
+
1167
+ switch (code.toLocaleLowerCase()) {
1168
+ case "en":
1169
+ return "gb";
1170
+
1171
+ default:
1172
+ return code;
1173
+ }
1174
+ };
1175
+
1176
+ var _templateObject$2;
1177
+ var FlagImageContainer = styled__default["default"].span(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral__default["default"](["\n display: block;\n padding: 1px;\n font-size: 19px;\n margin: 0px -0.05em 0px -0.1em;\n\n & img {\n display: block;\n }\n"])));
1178
+ var SingleFlag = function SingleFlag(_ref) {
1179
+ var code = _ref.code,
1180
+ langCulture = _ref.langCulture,
1181
+ className = _ref.className;
1182
+ var flagEmoji = React.useMemo(function () {
1183
+ return code && getFlag(code);
1184
+ }, [code]);
1185
+ var CustomFlagComponent = React.useMemo(function () {
1186
+ if (langCulture && customFlagComponents__namespace) {
1187
+ var exportedName = langCulture.replace(/[^a-zA-Z0-9_]/g, '_');
1188
+
1189
+ if (exportedName in customFlagComponents__namespace) {
1190
+ return customFlagComponents__namespace[exportedName];
1191
+ }
1192
+ }
1193
+
1194
+ return null;
1195
+ }, [langCulture]);
1196
+ return /*#__PURE__*/React__default["default"].createElement(FlagImageContainer, {
1197
+ "aria-label": code,
1198
+ className: className
1199
+ }, CustomFlagComponent && code ? /*#__PURE__*/React__default["default"].createElement(CustomFlagComponent, {
1200
+ code: code
1201
+ }) : emoji(flagEmoji) || '🏳️‍🌈');
1202
+ };
1203
+
1204
+ var getSchema = function getSchema(name) {
1205
+ return schemas__default["default"]._original.types.find(function (s) {
1206
+ return s.name === name;
1207
+ });
1208
+ };
1209
+
1210
+ var getI18nConfigFromType = function getI18nConfigFromType(type) {
1211
+ var i18nconfig = {};
1212
+
1213
+ if (type) {
1214
+ if (typeof type === 'string') {
1215
+ var schema = getSchema(type);
1216
+
1217
+ if (schema && typeof schema.i18n !== 'boolean') {
1218
+ i18nconfig = schema.i18n;
1219
+ }
1220
+ } else if (typeof type.i18n !== 'boolean') {
1221
+ i18nconfig = type.i18n;
1222
+ }
1223
+ }
1224
+
1225
+ return i18nconfig;
1226
+ };
1227
+
1228
+ function getConfig(type) {
1229
+ var _schemaConfig$fieldNa, _cfg$fieldNames, _schemaConfig$fieldNa2, _cfg$fieldNames2, _schemaConfig$fieldNa3, _cfg$fieldNames3;
1230
+
1231
+ var schemaConfig = getI18nConfigFromType(type);
1232
+ var cfg = config__default["default"];
1233
+ return {
1234
+ base: (schemaConfig === null || schemaConfig === void 0 ? void 0 : schemaConfig.base) || (cfg === null || cfg === void 0 ? void 0 : cfg.base) || '',
1235
+ idStructure: cfg.idStructure || IdStructure.DELIMITER,
1236
+ referenceBehavior: cfg.referenceBehavior || ReferenceBehavior.STRONG,
1237
+ withTranslationsMaintenance: (cfg === null || cfg === void 0 ? void 0 : cfg.withTranslationsMaintenance) === true,
1238
+ fieldNames: {
1239
+ lang: (schemaConfig === null || schemaConfig === void 0 ? void 0 : (_schemaConfig$fieldNa = schemaConfig.fieldNames) === null || _schemaConfig$fieldNa === void 0 ? void 0 : _schemaConfig$fieldNa.lang) || (cfg === null || cfg === void 0 ? void 0 : (_cfg$fieldNames = cfg.fieldNames) === null || _cfg$fieldNames === void 0 ? void 0 : _cfg$fieldNames.lang) || '__i18n_lang',
1240
+ references: (schemaConfig === null || schemaConfig === void 0 ? void 0 : (_schemaConfig$fieldNa2 = schemaConfig.fieldNames) === null || _schemaConfig$fieldNa2 === void 0 ? void 0 : _schemaConfig$fieldNa2.references) || (cfg === null || cfg === void 0 ? void 0 : (_cfg$fieldNames2 = cfg.fieldNames) === null || _cfg$fieldNames2 === void 0 ? void 0 : _cfg$fieldNames2.references) || '__i18n_refs',
1241
+ baseReference: (schemaConfig === null || schemaConfig === void 0 ? void 0 : (_schemaConfig$fieldNa3 = schemaConfig.fieldNames) === null || _schemaConfig$fieldNa3 === void 0 ? void 0 : _schemaConfig$fieldNa3.baseReference) || (cfg === null || cfg === void 0 ? void 0 : (_cfg$fieldNames3 = cfg.fieldNames) === null || _cfg$fieldNames3 === void 0 ? void 0 : _cfg$fieldNames3.baseReference) || '__i18n_base'
1242
+ },
1243
+ languages: (schemaConfig === null || schemaConfig === void 0 ? void 0 : schemaConfig.languages) || (cfg === null || cfg === void 0 ? void 0 : cfg.languages) || []
1244
+ };
1245
+ }
1246
+
1247
+ var buildDocId = function buildDocId(id, lang) {
1248
+ var config = getConfig();
1249
+ if (config.idStructure === IdStructure.DELIMITER) return "".concat(id).concat(I18nDelimiter).concat(lang || '*');
1250
+ return "".concat(I18nPrefix, ".").concat(id, ".").concat(lang || '*');
1251
+ };
1252
+
1253
+ var normalizeLanguageList = function normalizeLanguageList(languages) {
1254
+ return languages.map(function (l) {
1255
+ if (typeof l === 'string') {
1256
+ var langCult = LanguageCultures.find(function (x) {
1257
+ return x.value === l;
1258
+ });
1259
+ if (langCult) return {
1260
+ title: langCult.title,
1261
+ id: l
1262
+ };
1263
+ return {
1264
+ title: l,
1265
+ id: l
1266
+ };
1267
+ }
1268
+
1269
+ if ('name' in l) {
1270
+ console.warn("The \"name\" field in your language configuration is deprecated, please replace it with \"id\".");
1271
+ return {
1272
+ title: l.title,
1273
+ id: l.name
1274
+ };
1275
+ }
1276
+
1277
+ return {
1278
+ title: l.title,
1279
+ id: l.id
1280
+ };
1281
+ });
1282
+ };
1283
+
1284
+ var getBaseLanguage = function getBaseLanguage(langs, base) {
1285
+ if (base) return langs.find(function (l) {
1286
+ return l.id === base;
1287
+ }) || null;
1288
+ return langs.length > 0 ? langs[0] : null;
1289
+ };
1290
+
1291
+ var getSanityClient = function getSanityClient() {
1292
+ return client__default["default"].withConfig({
1293
+ apiVersion: "2021-10-01"
1294
+ });
1295
+ };
1296
+
1297
+ var getLanguagesFromOption = /*#__PURE__*/function () {
1298
+ var _ref = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(langs, document) {
1299
+ var languages, possiblePromise;
1300
+ return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
1301
+ while (1) {
1302
+ switch (_context2.prev = _context2.next) {
1303
+ case 0:
1304
+ _context2.t0 = normalizeLanguageList;
1305
+ _context2.next = 3;
1306
+ return _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
1307
+ var r, value;
1308
+ return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
1309
+ while (1) {
1310
+ switch (_context.prev = _context.next) {
1311
+ case 0:
1312
+ if (!Array.isArray(langs)) {
1313
+ _context.next = 2;
1314
+ break;
1315
+ }
1316
+
1317
+ return _context.abrupt("return", langs);
1318
+
1319
+ case 2:
1320
+ _context.next = 4;
1321
+ return getSanityClient().fetch(langs.query);
1322
+
1323
+ case 4:
1324
+ r = _context.sent;
1325
+ value = langs.value;
1326
+
1327
+ if (!(typeof value === 'string')) {
1328
+ _context.next = 8;
1329
+ break;
1330
+ }
1331
+
1332
+ return _context.abrupt("return", r.map(function (l) {
1333
+ return objectSafeGet(l, value);
1334
+ }));
1335
+
1336
+ case 8:
1337
+ return _context.abrupt("return", r.map(function (l) {
1338
+ // @deprecated
1339
+ if ('name' in value) {
1340
+ return {
1341
+ name: objectSafeGet(l, value.name),
1342
+ title: objectSafeGet(l, value.title)
1343
+ };
1344
+ }
1345
+
1346
+ return {
1347
+ id: objectSafeGet(l, value.id),
1348
+ title: objectSafeGet(l, value.title)
1349
+ };
1350
+ }));
1351
+
1352
+ case 9:
1353
+ case "end":
1354
+ return _context.stop();
1355
+ }
1356
+ }
1357
+ }, _callee);
1358
+ }))();
1359
+
1360
+ case 3:
1361
+ _context2.t1 = _context2.sent;
1362
+ languages = (0, _context2.t0)(_context2.t1);
1363
+
1364
+ if (!languagesLoaderFn__default["default"]) {
1365
+ _context2.next = 8;
1366
+ break;
1367
+ }
1368
+
1369
+ possiblePromise = languagesLoaderFn__default["default"](languages, document);
1370
+ return _context2.abrupt("return", possiblePromise);
1371
+
1372
+ case 8:
1373
+ return _context2.abrupt("return", languages);
1374
+
1375
+ case 9:
1376
+ case "end":
1377
+ return _context2.stop();
1378
+ }
1379
+ }
1380
+ }, _callee2);
1381
+ }));
1382
+
1383
+ return function getLanguagesFromOption(_x, _x2) {
1384
+ return _ref.apply(this, arguments);
1385
+ };
1386
+ }();
1387
+
1388
+ var getLanguageFromId = function getLanguageFromId(id) {
1389
+ // subpath
1390
+ var rx = new RegExp("".concat(I18nPrefix, "\\.[^.]+\\.([^.]+)"));
1391
+ var match = id.match(rx);
1392
+ if (match && match.length === 2) return match[1]; // delimiter
1393
+
1394
+ var split = id.split(I18nDelimiter);
1395
+ if (split.length > 1) return split[1];
1396
+ return null;
1397
+ };
1398
+
1399
+ var getBaseIdFromId = function getBaseIdFromId(id) {
1400
+ var nonDraftId = id.replace(/^drafts\./, ''); // subpath
1401
+
1402
+ var rx = new RegExp("".concat(I18nPrefix, "\\.([^.]+)\\.[^.]+"));
1403
+ var match = nonDraftId.match(rx);
1404
+ if (match && match.length === 2) return match[1]; // delimiter
1405
+
1406
+ var split = nonDraftId.split(I18nDelimiter);
1407
+ if (split.length > 0) return split[0];
1408
+ return nonDraftId;
1409
+ };
1410
+
1411
+ function useLanguages(document) {
1412
+ var config = React.useMemo(function () {
1413
+ return getConfig(document._type);
1414
+ }, [document._type]);
1415
+
1416
+ var _useEditState = reactHooks.useEditState(document._id.replace(/^drafts\./, ''), document._type),
1417
+ draft = _useEditState.draft,
1418
+ published = _useEditState.published;
1419
+
1420
+ var _useState = React.useState(false),
1421
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1422
+ pending = _useState2[0],
1423
+ setPending = _useState2[1];
1424
+
1425
+ var _useState3 = React.useState([]),
1426
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
1427
+ languages = _useState4[0],
1428
+ setLanguages = _useState4[1];
1429
+
1430
+ var loadOrReloadLanguages = React.useCallback( /*#__PURE__*/_asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
1431
+ var shouldReload, languageObjects;
1432
+ return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
1433
+ while (1) {
1434
+ switch (_context.prev = _context.next) {
1435
+ case 0:
1436
+ shouldReload = languages.length === 0 || shouldReloadFn__default["default"] && shouldReloadFn__default["default"](draft !== null && draft !== void 0 ? draft : published);
1437
+
1438
+ if (!shouldReload) {
1439
+ _context.next = 8;
1440
+ break;
1441
+ }
1442
+
1443
+ setPending(true);
1444
+ _context.next = 5;
1445
+ return getLanguagesFromOption(config.languages, draft !== null && draft !== void 0 ? draft : published);
1446
+
1447
+ case 5:
1448
+ languageObjects = _context.sent;
1449
+ setLanguages(languageObjects);
1450
+ setPending(false);
1451
+
1452
+ case 8:
1453
+ case "end":
1454
+ return _context.stop();
1455
+ }
1456
+ }
1457
+ }, _callee);
1458
+ })), [draft, published, config, languages]);
1459
+ React.useEffect(function () {
1460
+ loadOrReloadLanguages();
1461
+ }, [draft, published, languages, config, loadOrReloadLanguages]);
1462
+ return [pending, languages];
1463
+ }
1464
+
1465
+ var useIsomorphicEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;
1466
+ function useManyObservables(observables) {
1467
+ var subscriptions = React.useRef([]);
1468
+ var isInitial = React.useRef(true);
1469
+
1470
+ var _useState = React.useState(function () {
1471
+ var isSync = observables.map(function () {
1472
+ return true;
1473
+ });
1474
+ var syncValues = observables.map(function () {
1475
+ return null;
1476
+ });
1477
+ subscriptions.current = observables.map(function (observable, index) {
1478
+ return observable.subscribe(function (nextVal) {
1479
+ syncValues[index] = nextVal;
1480
+
1481
+ if (!isSync[index]) {
1482
+ setState(_toConsumableArray__default["default"](syncValues));
1483
+ }
1484
+
1485
+ isSync[index] = false;
1486
+ });
1487
+ });
1488
+ return syncValues;
1489
+ }),
1490
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1491
+ value = _useState2[0],
1492
+ setState = _useState2[1];
1493
+
1494
+ useIsomorphicEffect(function () {
1495
+ // when the observable changes after initial (possibly sync render)
1496
+ if (!isInitial.current) {
1497
+ subscriptions.current = observables.map(function (observable, index) {
1498
+ return observable.subscribe(function (nextVal) {
1499
+ value[index] = nextVal;
1500
+ setState(_toConsumableArray__default["default"](value));
1501
+ });
1502
+ });
1503
+ }
1504
+
1505
+ isInitial.current = false;
1506
+ return function () {
1507
+ subscriptions.current.forEach(function (sub) {
1508
+ sub.unsubscribe();
1509
+ });
1510
+ subscriptions.current = [];
1511
+ };
1512
+ }, [observables]);
1513
+ return value;
1514
+ }
1515
+
1516
+ function useManyEditStates(documentIds, documentType) {
1517
+ var observables = React.useMemo(function () {
1518
+ return documentIds.map(function (id) {
1519
+ return documentStore__default["default"].pair.editState(id, documentType);
1520
+ });
1521
+ }, [documentIds, documentType]);
1522
+ return useManyObservables(observables);
1523
+ }
1524
+
1525
+ var baseToTop = function baseToTop(a, b) {
1526
+ var _a$isBase, _b$isBase;
1527
+
1528
+ return Number((_a$isBase = a.isBase) !== null && _a$isBase !== void 0 ? _a$isBase : 0) - Number((_b$isBase = b.isBase) !== null && _b$isBase !== void 0 ? _b$isBase : 0);
1529
+ };
1530
+
1531
+ var LanguageSelectLabel = function LanguageSelectLabel(_ref) {
1532
+ var children = _ref.children;
1533
+ return /*#__PURE__*/React__default["default"].createElement(ui.Box, {
1534
+ padding: 2
1535
+ }, /*#__PURE__*/React__default["default"].createElement(ui.Text, {
1536
+ muted: true,
1537
+ size: 1
1538
+ }, children));
1539
+ };
1540
+
1541
+ var objectOmit = omit;
1542
+
1543
+ /*
1544
+ var obj = {a: 3, b: 5, c: 9};
1545
+ omit(obj, ['a', 'c']); // {b: 5}
1546
+ omit(obj, a, c); // {b: 5}
1547
+ omit(obj, ['a', 'b', 'd']); // {c: 9}
1548
+ omit(obj, ['a', 'a']); // {b: 5, c: 9}
1549
+ */
1550
+
1551
+ function omit(obj, remove) {
1552
+ var result = {};
1553
+ if (typeof remove === 'string') {
1554
+ remove = [].slice.call(arguments, 1);
1555
+ }
1556
+ for (var prop in obj) {
1557
+ if (!obj.hasOwnProperty || obj.hasOwnProperty(prop)) {
1558
+ if (remove.indexOf(prop) === -1) {
1559
+ result[prop] = obj[prop];
1560
+ }
1561
+ }
1562
+ }
1563
+ return result;
1564
+ }
1565
+
1566
+ var SplitPaneIcon = /*#__PURE__*/React.forwardRef(function UndoIcon(props, ref) {
1567
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends__default["default"]({
1568
+ "data-sanity-icon": "splitPane",
1569
+ width: "1em",
1570
+ height: "1em",
1571
+ viewBox: "0 0 25 25",
1572
+ fill: "none",
1573
+ xmlns: "http://www.w3.org/2000/svg",
1574
+ ref: ref
1575
+ }, props), /*#__PURE__*/React__default["default"].createElement("path", {
1576
+ d: "M10.5 5.5V19.5M13 12.5H15.5M18 12.5H15.5M15.5 12.5V15M15.5 12.5V10M4.5 5.5H20.5V19.5H4.5V5.5Z",
1577
+ stroke: "currentColor",
1578
+ strokeWidth: 1.2
1579
+ }));
1580
+ });
1581
+
1582
+ var LanguageSelectContext = /*#__PURE__*/React.createContext({
1583
+ currentDocumentId: null,
1584
+ currentDocumentType: null,
1585
+ baseLanguage: null,
1586
+ currentLanguage: null
1587
+ });
1588
+
1589
+ var _templateObject$1, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
1590
+
1591
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1592
+
1593
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1594
+ var rotate = styled.keyframes(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral__default["default"](["\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n"])));
1595
+ var ListItemSpinner = styled__default["default"](icons.SpinnerIcon)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n animation: ", " 500ms linear infinite;\n"])), rotate);
1596
+ var ListItemBadge = styled__default["default"](ui.Text)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n margin-left: ", ";\n margin-right: 35px;\n margin-top: 1px;\n\n & > span {\n display: inline-block;\n vertical-align: middle;\n }\n"])), function (_ref) {
1597
+ var theme = _ref.theme;
1598
+ return "".concat(theme.sanity.space[2], "px");
1599
+ });
1600
+ var ListItemSplitButton = styled__default["default"](ui.Button)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default["default"](["\n display: none;\n flex-shrink: 0;\n margin-left: 4px;\n\n & svg {\n display: block;\n color: ", ";\n }\n\n ", "\n"])), color.hues.gray[700].hex, function (_ref2) {
1601
+ var theme = _ref2.theme;
1602
+ return styled.css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default["default"](["\n @media (min-width: ", "em) {\n display: block;\n }\n "])), theme.sanity.media[1] / 16);
1603
+ });
1604
+
1605
+ var MenuItemButton = function MenuItemButton(props) {
1606
+ return /*#__PURE__*/React__default["default"].createElement("button", _extends__default["default"]({
1607
+ type: "button"
1608
+ }, props));
1609
+ };
1610
+
1611
+ var MenuItemSelectedButton = styled__default["default"].button(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral__default["default"](["\n color: ", ";\n background-color: ", ";\n\n span {\n color: ", ";\n }\n"])), function (_ref3) {
1612
+ var theme = _ref3.theme;
1613
+ return theme.sanity.color.button["default"].primary.enabled.fg;
1614
+ }, function (_ref4) {
1615
+ var theme = _ref4.theme;
1616
+ return theme.sanity.color.button["default"].primary.enabled.bg;
1617
+ }, function (_ref5) {
1618
+ var theme = _ref5.theme;
1619
+ return theme.sanity.color.button["default"].primary.enabled.fg;
1620
+ });
1621
+ var LanguageSelectListItem = function LanguageSelectListItem(_ref6) {
1622
+ var status = _ref6.status,
1623
+ language = _ref6.language;
1624
+ var toast = ui.useToast();
1625
+
1626
+ var _React$useContext = React__default["default"].useContext(LanguageSelectContext),
1627
+ currentDocumentId = _React$useContext.currentDocumentId,
1628
+ currentDocumentType = _React$useContext.currentDocumentType,
1629
+ baseLanguage = _React$useContext.baseLanguage;
1630
+
1631
+ if (!currentDocumentId || !currentDocumentType) {
1632
+ throw new Error('No document in view');
1633
+ }
1634
+
1635
+ var routerContext = React__default["default"].useContext(RouterContext.RouterContext);
1636
+
1637
+ var _usePaneRouter = deskTool.usePaneRouter(),
1638
+ routerPanesState = _usePaneRouter.routerPanesState,
1639
+ groupIndex = _usePaneRouter.groupIndex,
1640
+ replaceCurrent = _usePaneRouter.replaceCurrent;
1641
+
1642
+ var _React$useState = React__default["default"].useState(false),
1643
+ _React$useState2 = _slicedToArray__default["default"](_React$useState, 2),
1644
+ pending = _React$useState2[0],
1645
+ setPending = _React$useState2[1];
1646
+
1647
+ var config = React__default["default"].useMemo(function () {
1648
+ return getConfig(currentDocumentType);
1649
+ }, [currentDocumentType]);
1650
+ var baseId = React__default["default"].useMemo(function () {
1651
+ return getBaseIdFromId(currentDocumentId);
1652
+ }, [currentDocumentId]);
1653
+ var flagCode = React__default["default"].useMemo(function () {
1654
+ return language.id.split(/[_-]/).pop();
1655
+ }, [language.id]);
1656
+ var FlagIcon = React__default["default"].useMemo(function () {
1657
+ return function FlagIconComponent(props) {
1658
+ return /*#__PURE__*/React__default["default"].createElement(SingleFlag, _extends__default["default"]({
1659
+ code: flagCode,
1660
+ langCulture: language.id
1661
+ }, props));
1662
+ };
1663
+ }, [flagCode, language]);
1664
+ var translatedId = React__default["default"].useMemo(function () {
1665
+ return language.id === (baseLanguage === null || baseLanguage === void 0 ? void 0 : baseLanguage.id) ? baseId : buildDocId(baseId, language.id);
1666
+ }, [baseId, language.id, baseLanguage]);
1667
+ var baseDocumentEditState = reactHooks.useEditState(baseId, currentDocumentType);
1668
+ var baseTranslationBadgeLabel = React__default["default"].useMemo(function () {
1669
+ if (language.isBase) {
1670
+ if (language.title.length >= 20) {
1671
+ return UiMessages.base.split(' ')[0];
1672
+ }
1673
+
1674
+ return UiMessages.base;
1675
+ }
1676
+
1677
+ return null;
1678
+ }, [language]);
1679
+ var openDocumentInCurrentPane = React__default["default"].useCallback(function (id, type) {
1680
+ replaceCurrent({
1681
+ id: id,
1682
+ params: {
1683
+ type: type
1684
+ }
1685
+ });
1686
+ }, [replaceCurrent]);
1687
+ var openDocumentInSidePane = React__default["default"].useCallback(function (id, type) {
1688
+ var panes = _toConsumableArray__default["default"](routerPanesState);
1689
+
1690
+ panes.splice(groupIndex + 1, 0, [{
1691
+ id: id,
1692
+ params: {
1693
+ type: type
1694
+ }
1695
+ }]);
1696
+ var href = routerContext.resolvePathFromState({
1697
+ panes: panes
1698
+ });
1699
+ routerContext.navigateUrl(href);
1700
+ }, [routerContext, routerPanesState, groupIndex]);
1701
+ var handleCreateClick = React__default["default"].useCallback( /*#__PURE__*/_asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
1702
+ var baseDocument, langFieldName;
1703
+ return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
1704
+ while (1) {
1705
+ switch (_context.prev = _context.next) {
1706
+ case 0:
1707
+ _context.prev = 0;
1708
+ setPending(true);
1709
+ baseDocument = baseDocumentEditState.draft || baseDocumentEditState.published;
1710
+ langFieldName = config.fieldNames.lang;
1711
+ _context.next = 6;
1712
+ return getSanityClient().createIfNotExists(_objectSpread$2(_objectSpread$2({}, baseDocument ? objectOmit(baseDocument, [config.fieldNames.references]) : {}), {}, _defineProperty__default["default"]({
1713
+ _id: "drafts.".concat(translatedId),
1714
+ _type: currentDocumentType
1715
+ }, langFieldName, language.id)));
1716
+
1717
+ case 6:
1718
+ toast.push({
1719
+ closable: true,
1720
+ status: 'success',
1721
+ title: UiMessages.translationCreatedToast.title(language.title),
1722
+ description: baseLanguage ? UiMessages.translationCreatedToast.description(baseLanguage.title) : undefined
1723
+ });
1724
+ openDocumentInCurrentPane(translatedId, currentDocumentType);
1725
+ _context.next = 13;
1726
+ break;
1727
+
1728
+ case 10:
1729
+ _context.prev = 10;
1730
+ _context.t0 = _context["catch"](0);
1731
+ toast.push({
1732
+ closable: true,
1733
+ status: 'error',
1734
+ title: _context.t0.toString()
1735
+ });
1736
+
1737
+ case 13:
1738
+ _context.prev = 13;
1739
+ setPending(false);
1740
+ return _context.finish(13);
1741
+
1742
+ case 16:
1743
+ case "end":
1744
+ return _context.stop();
1745
+ }
1746
+ }
1747
+ }, _callee, null, [[0, 10, 13, 16]]);
1748
+ })), [toast, language.id, language.title, baseLanguage, translatedId, currentDocumentType, config.fieldNames.lang, config.fieldNames.references, openDocumentInCurrentPane, baseDocumentEditState.draft, baseDocumentEditState.published]);
1749
+ var handleOpenClick = React__default["default"].useCallback(function () {
1750
+ openDocumentInCurrentPane(translatedId, currentDocumentType);
1751
+ }, [openDocumentInCurrentPane, translatedId, currentDocumentType]);
1752
+ var handleOpenInSidePaneClick = React__default["default"].useCallback(function () {
1753
+ openDocumentInSidePane(translatedId, currentDocumentType);
1754
+ }, [openDocumentInSidePane, translatedId, currentDocumentType]);
1755
+
1756
+ if (status === 'missing') {
1757
+ return /*#__PURE__*/React__default["default"].createElement(ui.MenuItem, {
1758
+ as: MenuItemButton,
1759
+ "data-as": "button",
1760
+ disabled: pending,
1761
+ icon: pending ? ListItemSpinner : icons.AddIcon,
1762
+ text: language.title,
1763
+ onClick: handleCreateClick
1764
+ });
1765
+ }
1766
+
1767
+ return /*#__PURE__*/React__default["default"].createElement(ui.Flex, null, /*#__PURE__*/React__default["default"].createElement(ui.MenuItem, {
1768
+ as: language.isCurrentLanguage ? MenuItemSelectedButton : MenuItemButton,
1769
+ "data-as": "button",
1770
+ "data-selected": language.isCurrentLanguage,
1771
+ selected: language.isCurrentLanguage,
1772
+ icon: FlagIcon,
1773
+ iconRight: !!baseTranslationBadgeLabel && /*#__PURE__*/React__default["default"].createElement(ListItemBadge, null, /*#__PURE__*/React__default["default"].createElement(ui.Badge, null, baseTranslationBadgeLabel)),
1774
+ text: language.title,
1775
+ onClick: handleOpenClick
1776
+ }), !language.isCurrentLanguage && /*#__PURE__*/React__default["default"].createElement(ListItemSplitButton, {
1777
+ type: "button",
1778
+ tone: "default",
1779
+ mode: "bleed",
1780
+ padding: 2,
1781
+ onClick: handleOpenInSidePaneClick
1782
+ }, /*#__PURE__*/React__default["default"].createElement(SplitPaneIcon, {
1783
+ width: 19,
1784
+ height: 19
1785
+ })));
1786
+ };
1787
+
1788
+ var _templateObject;
1789
+
1790
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1791
+
1792
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1793
+ var Divider = styled__default["default"](ui.Box)(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n border-bottom: 1px solid var(--card-shadow-outline-color);\n"])));
1794
+ var LanguageSelectList = function LanguageSelectList(_ref) {
1795
+ var draftLanguageObjects = _ref.draftLanguageObjects,
1796
+ publishedLanguageObjects = _ref.publishedLanguageObjects,
1797
+ missingLanguageObjects = _ref.missingLanguageObjects;
1798
+ var showDivider = React__default["default"].useMemo(function () {
1799
+ return Boolean(!!(draftLanguageObjects.length || publishedLanguageObjects.length) && missingLanguageObjects.length);
1800
+ }, [draftLanguageObjects, publishedLanguageObjects, missingLanguageObjects]);
1801
+ var existingLanguageObjects = React__default["default"].useMemo(function () {
1802
+ return [].concat(_toConsumableArray__default["default"](draftLanguageObjects.map(function (lang) {
1803
+ return _objectSpread$1(_objectSpread$1({}, lang), {}, {
1804
+ status: 'draft'
1805
+ });
1806
+ })), _toConsumableArray__default["default"](publishedLanguageObjects.map(function (lang) {
1807
+ return _objectSpread$1(_objectSpread$1({}, lang), {}, {
1808
+ status: 'published'
1809
+ });
1810
+ }))).sort(baseToTop).reverse();
1811
+ }, [draftLanguageObjects, publishedLanguageObjects]);
1812
+ return /*#__PURE__*/React__default["default"].createElement(ui.Box, null, !!existingLanguageObjects.length && /*#__PURE__*/React__default["default"].createElement(ui.Box, null, /*#__PURE__*/React__default["default"].createElement(LanguageSelectLabel, null, UiMessages.languageSelect.listLabels.existing), /*#__PURE__*/React__default["default"].createElement(ui.Grid, {
1813
+ columns: 1,
1814
+ gap: 1
1815
+ }, existingLanguageObjects.map(function (language) {
1816
+ return /*#__PURE__*/React__default["default"].createElement(LanguageSelectListItem, {
1817
+ key: language.id,
1818
+ status: language.status,
1819
+ language: language
1820
+ });
1821
+ }))), showDivider && /*#__PURE__*/React__default["default"].createElement(Divider, {
1822
+ marginY: 1
1823
+ }), !!missingLanguageObjects.length && /*#__PURE__*/React__default["default"].createElement(ui.Box, null, /*#__PURE__*/React__default["default"].createElement(LanguageSelectLabel, null, UiMessages.languageSelect.listLabels.missing), /*#__PURE__*/React__default["default"].createElement(ui.Grid, {
1824
+ columns: 1,
1825
+ gap: 1
1826
+ }, missingLanguageObjects.map(function (language) {
1827
+ return /*#__PURE__*/React__default["default"].createElement(LanguageSelectListItem, {
1828
+ key: language.id,
1829
+ status: "missing",
1830
+ language: language
1831
+ });
1832
+ }))));
1833
+ };
1834
+
1835
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1836
+
1837
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1838
+ var POPOVER_PROPS = {
1839
+ constrainSize: true,
1840
+ placement: 'bottom',
1841
+ portal: true
1842
+ };
1843
+ var LanguageSelect = function LanguageSelect(_ref) {
1844
+ var _currentLanguageObjec, _currentLanguageObjec2;
1845
+
1846
+ var schemaType = _ref.schemaType,
1847
+ document = _ref.document;
1848
+ var config = React__default["default"].useMemo(function () {
1849
+ return getConfig(schemaType.name);
1850
+ }, [schemaType.name]);
1851
+
1852
+ var _useLanguages = useLanguages(document),
1853
+ _useLanguages2 = _slicedToArray__default["default"](_useLanguages, 2),
1854
+ pending = _useLanguages2[0],
1855
+ languages = _useLanguages2[1];
1856
+
1857
+ var baseLanguage = React__default["default"].useMemo(function () {
1858
+ return getBaseLanguage(languages, config.base);
1859
+ }, [languages, config.base]);
1860
+ var currentLanguageCode = React__default["default"].useMemo(function () {
1861
+ return getLanguageFromId(document._id) || (baseLanguage ? baseLanguage.id : null);
1862
+ }, [document._id, baseLanguage]);
1863
+ var currentLanguageObject = React__default["default"].useMemo(function () {
1864
+ return languages.find(function (lang) {
1865
+ return lang.id === currentLanguageCode;
1866
+ });
1867
+ }, [languages, currentLanguageCode]);
1868
+ var currentLanguageFlagCode = React__default["default"].useMemo(function () {
1869
+ return currentLanguageCode === null || currentLanguageCode === void 0 ? void 0 : currentLanguageCode.split(/[-_]/).pop();
1870
+ }, [currentLanguageCode]);
1871
+ var editStateIds = React__default["default"].useMemo(function () {
1872
+ var baseId = getBaseIdFromId(document._id);
1873
+ return languages.map(function (lang) {
1874
+ return lang === baseLanguage ? baseId : buildDocId(baseId, lang.id);
1875
+ });
1876
+ }, [baseLanguage, languages, document._id]);
1877
+ var editStates = useManyEditStates(editStateIds, document._type);
1878
+ var languagesObjects = React__default["default"].useMemo(function () {
1879
+ var editStatePerLanguage = new Map();
1880
+ editStates.forEach(function (state) {
1881
+ var _state$draft;
1882
+
1883
+ var doc = (_state$draft = state === null || state === void 0 ? void 0 : state.draft) !== null && _state$draft !== void 0 ? _state$draft : state === null || state === void 0 ? void 0 : state.published;
1884
+ var lang = objectSafeGet(doc !== null && doc !== void 0 ? doc : {}, config.fieldNames.lang);
1885
+ var isBase = doc && doc._id.replace(/^drafts\./, '') === getBaseIdFromId(doc._id);
1886
+
1887
+ if (lang) {
1888
+ editStatePerLanguage.set(lang, state);
1889
+ } else if (isBase && baseLanguage !== null && baseLanguage !== void 0 && baseLanguage.id) {
1890
+ editStatePerLanguage.set(baseLanguage.id, state);
1891
+ }
1892
+ });
1893
+ var draftLanguageObjects = [];
1894
+ var publishedLanguageObjects = [];
1895
+ var missingLanguageObjects = [];
1896
+ languages.forEach(function (lang, index) {
1897
+ var extendedObject = _objectSpread(_objectSpread({}, lang), {}, {
1898
+ isBase: baseLanguage ? lang.id === baseLanguage.id : index === 0,
1899
+ isCurrentLanguage: lang.id === currentLanguageCode
1900
+ });
1901
+
1902
+ var editState = editStatePerLanguage.get(lang.id);
1903
+
1904
+ if (editState !== null && editState !== void 0 && editState.published) {
1905
+ publishedLanguageObjects.push(extendedObject);
1906
+ } else if (editState !== null && editState !== void 0 && editState.draft) {
1907
+ draftLanguageObjects.push(extendedObject);
1908
+ } else {
1909
+ missingLanguageObjects.push(extendedObject);
1910
+ }
1911
+ });
1912
+ return {
1913
+ draftLanguageObjects: draftLanguageObjects,
1914
+ publishedLanguageObjects: publishedLanguageObjects,
1915
+ missingLanguageObjects: missingLanguageObjects
1916
+ };
1917
+ }, [config, languages, baseLanguage, editStates, currentLanguageCode]);
1918
+
1919
+ if (!currentLanguageObject || !currentLanguageCode || pending || languages.length === 0) {
1920
+ return /*#__PURE__*/React__default["default"].createElement(ui.Button, {
1921
+ disabled: true,
1922
+ mode: "bleed",
1923
+ padding: 3,
1924
+ loading: pending,
1925
+ iconRight: icons.ChevronDownIcon,
1926
+ text: UiMessages.languageSelect.placeholder
1927
+ });
1928
+ }
1929
+
1930
+ return /*#__PURE__*/React__default["default"].createElement(LanguageSelectContext.Provider, {
1931
+ value: {
1932
+ baseLanguage: baseLanguage,
1933
+ currentLanguage: currentLanguageObject,
1934
+ currentDocumentType: document._type,
1935
+ currentDocumentId: document._id
1936
+ }
1937
+ }, /*#__PURE__*/React__default["default"].createElement(ui.MenuButton, {
1938
+ id: "document-internationalization/language-select",
1939
+ popover: POPOVER_PROPS,
1940
+ button: /*#__PURE__*/React__default["default"].createElement(ui.Button, {
1941
+ mode: "bleed",
1942
+ icon: /*#__PURE__*/React__default["default"].createElement(SingleFlag, {
1943
+ code: currentLanguageFlagCode,
1944
+ langCulture: currentLanguageCode
1945
+ }),
1946
+ iconRight: icons.ChevronDownIcon,
1947
+ padding: 3,
1948
+ title: (_currentLanguageObjec = currentLanguageObject.title) !== null && _currentLanguageObjec !== void 0 ? _currentLanguageObjec : currentLanguageObject.id,
1949
+ text: (_currentLanguageObjec2 = currentLanguageObject.title) !== null && _currentLanguageObjec2 !== void 0 ? _currentLanguageObjec2 : currentLanguageObject.id
1950
+ }),
1951
+ menu: /*#__PURE__*/React__default["default"].createElement(ui.Menu, null, /*#__PURE__*/React__default["default"].createElement(LanguageSelectList, languagesObjects))
1952
+ }));
1953
+ };
1954
+
1955
+ var LanguageSelectContainer = function LanguageSelectContainer(_ref) {
1956
+ var _documentContext$disp;
1957
+
1958
+ var schemaType = _ref.schemaType;
1959
+ var documentContext = React__default["default"].useContext(DocumentPaneContext.DocumentPaneContext);
1960
+
1961
+ if (schemaType && (_documentContext$disp = documentContext.displayed) !== null && _documentContext$disp !== void 0 && _documentContext$disp._id) {
1962
+ return /*#__PURE__*/React__default["default"].createElement(LanguageSelect, {
1963
+ schemaType: schemaType,
1964
+ document: documentContext.displayed
1965
+ });
1966
+ }
1967
+
1968
+ return null;
1969
+ };
1970
+
1971
+ module.exports = LanguageSelectContainer;
1972
+ //# sourceMappingURL=index.js.map