sanity-plugin-internationalized-array 2.0.1-canary.1 → 2.1.0
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/lib/index.esm.js +66 -61
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +66 -60
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +66 -61
- package/lib/index.mjs.map +1 -1
- package/package.json +29 -23
- package/src/cache.ts +1 -1
- package/src/components/AddButtons.tsx +1 -4
- package/src/components/InternationalizedArrayContext.tsx +15 -9
- package/src/plugin.tsx +4 -6
- package/src/schema/array.ts +1 -7
- package/src/schema/object.ts +1 -1
package/lib/index.js
CHANGED
|
@@ -5,7 +5,8 @@ function _interopDefaultCompat(e) {
|
|
|
5
5
|
return e && typeof e == "object" && "default" in e ? e : { default: e };
|
|
6
6
|
}
|
|
7
7
|
function _interopNamespaceCompat(e) {
|
|
8
|
-
if (e && typeof e == "object" && "default" in e)
|
|
8
|
+
if (e && typeof e == "object" && "default" in e)
|
|
9
|
+
return e;
|
|
9
10
|
var n = /* @__PURE__ */ Object.create(null);
|
|
10
11
|
return e && Object.keys(e).forEach(function(k) {
|
|
11
12
|
if (k !== "default") {
|
|
@@ -20,7 +21,7 @@ function _interopNamespaceCompat(e) {
|
|
|
20
21
|
}), n.default = e, Object.freeze(n);
|
|
21
22
|
}
|
|
22
23
|
var suspend__namespace = /* @__PURE__ */ _interopNamespaceCompat(suspend), equal__default = /* @__PURE__ */ _interopDefaultCompat(equal), get__default = /* @__PURE__ */ _interopDefaultCompat(get);
|
|
23
|
-
const namespace = "sanity-plugin-internationalized-array", version = "
|
|
24
|
+
const namespace = "sanity-plugin-internationalized-array", version = "v0", preload = (fn) => suspend__namespace.preload(() => fn(), [version, namespace]), clear = () => suspend__namespace.clear([version, namespace]), peek = (selectedValue) => suspend__namespace.peek([version, namespace, selectedValue]), MAX_COLUMNS = 7, CONFIG_DEFAULT = {
|
|
24
25
|
languages: [],
|
|
25
26
|
select: {},
|
|
26
27
|
defaultLanguages: [],
|
|
@@ -31,10 +32,11 @@ const namespace = "sanity-plugin-internationalized-array", version = "v1", prelo
|
|
|
31
32
|
}, getDocumentsToTranslate = (value, rootPath = []) => {
|
|
32
33
|
if (Array.isArray(value)) {
|
|
33
34
|
const arrayRootPath = [...rootPath], internationalizedValues = value.filter((item) => {
|
|
34
|
-
if (Array.isArray(item))
|
|
35
|
+
if (Array.isArray(item))
|
|
36
|
+
return !1;
|
|
35
37
|
if (typeof item == "object") {
|
|
36
|
-
const type = item
|
|
37
|
-
return type
|
|
38
|
+
const type = item == null ? void 0 : item._type;
|
|
39
|
+
return (type == null ? void 0 : type.startsWith("internationalizedArray")) && (type == null ? void 0 : type.endsWith("Value"));
|
|
38
40
|
}
|
|
39
41
|
return !1;
|
|
40
42
|
});
|
|
@@ -65,7 +67,7 @@ function AddButtons(props) {
|
|
|
65
67
|
tone: "primary",
|
|
66
68
|
mode: "ghost",
|
|
67
69
|
fontSize: 1,
|
|
68
|
-
disabled: readOnly || !!value
|
|
70
|
+
disabled: readOnly || !!(value != null && value.find((item) => item._key === language.id)),
|
|
69
71
|
text: language.id.toUpperCase(),
|
|
70
72
|
icon: languages.length > MAX_COLUMNS ? void 0 : icons.AddIcon,
|
|
71
73
|
value: language.id,
|
|
@@ -74,7 +76,6 @@ function AddButtons(props) {
|
|
|
74
76
|
language.id
|
|
75
77
|
)) }) : null;
|
|
76
78
|
}
|
|
77
|
-
var AddButtons$1 = react.memo(AddButtons);
|
|
78
79
|
function DocumentAddButtons(props) {
|
|
79
80
|
const { filteredLanguages } = useInternationalizedArrayContext(), value = sanity.isSanityDocument(props.value) ? props.value : void 0, toast = ui.useToast(), { onChange } = structure.useDocumentPane(), documentsToTranslation = getDocumentsToTranslate(value, []), handleDocumentButtonClick = react.useCallback(
|
|
80
81
|
async (event) => {
|
|
@@ -87,7 +88,7 @@ function DocumentAddButtons(props) {
|
|
|
87
88
|
return;
|
|
88
89
|
}
|
|
89
90
|
const alreadyTranslated = documentsToTranslation.filter(
|
|
90
|
-
(translation) => translation
|
|
91
|
+
(translation) => (translation == null ? void 0 : translation._key) === languageId
|
|
91
92
|
), removeDuplicates = documentsToTranslation.reduce((filteredTranslations, translation) => alreadyTranslated.filter(
|
|
92
93
|
(alreadyTranslation) => alreadyTranslation.pathString === translation.pathString
|
|
93
94
|
).length > 0 || filteredTranslations.filter(
|
|
@@ -122,7 +123,7 @@ function DocumentAddButtons(props) {
|
|
|
122
123
|
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { space: 3, children: [
|
|
123
124
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: 1, weight: "semibold", children: "Add translation to internationalized fields" }) }),
|
|
124
125
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
125
|
-
AddButtons
|
|
126
|
+
AddButtons,
|
|
126
127
|
{
|
|
127
128
|
languages: filteredLanguages,
|
|
128
129
|
readOnly: !1,
|
|
@@ -139,7 +140,7 @@ const getSelectedValue = (select, document) => {
|
|
|
139
140
|
for (const [key, path] of Object.entries(selection)) {
|
|
140
141
|
let value = get__default.default(document, path);
|
|
141
142
|
Array.isArray(value) && (value = value.filter(
|
|
142
|
-
(item) => typeof item == "object" ? item
|
|
143
|
+
(item) => typeof item == "object" ? (item == null ? void 0 : item._type) === "reference" && "_ref" in item : !0
|
|
143
144
|
)), selectedValue[key] = value;
|
|
144
145
|
}
|
|
145
146
|
return selectedValue;
|
|
@@ -152,7 +153,7 @@ function useInternationalizedArrayContext() {
|
|
|
152
153
|
return react.useContext(InternationalizedArrayContext);
|
|
153
154
|
}
|
|
154
155
|
function InternationalizedArrayProvider(props) {
|
|
155
|
-
const { internationalizedArray: internationalizedArray2 } = props, client = sanity.useClient({ apiVersion: internationalizedArray2.apiVersion }), workspace = sanity.useWorkspace(), {
|
|
156
|
+
const { internationalizedArray: internationalizedArray2 } = props, client = sanity.useClient({ apiVersion: internationalizedArray2.apiVersion }), workspace = sanity.useWorkspace(), { value: document } = sanity.useFormBuilder(), deferredDocument = react.useDeferredValue(document), selectedValue = react.useMemo(
|
|
156
157
|
() => getSelectedValue(internationalizedArray2.select, deferredDocument),
|
|
157
158
|
[internationalizedArray2.select, deferredDocument]
|
|
158
159
|
), languages = Array.isArray(internationalizedArray2.languages) ? internationalizedArray2.languages : suspend.suspend(
|
|
@@ -165,14 +166,21 @@ function InternationalizedArrayProvider(props) {
|
|
|
165
166
|
return typeof documentType == "string" && languageFilterOptions.documentTypes.includes(documentType) ? languages.filter(
|
|
166
167
|
(language) => selectedLanguageIds.includes(language.id)
|
|
167
168
|
) : languages;
|
|
168
|
-
}, [deferredDocument, languageFilterOptions, languages, selectedLanguageIds]), showDocumentButtons = internationalizedArray2.buttonLocations.includes("document")
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
}, [deferredDocument, languageFilterOptions, languages, selectedLanguageIds]), showDocumentButtons = internationalizedArray2.buttonLocations.includes("document");
|
|
170
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
171
|
+
InternationalizedArrayContext.Provider,
|
|
172
|
+
{
|
|
173
|
+
value: {
|
|
174
|
+
...internationalizedArray2,
|
|
175
|
+
languages,
|
|
176
|
+
filteredLanguages
|
|
177
|
+
},
|
|
178
|
+
children: showDocumentButtons ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { space: 5, children: [
|
|
179
|
+
/* @__PURE__ */ jsxRuntime.jsx(DocumentAddButtons, { value: props.value }),
|
|
180
|
+
props.renderDefault(props)
|
|
181
|
+
] }) : props.renderDefault(props)
|
|
182
|
+
}
|
|
171
183
|
);
|
|
172
|
-
return /* @__PURE__ */ jsxRuntime.jsx(InternationalizedArrayContext.Provider, { value: context, children: showDocumentButtons ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { space: 5, children: [
|
|
173
|
-
/* @__PURE__ */ jsxRuntime.jsx(DocumentAddButtons, { value: props.value }),
|
|
174
|
-
props.renderDefault(props)
|
|
175
|
-
] }) : props.renderDefault(props) });
|
|
176
184
|
}
|
|
177
185
|
var Preload = react.memo(function(props) {
|
|
178
186
|
const client = sanity.useClient({ apiVersion: props.apiVersion });
|
|
@@ -185,7 +193,7 @@ function checkAllLanguagesArePresent(languages, value) {
|
|
|
185
193
|
return languagesInUseIds.length === filteredLanguageIds.length && languagesInUseIds.every((l) => filteredLanguageIds.includes(l));
|
|
186
194
|
}
|
|
187
195
|
function createAddAllTitle(value, languages) {
|
|
188
|
-
return value
|
|
196
|
+
return value != null && value.length ? `Add missing ${languages.length - value.length === 1 ? "language" : "languages"}` : languages.length === 1 ? `Add ${languages[0].title} Field` : "Add all languages";
|
|
189
197
|
}
|
|
190
198
|
function createValueSchemaTypeName(schemaType) {
|
|
191
199
|
return `${schemaType.name}Value`;
|
|
@@ -202,11 +210,11 @@ function createAddLanguagePatches(config) {
|
|
|
202
210
|
...itemBase,
|
|
203
211
|
_key: id
|
|
204
212
|
})) : filteredLanguages.filter(
|
|
205
|
-
(language) => value
|
|
213
|
+
(language) => value != null && value.length ? !value.find((v) => v._key === language.id) : !0
|
|
206
214
|
).map((language) => ({
|
|
207
215
|
...itemBase,
|
|
208
216
|
_key: language.id
|
|
209
|
-
})), languagesInUse = value
|
|
217
|
+
})), languagesInUse = value != null && value.length ? value.map((v) => v) : [];
|
|
210
218
|
return newItems.map((item) => {
|
|
211
219
|
const languageIndex = languages.findIndex((l) => item._key === l.id), remainingLanguages = languages.slice(languageIndex + 1), nextLanguageIndex = languagesInUse.findIndex(
|
|
212
220
|
(l) => (
|
|
@@ -224,7 +232,7 @@ function createAddLanguagePatches(config) {
|
|
|
224
232
|
});
|
|
225
233
|
}
|
|
226
234
|
const createTranslateFieldActions = (fieldActionProps, { languages, filteredLanguages }) => languages.map((language) => {
|
|
227
|
-
const value = sanity.useFormValue(fieldActionProps.path), disabled = value && Array.isArray(value) ? !!value
|
|
235
|
+
const value = sanity.useFormValue(fieldActionProps.path), disabled = value && Array.isArray(value) ? !!(value != null && value.find((item) => item._key === language.id)) : !1, hidden = !filteredLanguages.some((f) => f.id === language.id), { onChange } = structure.useDocumentPane(), onAction = react.useCallback(() => {
|
|
228
236
|
const { schemaType, path } = fieldActionProps, addLanguageKeys = [language.id], patches = createAddLanguagePatches({
|
|
229
237
|
addLanguageKeys,
|
|
230
238
|
schemaType,
|
|
@@ -266,7 +274,8 @@ const createTranslateFieldActions = (fieldActionProps, { languages, filteredLang
|
|
|
266
274
|
}, internationalizedArrayFieldAction = sanity.defineDocumentFieldAction({
|
|
267
275
|
name: "internationalizedArray",
|
|
268
276
|
useAction(fieldActionProps) {
|
|
269
|
-
|
|
277
|
+
var _a, _b;
|
|
278
|
+
const isInternationalizedArrayField = (_b = (_a = fieldActionProps == null ? void 0 : fieldActionProps.schemaType) == null ? void 0 : _a.type) == null ? void 0 : _b.name.startsWith(
|
|
270
279
|
"internationalizedArray"
|
|
271
280
|
), { languages, filteredLanguages } = useInternationalizedArrayContext(), translateFieldActions = createTranslateFieldActions(
|
|
272
281
|
fieldActionProps,
|
|
@@ -343,9 +352,10 @@ function InternationalizedArray(props) {
|
|
|
343
352
|
[languageFilterEnabled, members, languageFilterOptions, selectedLanguageIds]
|
|
344
353
|
), handleAddLanguage = react.useCallback(
|
|
345
354
|
async (param) => {
|
|
346
|
-
|
|
355
|
+
var _a;
|
|
356
|
+
if (!(filteredLanguages != null && filteredLanguages.length))
|
|
347
357
|
return;
|
|
348
|
-
const addLanguageKeys = Array.isArray(param) ? param : [param
|
|
358
|
+
const addLanguageKeys = Array.isArray(param) ? param : [(_a = param == null ? void 0 : param.currentTarget) == null ? void 0 : _a.value].filter(Boolean), patches = createAddLanguagePatches({
|
|
349
359
|
addLanguageKeys,
|
|
350
360
|
schemaType,
|
|
351
361
|
languages,
|
|
@@ -363,23 +373,23 @@ function InternationalizedArray(props) {
|
|
|
363
373
|
};
|
|
364
374
|
}, [defaultLanguages, documentCreatedAt, handleAddLanguage, value]);
|
|
365
375
|
const handleRestoreOrder = react.useCallback(() => {
|
|
366
|
-
if (!value
|
|
376
|
+
if (!(value != null && value.length) || !(languages != null && languages.length))
|
|
367
377
|
return;
|
|
368
378
|
const updatedValue = value.reduce((acc, v) => {
|
|
369
|
-
const newIndex = languages.findIndex((l) => l.id === v
|
|
379
|
+
const newIndex = languages.findIndex((l) => l.id === (v == null ? void 0 : v._key));
|
|
370
380
|
return newIndex > -1 && (acc[newIndex] = v), acc;
|
|
371
381
|
}, []).filter(Boolean);
|
|
372
|
-
value
|
|
382
|
+
(value == null ? void 0 : value.length) !== updatedValue.length && toast.push({
|
|
373
383
|
title: "There was an error reordering languages",
|
|
374
384
|
status: "warning"
|
|
375
385
|
}), onChange(sanity.set(updatedValue));
|
|
376
|
-
}, [toast, languages, onChange, value]), allKeysAreLanguages = react.useMemo(() => !value
|
|
377
|
-
() => languages && languages.length > 1 ? languages.filter((l) => value
|
|
386
|
+
}, [toast, languages, onChange, value]), allKeysAreLanguages = react.useMemo(() => !(value != null && value.length) || !(languages != null && languages.length) ? !0 : value == null ? void 0 : value.every((v) => languages.find((l) => (l == null ? void 0 : l.id) === (v == null ? void 0 : v._key))), [value, languages]), languagesInUse = react.useMemo(
|
|
387
|
+
() => languages && languages.length > 1 ? languages.filter((l) => value == null ? void 0 : value.find((v) => v._key === l.id)) : [],
|
|
378
388
|
[languages, value]
|
|
379
|
-
), languagesOutOfOrder = react.useMemo(() => !value
|
|
389
|
+
), languagesOutOfOrder = react.useMemo(() => !(value != null && value.length) || !languagesInUse.length ? [] : value.map(
|
|
380
390
|
(v, vIndex) => vIndex === languagesInUse.findIndex((l) => l.id === v._key) ? null : v
|
|
381
391
|
).filter(Boolean), [value, languagesInUse]), languagesAreValid = react.useMemo(
|
|
382
|
-
() => !languages
|
|
392
|
+
() => !(languages != null && languages.length) || (languages == null ? void 0 : languages.length) && languages.every((item) => item.id && item.title),
|
|
383
393
|
[languages]
|
|
384
394
|
);
|
|
385
395
|
react.useEffect(() => {
|
|
@@ -394,9 +404,9 @@ function InternationalizedArray(props) {
|
|
|
394
404
|
const addButtonsAreVisible = (
|
|
395
405
|
// Plugin was configured to display buttons here (default!)
|
|
396
406
|
buttonLocations.includes("field") && // There's at least one language visible
|
|
397
|
-
filteredLanguages
|
|
407
|
+
(filteredLanguages == null ? void 0 : filteredLanguages.length) > 0 && // Not every language has a value yet
|
|
398
408
|
!allLanguagesArePresent
|
|
399
|
-
), fieldHasMembers = members
|
|
409
|
+
), fieldHasMembers = (members == null ? void 0 : members.length) > 0;
|
|
400
410
|
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { space: 2, children: [
|
|
401
411
|
fieldHasMembers ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: filteredMembers.map((member) => member.kind === "item" ? /* @__PURE__ */ react.createElement(
|
|
402
412
|
sanity.ArrayOfObjectsItem,
|
|
@@ -409,7 +419,7 @@ function InternationalizedArray(props) {
|
|
|
409
419
|
!addButtonsAreVisible && !fieldHasMembers ? /* @__PURE__ */ jsxRuntime.jsx(ui.Card, { border: !0, tone: "transparent", padding: 3, radius: 2, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: 1, children: "This internationalized field currently has no translations." }) }) : null,
|
|
410
420
|
addButtonsAreVisible ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { space: 2, children: [
|
|
411
421
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
412
|
-
AddButtons
|
|
422
|
+
AddButtons,
|
|
413
423
|
{
|
|
414
424
|
languages: filteredLanguages,
|
|
415
425
|
value,
|
|
@@ -432,7 +442,8 @@ function InternationalizedArray(props) {
|
|
|
432
442
|
] });
|
|
433
443
|
}
|
|
434
444
|
function getLanguagesFieldOption(schemaType) {
|
|
435
|
-
|
|
445
|
+
var _a;
|
|
446
|
+
return schemaType ? ((_a = schemaType.options) == null ? void 0 : _a.languages) || getLanguagesFieldOption(schemaType.type) : void 0;
|
|
436
447
|
}
|
|
437
448
|
var array = (config) => {
|
|
438
449
|
const { apiVersion, select, languages, type } = config, typeName = typeof type == "string" ? type : type.name, arrayName = createFieldName(typeName), objectName = createFieldName(typeName, !0);
|
|
@@ -444,12 +455,7 @@ var array = (config) => {
|
|
|
444
455
|
input: InternationalizedArray
|
|
445
456
|
},
|
|
446
457
|
// These options are required for validation rules – not the custom input component
|
|
447
|
-
options: {
|
|
448
|
-
// @ts-expect-error - find out why it fails
|
|
449
|
-
apiVersion,
|
|
450
|
-
select,
|
|
451
|
-
languages
|
|
452
|
-
},
|
|
458
|
+
options: { apiVersion, select, languages },
|
|
453
459
|
of: [
|
|
454
460
|
sanity.defineField({
|
|
455
461
|
...typeof type == "string" ? {} : type,
|
|
@@ -457,16 +463,15 @@ var array = (config) => {
|
|
|
457
463
|
type: objectName
|
|
458
464
|
})
|
|
459
465
|
],
|
|
460
|
-
// @ts-expect-error - find out why it fails
|
|
461
466
|
validation: (rule) => rule.custom(async (value, context) => {
|
|
462
467
|
if (!value)
|
|
463
468
|
return !0;
|
|
464
469
|
const selectedValue = getSelectedValue(select, context.document), client = context.getClient({ apiVersion });
|
|
465
470
|
let contextLanguages = [];
|
|
466
|
-
const languagesFieldOption = getLanguagesFieldOption(context
|
|
471
|
+
const languagesFieldOption = getLanguagesFieldOption(context == null ? void 0 : context.type);
|
|
467
472
|
if (Array.isArray(languagesFieldOption) ? contextLanguages = languagesFieldOption : Array.isArray(peek(selectedValue)) ? contextLanguages = peek(selectedValue) || [] : typeof languagesFieldOption == "function" && (contextLanguages = await languagesFieldOption(client, selectedValue)), value && value.length > contextLanguages.length)
|
|
468
473
|
return `Cannot be more than ${contextLanguages.length === 1 ? "1 item" : `${contextLanguages.length} items`}`;
|
|
469
|
-
const nonLanguageKeys = value
|
|
474
|
+
const nonLanguageKeys = value != null && value.length ? value.filter(
|
|
470
475
|
(item) => !contextLanguages.find((language) => item._key === language.id)
|
|
471
476
|
) : [];
|
|
472
477
|
if (nonLanguageKeys.length)
|
|
@@ -474,10 +479,10 @@ var array = (config) => {
|
|
|
474
479
|
message: "Array item keys must be valid languages registered to the field type",
|
|
475
480
|
paths: nonLanguageKeys.map((item) => [{ _key: item._key }])
|
|
476
481
|
};
|
|
477
|
-
const valuesByLanguage = value
|
|
482
|
+
const valuesByLanguage = value != null && value.length ? value.filter((item) => !!(item != null && item._key)).reduce((acc, cur) => acc[cur._key] ? { ...acc, [cur._key]: [...acc[cur._key], cur] } : {
|
|
478
483
|
...acc,
|
|
479
484
|
[cur._key]: [cur]
|
|
480
|
-
}, {}) : {}, duplicateValues = Object.values(valuesByLanguage).filter((item) => item
|
|
485
|
+
}, {}) : {}, duplicateValues = Object.values(valuesByLanguage).filter((item) => (item == null ? void 0 : item.length) > 1).flat();
|
|
481
486
|
return duplicateValues.length ? {
|
|
482
487
|
message: "There can only be one field per language",
|
|
483
488
|
paths: duplicateValues.map((item) => [{ _key: item._key }])
|
|
@@ -493,7 +498,7 @@ function InternationalizedField(props) {
|
|
|
493
498
|
}) : props.children;
|
|
494
499
|
}
|
|
495
500
|
function getToneFromValidation(validations) {
|
|
496
|
-
if (!validations
|
|
501
|
+
if (!(validations != null && validations.length))
|
|
497
502
|
return;
|
|
498
503
|
const validationLevels = validations.map((v) => v.level);
|
|
499
504
|
if (validationLevels.includes("error"))
|
|
@@ -514,12 +519,16 @@ function InternationalizedInput(props) {
|
|
|
514
519
|
// TODO: Remove this as it shouldn't be necessary?
|
|
515
520
|
value: props.value
|
|
516
521
|
}, { validation, value, onChange, readOnly } = inlineProps, { languages } = useInternationalizedArrayContext(), languageKeysInUse = react.useMemo(
|
|
517
|
-
() =>
|
|
522
|
+
() => {
|
|
523
|
+
var _a;
|
|
524
|
+
return (_a = parentValue == null ? void 0 : parentValue.map((v) => v._key)) != null ? _a : [];
|
|
525
|
+
},
|
|
518
526
|
[parentValue]
|
|
519
|
-
), keyIsValid = languages
|
|
527
|
+
), keyIsValid = languages != null && languages.length ? languages.find((l) => l.id === value._key) : !1, handleKeyChange = react.useCallback(
|
|
520
528
|
(event) => {
|
|
521
|
-
|
|
522
|
-
|
|
529
|
+
var _a;
|
|
530
|
+
const languageId = (_a = event == null ? void 0 : event.currentTarget) == null ? void 0 : _a.value;
|
|
531
|
+
!value || !(languages != null && languages.length) || !languages.find((l) => l.id === languageId) || onChange([sanity.set(languageId, ["_key"])]);
|
|
523
532
|
},
|
|
524
533
|
[onChange, value, languages]
|
|
525
534
|
), handleUnset = react.useCallback(() => {
|
|
@@ -567,9 +576,9 @@ var object = (config) => {
|
|
|
567
576
|
title: `Internationalized array ${type}`,
|
|
568
577
|
type: "object",
|
|
569
578
|
components: {
|
|
570
|
-
// @ts-expect-error - find out why it fails
|
|
571
579
|
item: InternationalizedInput
|
|
572
580
|
},
|
|
581
|
+
// @ts-expect-error - Address this typing issue with the inner object
|
|
573
582
|
fields: [
|
|
574
583
|
typeof type == "string" ? (
|
|
575
584
|
// Define a simple field if all we have is the name as a string
|
|
@@ -655,13 +664,10 @@ const internationalizedArray = sanity.definePlugin((config) => {
|
|
|
655
664
|
(field) => field.type.name
|
|
656
665
|
).some(
|
|
657
666
|
(name) => name.startsWith("internationalizedArray")
|
|
658
|
-
) ? props.renderDefault(props) :
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
internationalizedArray: pluginConfig
|
|
663
|
-
}
|
|
664
|
-
)
|
|
667
|
+
) ? props.renderDefault(props) : InternationalizedArrayProvider({
|
|
668
|
+
...props,
|
|
669
|
+
internationalizedArray: pluginConfig
|
|
670
|
+
})
|
|
665
671
|
}
|
|
666
672
|
},
|
|
667
673
|
// Register custom schema types for the outer array and the inner object
|