sanity-plugin-internationalized-array 5.3.5 → 5.3.7

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 CHANGED
@@ -49,6 +49,7 @@ export default defineConfig({
49
49
  {id: 'fr', title: 'French'},
50
50
  ],
51
51
  defaultLanguages: ['en'],
52
+ allowRemovingDefaultLanguages: true, // default false
52
53
  fieldTypes: ['string'],
53
54
  }),
54
55
  ],
@@ -62,6 +63,8 @@ This will register two new fields to the schema, based on the settings passed in
62
63
 
63
64
  The above config will also create an empty array item in new documents for each language in `defaultLanguages`. This is configured globally for all internationalized array fields.
64
65
 
66
+ Those rows cannot be removed, and a missing row is inserted again while the document is open. Set `allowRemovingDefaultLanguages: true` to treat them as initial values instead: they are still added on a new document, and editors can remove them afterwards. A removed row stays removed once the document has history, including when removing the last row clears the field.
67
+
65
68
  You can pass in more registered schema-type names to generate more internationalized arrays. Use them in your schema like this:
66
69
 
67
70
  ```ts
package/dist/index.d.ts CHANGED
@@ -100,6 +100,18 @@ export type PluginConfig = {
100
100
  * ```
101
101
  */
102
102
  defaultLanguages?: string[];
103
+ /**
104
+ * When `false` (default), languages in `defaultLanguages` cannot be removed.
105
+ * A missing row is inserted again whenever the document is open.
106
+ *
107
+ * Set to `true` to treat those languages as initial values. They are still
108
+ * added on a pristine document, and editors can remove them afterwards.
109
+ * Once the document has history, a removed row is not inserted again, even
110
+ * when the field value is `undefined`.
111
+ *
112
+ * @defaultValue false
113
+ */
114
+ allowRemovingDefaultLanguages?: boolean;
103
115
  /**
104
116
  * Can be a string matching core field types, as well as custom ones:
105
117
  * ```tsx
@@ -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":";;;YAEY;EACV,IAAI,KAAK;EACT;;YAGU;YAEA;EACV;EACA,MAAM;EACN,WAAW;EACX;EACA;EACA;EACA;EACA,aAAa,OAAO;EACpB;KAAU;IAAuB;OAAW;;;;;;;YAMlC;EACV;;EAEA;EACA;;wBAGc,iCACd,eACC,QAAQ;YAIC,2BAA2B;EACrC;EACA,QAAQ;;EAER;;;;EAIA;;YAGU,oBACV,QAAQ,cACR,eAAe,4BACZ,QAAQ;YAED;YAEA;;;;;EAKV;;;;;;;;;;;;;EAaA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BT,WAAW,aAAa;;;;;;;;;EASxB;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,sBAAsB,qBAAqB;;;;;;;;;;EAU3C;;;;;;;EAOA;;;;;;;;;;;EAWA;;;;;EAKA,kBAAkB;;;;;;;;;;EAUlB,0BAA0B;;;;;;;;;;;;EAY1B;IACE,eAAe,SAAS;IACxB,mBAAmB;;;qBCnKV;;;;;;;;;;;;;;;;;;;;;;;;qBCJA;qBCZA,yCAAsB,OAAA;;;;;qBCJtB,uCAAoC,eAChC,kBAAgB,SACtB,cAAc,eAAa,+BACP,aAChB,qCAAmC,WACrC"}
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":";;;YAEY;EACV,IAAI,KAAK;EACT;;YAGU;YAEA;EACV;EACA,MAAM;EACN,WAAW;EACX;EACA;EACA;EACA;EACA,aAAa,OAAO;EACpB;KAAU;IAAuB;OAAW;;;;;;;YAMlC;EACV;;EAEA;EACA;;wBAGc,iCACd,eACC,QAAQ;YAIC,2BAA2B;EACrC;EACA,QAAQ;;EAER;;;;EAIA;;YAGU,oBACV,QAAQ,cACR,eAAe,4BACZ,QAAQ;YAED;YAEA;;;;;EAKV;;;;;;;;;;;;;EAaA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BT,WAAW,aAAa;;;;;;;;;EASxB;;;;;;;;;;;;EAYA;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,sBAAsB,qBAAqB;;;;;;;;;;EAU3C;;;;;;;EAOA;;;;;;;;;;;EAWA;;;;;EAKA,kBAAkB;;;;;;;;;;EAUlB,0BAA0B;;;;;;;;;;;;EAY1B;IACE,eAAe,SAAS;IACxB,mBAAmB;;;qBC/KV;;;;;;;;;;;;;;;;;;;;;;;;qBCJA;qBCZA,yCAAsB,OAAA;;;;;qBCJtB,uCAAoC,eAChC,kBAAgB,SACtB,cAAc,eAAa,+BACP,aAChB,qCAAmC,WACrC"}
package/dist/index.js CHANGED
@@ -79,6 +79,7 @@ const preloadWithKey = (fn, key) => {
79
79
  languages: [],
80
80
  select: {},
81
81
  defaultLanguages: [],
82
+ allowRemovingDefaultLanguages: !1,
82
83
  fieldTypes: [],
83
84
  apiVersion: "2025-10-15",
84
85
  buttonLocations: ["field"],
@@ -794,6 +795,9 @@ function isPristineDocument(events) {
794
795
  * read-only until initial value templates resolve, and the field-level
795
796
  * `readOnly` prop can lag that document-level lock. Skipping the patch
796
797
  * until writable avoids "Attempted to patch a read-only document" toasts.
798
+ * With `allowRemovingDefaultLanguages`, those rows are initial values for a
799
+ * pristine document only. Once the document has history, a removed row is
800
+ * left alone, including when the field value is `undefined`.
797
801
  * - **Ordering**: When `restoreOrder` is enabled (default), detects when value
798
802
  * items are out of order relative to the master `languages` list and
799
803
  * automatically re-sorts them. Set `restoreOrder: false` to keep the stored
@@ -804,9 +808,9 @@ function isPristineDocument(events) {
804
808
  * no entries and the add buttons are not visible.
805
809
  */
