@sanity/document-internationalization 0.1.6 → 0.3.1
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.
- package/CHANGELOG.md +3 -0
- package/README.md +5 -5
- package/lib/actions/DeleteWithi18nAction.d.ts +2 -16
- package/lib/actions/DuplicateWithi18nAction.d.ts +2 -8
- package/lib/actions/PublishWithi18nAction.d.ts +2 -9
- package/lib/actions/index.d.ts +2 -1
- package/lib/actions/index.js +67 -45
- package/lib/actions/index.js.map +1 -1
- package/lib/badges/index.js.map +1 -1
- package/lib/constants/index.js +1 -1
- package/lib/constants/index.js.map +1 -1
- package/lib/language-select/hooks/index.d.ts +0 -1
- package/lib/language-select/hooks/useListeningQuery.d.ts +12 -0
- package/lib/language-select/index.js +328 -340
- package/lib/language-select/index.js.map +1 -1
- package/lib/structure/index.js +1 -1
- package/lib/structure/index.js.map +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/validators/index.js.map +1 -1
- package/package.json +10 -8
- package/lib/language-select/hooks/useManyEditStates.d.ts +0 -1
- package/lib/language-select/hooks/useManyObservables.d.ts +0 -2
|
@@ -4,6 +4,7 @@ var React = require('react');
|
|
|
4
4
|
var DocumentPaneContext = require('@sanity/desk-tool/lib/panes/document/DocumentPaneContext');
|
|
5
5
|
var languageFilterImplementations = require('all:part:@sanity/desk-tool/language-select-component');
|
|
6
6
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
7
8
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
8
9
|
var ui = require('@sanity/ui');
|
|
9
10
|
var icons = require('@sanity/icons');
|
|
@@ -21,7 +22,7 @@ require('@sanity/types');
|
|
|
21
22
|
var reactHooks = require('@sanity/react-hooks');
|
|
22
23
|
var shouldReloadFn = require('part:@sanity/document-internationalization/languages/should-reload?');
|
|
23
24
|
var documentStore = require('part:@sanity/base/datastore/document');
|
|
24
|
-
var
|
|
25
|
+
var operators = require('rxjs/operators');
|
|
25
26
|
var _extends = require('@babel/runtime/helpers/extends');
|
|
26
27
|
var color = require('@sanity/color');
|
|
27
28
|
var deskTool = require('@sanity/desk-tool');
|
|
@@ -50,6 +51,7 @@ function _interopNamespace(e) {
|
|
|
50
51
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
51
52
|
var languageFilterImplementations__default = /*#__PURE__*/_interopDefaultLegacy(languageFilterImplementations);
|
|
52
53
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
54
|
+
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
53
55
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
54
56
|
var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
|
|
55
57
|
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
@@ -62,7 +64,6 @@ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regenerat
|
|
|
62
64
|
var languagesLoaderFn__default = /*#__PURE__*/_interopDefaultLegacy(languagesLoaderFn);
|
|
63
65
|
var shouldReloadFn__default = /*#__PURE__*/_interopDefaultLegacy(shouldReloadFn);
|
|
64
66
|
var documentStore__default = /*#__PURE__*/_interopDefaultLegacy(documentStore);
|
|
65
|
-
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
66
67
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
67
68
|
|
|
68
69
|
var objectSafeGet = get;
|
|
@@ -127,256 +128,85 @@ function get(obj, propsArg, defaultValue) {
|
|
|
127
128
|
return obj;
|
|
128
129
|
}
|
|
129
130
|
|
|
130
|
-
// Inspiration: https://github.com/facebook/react/issues/3386
|
|
131
|
-
|
|
132
|
-
function replace (string, regexpOrSubstr, newValueOrFn, globalOffset) {
|
|
133
|
-
if (typeof string !== 'string') throw new Error('First param must be a string')
|
|
134
|
-
if (typeof regexpOrSubstr !== 'string' && !(regexpOrSubstr instanceof RegExp)) throw new Error('Second param must be a string pattern or a regular expression')
|
|
135
|
-
|
|
136
|
-
var fn = (typeof regexpOrSubstr === 'string') ? replaceUsingString : replaceUsingRegexp;
|
|
137
|
-
|
|
138
|
-
return fn(string, regexpOrSubstr, newValueOrFn, globalOffset)
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function replaceUsingString (string, patternString, newValueOrFn, globalOffset) {
|
|
142
|
-
var index = string.indexOf(patternString);
|
|
143
|
-
|
|
144
|
-
if (index >= 0) {
|
|
145
|
-
var arr = [];
|
|
146
|
-
var endIndex = index + patternString.length;
|
|
147
|
-
|
|
148
|
-
if (index > 0) {
|
|
149
|
-
arr.push(string.substring(0, index));
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
arr.push(
|
|
153
|
-
(typeof newValueOrFn === 'function') ?
|
|
154
|
-
newValueOrFn(
|
|
155
|
-
string.substring(index, endIndex),
|
|
156
|
-
index + globalOffset,
|
|
157
|
-
string
|
|
158
|
-
) :
|
|
159
|
-
newValueOrFn
|
|
160
|
-
);
|
|
161
|
-
|
|
162
|
-
if (endIndex < string.length) {
|
|
163
|
-
arr.push(string.substring(endIndex));
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return arr
|
|
167
|
-
} else {
|
|
168
|
-
return [string]
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
function replaceUsingRegexp (string, regexp, newValueOrFn, globalOffset) {
|
|
173
|
-
var output = [];
|
|
174
|
-
|
|
175
|
-
var replacerIsFn = (typeof newValueOrFn === 'function');
|
|
176
|
-
|
|
177
|
-
var storedLastIndex = regexp.lastIndex;
|
|
178
|
-
regexp.lastIndex = 0;
|
|
179
|
-
|
|
180
|
-
var result;
|
|
181
|
-
var lastIndex = 0;
|
|
182
|
-
while (result = regexp.exec(string)) {
|
|
183
|
-
var index = result.index;
|
|
184
|
-
|
|
185
|
-
if (result[0] === '') {
|
|
186
|
-
// When the regexp is an empty string
|
|
187
|
-
// we still want to advance our cursor to the next item.
|
|
188
|
-
// This is the behavior of String.replace.
|
|
189
|
-
regexp.lastIndex++;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if (index !== lastIndex) {
|
|
193
|
-
output.push(string.substring(lastIndex, index));
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
var match = result[0];
|
|
197
|
-
lastIndex = index + match.length;
|
|
198
|
-
|
|
199
|
-
var out = replacerIsFn ?
|
|
200
|
-
newValueOrFn.apply(this, result.concat(index + globalOffset, result.input)) :
|
|
201
|
-
newValueOrFn;
|
|
202
|
-
output.push(out);
|
|
203
|
-
|
|
204
|
-
if (!regexp.global) {
|
|
205
|
-
break
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (lastIndex < string.length) {
|
|
210
|
-
output.push(string.substring(lastIndex));
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
regexp.lastIndex = storedLastIndex;
|
|
214
|
-
return output
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
var stringReplaceToArray = function stringReplaceToArray (stringOrArray, regexpOrSubstr, newSubStrOrFn) {
|
|
218
|
-
if (typeof stringOrArray === 'string') {
|
|
219
|
-
return replace(stringOrArray, regexpOrSubstr, newSubStrOrFn, 0)
|
|
220
|
-
} else if (!Array.isArray(stringOrArray) || !stringOrArray[0]) {
|
|
221
|
-
throw new TypeError('First argument must be an array or non-empty string')
|
|
222
|
-
} else {
|
|
223
|
-
var len = stringOrArray.length;
|
|
224
|
-
var output = [];
|
|
225
|
-
var globalOffset = 0;
|
|
226
|
-
for (var i = 0; i < len; ++i) {
|
|
227
|
-
var arrayItem = stringOrArray[i];
|
|
228
|
-
if (typeof arrayItem === 'string') {
|
|
229
|
-
output.push.apply(output, replace(arrayItem, regexpOrSubstr, newSubStrOrFn, globalOffset));
|
|
230
|
-
globalOffset += arrayItem.length;
|
|
231
|
-
} else {
|
|
232
|
-
output.push(arrayItem);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return output
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
// This is based off of https://github.com/twitter/twemoji/blob/gh-pages/2/twemoji.js
|
|
240
|
-
//
|
|
241
|
-
// Ideally we'd use twemoji instead of replicating its logic.
|
|
242
|
-
// The reason we can't is that we need to run our own replace.
|
|
243
|
-
//
|
|
244
|
-
// We could use it for most things (by essentially running twemoji.parse for each
|
|
245
|
-
// regex match, and reading the code from the callback), but the one thing we'd always need
|
|
246
|
-
// to copy and paste into this file is the regex since we need it to run the replace.
|
|
247
|
-
//
|
|
248
|
-
// Another option is to fork twemoji and expose a method in it that could help us, then
|
|
249
|
-
// ask them to pull it in.
|
|
250
|
-
//
|
|
251
|
-
|
|
252
|
-
// RegExp based on emoji's official Unicode standards
|
|
253
|
-
// http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
|
|
254
|
-
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;
|
|
255
|
-
|
|
256
|
-
function toCodePoint(unicodeSurrogates, sep) {
|
|
257
|
-
var
|
|
258
|
-
r = [],
|
|
259
|
-
c = 0,
|
|
260
|
-
p = 0,
|
|
261
|
-
i = 0;
|
|
262
|
-
|
|
263
|
-
while (i < unicodeSurrogates.length) {
|
|
264
|
-
c = unicodeSurrogates.charCodeAt(i++);
|
|
265
|
-
if (p) {
|
|
266
|
-
r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
|
|
267
|
-
p = 0;
|
|
268
|
-
} else if (0xD800 <= c && c <= 0xDBFF) {
|
|
269
|
-
p = c;
|
|
270
|
-
} else {
|
|
271
|
-
r.push(c.toString(16));
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return r.join(sep || '-')
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// avoid runtime RegExp creation for not so smart,
|
|
278
|
-
// not JIT based, and old browsers / engines
|
|
279
|
-
var UFE0Fg = /\uFE0F/g;
|
|
280
|
-
|
|
281
|
-
// avoid using a string literal like '\u200D' here because minifiers expand it inline
|
|
282
|
-
var U200D = String.fromCharCode(0x200D);
|
|
283
|
-
|
|
284
131
|
/**
|
|
285
|
-
*
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
var
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
var icon = grabTheRightIcon(match);
|
|
302
|
-
return render(icon, match, offset)
|
|
303
|
-
})
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
var createElement = React__default["default"].createElement;
|
|
307
|
-
|
|
308
|
-
var pageProtocol = (typeof location === 'undefined') ? '' : ((location.protocol === 'https:') ? 'https:' : 'http:');
|
|
309
|
-
|
|
310
|
-
var emojiStyle = {
|
|
311
|
-
height: '1em',
|
|
312
|
-
width: '1em',
|
|
313
|
-
margin: '0 .05em 0 .1em',
|
|
314
|
-
verticalAlign: '-0.1em'
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
// Accept protocol with or without a colon
|
|
318
|
-
function normalizeProtocol(protocol) {
|
|
319
|
-
if (protocol && protocol.length > 0 && protocol.charAt(protocol.length - 1) !== ':') {
|
|
320
|
-
return protocol + ':'
|
|
321
|
-
}
|
|
322
|
-
return protocol
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
var makeTwemojiRenderer$1 = function makeTwemojiRenderer(options) {
|
|
326
|
-
options = merge({
|
|
327
|
-
protocol: pageProtocol,
|
|
328
|
-
baseUrl: '//twemoji.maxcdn.com/2/',
|
|
329
|
-
size: '72x72',
|
|
330
|
-
ext: '.png',
|
|
331
|
-
props: null
|
|
332
|
-
}, options);
|
|
333
|
-
|
|
334
|
-
return function renderTwemoji (icon, match, offset) {
|
|
335
|
-
var src = '';
|
|
336
|
-
if (options.baseUrl.indexOf('http') !== 0) {
|
|
337
|
-
src += normalizeProtocol(options.protocol);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
src += options.baseUrl + options.size + '/' + icon + options.ext;
|
|
341
|
-
|
|
342
|
-
return createElement(
|
|
343
|
-
'img',
|
|
344
|
-
merge({
|
|
345
|
-
key: offset,
|
|
346
|
-
alt: match,
|
|
347
|
-
draggable: false,
|
|
348
|
-
src: src,
|
|
349
|
-
style: emojiStyle
|
|
350
|
-
}, options.props)
|
|
351
|
-
)
|
|
352
|
-
}
|
|
353
|
-
};
|
|
354
|
-
|
|
355
|
-
function merge() {
|
|
356
|
-
var out = {}, len = arguments.length;
|
|
357
|
-
for(var i = 0; i < len; ++i) {
|
|
358
|
-
var source = arguments[i];
|
|
359
|
-
if (source) {
|
|
360
|
-
for (var key in source) {
|
|
361
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
362
|
-
out[key] = source[key];
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
return out
|
|
132
|
+
* @var {Object} cache
|
|
133
|
+
*/
|
|
134
|
+
var cache = new Map();
|
|
135
|
+
/**
|
|
136
|
+
* Check if emoji is supported with cache
|
|
137
|
+
*
|
|
138
|
+
* @params {string} unicode
|
|
139
|
+
* @returns {boolean}
|
|
140
|
+
*/
|
|
141
|
+
function isEmojiSupported(unicode) {
|
|
142
|
+
if (cache.has(unicode)) {
|
|
143
|
+
return cache.get(unicode);
|
|
144
|
+
}
|
|
145
|
+
var supported = isSupported(unicode);
|
|
146
|
+
cache.set(unicode, supported);
|
|
147
|
+
return supported;
|
|
368
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if the two pixels parts are perfectly the sames
|
|
151
|
+
*
|
|
152
|
+
* @params {string} unicode
|
|
153
|
+
* @returns {boolean}
|
|
154
|
+
*/
|
|
155
|
+
var isSupported = (function () {
|
|
156
|
+
var ctx = null;
|
|
157
|
+
try {
|
|
158
|
+
ctx = document.createElement('canvas').getContext('2d');
|
|
159
|
+
}
|
|
160
|
+
catch (_a) { }
|
|
161
|
+
// Not in browser env
|
|
162
|
+
if (!ctx) {
|
|
163
|
+
return function () { return false; };
|
|
164
|
+
}
|
|
165
|
+
var CANVAS_HEIGHT = 25;
|
|
166
|
+
var CANVAS_WIDTH = 20;
|
|
167
|
+
var textSize = Math.floor(CANVAS_HEIGHT / 2);
|
|
168
|
+
// Initialize convas context
|
|
169
|
+
ctx.font = textSize + 'px Arial, Sans-Serif';
|
|
170
|
+
ctx.textBaseline = 'top';
|
|
171
|
+
ctx.canvas.width = CANVAS_WIDTH * 2;
|
|
172
|
+
ctx.canvas.height = CANVAS_HEIGHT;
|
|
173
|
+
return function (unicode) {
|
|
174
|
+
ctx.clearRect(0, 0, CANVAS_WIDTH * 2, CANVAS_HEIGHT);
|
|
175
|
+
// Draw in red on the left
|
|
176
|
+
ctx.fillStyle = '#FF0000';
|
|
177
|
+
ctx.fillText(unicode, 0, 22);
|
|
178
|
+
// Draw in blue on right
|
|
179
|
+
ctx.fillStyle = '#0000FF';
|
|
180
|
+
ctx.fillText(unicode, CANVAS_WIDTH, 22);
|
|
181
|
+
var a = ctx.getImageData(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT).data;
|
|
182
|
+
var count = a.length;
|
|
183
|
+
var i = 0;
|
|
184
|
+
// Search the first visible pixel
|
|
185
|
+
for (; i < count && !a[i + 3]; i += 4)
|
|
186
|
+
;
|
|
187
|
+
// No visible pixel
|
|
188
|
+
if (i >= count) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
// Emoji has immutable color, so we check the color of the emoji in two different colors
|
|
192
|
+
// the result show be the same.
|
|
193
|
+
var x = CANVAS_WIDTH + ((i / 4) % CANVAS_WIDTH);
|
|
194
|
+
var y = Math.floor(i / 4 / CANVAS_WIDTH);
|
|
195
|
+
var b = ctx.getImageData(x, y, 1, 1).data;
|
|
196
|
+
if (a[i] !== b[0] || a[i + 2] !== b[2]) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
// Some emojis are a contraction of different ones, so if it's not
|
|
200
|
+
// supported, it will show multiple characters
|
|
201
|
+
if (ctx.measureText(unicode).width >= CANVAS_WIDTH) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
// Supported
|
|
205
|
+
return true;
|
|
206
|
+
};
|
|
207
|
+
})();
|
|
369
208
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
var makeTwemojiRenderer = makeTwemojiRenderer$1;
|
|
373
|
-
|
|
374
|
-
var reactEasyEmoji = function reactEasyEmoji (element, optionsOrFn) {
|
|
375
|
-
var render = (typeof optionsOrFn === 'function') ? optionsOrFn : makeTwemojiRenderer(optionsOrFn);
|
|
376
|
-
return replaceEmoji(element, render)
|
|
377
|
-
};
|
|
378
|
-
|
|
379
|
-
var emoji = reactEasyEmoji;
|
|
209
|
+
function t(t="Twemoji Country Flags",e="https://cdn.jsdelivr.net/npm/country-flag-emoji-polyfill@0.1/dist/TwemojiCountryFlags.woff2"){if(isEmojiSupported("😊")&&!isEmojiSupported("🇨🇭")){const n=document.createElement("style");return n.textContent=`@font-face {\n font-family: "${t}";\n unicode-range: U+1F1E6-1F1FF, U+1F3F4, U+E0062-E0063, U+E0065, U+E0067,\n U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F;\n src: url('${e}') format('woff2');\n }`,document.head.appendChild(n),!0}return !1}
|
|
380
210
|
|
|
381
211
|
/*
|
|
382
212
|
These magic numbers are charCode math, where we take advantage of the offset
|
|
@@ -1108,7 +938,7 @@ var UiMessages = {
|
|
|
1108
938
|
loading: 'Loading languages...',
|
|
1109
939
|
draft: 'Draft',
|
|
1110
940
|
missingTranslations: 'Following languages are missing some translations compared to the base language',
|
|
1111
|
-
base: 'Base
|
|
941
|
+
base: 'Base',
|
|
1112
942
|
missing: 'Missing',
|
|
1113
943
|
deleteAll: {
|
|
1114
944
|
buttonTitle: 'Delete (incl. translations)',
|
|
@@ -1175,8 +1005,10 @@ var getFlagCode = function getFlagCode() {
|
|
|
1175
1005
|
}
|
|
1176
1006
|
};
|
|
1177
1007
|
|
|
1178
|
-
var _templateObject$2;
|
|
1179
|
-
|
|
1008
|
+
var _templateObject$2, _templateObject2$2;
|
|
1009
|
+
t();
|
|
1010
|
+
var FlagImageContainer = styled__default["default"].span(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral__default["default"](["\n display: block;\n font-size: 19px;\n transform: translateY(-1px);\n\n & img {\n display: block;\n }\n"])));
|
|
1011
|
+
var EmojiSpan = styled__default["default"].span(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteral__default["default"](["\n font-family: 'Twemoji Country Flags';\n"])));
|
|
1180
1012
|
var SingleFlag = function SingleFlag(_ref) {
|
|
1181
1013
|
var code = _ref.code,
|
|
1182
1014
|
langCulture = _ref.langCulture,
|
|
@@ -1200,7 +1032,7 @@ var SingleFlag = function SingleFlag(_ref) {
|
|
|
1200
1032
|
className: className
|
|
1201
1033
|
}, CustomFlagComponent && code ? /*#__PURE__*/React__default["default"].createElement(CustomFlagComponent, {
|
|
1202
1034
|
code: code
|
|
1203
|
-
}) :
|
|
1035
|
+
}) : /*#__PURE__*/React__default["default"].createElement(EmojiSpan, null, flagEmoji) || '🏳️🌈');
|
|
1204
1036
|
};
|
|
1205
1037
|
|
|
1206
1038
|
var getSchema = function getSchema(name) {
|
|
@@ -1464,64 +1296,190 @@ function useLanguages(document) {
|
|
|
1464
1296
|
return [pending, languages];
|
|
1465
1297
|
}
|
|
1466
1298
|
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1299
|
+
/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */
|
|
1300
|
+
var hasElementType = typeof Element !== 'undefined';
|
|
1301
|
+
var hasMap = typeof Map === 'function';
|
|
1302
|
+
var hasSet = typeof Set === 'function';
|
|
1303
|
+
var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;
|
|
1304
|
+
|
|
1305
|
+
// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js
|
|
1306
|
+
|
|
1307
|
+
function equal(a, b) {
|
|
1308
|
+
// START: fast-deep-equal es6/index.js 3.1.1
|
|
1309
|
+
if (a === b) return true;
|
|
1310
|
+
|
|
1311
|
+
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
|
1312
|
+
if (a.constructor !== b.constructor) return false;
|
|
1471
1313
|
|
|
1472
|
-
|
|
1473
|
-
|
|
1314
|
+
var length, i, keys;
|
|
1315
|
+
if (Array.isArray(a)) {
|
|
1316
|
+
length = a.length;
|
|
1317
|
+
if (length != b.length) return false;
|
|
1318
|
+
for (i = length; i-- !== 0;)
|
|
1319
|
+
if (!equal(a[i], b[i])) return false;
|
|
1474
1320
|
return true;
|
|
1475
|
-
}
|
|
1476
|
-
var syncValues = observables.map(function () {
|
|
1477
|
-
return null;
|
|
1478
|
-
});
|
|
1479
|
-
subscriptions.current = observables.map(function (observable, index) {
|
|
1480
|
-
return observable.subscribe(function (nextVal) {
|
|
1481
|
-
syncValues[index] = nextVal;
|
|
1321
|
+
}
|
|
1482
1322
|
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1323
|
+
// START: Modifications:
|
|
1324
|
+
// 1. Extra `has<Type> &&` helpers in initial condition allow es6 code
|
|
1325
|
+
// to co-exist with es5.
|
|
1326
|
+
// 2. Replace `for of` with es5 compliant iteration using `for`.
|
|
1327
|
+
// Basically, take:
|
|
1328
|
+
//
|
|
1329
|
+
// ```js
|
|
1330
|
+
// for (i of a.entries())
|
|
1331
|
+
// if (!b.has(i[0])) return false;
|
|
1332
|
+
// ```
|
|
1333
|
+
//
|
|
1334
|
+
// ... and convert to:
|
|
1335
|
+
//
|
|
1336
|
+
// ```js
|
|
1337
|
+
// it = a.entries();
|
|
1338
|
+
// while (!(i = it.next()).done)
|
|
1339
|
+
// if (!b.has(i.value[0])) return false;
|
|
1340
|
+
// ```
|
|
1341
|
+
//
|
|
1342
|
+
// **Note**: `i` access switches to `i.value`.
|
|
1343
|
+
var it;
|
|
1344
|
+
if (hasMap && (a instanceof Map) && (b instanceof Map)) {
|
|
1345
|
+
if (a.size !== b.size) return false;
|
|
1346
|
+
it = a.entries();
|
|
1347
|
+
while (!(i = it.next()).done)
|
|
1348
|
+
if (!b.has(i.value[0])) return false;
|
|
1349
|
+
it = a.entries();
|
|
1350
|
+
while (!(i = it.next()).done)
|
|
1351
|
+
if (!equal(i.value[1], b.get(i.value[0]))) return false;
|
|
1352
|
+
return true;
|
|
1353
|
+
}
|
|
1486
1354
|
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1355
|
+
if (hasSet && (a instanceof Set) && (b instanceof Set)) {
|
|
1356
|
+
if (a.size !== b.size) return false;
|
|
1357
|
+
it = a.entries();
|
|
1358
|
+
while (!(i = it.next()).done)
|
|
1359
|
+
if (!b.has(i.value[0])) return false;
|
|
1360
|
+
return true;
|
|
1361
|
+
}
|
|
1362
|
+
// END: Modifications
|
|
1363
|
+
|
|
1364
|
+
if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
|
|
1365
|
+
length = a.length;
|
|
1366
|
+
if (length != b.length) return false;
|
|
1367
|
+
for (i = length; i-- !== 0;)
|
|
1368
|
+
if (a[i] !== b[i]) return false;
|
|
1369
|
+
return true;
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
|
|
1373
|
+
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
|
|
1374
|
+
if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
|
|
1375
|
+
|
|
1376
|
+
keys = Object.keys(a);
|
|
1377
|
+
length = keys.length;
|
|
1378
|
+
if (length !== Object.keys(b).length) return false;
|
|
1379
|
+
|
|
1380
|
+
for (i = length; i-- !== 0;)
|
|
1381
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
|
1382
|
+
// END: fast-deep-equal
|
|
1383
|
+
|
|
1384
|
+
// START: react-fast-compare
|
|
1385
|
+
// custom handling for DOM elements
|
|
1386
|
+
if (hasElementType && a instanceof Element) return false;
|
|
1387
|
+
|
|
1388
|
+
// custom handling for React/Preact
|
|
1389
|
+
for (i = length; i-- !== 0;) {
|
|
1390
|
+
if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {
|
|
1391
|
+
// React-specific: avoid traversing React elements' _owner
|
|
1392
|
+
// Preact-specific: avoid traversing Preact elements' __v and __o
|
|
1393
|
+
// __v = $_original / $_vnode
|
|
1394
|
+
// __o = $_owner
|
|
1395
|
+
// These properties contain circular references and are not needed when
|
|
1396
|
+
// comparing the actual elements (and not their owners)
|
|
1397
|
+
// .$$typeof and ._store on just reasonable markers of elements
|
|
1398
|
+
|
|
1399
|
+
continue;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
// all other properties should be traversed as usual
|
|
1403
|
+
if (!equal(a[keys[i]], b[keys[i]])) return false;
|
|
1404
|
+
}
|
|
1405
|
+
// END: react-fast-compare
|
|
1406
|
+
|
|
1407
|
+
// START: fast-deep-equal
|
|
1408
|
+
return true;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
return a !== a && b !== b;
|
|
1412
|
+
}
|
|
1413
|
+
// end fast-deep-equal
|
|
1414
|
+
|
|
1415
|
+
var reactFastCompare = function isEqual(a, b) {
|
|
1416
|
+
try {
|
|
1417
|
+
return equal(a, b);
|
|
1418
|
+
} catch (error) {
|
|
1419
|
+
if (((error.message || '').match(/stack|recursion/i))) {
|
|
1420
|
+
// warn on circular references, don't crash
|
|
1421
|
+
// browsers give this different errors name and messages:
|
|
1422
|
+
// chrome/safari: "RangeError", "Maximum call stack size exceeded"
|
|
1423
|
+
// firefox: "InternalError", too much recursion"
|
|
1424
|
+
// edge: "Error", "Out of stack space"
|
|
1425
|
+
console.warn('react-fast-compare cannot handle circular refs');
|
|
1426
|
+
return false;
|
|
1427
|
+
}
|
|
1428
|
+
// some other error. we should definitely know about these
|
|
1429
|
+
throw error;
|
|
1430
|
+
}
|
|
1431
|
+
};
|
|
1432
|
+
|
|
1433
|
+
var DEFAULT_PARAMS = {};
|
|
1434
|
+
var DEFAULT_OPTIONS = {
|
|
1435
|
+
apiVersion: "v2022-05-09"
|
|
1436
|
+
};
|
|
1437
|
+
function useListeningQuery(query) {
|
|
1438
|
+
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_PARAMS;
|
|
1439
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_OPTIONS;
|
|
1440
|
+
|
|
1441
|
+
var _useState = React.useState(true),
|
|
1492
1442
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1443
|
+
loading = _useState2[0],
|
|
1444
|
+
setLoading = _useState2[1];
|
|
1445
|
+
|
|
1446
|
+
var _useState3 = React.useState(false),
|
|
1447
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
1448
|
+
error = _useState4[0],
|
|
1449
|
+
setError = _useState4[1];
|
|
1450
|
+
|
|
1451
|
+
var _useState5 = React.useState(null),
|
|
1452
|
+
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
1453
|
+
data = _useState6[0],
|
|
1454
|
+
setData = _useState6[1];
|
|
1455
|
+
|
|
1456
|
+
var subscription = React.useRef(null);
|
|
1457
|
+
React.useEffect(function () {
|
|
1458
|
+
if (query) {
|
|
1459
|
+
subscription.current = documentStore__default["default"].listenQuery(query, params, options).pipe(operators.distinctUntilChanged(reactFastCompare), operators.catchError(function (err) {
|
|
1460
|
+
console.error(err);
|
|
1461
|
+
setError(err);
|
|
1462
|
+
setLoading(false);
|
|
1463
|
+
setData(null);
|
|
1464
|
+
return err;
|
|
1465
|
+
})).subscribe(function (documents) {
|
|
1466
|
+
setData(function (current) {
|
|
1467
|
+
return reactFastCompare(current, documents) ? current : documents;
|
|
1503
1468
|
});
|
|
1469
|
+
setLoading(false);
|
|
1470
|
+
setError(false);
|
|
1504
1471
|
});
|
|
1505
1472
|
}
|
|
1506
1473
|
|
|
1507
|
-
isInitial.current = false;
|
|
1508
1474
|
return function () {
|
|
1509
|
-
|
|
1510
|
-
sub.unsubscribe();
|
|
1511
|
-
});
|
|
1512
|
-
subscriptions.current = [];
|
|
1475
|
+
return subscription.current ? subscription.current.unsubscribe() : undefined;
|
|
1513
1476
|
};
|
|
1514
|
-
}, [
|
|
1515
|
-
return
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
return documentIds.map(function (id) {
|
|
1521
|
-
return documentStore__default["default"].pair.editState(id, documentType);
|
|
1522
|
-
});
|
|
1523
|
-
}, [documentIds, documentType]);
|
|
1524
|
-
return useManyObservables(observables);
|
|
1477
|
+
}, [query, params, options]);
|
|
1478
|
+
return {
|
|
1479
|
+
loading: loading,
|
|
1480
|
+
error: error,
|
|
1481
|
+
data: data
|
|
1482
|
+
};
|
|
1525
1483
|
}
|
|
1526
1484
|
|
|
1527
1485
|
var baseToTop = function baseToTop(a, b) {
|
|
@@ -1588,20 +1546,16 @@ var LanguageSelectContext = /*#__PURE__*/React.createContext({
|
|
|
1588
1546
|
currentLanguage: null
|
|
1589
1547
|
});
|
|
1590
1548
|
|
|
1591
|
-
var _templateObject$1, _templateObject2, _templateObject3, _templateObject4, _templateObject5
|
|
1549
|
+
var _templateObject$1, _templateObject2$1, _templateObject3, _templateObject4, _templateObject5;
|
|
1592
1550
|
|
|
1593
1551
|
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; }
|
|
1594
1552
|
|
|
1595
1553
|
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; }
|
|
1596
1554
|
var rotate = styled.keyframes(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral__default["default"](["\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n"])));
|
|
1597
|
-
var ListItemSpinner = styled__default["default"](icons.SpinnerIcon)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n animation: ", " 500ms linear infinite;\n"])), rotate);
|
|
1598
|
-
var
|
|
1555
|
+
var ListItemSpinner = styled__default["default"](icons.SpinnerIcon)(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral__default["default"](["\n animation: ", " 500ms linear infinite;\n"])), rotate);
|
|
1556
|
+
var ListItemSplitButton = styled__default["default"](ui.Button)(_templateObject3 || (_templateObject3 = _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 (_ref) {
|
|
1599
1557
|
var theme = _ref.theme;
|
|
1600
|
-
return ""
|
|
1601
|
-
});
|
|
1602
|
-
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) {
|
|
1603
|
-
var theme = _ref2.theme;
|
|
1604
|
-
return styled.css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default["default"](["\n @media (min-width: ", "em) {\n display: block;\n }\n "])), theme.sanity.media[1] / 16);
|
|
1558
|
+
return styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default["default"](["\n @media (min-width: ", "em) {\n display: block;\n }\n "])), theme.sanity.media[1] / 16);
|
|
1605
1559
|
});
|
|
1606
1560
|
|
|
1607
1561
|
var MenuItemButtonComponent = function MenuItemButtonComponent(props, ref) {
|
|
@@ -1612,19 +1566,19 @@ var MenuItemButtonComponent = function MenuItemButtonComponent(props, ref) {
|
|
|
1612
1566
|
};
|
|
1613
1567
|
|
|
1614
1568
|
var MenuItemButton = /*#__PURE__*/React__default["default"].forwardRef(MenuItemButtonComponent);
|
|
1615
|
-
var MenuItemSelectedButton = styled__default["default"].button(
|
|
1616
|
-
var theme =
|
|
1569
|
+
var MenuItemSelectedButton = styled__default["default"].button(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default["default"](["\n color: ", ";\n background-color: ", ";\n\n span {\n color: ", ";\n }\n"])), function (_ref2) {
|
|
1570
|
+
var theme = _ref2.theme;
|
|
1617
1571
|
return theme.sanity.color.button["default"].primary.enabled.fg;
|
|
1572
|
+
}, function (_ref3) {
|
|
1573
|
+
var theme = _ref3.theme;
|
|
1574
|
+
return theme.sanity.color.button["default"].primary.enabled.bg;
|
|
1618
1575
|
}, function (_ref4) {
|
|
1619
1576
|
var theme = _ref4.theme;
|
|
1620
|
-
return theme.sanity.color.button["default"].primary.enabled.bg;
|
|
1621
|
-
}, function (_ref5) {
|
|
1622
|
-
var theme = _ref5.theme;
|
|
1623
1577
|
return theme.sanity.color.button["default"].primary.enabled.fg;
|
|
1624
1578
|
});
|
|
1625
|
-
var LanguageSelectListItem = function LanguageSelectListItem(
|
|
1626
|
-
var status =
|
|
1627
|
-
language =
|
|
1579
|
+
var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
1580
|
+
var status = _ref5.status,
|
|
1581
|
+
language = _ref5.language;
|
|
1628
1582
|
var toast = ui.useToast();
|
|
1629
1583
|
|
|
1630
1584
|
var _React$useContext = React__default["default"].useContext(LanguageSelectContext),
|
|
@@ -1774,7 +1728,9 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref6) {
|
|
|
1774
1728
|
"data-selected": language.isCurrentLanguage,
|
|
1775
1729
|
selected: language.isCurrentLanguage,
|
|
1776
1730
|
icon: FlagIcon,
|
|
1777
|
-
iconRight: !!baseTranslationBadgeLabel && /*#__PURE__*/React__default["default"].createElement(
|
|
1731
|
+
iconRight: !!baseTranslationBadgeLabel && /*#__PURE__*/React__default["default"].createElement(ui.Badge, {
|
|
1732
|
+
fontSize: 0
|
|
1733
|
+
}, baseTranslationBadgeLabel),
|
|
1778
1734
|
text: language.title,
|
|
1779
1735
|
onClick: handleOpenClick
|
|
1780
1736
|
}), !language.isCurrentLanguage && /*#__PURE__*/React__default["default"].createElement(ListItemSplitButton, {
|
|
@@ -1789,12 +1745,13 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref6) {
|
|
|
1789
1745
|
})));
|
|
1790
1746
|
};
|
|
1791
1747
|
|
|
1792
|
-
var _templateObject;
|
|
1748
|
+
var _templateObject, _templateObject2;
|
|
1793
1749
|
|
|
1794
1750
|
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; }
|
|
1795
1751
|
|
|
1796
1752
|
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; }
|
|
1797
1753
|
var Divider = styled__default["default"](ui.Box)(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n border-bottom: 1px solid var(--card-shadow-outline-color);\n"])));
|
|
1754
|
+
var SelectorBox = styled__default["default"](ui.Box)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n minwidth: 250;\n"])));
|
|
1798
1755
|
var LanguageSelectList = function LanguageSelectList(_ref) {
|
|
1799
1756
|
var draftLanguageObjects = _ref.draftLanguageObjects,
|
|
1800
1757
|
publishedLanguageObjects = _ref.publishedLanguageObjects,
|
|
@@ -1813,7 +1770,7 @@ var LanguageSelectList = function LanguageSelectList(_ref) {
|
|
|
1813
1770
|
});
|
|
1814
1771
|
}))).sort(baseToTop).reverse();
|
|
1815
1772
|
}, [draftLanguageObjects, publishedLanguageObjects]);
|
|
1816
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
1773
|
+
return /*#__PURE__*/React__default["default"].createElement(SelectorBox, 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, {
|
|
1817
1774
|
columns: 1,
|
|
1818
1775
|
gap: 1
|
|
1819
1776
|
}, existingLanguageObjects.map(function (language) {
|
|
@@ -1871,43 +1828,74 @@ var LanguageSelect = function LanguageSelect(_ref) {
|
|
|
1871
1828
|
}, [languages, currentLanguageCode]);
|
|
1872
1829
|
var currentLanguageFlagCode = React__default["default"].useMemo(function () {
|
|
1873
1830
|
return currentLanguageCode === null || currentLanguageCode === void 0 ? void 0 : currentLanguageCode.split(/[-_]/).pop();
|
|
1874
|
-
}, [currentLanguageCode]);
|
|
1875
|
-
|
|
1831
|
+
}, [currentLanguageCode]); // Find and listen to changes on all potential language versions of documents
|
|
1832
|
+
|
|
1833
|
+
var query = "*[_type == $type && _id in $ids]{\n _id, \n \"".concat(config.fieldNames.lang, "\": ").concat(config.fieldNames.lang, "\n }");
|
|
1834
|
+
var queryParams = React__default["default"].useMemo(function () {
|
|
1876
1835
|
var baseId = getBaseIdFromId(document._id);
|
|
1877
|
-
|
|
1836
|
+
var publishedIds = languages.map(function (lang) {
|
|
1878
1837
|
return lang === baseLanguage ? baseId : buildDocId(baseId, lang.id);
|
|
1879
1838
|
});
|
|
1880
|
-
|
|
1881
|
-
|
|
1839
|
+
var draftIds = publishedIds.map(function (id) {
|
|
1840
|
+
return "drafts.".concat(id);
|
|
1841
|
+
});
|
|
1842
|
+
return {
|
|
1843
|
+
ids: [].concat(_toConsumableArray__default["default"](publishedIds), _toConsumableArray__default["default"](draftIds)),
|
|
1844
|
+
type: document._type
|
|
1845
|
+
};
|
|
1846
|
+
}, [baseLanguage, languages, document._id, document._type]);
|
|
1847
|
+
|
|
1848
|
+
var _useListeningQuery = useListeningQuery(query, queryParams),
|
|
1849
|
+
loading = _useListeningQuery.loading,
|
|
1850
|
+
data = _useListeningQuery.data; // Create a list of objects with current status
|
|
1851
|
+
|
|
1852
|
+
|
|
1882
1853
|
var languagesObjects = React__default["default"].useMemo(function () {
|
|
1883
|
-
var
|
|
1884
|
-
|
|
1885
|
-
|
|
1854
|
+
var draftLanguageObjects = [];
|
|
1855
|
+
var publishedLanguageObjects = [];
|
|
1856
|
+
var missingLanguageObjects = [];
|
|
1857
|
+
|
|
1858
|
+
if (!(data !== null && data !== void 0 && data.length)) {
|
|
1859
|
+
return {
|
|
1860
|
+
draftLanguageObjects: draftLanguageObjects,
|
|
1861
|
+
publishedLanguageObjects: publishedLanguageObjects,
|
|
1862
|
+
missingLanguageObjects: missingLanguageObjects
|
|
1863
|
+
};
|
|
1864
|
+
} // Prefer drafts if they exist
|
|
1865
|
+
|
|
1886
1866
|
|
|
1887
|
-
|
|
1867
|
+
var filteredDocuments = data.reduce(function (acc, cur) {
|
|
1868
|
+
if (!cur._id.startsWith("drafts.")) {
|
|
1869
|
+
var alsoHasDraft = data.some(function (doc) {
|
|
1870
|
+
return doc._id === "drafts.".concat(cur._id);
|
|
1871
|
+
});
|
|
1872
|
+
return alsoHasDraft ? acc : [].concat(_toConsumableArray__default["default"](acc), [cur]);
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
return [].concat(_toConsumableArray__default["default"](acc), [cur]);
|
|
1876
|
+
}, []);
|
|
1877
|
+
var editStatePerLanguage = new Map();
|
|
1878
|
+
filteredDocuments.forEach(function (doc) {
|
|
1888
1879
|
var lang = objectSafeGet(doc !== null && doc !== void 0 ? doc : {}, config.fieldNames.lang);
|
|
1889
1880
|
var isBase = doc && doc._id.replace(/^drafts\./, '') === getBaseIdFromId(doc._id);
|
|
1890
1881
|
|
|
1891
1882
|
if (lang) {
|
|
1892
|
-
editStatePerLanguage.set(lang,
|
|
1883
|
+
editStatePerLanguage.set(lang, doc);
|
|
1893
1884
|
} else if (isBase && baseLanguage !== null && baseLanguage !== void 0 && baseLanguage.id) {
|
|
1894
|
-
editStatePerLanguage.set(baseLanguage.id,
|
|
1885
|
+
editStatePerLanguage.set(baseLanguage.id, doc);
|
|
1895
1886
|
}
|
|
1896
1887
|
});
|
|
1897
|
-
var draftLanguageObjects = [];
|
|
1898
|
-
var publishedLanguageObjects = [];
|
|
1899
|
-
var missingLanguageObjects = [];
|
|
1900
1888
|
languages.forEach(function (lang, index) {
|
|
1901
1889
|
var extendedObject = _objectSpread(_objectSpread({}, lang), {}, {
|
|
1902
1890
|
isBase: baseLanguage ? lang.id === baseLanguage.id : index === 0,
|
|
1903
1891
|
isCurrentLanguage: lang.id === currentLanguageCode
|
|
1904
1892
|
});
|
|
1905
1893
|
|
|
1906
|
-
var
|
|
1894
|
+
var doc = editStatePerLanguage.get(lang.id);
|
|
1907
1895
|
|
|
1908
|
-
if (
|
|
1896
|
+
if (doc !== null && doc !== void 0 && doc._id && !doc._id.startsWith("drafts.")) {
|
|
1909
1897
|
publishedLanguageObjects.push(extendedObject);
|
|
1910
|
-
} else if (
|
|
1898
|
+
} else if (doc !== null && doc !== void 0 && doc._id && doc._id.startsWith("drafts.")) {
|
|
1911
1899
|
draftLanguageObjects.push(extendedObject);
|
|
1912
1900
|
} else {
|
|
1913
1901
|
missingLanguageObjects.push(extendedObject);
|
|
@@ -1918,14 +1906,14 @@ var LanguageSelect = function LanguageSelect(_ref) {
|
|
|
1918
1906
|
publishedLanguageObjects: publishedLanguageObjects,
|
|
1919
1907
|
missingLanguageObjects: missingLanguageObjects
|
|
1920
1908
|
};
|
|
1921
|
-
}, [config, languages, baseLanguage,
|
|
1909
|
+
}, [config, languages, baseLanguage, data, currentLanguageCode]);
|
|
1922
1910
|
|
|
1923
|
-
if (!currentLanguageObject || !currentLanguageCode || pending || languages.length === 0) {
|
|
1911
|
+
if (!currentLanguageObject || !currentLanguageCode || pending || loading || languages.length === 0) {
|
|
1924
1912
|
return /*#__PURE__*/React__default["default"].createElement(ui.Button, {
|
|
1925
1913
|
disabled: true,
|
|
1926
1914
|
mode: "bleed",
|
|
1927
1915
|
padding: 3,
|
|
1928
|
-
loading: pending,
|
|
1916
|
+
loading: pending || loading,
|
|
1929
1917
|
iconRight: icons.ChevronDownIcon,
|
|
1930
1918
|
text: UiMessages.languageSelect.placeholder
|
|
1931
1919
|
});
|
|
@@ -1973,7 +1961,7 @@ var LanguageSelectContainer = function LanguageSelectContainer(_ref) {
|
|
|
1973
1961
|
return null;
|
|
1974
1962
|
}, []);
|
|
1975
1963
|
|
|
1976
|
-
if (schemaType !== null && schemaType !== void 0 && schemaType.i18n && (_documentContext$disp = documentContext.displayed) !== null && _documentContext$disp !== void 0 && _documentContext$disp._id) {
|
|
1964
|
+
if (schemaType !== null && schemaType !== void 0 && schemaType.i18n && documentContext !== null && documentContext !== void 0 && (_documentContext$disp = documentContext.displayed) !== null && _documentContext$disp !== void 0 && _documentContext$disp._id) {
|
|
1977
1965
|
return /*#__PURE__*/React__default["default"].createElement(LanguageSelect, {
|
|
1978
1966
|
schemaType: schemaType,
|
|
1979
1967
|
document: documentContext.displayed
|