sanity-plugin-internationalized-array 5.2.3 → 5.3.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/README.md +13 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +194 -99
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -126,8 +126,18 @@ languages: async (client, {market = ``}) => {
|
|
|
126
126
|
The "Add translation" buttons can be positioned in one or multiple locations by configuring `buttonLocations`:
|
|
127
127
|
|
|
128
128
|
- `field` (default) Below the internationalized array field
|
|
129
|
-
- `
|
|
129
|
+
- `fieldMenu` One translate icon per field that opens a language menu
|
|
130
130
|
- `document` Above the document fields, these buttons will add a new language item to every internationalized array field that can be found at the **root of the document**. Nested internationalized arrays are not yet supported.
|
|
131
|
+
- `unstable__fieldAction` Inside a Field Action (still accepted in config; currently unstable)
|
|
132
|
+
|
|
133
|
+
All locations are additive, so `field`, `fieldMenu`, and `document` can be used together.
|
|
134
|
+
|
|
135
|
+

|
|
136
|
+
|
|
137
|
+
> [!WARNING]
|
|
138
|
+
> Do not use `unstable__fieldAction` on **this plugin 4.0.4 or later**. It crashes the document editor with `useFormValue must be used within a FormValueProvider` — on Studio 4 and above.
|
|
139
|
+
>
|
|
140
|
+
> The break is this plugin, not a Studio major. **4.0.4** ([#633](https://github.com/sanity-io/plugins/pull/633)) moved the language provider onto `document.components.unstable_layout`, so field actions now run outside `FormValueProvider` and throw. Last working plugin: **4.0.0** (and 3.x). Use `field`, `fieldMenu`, and/or `document` instead.
|
|
131
141
|
|
|
132
142
|
To control the "Add translation" button titles, configure `languageDisplay`. This also affects language field labels.
|
|
133
143
|
|
|
@@ -135,7 +145,7 @@ To control the "Add translation" button titles, configure `languageDisplay`. Thi
|
|
|
135
145
|
- `titleOnly` Shows the language title
|
|
136
146
|
- `titleAndCode` Shows the language title with the code in parentheses
|
|
137
147
|
|
|
138
|
-
The "Add all languages"
|
|
148
|
+
The "Add all languages" / "Add missing languages" control can be hidden with `buttonAddAll`. Under `field` that hides the bar below the per-language buttons. Under `fieldMenu` that hides the bulk item inside the language menu.
|
|
139
149
|
|
|
140
150
|
By default, opening a document reorders internationalized array items to match
|
|
141
151
|
the configured `languages` order. That can create a draft (and a history entry)
|
|
@@ -150,7 +160,7 @@ export default defineConfig({
|
|
|
150
160
|
plugins: [
|
|
151
161
|
internationalizedArray({
|
|
152
162
|
// ...other config
|
|
153
|
-
buttonLocations: ['field', '
|
|
163
|
+
buttonLocations: ['field', 'fieldMenu', 'document'], // default ['field'] — locations are additive
|
|
154
164
|
buttonAddAll: false, // default true
|
|
155
165
|
restoreOrder: false, // default true
|
|
156
166
|
languageDisplay: 'codeOnly', // codeOnly (default) | titleOnly | titleAndCode
|
package/dist/index.d.ts
CHANGED
|
@@ -125,12 +125,19 @@ type PluginConfig = {
|
|
|
125
125
|
*/
|
|
126
126
|
fieldTypes: (string | RuleTypeConstraint | FieldDefinition)[];
|
|
127
127
|
/**
|
|
128
|
-
* Locations where the "+ EN" add language buttons are visible
|
|
128
|
+
* Locations where the "+ EN" add language buttons are visible.
|
|
129
|
+
* `fieldMenu` is one translate icon per field that opens a
|
|
130
|
+
* language menu (compact; stable UI; no field actions). All locations are
|
|
131
|
+
* additive, so `field`, `fieldMenu`, and `document` can be combined.
|
|
132
|
+
* `unstable__fieldAction` is still accepted but crashes the editor from
|
|
133
|
+
* plugin 4.0.4 onward on Studio 4 and above.
|
|
129
134
|
* @defaultValue ['field']
|
|
130
135
|
* */
|
|
131
|
-
buttonLocations?: ('field' | 'unstable__fieldAction' | 'document')[];
|
|
136
|
+
buttonLocations?: ('field' | 'fieldMenu' | 'unstable__fieldAction' | 'document')[];
|
|
132
137
|
/**
|
|
133
|
-
* Show or hide the "Add missing languages"
|
|
138
|
+
* Show or hide the "Add all languages" / "Add missing languages" control.
|
|
139
|
+
* Under `field` this is the bar below the per-language buttons. Under
|
|
140
|
+
* `fieldMenu` it is the bulk item inside the language menu.
|
|
134
141
|
* @defaultValue true
|
|
135
142
|
* */
|
|
136
143
|
buttonAddAll?: boolean;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/cache.ts","../src/constants.ts","../src/plugin.tsx","../src/utils/internationalizedArrayLanguageFilter.ts"],"mappings":";;;KAEY;EACV,IAAI,KAAK;EACT;;KAGU;KAEA;EACV;EACA,MAAM;EACN,WAAW;EACX;EACA;EACA;EACA;EACA,aAAa,OAAO;EACpB;KAAU;IAAuB;OAAW;;;;;;;KAMlC;EACV;;EAEA;EACA;;iBAGc,iCACd,eACC,QAAQ;KAIC,2BAA2B;EACrC;EACA,QAAQ;;EAER;;;;EAIA;;KAGU,oBACV,QAAQ,cACR,eAAe,4BACZ,QAAQ;KAED;KAEA;;;;;EAKV;;;;;;;;;;;;;EAaA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BT,WAAW,aAAa;;;;;;;;;EASxB;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,sBAAsB,qBAAqB
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/cache.ts","../src/constants.ts","../src/plugin.tsx","../src/utils/internationalizedArrayLanguageFilter.ts"],"mappings":";;;KAEY;EACV,IAAI,KAAK;EACT;;KAGU;KAEA;EACV;EACA,MAAM;EACN,WAAW;EACX;EACA;EACA;EACA;EACA,aAAa,OAAO;EACpB;KAAU;IAAuB;OAAW;;;;;;;KAMlC;EACV;;EAEA;EACA;;iBAGc,iCACd,eACC,QAAQ;KAIC,2BAA2B;EACrC;EACA,QAAQ;;EAER;;;;EAIA;;KAGU,oBACV,QAAQ,cACR,eAAe,4BACZ,QAAQ;KAED;KAEA;;;;;EAKV;;;;;;;;;;;;;EAaA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BT,WAAW,aAAa;;;;;;;;;EASxB;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,sBAAsB,qBAAqB;;;;;;;;;;EAU3C;;;;;;;EAOA;;;;;;;;;;;EAWA;;;;;EAKA,kBAAkB;;;;;;;;;;EAUlB,0BAA0B;;;;;;;;;;;;EAY1B;IACE,eAAe,SAAS;IACxB,mBAAmB;;;cCnKV;;;;;;;;;;;;;;;;;;;;;;;;cCJA;cCZA,yCAAsB,OAAA;;;;;cCJtB,uCAAoC,eAChC,kBAAgB,SACtB,cAAc,eAAa,+BACP,aAChB,qCAAmC,WACrC"}
|
package/dist/index.js
CHANGED
|
@@ -7,16 +7,17 @@ import { useToast } from "@sanity/ui/toast";
|
|
|
7
7
|
import { randomKey } from "@sanity/util/content";
|
|
8
8
|
import { useDocumentPane } from "sanity/structure";
|
|
9
9
|
import { AddIcon } from "@sanity/icons/Add";
|
|
10
|
-
import { createContext, createElement, use, useCallback, useContext, useDeferredValue, useEffect } from "react";
|
|
10
|
+
import { createContext, createElement, use, useCallback, useContext, useDeferredValue, useEffect, useId } from "react";
|
|
11
11
|
import get from "lodash-es/get.js";
|
|
12
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { TranslateIcon } from "@sanity/icons/Translate";
|
|
14
14
|
import camelCase from "lodash-es/camelCase.js";
|
|
15
15
|
import upperFirst from "lodash-es/upperFirst.js";
|
|
16
|
+
import { EventsContext } from "sanity/_singletons";
|
|
17
|
+
import { Menu, MenuButton, MenuDivider, MenuItem } from "@sanity/ui/menu";
|
|
16
18
|
import { Code } from "@sanity/ui/code";
|
|
17
19
|
import { WarningOutlineIcon } from "@sanity/icons/WarningOutline";
|
|
18
20
|
import { RemoveCircleIcon } from "@sanity/icons/RemoveCircle";
|
|
19
|
-
import { Menu, MenuButton, MenuItem } from "@sanity/ui/menu";
|
|
20
21
|
import { Tooltip } from "@sanity/ui/tooltip";
|
|
21
22
|
const namespace = "sanity-plugin-internationalized-array", functionKeyCache = /* @__PURE__ */ new WeakMap(), promiseCache = /* @__PURE__ */ new Map(), functionCache = /* @__PURE__ */ new Map();
|
|
22
23
|
function stringifyCacheKey(key) {
|
|
@@ -436,7 +437,11 @@ function checkAllLanguagesArePresent(languages, value) {
|
|
|
436
437
|
* or `"Add missing languages"` (plural) depending on how many are left.
|
|
437
438
|
*/
|
|
438
439
|
function createAddAllTitle(value, languages) {
|
|
439
|
-
|
|
440
|
+
if (value?.length) {
|
|
441
|
+
let languagesInUse = new Set(value.map((item) => item[LANGUAGE_FIELD_NAME]));
|
|
442
|
+
return `Add missing ${languages.filter((language) => !languagesInUse.has(language.id)).length === 1 ? "language" : "languages"}`;
|
|
443
|
+
}
|
|
444
|
+
return languages.length === 1 && languages[0] ? `Add ${languages[0].title} Field` : "Add all languages";
|
|
440
445
|
}
|
|
441
446
|
function isInternationalizedArrayItemType(type) {
|
|
442
447
|
return type.startsWith("internationalizedArray") && type.endsWith("Value");
|
|
@@ -576,7 +581,66 @@ const internationalizedArrayLanguageFilter = (enclosingType, _member, selectedLa
|
|
|
576
581
|
return !language || languages.find((l) => l.id === language) ? language ? selectedLanguageIds.includes(language) : !1 : !0;
|
|
577
582
|
}
|
|
578
583
|
return !0;
|
|
579
|
-
}
|
|
584
|
+
};
|
|
585
|
+
/**
|
|
586
|
+
* One translate-icon button that opens a language menu — the `fieldMenu`
|
|
587
|
+
* location. Compact, uses only stable `@sanity/ui`, and stays visible even
|
|
588
|
+
* when every language is already present.
|
|
589
|
+
*/
|
|
590
|
+
function CompactAddButton(props) {
|
|
591
|
+
let $ = c(27), { readOnly, languagesInUse, handleClick, onAddAll, buttonAddAll, addAllTitle, allFilteredLanguagesArePresent } = props, { languageDisplay, filteredLanguages: languages } = useInternationalizedArrayContext(), menuId = useId();
|
|
592
|
+
if (!languages.length) return null;
|
|
593
|
+
let t0;
|
|
594
|
+
$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = {
|
|
595
|
+
portal: !0,
|
|
596
|
+
placement: "bottom-end"
|
|
597
|
+
}, $[0] = t0) : t0 = $[0];
|
|
598
|
+
let t1;
|
|
599
|
+
$[1] === readOnly ? t1 = $[2] : (t1 = /* @__PURE__ */ jsx(Button, {
|
|
600
|
+
mode: "bleed",
|
|
601
|
+
tone: "default",
|
|
602
|
+
fontSize: 1,
|
|
603
|
+
padding: 2,
|
|
604
|
+
icon: TranslateIcon,
|
|
605
|
+
"aria-label": "Add translation",
|
|
606
|
+
title: "Add translation",
|
|
607
|
+
"data-testid": "add-translation-menu",
|
|
608
|
+
disabled: readOnly
|
|
609
|
+
}), $[1] = readOnly, $[2] = t1);
|
|
610
|
+
let t2;
|
|
611
|
+
if ($[3] !== handleClick || $[4] !== languageDisplay || $[5] !== languages || $[6] !== languagesInUse || $[7] !== readOnly) {
|
|
612
|
+
let t3;
|
|
613
|
+
$[9] !== handleClick || $[10] !== languageDisplay || $[11] !== languagesInUse || $[12] !== readOnly ? (t3 = (language) => /* @__PURE__ */ jsx(MenuItem, {
|
|
614
|
+
text: getLanguageDisplay(languageDisplay, language.title, language.id),
|
|
615
|
+
icon: AddIcon,
|
|
616
|
+
disabled: readOnly || languagesInUse.includes(language.id),
|
|
617
|
+
"data-testid": `field-menu-add-${language.id}`,
|
|
618
|
+
onClick: () => handleClick(language.id)
|
|
619
|
+
}, language.id), $[9] = handleClick, $[10] = languageDisplay, $[11] = languagesInUse, $[12] = readOnly, $[13] = t3) : t3 = $[13], t2 = languages.map(t3), $[3] = handleClick, $[4] = languageDisplay, $[5] = languages, $[6] = languagesInUse, $[7] = readOnly, $[8] = t2;
|
|
620
|
+
} else t2 = $[8];
|
|
621
|
+
let t3;
|
|
622
|
+
$[14] !== addAllTitle || $[15] !== allFilteredLanguagesArePresent || $[16] !== buttonAddAll || $[17] !== onAddAll || $[18] !== readOnly ? (t3 = buttonAddAll ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(MenuDivider, {}), /* @__PURE__ */ jsx(MenuItem, {
|
|
623
|
+
text: addAllTitle,
|
|
624
|
+
icon: TranslateIcon,
|
|
625
|
+
disabled: readOnly || allFilteredLanguagesArePresent,
|
|
626
|
+
"data-testid": "field-menu-add-all",
|
|
627
|
+
onClick: onAddAll
|
|
628
|
+
})] }) : null, $[14] = addAllTitle, $[15] = allFilteredLanguagesArePresent, $[16] = buttonAddAll, $[17] = onAddAll, $[18] = readOnly, $[19] = t3) : t3 = $[19];
|
|
629
|
+
let t4;
|
|
630
|
+
$[20] !== t2 || $[21] !== t3 ? (t4 = /* @__PURE__ */ jsxs(Menu, { children: [t2, t3] }), $[20] = t2, $[21] = t3, $[22] = t4) : t4 = $[22];
|
|
631
|
+
let t5;
|
|
632
|
+
return $[23] !== menuId || $[24] !== t1 || $[25] !== t4 ? (t5 = /* @__PURE__ */ jsx(Flex, {
|
|
633
|
+
justify: "flex-end",
|
|
634
|
+
"data-testid": "field-menu",
|
|
635
|
+
children: /* @__PURE__ */ jsx(MenuButton, {
|
|
636
|
+
id: menuId,
|
|
637
|
+
popover: t0,
|
|
638
|
+
button: t1,
|
|
639
|
+
menu: t4
|
|
640
|
+
})
|
|
641
|
+
}), $[23] = menuId, $[24] = t1, $[25] = t4, $[26] = t5) : t5 = $[26], t5;
|
|
642
|
+
}
|
|
643
|
+
const schemaExample = { languages: [{
|
|
580
644
|
id: "en",
|
|
581
645
|
title: "English"
|
|
582
646
|
}, {
|
|
@@ -698,6 +762,17 @@ function MigrationBanner(t0) {
|
|
|
698
762
|
}), $[9] = t5, $[10] = t9), t9;
|
|
699
763
|
}
|
|
700
764
|
/**
|
|
765
|
+
* The events store has finished loading and recorded no history. That is a
|
|
766
|
+
* brand-new document.
|
|
767
|
+
*
|
|
768
|
+
* `sanity/_singletons` is internal; this is the same context `useEvents()`
|
|
769
|
+
* reads. Using the context directly avoids throwing when the events API is
|
|
770
|
+
* off (legacy timeline has no `EventsProvider`).
|
|
771
|
+
*/
|
|
772
|
+
function isPristineDocument(events) {
|
|
773
|
+
return !events || events.loading ? !1 : events.events.length === 0;
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
701
776
|
* Main array input component for internationalized array fields.
|
|
702
777
|
*
|
|
703
778
|
* Replaces the default Sanity array input and manages the full lifecycle of
|
|
@@ -706,18 +781,19 @@ function MigrationBanner(t0) {
|
|
|
706
781
|
* - **Language filter integration**: When `@sanity/language-filter` is active
|
|
707
782
|
* for the current document type, array members are filtered to only show
|
|
708
783
|
* languages matching the user's selection.
|
|
709
|
-
* - **Adding languages**: Exposes per-language buttons
|
|
710
|
-
* missing languages" button (controlled
|
|
711
|
-
* `buttonLocations`
|
|
784
|
+
* - **Adding languages**: Exposes per-language buttons, an optional compact
|
|
785
|
+
* `fieldMenu`, and an "Add all / Add missing languages" button (controlled
|
|
786
|
+
* by `buttonAddAll` and `buttonLocations`). Dispatches `setIfMissing` +
|
|
787
|
+
* `insert` patches.
|
|
712
788
|
* - **Default languages**: Automatically adds entries for languages listed in
|
|
713
|
-
* `defaultLanguages` when those entries are missing.
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
*
|
|
717
|
-
*
|
|
718
|
-
*
|
|
719
|
-
*
|
|
720
|
-
*
|
|
789
|
+
* `defaultLanguages` when those entries are missing. Seeds brand-new
|
|
790
|
+
* documents once the events store reports they are pristine (no history),
|
|
791
|
+
* and seeds persisted documents that already have a `_rev`. A document
|
|
792
|
+
* that existed and was deleted is not pristine, so opening it — even in a
|
|
793
|
+
* fresh pane — does not recreate it. Newly created documents stay
|
|
794
|
+
* read-only until initial value templates resolve, and the field-level
|
|
795
|
+
* `readOnly` prop can lag that document-level lock. Skipping the patch
|
|
796
|
+
* until writable avoids "Attempted to patch a read-only document" toasts.
|
|
721
797
|
* - **Ordering**: When `restoreOrder` is enabled (default), detects when value
|
|
722
798
|
* items are out of order relative to the master `languages` list and
|
|
723
799
|
* automatically re-sorts them. Set `restoreOrder: false` to keep the stored
|
|
@@ -728,7 +804,7 @@ function MigrationBanner(t0) {
|
|
|
728
804
|
* no entries and the add buttons are not visible.
|
|
729
805
|
*/
|
|
730
806
|
function InternationalizedArray(props) {
|
|
731
|
-
let $ = c(
|
|
807
|
+
let $ = c(122), { members, value: _value, schemaType, onChange, readOnly: documentReadOnly } = props, value = _value, t0;
|
|
732
808
|
$[0] === value ? t0 = $[1] : (t0 = value?.filter(_temp$1) ?? [], $[0] = value, $[1] = t0);
|
|
733
809
|
let itemsNeedingMigration = t0, shouldMigrateArray = itemsNeedingMigration.length > 0, toast = useToast(), getFormValue = useGetFormValue(), { languages, filteredLanguages, defaultLanguages, buttonAddAll, buttonLocations, restoreOrder, languageFilter: builtInLanguageFilter } = useInternationalizedArrayContext(), { selectedLanguageIds, options: languageFilterOptions } = useLanguageFilterStudioContext(), t1;
|
|
734
810
|
$[2] === Symbol.for("react.memo_cache_sentinel") ? (t1 = ["_type"], $[2] = t1) : t1 = $[2];
|
|
@@ -758,36 +834,39 @@ function InternationalizedArray(props) {
|
|
|
758
834
|
}, $[16] = filteredLanguages, $[17] = getFormValue, $[18] = languages, $[19] = onChange, $[20] = props.path, $[21] = readOnly, $[22] = schemaType, $[23] = t5) : t5 = $[23];
|
|
759
835
|
let handleAddLanguages = t5, t6;
|
|
760
836
|
$[24] === Symbol.for("react.memo_cache_sentinel") ? (t6 = ["_rev"], $[24] = t6) : t6 = $[24];
|
|
761
|
-
let documentExists = !!useFormValue(t6), t7;
|
|
762
|
-
$[25] ===
|
|
763
|
-
let
|
|
764
|
-
|
|
837
|
+
let documentExists = !!useFormValue(t6), t7 = useContext(EventsContext), t8;
|
|
838
|
+
$[25] === t7 ? t8 = $[26] : (t8 = isPristineDocument(t7), $[25] = t7, $[26] = t8);
|
|
839
|
+
let isPristine = t8, t9;
|
|
840
|
+
$[27] === value ? t9 = $[28] : (t9 = value?.map(_temp2$1).filter(Boolean).join(","), $[27] = value, $[28] = t9);
|
|
841
|
+
let languageKeysFromValue = t9, t10;
|
|
842
|
+
if ($[29] !== languageKeysFromValue || $[30] !== languages) {
|
|
765
843
|
bb0: {
|
|
766
844
|
let languageKeys = languageKeysFromValue?.split(",") || [];
|
|
767
845
|
if (!languageKeys?.length) {
|
|
768
|
-
let
|
|
769
|
-
$[
|
|
846
|
+
let t11;
|
|
847
|
+
$[32] === Symbol.for("react.memo_cache_sentinel") ? (t11 = [], $[32] = t11) : t11 = $[32], t10 = t11;
|
|
770
848
|
break bb0;
|
|
771
849
|
}
|
|
772
850
|
if (!languages?.length) {
|
|
773
|
-
let
|
|
774
|
-
$[
|
|
851
|
+
let t11;
|
|
852
|
+
$[33] === Symbol.for("react.memo_cache_sentinel") ? (t11 = [], $[33] = t11) : t11 = $[33], t10 = t11;
|
|
775
853
|
break bb0;
|
|
776
854
|
}
|
|
777
|
-
|
|
855
|
+
t10 = languages.filter((l) => languageKeys?.find((key) => key === l.id)).map(_temp3$1);
|
|
778
856
|
}
|
|
779
|
-
$[
|
|
780
|
-
} else
|
|
781
|
-
let addedLanguages =
|
|
782
|
-
$[
|
|
857
|
+
$[29] = languageKeysFromValue, $[30] = languages, $[31] = t10;
|
|
858
|
+
} else t10 = $[31];
|
|
859
|
+
let addedLanguages = t10, t11, t12;
|
|
860
|
+
$[34] !== addedLanguages || $[35] !== defaultLanguages || $[36] !== documentExists || $[37] !== handleAddLanguages || $[38] !== isDeleted || $[39] !== isDeleting || $[40] !== isPristine || $[41] !== languages || $[42] !== readOnly || $[43] !== shouldMigrateArray ? (t11 = () => {
|
|
783
861
|
let hasAddedDefaultLanguages = defaultLanguages.filter((language) => languages.find((l_1) => l_1.id === language)).every((language_0) => addedLanguages.includes(language_0));
|
|
784
|
-
if (documentExists && !isDeleting && !isDeleted && !hasAddedDefaultLanguages && !shouldMigrateArray && !readOnly) {
|
|
862
|
+
if ((isPristine || documentExists) && !isDeleting && !isDeleted && !hasAddedDefaultLanguages && !shouldMigrateArray && !readOnly) {
|
|
785
863
|
let languagesToAdd = defaultLanguages.filter((language_1) => !addedLanguages.includes(language_1)).filter((language_2) => languages.find((l_2) => l_2.id === language_2)), timeout = setTimeout(() => {
|
|
786
864
|
readOnly || handleAddLanguages(languagesToAdd);
|
|
787
865
|
});
|
|
788
866
|
return () => clearTimeout(timeout);
|
|
789
867
|
}
|
|
790
|
-
},
|
|
868
|
+
}, t12 = [
|
|
869
|
+
isPristine,
|
|
791
870
|
documentExists,
|
|
792
871
|
isDeleted,
|
|
793
872
|
isDeleting,
|
|
@@ -797,9 +876,9 @@ function InternationalizedArray(props) {
|
|
|
797
876
|
languages,
|
|
798
877
|
readOnly,
|
|
799
878
|
shouldMigrateArray
|
|
800
|
-
], $[
|
|
801
|
-
let
|
|
802
|
-
$[
|
|
879
|
+
], $[34] = addedLanguages, $[35] = defaultLanguages, $[36] = documentExists, $[37] = handleAddLanguages, $[38] = isDeleted, $[39] = isDeleting, $[40] = isPristine, $[41] = languages, $[42] = readOnly, $[43] = shouldMigrateArray, $[44] = t11, $[45] = t12) : (t11 = $[44], t12 = $[45]), useEffect(t11, t12);
|
|
880
|
+
let t13;
|
|
881
|
+
$[46] !== languages || $[47] !== onChange || $[48] !== readOnly || $[49] !== toast || $[50] !== value ? (t13 = () => {
|
|
803
882
|
if (readOnly || !value?.length || !languages?.length) return;
|
|
804
883
|
let updatedValue = value.reduce((acc, v_1) => {
|
|
805
884
|
let newIndex = languages.findIndex((l_3) => l_3.id === v_1?.[LANGUAGE_FIELD_NAME]);
|
|
@@ -809,79 +888,62 @@ function InternationalizedArray(props) {
|
|
|
809
888
|
title: "There was an error reordering languages",
|
|
810
889
|
status: "warning"
|
|
811
890
|
}), onChange(set(updatedValue));
|
|
812
|
-
}, $[
|
|
813
|
-
let handleRestoreOrder =
|
|
891
|
+
}, $[46] = languages, $[47] = onChange, $[48] = readOnly, $[49] = toast, $[50] = value, $[51] = t13) : t13 = $[51];
|
|
892
|
+
let handleRestoreOrder = t13, t14;
|
|
814
893
|
bb1: {
|
|
815
894
|
if (!value?.length || !languages?.length) {
|
|
816
|
-
|
|
895
|
+
t14 = !0;
|
|
817
896
|
break bb1;
|
|
818
897
|
}
|
|
819
|
-
let
|
|
820
|
-
$[
|
|
898
|
+
let t15;
|
|
899
|
+
$[52] !== languages || $[53] !== value ? (t15 = value?.every((v_2) => languages.find((l_4) => l_4?.id === v_2?.[LANGUAGE_FIELD_NAME])), $[52] = languages, $[53] = value, $[54] = t15) : t15 = $[54], t14 = t15;
|
|
821
900
|
}
|
|
822
|
-
let allKeysAreLanguages =
|
|
901
|
+
let allKeysAreLanguages = t14, t15;
|
|
823
902
|
bb2: {
|
|
824
903
|
if (!value?.length || !addedLanguages.length) {
|
|
825
|
-
let
|
|
826
|
-
$[
|
|
904
|
+
let t16;
|
|
905
|
+
$[55] === Symbol.for("react.memo_cache_sentinel") ? (t16 = [], $[55] = t16) : t16 = $[55], t15 = t16;
|
|
827
906
|
break bb2;
|
|
828
907
|
}
|
|
829
|
-
let
|
|
830
|
-
if ($[
|
|
831
|
-
let
|
|
832
|
-
$[
|
|
833
|
-
} else
|
|
834
|
-
|
|
908
|
+
let t16;
|
|
909
|
+
if ($[56] !== addedLanguages || $[57] !== value) {
|
|
910
|
+
let t17;
|
|
911
|
+
$[59] === addedLanguages ? t17 = $[60] : (t17 = (v_3, vIndex) => vIndex === addedLanguages.findIndex((language_3) => language_3 === v_3.language) ? null : v_3, $[59] = addedLanguages, $[60] = t17), t16 = value.map(t17).filter(Boolean), $[56] = addedLanguages, $[57] = value, $[58] = t16;
|
|
912
|
+
} else t16 = $[58];
|
|
913
|
+
t15 = t16;
|
|
835
914
|
}
|
|
836
|
-
let languagesOutOfOrder =
|
|
837
|
-
$[
|
|
915
|
+
let languagesOutOfOrder = t15, languagesAreValid = !languages?.length || languages?.length && languages.every(_temp4$1), t16, t17;
|
|
916
|
+
$[61] !== allKeysAreLanguages || $[62] !== handleRestoreOrder || $[63] !== languagesOutOfOrder || $[64] !== readOnly || $[65] !== restoreOrder ? (t16 = () => {
|
|
838
917
|
restoreOrder && languagesOutOfOrder.length > 0 && allKeysAreLanguages && !readOnly && handleRestoreOrder();
|
|
839
|
-
},
|
|
918
|
+
}, t17 = [
|
|
840
919
|
restoreOrder,
|
|
841
920
|
languagesOutOfOrder,
|
|
842
921
|
allKeysAreLanguages,
|
|
843
922
|
handleRestoreOrder,
|
|
844
923
|
readOnly
|
|
845
|
-
], $[
|
|
846
|
-
let
|
|
847
|
-
$[
|
|
848
|
-
|
|
849
|
-
|
|
924
|
+
], $[61] = allKeysAreLanguages, $[62] = handleRestoreOrder, $[63] = languagesOutOfOrder, $[64] = readOnly, $[65] = restoreOrder, $[66] = t16, $[67] = t17) : (t16 = $[66], t17 = $[67]), useEffect(t16, t17);
|
|
925
|
+
let t18;
|
|
926
|
+
if ($[68] !== addedLanguages || $[69] !== filteredLanguages) {
|
|
927
|
+
let t19;
|
|
928
|
+
$[71] === addedLanguages ? t19 = $[72] : (t19 = (language_4) => addedLanguages.includes(language_4.id), $[71] = addedLanguages, $[72] = t19), t18 = filteredLanguages.every(t19), $[68] = addedLanguages, $[69] = filteredLanguages, $[70] = t18;
|
|
929
|
+
} else t18 = $[70];
|
|
930
|
+
let allFilteredLanguagesArePresent = t18, t19;
|
|
931
|
+
$[73] !== filteredLanguages || $[74] !== handleAddLanguages ? (t19 = () => {
|
|
850
932
|
handleAddLanguages(filteredLanguages.map(_temp5));
|
|
851
|
-
}, $[
|
|
852
|
-
let addAllMissingLanguages =
|
|
933
|
+
}, $[73] = filteredLanguages, $[74] = handleAddLanguages, $[75] = t19) : t19 = $[75];
|
|
934
|
+
let addAllMissingLanguages = t19;
|
|
853
935
|
if (!languagesAreValid) {
|
|
854
|
-
let
|
|
855
|
-
return $[
|
|
936
|
+
let t20;
|
|
937
|
+
return $[76] === Symbol.for("react.memo_cache_sentinel") ? (t20 = /* @__PURE__ */ jsx(Feedback, {}), $[76] = t20) : t20 = $[76], t20;
|
|
856
938
|
}
|
|
857
|
-
let
|
|
858
|
-
$[
|
|
859
|
-
let
|
|
860
|
-
$[
|
|
861
|
-
let
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
...props,
|
|
866
|
-
key: member_0.key,
|
|
867
|
-
member: member_0
|
|
868
|
-
}) : /* @__PURE__ */ jsx(MemberItemError, { member: member_0 }, member_0.key), $[83] = props, $[84] = t21), t20 = filteredMembers.map(t21), $[80] = filteredMembers, $[81] = props, $[82] = t20;
|
|
869
|
-
} else t20 = $[82];
|
|
870
|
-
let t21;
|
|
871
|
-
$[85] === itemsNeedingMigration ? t21 = $[86] : (t21 = /* @__PURE__ */ jsx(MigrationBanner, { itemsNeedingMigration }), $[85] = itemsNeedingMigration, $[86] = t21);
|
|
872
|
-
let t22;
|
|
873
|
-
$[87] !== addButtonsAreVisible || $[88] !== fieldHasMembers ? (t22 = !addButtonsAreVisible && !fieldHasMembers ? /* @__PURE__ */ jsx(Card, {
|
|
874
|
-
border: !0,
|
|
875
|
-
tone: "transparent",
|
|
876
|
-
padding: 3,
|
|
877
|
-
radius: 2,
|
|
878
|
-
children: /* @__PURE__ */ jsx(Text, {
|
|
879
|
-
size: 1,
|
|
880
|
-
children: "This internationalized field currently has no translations."
|
|
881
|
-
})
|
|
882
|
-
}) : null, $[87] = addButtonsAreVisible, $[88] = fieldHasMembers, $[89] = t22) : t22 = $[89];
|
|
883
|
-
let t23;
|
|
884
|
-
$[90] !== addAllMissingLanguages || $[91] !== addAllTitle || $[92] !== addButtonsAreVisible || $[93] !== addedLanguages || $[94] !== allLanguagesArePresent || $[95] !== buttonAddAll || $[96] !== handleAddLanguages || $[97] !== readOnly ? (t23 = addButtonsAreVisible ? /* @__PURE__ */ jsxs(Stack, {
|
|
939
|
+
let canAddLanguages = !shouldMigrateArray && filteredLanguages?.length > 0, t20;
|
|
940
|
+
$[77] !== buttonLocations || $[78] !== canAddLanguages ? (t20 = canAddLanguages && buttonLocations.includes("fieldMenu"), $[77] = buttonLocations, $[78] = canAddLanguages, $[79] = t20) : t20 = $[79];
|
|
941
|
+
let showFieldMenu = t20, t21;
|
|
942
|
+
$[80] !== allFilteredLanguagesArePresent || $[81] !== buttonLocations || $[82] !== canAddLanguages ? (t21 = canAddLanguages && buttonLocations.includes("field") && !allFilteredLanguagesArePresent, $[80] = allFilteredLanguagesArePresent, $[81] = buttonLocations, $[82] = canAddLanguages, $[83] = t21) : t21 = $[83];
|
|
943
|
+
let showFieldButtons = t21, fieldHasMembers = members?.length > 0, t22;
|
|
944
|
+
$[84] !== filteredLanguages || $[85] !== value ? (t22 = createAddAllTitle(value, filteredLanguages), $[84] = filteredLanguages, $[85] = value, $[86] = t22) : t22 = $[86];
|
|
945
|
+
let addAllTitle = t22, t23;
|
|
946
|
+
$[87] !== addAllMissingLanguages || $[88] !== addAllTitle || $[89] !== addedLanguages || $[90] !== allFilteredLanguagesArePresent || $[91] !== buttonAddAll || $[92] !== handleAddLanguages || $[93] !== readOnly || $[94] !== showFieldButtons ? (t23 = showFieldButtons ? /* @__PURE__ */ jsxs(Stack, {
|
|
885
947
|
gap: 2,
|
|
886
948
|
children: [/* @__PURE__ */ jsx(AddButtons, {
|
|
887
949
|
languagesInUse: addedLanguages,
|
|
@@ -891,25 +953,58 @@ function InternationalizedArray(props) {
|
|
|
891
953
|
tone: "primary",
|
|
892
954
|
mode: "ghost",
|
|
893
955
|
"data-testid": "add-all-languages",
|
|
894
|
-
disabled: readOnly ||
|
|
956
|
+
disabled: readOnly || allFilteredLanguagesArePresent,
|
|
895
957
|
icon: AddIcon,
|
|
896
958
|
text: addAllTitle,
|
|
897
959
|
onClick: addAllMissingLanguages
|
|
898
960
|
}) : null]
|
|
899
|
-
}) : null, $[
|
|
900
|
-
let t24;
|
|
901
|
-
|
|
961
|
+
}) : null, $[87] = addAllMissingLanguages, $[88] = addAllTitle, $[89] = addedLanguages, $[90] = allFilteredLanguagesArePresent, $[91] = buttonAddAll, $[92] = handleAddLanguages, $[93] = readOnly, $[94] = showFieldButtons, $[95] = t23) : t23 = $[95];
|
|
962
|
+
let fieldButtons = t23, t24;
|
|
963
|
+
$[96] !== addAllMissingLanguages || $[97] !== addAllTitle || $[98] !== addedLanguages || $[99] !== allFilteredLanguagesArePresent || $[100] !== buttonAddAll || $[101] !== handleAddLanguages || $[102] !== readOnly || $[103] !== showFieldMenu ? (t24 = showFieldMenu ? /* @__PURE__ */ jsx(CompactAddButton, {
|
|
964
|
+
languagesInUse: addedLanguages,
|
|
965
|
+
readOnly,
|
|
966
|
+
handleClick: handleAddLanguages,
|
|
967
|
+
onAddAll: addAllMissingLanguages,
|
|
968
|
+
buttonAddAll,
|
|
969
|
+
addAllTitle,
|
|
970
|
+
allFilteredLanguagesArePresent
|
|
971
|
+
}) : null, $[96] = addAllMissingLanguages, $[97] = addAllTitle, $[98] = addedLanguages, $[99] = allFilteredLanguagesArePresent, $[100] = buttonAddAll, $[101] = handleAddLanguages, $[102] = readOnly, $[103] = showFieldMenu, $[104] = t24) : t24 = $[104];
|
|
972
|
+
let t25;
|
|
973
|
+
if ($[105] !== filteredMembers || $[106] !== props) {
|
|
974
|
+
let t26;
|
|
975
|
+
$[108] === props ? t26 = $[109] : (t26 = (member_0) => member_0.kind === "item" ? /* @__PURE__ */ createElement(ArrayOfObjectsItem, {
|
|
976
|
+
...props,
|
|
977
|
+
key: member_0.key,
|
|
978
|
+
member: member_0
|
|
979
|
+
}) : /* @__PURE__ */ jsx(MemberItemError, { member: member_0 }, member_0.key), $[108] = props, $[109] = t26), t25 = filteredMembers.map(t26), $[105] = filteredMembers, $[106] = props, $[107] = t25;
|
|
980
|
+
} else t25 = $[107];
|
|
981
|
+
let t26;
|
|
982
|
+
$[110] === itemsNeedingMigration ? t26 = $[111] : (t26 = /* @__PURE__ */ jsx(MigrationBanner, { itemsNeedingMigration }), $[110] = itemsNeedingMigration, $[111] = t26);
|
|
983
|
+
let t27;
|
|
984
|
+
$[112] !== fieldHasMembers || $[113] !== showFieldButtons || $[114] !== showFieldMenu ? (t27 = !showFieldMenu && !showFieldButtons && !fieldHasMembers ? /* @__PURE__ */ jsx(Card, {
|
|
985
|
+
border: !0,
|
|
986
|
+
tone: "transparent",
|
|
987
|
+
padding: 3,
|
|
988
|
+
radius: 2,
|
|
989
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
990
|
+
size: 1,
|
|
991
|
+
children: "This internationalized field currently has no translations."
|
|
992
|
+
})
|
|
993
|
+
}) : null, $[112] = fieldHasMembers, $[113] = showFieldButtons, $[114] = showFieldMenu, $[115] = t27) : t27 = $[115];
|
|
994
|
+
let t28;
|
|
995
|
+
return $[116] !== fieldButtons || $[117] !== t24 || $[118] !== t25 || $[119] !== t26 || $[120] !== t27 ? (t28 = /* @__PURE__ */ jsxs(Stack, {
|
|
902
996
|
gap: 2,
|
|
903
997
|
children: [
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
998
|
+
t24,
|
|
999
|
+
t25,
|
|
1000
|
+
t26,
|
|
1001
|
+
t27,
|
|
1002
|
+
fieldButtons
|
|
908
1003
|
]
|
|
909
|
-
}), $[
|
|
1004
|
+
}), $[116] = fieldButtons, $[117] = t24, $[118] = t25, $[119] = t26, $[120] = t27, $[121] = t28) : t28 = $[121], t28;
|
|
910
1005
|
}
|
|
911
|
-
function _temp5(
|
|
912
|
-
return
|
|
1006
|
+
function _temp5(language_5) {
|
|
1007
|
+
return language_5.id;
|
|
913
1008
|
}
|
|
914
1009
|
function _temp4$1(item) {
|
|
915
1010
|
return item.id && item.title;
|