806
810
  function InternationalizedArray(props) {
807
- let $ = c(122), { members, value: _value, schemaType, onChange, readOnly: documentReadOnly } = props, value = _value, t0;
811
+ let $ = c(123), { members, value: _value, schemaType, onChange, readOnly: documentReadOnly } = props, value = _value, t0;
808
812
  $[0] === value ? t0 = $[1] : (t0 = value?.filter(_temp$1) ?? [], $[0] = value, $[1] = t0);
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;
813
+ let itemsNeedingMigration = t0, shouldMigrateArray = itemsNeedingMigration.length > 0, toast = useToast(), getFormValue = useGetFormValue(), { languages, filteredLanguages, defaultLanguages, allowRemovingDefaultLanguages, buttonAddAll, buttonLocations, restoreOrder, languageFilter: builtInLanguageFilter } = useInternationalizedArrayContext(), { selectedLanguageIds, options: languageFilterOptions } = useLanguageFilterStudioContext(), t1;
810
814
  $[2] === Symbol.for("react.memo_cache_sentinel") ? (t1 = ["_type"], $[2] = t1) : t1 = $[2];
811
815
  let documentType = useFormValue(t1), t2;
812
816
  $[3] !== documentType || $[4] !== languageFilterOptions ? (t2 = typeof documentType == "string" && languageFilterOptions.documentTypes.includes(documentType), $[3] = documentType, $[4] = languageFilterOptions, $[5] = t2) : t2 = $[5];
@@ -857,7 +861,8 @@ function InternationalizedArray(props) {
857
861
  $[29] = languageKeysFromValue, $[30] = languages, $[31] = t10;
858
862
  } else t10 = $[31];
859
863
  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 = () => {
864
+ $[34] !== addedLanguages || $[35] !== allowRemovingDefaultLanguages || $[36] !== defaultLanguages || $[37] !== documentExists || $[38] !== handleAddLanguages || $[39] !== isDeleted || $[40] !== isDeleting || $[41] !== isPristine || $[42] !== languages || $[43] !== readOnly || $[44] !== shouldMigrateArray ? (t11 = () => {
865
+ if (allowRemovingDefaultLanguages && !isPristine) return;
861
866
  let hasAddedDefaultLanguages = defaultLanguages.filter((language) => languages.find((l_1) => l_1.id === language)).every((language_0) => addedLanguages.includes(language_0));
862
867
  if ((isPristine || documentExists) && !isDeleting && !isDeleted && !hasAddedDefaultLanguages && !shouldMigrateArray && !readOnly) {
863
868
  let languagesToAdd = defaultLanguages.filter((language_1) => !addedLanguages.includes(language_1)).filter((language_2) => languages.find((l_2) => l_2.id === language_2)), timeout = setTimeout(() => {
@@ -866,6 +871,7 @@ function InternationalizedArray(props) {
866
871
  return () => clearTimeout(timeout);
867
872
  }
868
873
  }, t12 = [
874
+ allowRemovingDefaultLanguages,
869
875
  isPristine,
870
876
  documentExists,
871
877
  isDeleted,
@@ -876,9 +882,9 @@ function InternationalizedArray(props) {
876
882
  languages,
877
883
  readOnly,
878
884
  shouldMigrateArray
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);
885
+ ], $[34] = addedLanguages, $[35] = allowRemovingDefaultLanguages, $[36] = defaultLanguages, $[37] = documentExists, $[38] = handleAddLanguages, $[39] = isDeleted, $[40] = isDeleting, $[41] = isPristine, $[42] = languages, $[43] = readOnly, $[44] = shouldMigrateArray, $[45] = t11, $[46] = t12) : (t11 = $[45], t12 = $[46]), useEffect(t11, t12);
880
886
  let t13;
881
- $[46] !== languages || $[47] !== onChange || $[48] !== readOnly || $[49] !== toast || $[50] !== value ? (t13 = () => {
887
+ $[47] !== languages || $[48] !== onChange || $[49] !== readOnly || $[50] !== toast || $[51] !== value ? (t13 = () => {
882
888
  if (readOnly || !value?.length || !languages?.length) return;
883
889
  let updatedValue = value.reduce((acc, v_1) => {
884
890
  let newIndex = languages.findIndex((l_3) => l_3.id === v_1?.[LANGUAGE_FIELD_NAME]);
@@ -888,7 +894,7 @@ function InternationalizedArray(props) {
888
894
  title: "There was an error reordering languages",
889
895
  status: "warning"
890
896
  }), onChange(set(updatedValue));
891
- }, $[46] = languages, $[47] = onChange, $[48] = readOnly, $[49] = toast, $[50] = value, $[51] = t13) : t13 = $[51];
897
+ }, $[47] = languages, $[48] = onChange, $[49] = readOnly, $[50] = toast, $[51] = value, $[52] = t13) : t13 = $[52];
892
898
  let handleRestoreOrder = t13, t14;
893
899
  bb1: {
894
900
  if (!value?.length || !languages?.length) {
@@ -896,24 +902,24 @@ function InternationalizedArray(props) {
896
902
  break bb1;
897
903
  }
898
904
  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;
905
+ $[53] !== languages || $[54] !== value ? (t15 = value?.every((v_2) => languages.find((l_4) => l_4?.id === v_2?.[LANGUAGE_FIELD_NAME])), $[53] = languages, $[54] = value, $[55] = t15) : t15 = $[55], t14 = t15;
900
906
  }
901
907
  let allKeysAreLanguages = t14, t15;
902
908
  bb2: {
903
909
  if (!value?.length || !addedLanguages.length) {
904
910
  let t16;
905
- $[55] === Symbol.for("react.memo_cache_sentinel") ? (t16 = [], $[55] = t16) : t16 = $[55], t15 = t16;
911
+ $[56] === Symbol.for("react.memo_cache_sentinel") ? (t16 = [], $[56] = t16) : t16 = $[56], t15 = t16;
906
912
  break bb2;
907
913
  }
908
914
  let t16;
909
- if ($[56] !== addedLanguages || $[57] !== value) {
915
+ if ($[57] !== addedLanguages || $[58] !== value) {
910
916
  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];
917
+ $[60] === addedLanguages ? t17 = $[61] : (t17 = (v_3, vIndex) => vIndex === addedLanguages.findIndex((language_3) => language_3 === v_3.language) ? null : v_3, $[60] = addedLanguages, $[61] = t17), t16 = value.map(t17).filter(Boolean), $[57] = addedLanguages, $[58] = value, $[59] = t16;
918
+ } else t16 = $[59];
913
919
  t15 = t16;
914
920
  }
915
921
  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 = () => {
922
+ $[62] !== allKeysAreLanguages || $[63] !== handleRestoreOrder || $[64] !== languagesOutOfOrder || $[65] !== readOnly || $[66] !== restoreOrder ? (t16 = () => {
917
923
  restoreOrder && languagesOutOfOrder.length > 0 && allKeysAreLanguages && !readOnly && handleRestoreOrder();
918
924
  }, t17 = [
919
925
  restoreOrder,
@@ -921,29 +927,29 @@ function InternationalizedArray(props) {
921
927
  allKeysAreLanguages,
922
928
  handleRestoreOrder,
923
929
  readOnly
924
- ], $[61] = allKeysAreLanguages, $[62] = handleRestoreOrder, $[63] = languagesOutOfOrder, $[64] = readOnly, $[65] = restoreOrder, $[66] = t16, $[67] = t17) : (t16 = $[66], t17 = $[67]), useEffect(t16, t17);
930
+ ], $[62] = allKeysAreLanguages, $[63] = handleRestoreOrder, $[64] = languagesOutOfOrder, $[65] = readOnly, $[66] = restoreOrder, $[67] = t16, $[68] = t17) : (t16 = $[67], t17 = $[68]), useEffect(t16, t17);
925
931
  let t18;
926
- if ($[68] !== addedLanguages || $[69] !== filteredLanguages) {
932
+ if ($[69] !== addedLanguages || $[70] !== filteredLanguages) {
927
933
  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];
934
+ $[72] === addedLanguages ? t19 = $[73] : (t19 = (language_4) => addedLanguages.includes(language_4.id), $[72] = addedLanguages, $[73] = t19), t18 = filteredLanguages.every(t19), $[69] = addedLanguages, $[70] = filteredLanguages, $[71] = t18;
935
+ } else t18 = $[71];
930
936
  let allFilteredLanguagesArePresent = t18, t19;
931
- $[73] !== filteredLanguages || $[74] !== handleAddLanguages ? (t19 = () => {
937
+ $[74] !== filteredLanguages || $[75] !== handleAddLanguages ? (t19 = () => {
932
938
  handleAddLanguages(filteredLanguages.map(_temp5));
933
- }, $[73] = filteredLanguages, $[74] = handleAddLanguages, $[75] = t19) : t19 = $[75];
939
+ }, $[74] = filteredLanguages, $[75] = handleAddLanguages, $[76] = t19) : t19 = $[76];
934
940
  let addAllMissingLanguages = t19;
935
941
  if (!languagesAreValid) {
936
942
  let t20;
937
- return $[76] === Symbol.for("react.memo_cache_sentinel") ? (t20 = /* @__PURE__ */ jsx(Feedback, {}), $[76] = t20) : t20 = $[76], t20;
943
+ return $[77] === Symbol.for("react.memo_cache_sentinel") ? (t20 = /* @__PURE__ */ jsx(Feedback, {}), $[77] = t20) : t20 = $[77], t20;
938
944
  }
939
945
  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];
946
+ $[78] !== buttonLocations || $[79] !== canAddLanguages ? (t20 = canAddLanguages && buttonLocations.includes("fieldMenu"), $[78] = buttonLocations, $[79] = canAddLanguages, $[80] = t20) : t20 = $[80];
941
947
  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];
948
+ $[81] !== allFilteredLanguagesArePresent || $[82] !== buttonLocations || $[83] !== canAddLanguages ? (t21 = canAddLanguages && buttonLocations.includes("field") && !allFilteredLanguagesArePresent, $[81] = allFilteredLanguagesArePresent, $[82] = buttonLocations, $[83] = canAddLanguages, $[84] = t21) : t21 = $[84];
943
949
  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];
950
+ $[85] !== filteredLanguages || $[86] !== value ? (t22 = createAddAllTitle(value, filteredLanguages), $[85] = filteredLanguages, $[86] = value, $[87] = t22) : t22 = $[87];
945
951
  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, {
952
+ $[88] !== addAllMissingLanguages || $[89] !== addAllTitle || $[90] !== addedLanguages || $[91] !== allFilteredLanguagesArePresent || $[92] !== buttonAddAll || $[93] !== handleAddLanguages || $[94] !== readOnly || $[95] !== showFieldButtons ? (t23 = showFieldButtons ? /* @__PURE__ */ jsxs(Stack, {
947
953
  gap: 2,
948
954
  children: [/* @__PURE__ */ jsx(AddButtons, {
949
955
  languagesInUse: addedLanguages,
@@ -958,9 +964,9 @@ function InternationalizedArray(props) {
958
964
  text: addAllTitle,
959
965
  onClick: addAllMissingLanguages
960
966
  }) : null]
961
- }) : null, $[87] = addAllMissingLanguages, $[88] = addAllTitle, $[89] = addedLanguages, $[90] = allFilteredLanguagesArePresent, $[91] = buttonAddAll, $[92] = handleAddLanguages, $[93] = readOnly, $[94] = showFieldButtons, $[95] = t23) : t23 = $[95];
967
+ }) : null, $[88] = addAllMissingLanguages, $[89] = addAllTitle, $[90] = addedLanguages, $[91] = allFilteredLanguagesArePresent, $[92] = buttonAddAll, $[93] = handleAddLanguages, $[94] = readOnly, $[95] = showFieldButtons, $[96] = t23) : t23 = $[96];
962
968
  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, {
969
+ $[97] !== addAllMissingLanguages || $[98] !== addAllTitle || $[99] !== addedLanguages || $[100] !== allFilteredLanguagesArePresent || $[101] !== buttonAddAll || $[102] !== handleAddLanguages || $[103] !== readOnly || $[104] !== showFieldMenu ? (t24 = showFieldMenu ? /* @__PURE__ */ jsx(CompactAddButton, {
964
970
  languagesInUse: addedLanguages,
965
971
  readOnly,
966
972
  handleClick: handleAddLanguages,
@@ -968,20 +974,20 @@ function InternationalizedArray(props) {
968
974
  buttonAddAll,
969
975
  addAllTitle,
970
976
  allFilteredLanguagesArePresent
971
- }) : null, $[96] = addAllMissingLanguages, $[97] = addAllTitle, $[98] = addedLanguages, $[99] = allFilteredLanguagesArePresent, $[100] = buttonAddAll, $[101] = handleAddLanguages, $[102] = readOnly, $[103] = showFieldMenu, $[104] = t24) : t24 = $[104];
977
+ }) : null, $[97] = addAllMissingLanguages, $[98] = addAllTitle, $[99] = addedLanguages, $[100] = allFilteredLanguagesArePresent, $[101] = buttonAddAll, $[102] = handleAddLanguages, $[103] = readOnly, $[104] = showFieldMenu, $[105] = t24) : t24 = $[105];
972
978
  let t25;
973
- if ($[105] !== filteredMembers || $[106] !== props) {
979
+ if ($[106] !== filteredMembers || $[107] !== props) {
974
980
  let t26;
975
- $[108] === props ? t26 = $[109] : (t26 = (member_0) => member_0.kind === "item" ? /* @__PURE__ */ createElement(ArrayOfObjectsItem, {
981
+ $[109] === props ? t26 = $[110] : (t26 = (member_0) => member_0.kind === "item" ? /* @__PURE__ */ createElement(ArrayOfObjectsItem, {
976
982
  ...props,
977
983
  key: member_0.key,
978
984
  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];
985
+ }) : /* @__PURE__ */ jsx(MemberItemError, { member: member_0 }, member_0.key), $[109] = props, $[110] = t26), t25 = filteredMembers.map(t26), $[106] = filteredMembers, $[107] = props, $[108] = t25;
986
+ } else t25 = $[108];
981
987
  let t26;
982
- $[110] === itemsNeedingMigration ? t26 = $[111] : (t26 = /* @__PURE__ */ jsx(MigrationBanner, { itemsNeedingMigration }), $[110] = itemsNeedingMigration, $[111] = t26);
988
+ $[111] === itemsNeedingMigration ? t26 = $[112] : (t26 = /* @__PURE__ */ jsx(MigrationBanner, { itemsNeedingMigration }), $[111] = itemsNeedingMigration, $[112] = t26);
983
989
  let t27;
984
- $[112] !== fieldHasMembers || $[113] !== showFieldButtons || $[114] !== showFieldMenu ? (t27 = !showFieldMenu && !showFieldButtons && !fieldHasMembers ? /* @__PURE__ */ jsx(Card, {
990
+ $[113] !== fieldHasMembers || $[114] !== showFieldButtons || $[115] !== showFieldMenu ? (t27 = !showFieldMenu && !showFieldButtons && !fieldHasMembers ? /* @__PURE__ */ jsx(Card, {
985
991
  border: !0,
986
992
  tone: "transparent",
987
993
  padding: 3,
@@ -990,9 +996,9 @@ function InternationalizedArray(props) {
990
996
  size: 1,
991
997
  children: "This internationalized field currently has no translations."
992
998
  })
993
- }) : null, $[112] = fieldHasMembers, $[113] = showFieldButtons, $[114] = showFieldMenu, $[115] = t27) : t27 = $[115];
999
+ }) : null, $[113] = fieldHasMembers, $[114] = showFieldButtons, $[115] = showFieldMenu, $[116] = t27) : t27 = $[116];
994
1000
  let t28;
995
- return $[116] !== fieldButtons || $[117] !== t24 || $[118] !== t25 || $[119] !== t26 || $[120] !== t27 ? (t28 = /* @__PURE__ */ jsxs(Stack, {
1001
+ return $[117] !== fieldButtons || $[118] !== t24 || $[119] !== t25 || $[120] !== t26 || $[121] !== t27 ? (t28 = /* @__PURE__ */ jsxs(Stack, {
996
1002
  gap: 2,
997
1003
  children: [
998
1004
  t24,
@@ -1001,7 +1007,7 @@ function InternationalizedArray(props) {
1001
1007
  t27,
1002
1008
  fieldButtons
1003
1009
  ]
1004
- }), $[116] = fieldButtons, $[117] = t24, $[118] = t25, $[119] = t26, $[120] = t27, $[121] = t28) : t28 = $[121], t28;
1010
+ }), $[117] = fieldButtons, $[118] = t24, $[119] = t25, $[120] = t26, $[121] = t27, $[122] = t28) : t28 = $[122], t28;
1005
1011
  }
1006
1012
  function _temp5(language_5) {
1007
1013
  return language_5.id;
@@ -1181,12 +1187,13 @@ function RemoveButton(t0) {
1181
1187
  * the language label in that state.
1182
1188
  * - Shows a `MenuButton` with available languages when the current key is
1183
1189
  * not a valid language.
1184
- * - Disables the remove button for languages listed in `defaultLanguages`.
1190
+ * - Disables the remove button for languages listed in `defaultLanguages`,
1191
+ * unless `allowRemovingDefaultLanguages` is set.
1185
1192
  * - Shows a `Spinner` when languages have not been loaded yet.
1186
1193
  * - Applies a `CardTone` based on validation state via `getToneFromValidation`.
1187
1194
  */
1188
1195
  function InternationalizedInput(props) {
1189
- let $ = c(50), originalOnChange = props.inputProps.onChange, t0;
1196
+ let $ = c(51), originalOnChange = props.inputProps.onChange, t0;
1190
1197
  $[0] !== originalOnChange || $[1] !== props.value?.value ? (t0 = (patches) => {
1191
1198
  if (!Array.isArray(patches)) return originalOnChange(patches);
1192
1199
  let valueField = props.value?.value;
@@ -1200,7 +1207,7 @@ function InternationalizedInput(props) {
1200
1207
  }
1201
1208
  return originalOnChange(patches);
1202
1209
  }, $[0] = originalOnChange, $[1] = props.value?.value, $[2] = t0) : t0 = $[2], props.value?.value;
1203
- let wrappedOnChange = t0, { languages, languageDisplay, defaultLanguages } = useInternationalizedArrayContext(), t1;
1210
+ let wrappedOnChange = t0, { languages, languageDisplay, defaultLanguages, allowRemovingDefaultLanguages } = useInternationalizedArrayContext(), t1;
1204
1211
  $[3] !== languages || $[4] !== props.value ? (t1 = languages?.length ? !!languages.find((l) => l.id === props.value[LANGUAGE_FIELD_NAME]) : !1, $[3] = languages, $[4] = props.value, $[5] = t1) : t1 = $[5];
1205
1212
  let keyIsValid = t1, t2;
1206
1213
  if ($[6] !== keyIsValid || $[7] !== languageDisplay || $[8] !== languages || $[9] !== props.value) {
@@ -1237,34 +1244,34 @@ function InternationalizedInput(props) {
1237
1244
  return $[29] === Symbol.for("react.memo_cache_sentinel") ? (t6 = /* @__PURE__ */ jsx(Spinner, {}), $[29] = t6) : t6 = $[29], t6;
1238
1245
  }
1239
1246
  let t6;
1240
- $[30] !== defaultLanguages || $[31] !== value ? (t6 = defaultLanguages.includes(value[LANGUAGE_FIELD_NAME]), $[30] = defaultLanguages, $[31] = value, $[32] = t6) : t6 = $[32];
1247
+ $[30] !== allowRemovingDefaultLanguages || $[31] !== defaultLanguages || $[32] !== value ? (t6 = !allowRemovingDefaultLanguages && defaultLanguages.includes(value.language), $[30] = allowRemovingDefaultLanguages, $[31] = defaultLanguages, $[32] = value, $[33] = t6) : t6 = $[33];
1241
1248
  let isDefault = t6, t7;
1242
- $[33] === validation ? t7 = $[34] : (t7 = getToneFromValidation(validation), $[33] = validation, $[34] = t7);
1249
+ $[34] === validation ? t7 = $[35] : (t7 = getToneFromValidation(validation), $[34] = validation, $[35] = t7);
1243
1250
  let t8;
1244
- $[35] !== inlineProps || $[36] !== props.inputProps ? (t8 = props.inputProps.renderInput(inlineProps), $[35] = inlineProps, $[36] = props.inputProps, $[37] = t8) : t8 = $[37];
1251
+ $[36] !== inlineProps || $[37] !== props.inputProps ? (t8 = props.inputProps.renderInput(inlineProps), $[36] = inlineProps, $[37] = props.inputProps, $[38] = t8) : t8 = $[38];
1245
1252
  let t9;
1246
- $[38] === t8 ? t9 = $[39] : (t9 = /* @__PURE__ */ jsx(Box, {
1253
+ $[39] === t8 ? t9 = $[40] : (t9 = /* @__PURE__ */ jsx(Box, {
1247
1254
  flex: 1,
1248
1255
  children: t8
1249
- }), $[38] = t8, $[39] = t9);
1256
+ }), $[39] = t8, $[40] = t9);
1250
1257
  let t10 = !!readOnly, t11;
1251
- $[40] !== isDefault || $[41] !== originalOnChange || $[42] !== t10 ? (t11 = /* @__PURE__ */ jsx(RemoveButton, {
1258
+ $[41] !== isDefault || $[42] !== originalOnChange || $[43] !== t10 ? (t11 = /* @__PURE__ */ jsx(RemoveButton, {
1252
1259
  isDefault,
1253
1260
  readOnly: t10,
1254
1261
  onChange: originalOnChange
1255
- }), $[40] = isDefault, $[41] = originalOnChange, $[42] = t10, $[43] = t11) : t11 = $[43];
1262
+ }), $[41] = isDefault, $[42] = originalOnChange, $[43] = t10, $[44] = t11) : t11 = $[44];
1256
1263
  let t12;
1257
- $[44] !== t11 || $[45] !== t9 ? (t12 = /* @__PURE__ */ jsxs(Flex, {
1264
+ $[45] !== t11 || $[46] !== t9 ? (t12 = /* @__PURE__ */ jsxs(Flex, {
1258
1265
  align: "flex-end",
1259
1266
  gap: 2,
1260
1267
  children: [t9, t11]
1261
- }), $[44] = t11, $[45] = t9, $[46] = t12) : t12 = $[46];
1268
+ }), $[45] = t11, $[46] = t9, $[47] = t12) : t12 = $[47];
1262
1269
  let t13;
1263
- return $[47] !== t12 || $[48] !== t7 ? (t13 = /* @__PURE__ */ jsx(Card, {
1270
+ return $[48] !== t12 || $[49] !== t7 ? (t13 = /* @__PURE__ */ jsx(Card, {
1264
1271
  paddingTop: 2,
1265
1272
  tone: t7,
1266
1273
  children: t12
1267
- }), $[47] = t12, $[48] = t7, $[49] = t13) : t13 = $[49], t13;
1274
+ }), $[48] = t12, $[49] = t7, $[50] = t13) : t13 = $[50], t13;
1268
1275
  }
1269
1276
  function _temp4(m) {
1270
1277
  return m.kind === "field" && m.name === "value";