sanity-plugin-internationalized-array 1.10.7 → 1.10.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-internationalized-array",
3
- "version": "1.10.7",
3
+ "version": "1.10.9",
4
4
  "description": "Store localized fields in an array to save on attributes",
5
5
  "keywords": [
6
6
  "sanity",
@@ -1,7 +1,7 @@
1
1
  import {AddIcon} from '@sanity/icons'
2
2
  import {useLanguageFilterStudioContext} from '@sanity/language-filter'
3
3
  import {Button, Card, Stack, Text, useToast} from '@sanity/ui'
4
- import React, {useCallback, useEffect, useMemo, useState} from 'react'
4
+ import React, {useCallback, useEffect, useMemo, useRef} from 'react'
5
5
  import {
6
6
  ArrayOfObjectsInputProps,
7
7
  ArrayOfObjectsItem,
@@ -103,34 +103,27 @@ export default function InternationalizedArray(
103
103
 
104
104
  // Create default fields if the document is not yet created
105
105
  const documentCreatedAt = useFormValue(['_createdAt'])
106
- const [hasAddedDefaultLanguages, setHasAddedDefaultLanguages] = useState(
107
- Boolean(documentCreatedAt)
108
- )
106
+ const hasAddedDefaultLanguages = useRef(Boolean(documentCreatedAt))
109
107
 
110
108
  // Write default languages
111
109
  useEffect(() => {
112
- if (
113
- // Hasn't already added default languages
114
- // (This prevents the document being recreated when deleted)
115
- !hasAddedDefaultLanguages &&
116
- // This array field is empty
110
+ const shouldAddDefaultLanguages =
111
+ !hasAddedDefaultLanguages.current &&
117
112
  !value &&
118
- // Document form is in "not yet created" state
119
113
  !documentCreatedAt &&
120
- // Plugin config included default languages
121
- defaultLanguages &&
122
- defaultLanguages?.length > 0
123
- ) {
114
+ Array.isArray(defaultLanguages) &&
115
+ defaultLanguages.length > 0
116
+
117
+ if (shouldAddDefaultLanguages) {
124
118
  handleAddLanguage(defaultLanguages)
125
- setHasAddedDefaultLanguages(true)
126
119
  }
127
- }, [
128
- defaultLanguages,
129
- documentCreatedAt,
130
- handleAddLanguage,
131
- hasAddedDefaultLanguages,
132
- value,
133
- ])
120
+
121
+ return () => {
122
+ if (shouldAddDefaultLanguages) {
123
+ hasAddedDefaultLanguages.current = true
124
+ }
125
+ }
126
+ }, [defaultLanguages, documentCreatedAt, handleAddLanguage, value])
134
127
 
135
128
  // TODO: This is reordering and re-setting the whole array, it could be surgical
136
129
  const handleRestoreOrder = useCallback(() => {
package/src/plugin.tsx CHANGED
@@ -36,11 +36,11 @@ export const internationalizedArray = definePlugin<PluginConfig>((config) => {
36
36
  },
37
37
  },
38
38
  // Optional: render "add language" buttons as field actions
39
- // document: {
40
- // unstable_fieldActions: buttonLocations.includes('unstable__fieldAction')
41
- // ? (prev) => [...prev, internationalizedArrayFieldAction]
42
- // : undefined,
43
- // },
39
+ document: {
40
+ unstable_fieldActions: buttonLocations.includes('unstable__fieldAction')
41
+ ? (prev) => [...prev, internationalizedArrayFieldAction]
42
+ : undefined,
43
+ },
44
44
  // Wrap document editor with a language provider
45
45
  form: {
46
46
  components: {