@sanity/document-internationalization 1.0.1 → 2.0.0-studio-v3-plugin-v2.2
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/LICENSE +1 -1
- package/README.md +133 -59
- package/lib/index.esm.js +1 -1
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/src/index.d.ts +7 -190
- package/package.json +18 -62
- package/src/badges/index.tsx +23 -0
- package/src/components/BulkPublish/DocumentCheck.tsx +59 -0
- package/src/components/BulkPublish/index.tsx +100 -0
- package/src/components/LanguageManage.tsx +25 -0
- package/src/components/LanguageOption.tsx +166 -0
- package/src/components/LanguagePatch.tsx +64 -0
- package/src/components/MenuButton.tsx +131 -0
- package/src/constants.ts +1 -0
- package/src/hooks/useLanguageMetadata.tsx +21 -0
- package/src/hooks/useOpenInNewPane.tsx +27 -0
- package/src/index.ts +1 -6
- package/src/plugin.tsx +170 -0
- package/src/schema/translation/metadata.ts +57 -0
- package/src/types.ts +25 -0
- package/v2-incompatible.js +1 -1
- package/src/actions/DeleteWithi18nAction.tsx +0 -118
- package/src/actions/DuplicateWithi18nAction.tsx +0 -77
- package/src/actions/PublishWithi18nAction.ts +0 -118
- package/src/actions/index.ts +0 -42
- package/src/badges/LanguageBadge.tsx +0 -22
- package/src/constants/I18nDelimiter.ts +0 -1
- package/src/constants/I18nPrefix.ts +0 -1
- package/src/constants/IdStructure.ts +0 -4
- package/src/constants/LanguageCultures.ts +0 -902
- package/src/constants/ReferenceBehavior.ts +0 -5
- package/src/constants/SupportedEmojiFlagCodes.ts +0 -251
- package/src/constants/UiMessages.ts +0 -56
- package/src/constants/index.ts +0 -7
- package/src/documentI18n.tsx +0 -33
- package/src/hooks/index.ts +0 -2
- package/src/hooks/useConfig.ts +0 -22
- package/src/hooks/useDelayedFlag.ts +0 -31
- package/src/language-select/components/LanguageSelect/LanguageConfigContext.tsx +0 -4
- package/src/language-select/components/LanguageSelect/LanguageSelect.tsx +0 -188
- package/src/language-select/components/LanguageSelect/LanguageSelectContext.ts +0 -16
- package/src/language-select/components/LanguageSelect/LanguageSelectLabel.tsx +0 -12
- package/src/language-select/components/LanguageSelect/LanguageSelectList.tsx +0 -84
- package/src/language-select/components/LanguageSelect/LanguageSelectListItem.tsx +0 -251
- package/src/language-select/components/LanguageSelect/index.tsx +0 -25
- package/src/language-select/components/SingleFlag/SingleFlag.tsx +0 -44
- package/src/language-select/components/SingleFlag/allEmojiFlagCodes.ts +0 -251
- package/src/language-select/components/SingleFlag/index.ts +0 -1
- package/src/language-select/components/SplitPaneIcon/SplitPaneIcon.tsx +0 -25
- package/src/language-select/components/SplitPaneIcon/index.ts +0 -1
- package/src/language-select/components/index.ts +0 -2
- package/src/language-select/hooks/index.ts +0 -1
- package/src/language-select/hooks/useLanguages.ts +0 -37
- package/src/language-select/hooks/useListeningQuery.ts +0 -66
- package/src/structure/IDefaultDocumentNodeStructureProps.ts +0 -4
- package/src/structure/components/MaintenanceTab/MaintenanceTab.tsx +0 -13
- package/src/structure/components/MaintenanceTab/MaintenanceTabContent.tsx +0 -259
- package/src/structure/components/MaintenanceTab/index.ts +0 -1
- package/src/structure/components/MaintenanceTabResult/MaintenanceTabResult.tsx +0 -44
- package/src/structure/components/MaintenanceTabResult/index.ts +0 -1
- package/src/structure/components/MaintenanceTabTypeSelector/MaintenanceTabTypeSelector.tsx +0 -56
- package/src/structure/components/MaintenanceTabTypeSelector/index.ts +0 -1
- package/src/structure/hooks/index.ts +0 -1
- package/src/structure/hooks/useDocumentsInformation.ts +0 -110
- package/src/structure/index.tsx +0 -120
- package/src/structure/utils/fixBaseDocumentRefs.ts +0 -30
- package/src/structure/utils/fixBaseLanguageMismatch.ts +0 -21
- package/src/structure/utils/fixIdStructureMismatchDocuments.ts +0 -72
- package/src/structure/utils/fixLanguageFields.ts +0 -32
- package/src/structure/utils/fixOrphanedDocuments.ts +0 -22
- package/src/structure/utils/fixTranslationRefs.ts +0 -50
- package/src/structure/utils/index.ts +0 -6
- package/src/types/IEditState.ts +0 -6
- package/src/types/IExtendedLanguageObject.ts +0 -6
- package/src/types/ILanguageObject.ts +0 -4
- package/src/types/ILanguageQuery.ts +0 -13
- package/src/types/IResolverProps.ts +0 -10
- package/src/types/ITranslationRef.ts +0 -6
- package/src/types/IType.ts +0 -40
- package/src/types/IUseDocumentOperationResult.ts +0 -11
- package/src/types/TFieldNamesConfig.ts +0 -5
- package/src/types/TLanguage.ts +0 -3
- package/src/types/TLanguagesOption.ts +0 -4
- package/src/types/TSchema.ts +0 -6
- package/src/types/Ti18nConfig.ts +0 -33
- package/src/types/Ti18nDocument.ts +0 -14
- package/src/types/Ti18nSchema.ts +0 -13
- package/src/types/index.ts +0 -15
- package/src/utils/applyConfig.ts +0 -43
- package/src/utils/baseToTop.ts +0 -5
- package/src/utils/buildDocId.ts +0 -8
- package/src/utils/createSanityReference.ts +0 -11
- package/src/utils/getBaseIdFromId.ts +0 -20
- package/src/utils/getBaseLanguage.ts +0 -6
- package/src/utils/getFlag.ts +0 -38
- package/src/utils/getLanguageFromDocument.ts +0 -9
- package/src/utils/getLanguageFromId.ts +0 -13
- package/src/utils/getLanguagesFromOption.ts +0 -40
- package/src/utils/getTranslationsForId.ts +0 -39
- package/src/utils/index.ts +0 -14
- package/src/utils/makeObjectKey.ts +0 -3
- package/src/utils/normalizeLanguageList.ts +0 -26
- package/src/utils/serializePath.ts +0 -11
- package/src/utils/updateIntlFieldsForDocument.ts +0 -79
- package/src/utils/useSanityClient.ts +0 -6
- package/src/validators/index.ts +0 -1
- package/src/validators/isSlugUnique.ts +0 -56
- package/src/withDocumentI18nPlugin.ts +0 -24
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,92 +1,162 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @sanity/document-internationalization
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
> For the v2 version, please refer to the [v2-branch](https://github.com/sanity-io/document-internationalization/studio-v2).
|
|
3
|
+
- This is a completely new, **Sanity Studio v3 exclusive version** of @sanity/document-internationalization released as v2.0.0 which contains new features and requires content migrations to upgrade from previous versions. There is example code below.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
- For the **Studio v3 compatible version** of the original plugin, please install v1.0.0 and above.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
- For the **Studio v2 version** (plugin version 0), please refer to the [v2-branch](https://github.com/sanity-io/document-internationalization) and install v0.0.0 and above.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+

|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
A complete rewrite of the original Document Internationalization plugin, exclusively for Sanity Studio v3. Major **benefits** from the previous versions include:
|
|
13
12
|
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
- Achieved by mapping over languages on each field, to create an object
|
|
22
|
-
- Best for documents that have a mix of language-specific and common fields
|
|
23
|
-
- Not recommended for Portable Text
|
|
13
|
+
- Create new documents in any language and link references later
|
|
14
|
+
- Translation references are written to a separate "meta" document
|
|
15
|
+
- Updates to one translation no longer affect the change history of others
|
|
16
|
+
- Does not require custom - nor modify the built-in - Document Actions
|
|
17
|
+
- Changes made to one translation do not patch changes to other documents
|
|
18
|
+
- Configurable "language" field on documents
|
|
19
|
+
- Built-in static and parameterized initial value templates for new documents
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
## Note on Document counts
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
- Document Actions to update base and translated documents to ensure references stay in tact
|
|
29
|
-
- Document Badges to highlight the language version of a document
|
|
23
|
+
In previous versions of this plugin, translations were stored as an array of references on the actual documents. This required a base language and lead to messy transaction histories.
|
|
30
24
|
|
|
31
|
-
|
|
25
|
+
In this version of the plugin, translations of a document are stored as an array of references in a document of the `_type: translation.metadata`, and one is created for every document that has translations. A document with no translations will not have a metadata document.
|
|
32
26
|
|
|
33
|
-
|
|
27
|
+
This means if you have 100 documents and they are all translated into 3 languages, you will have 400 documents. Keep this in mind for extremely high-volume datasets.
|
|
34
28
|
|
|
35
|
-
|
|
29
|
+
## Install
|
|
36
30
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
```
|
|
32
|
+
npm install --save @sanity/document-internationalization@studio-v3-plugin-v2
|
|
33
|
+
```
|
|
40
34
|
|
|
41
|
-
|
|
35
|
+
or
|
|
42
36
|
|
|
43
|
-
|
|
37
|
+
```
|
|
38
|
+
yarn add @sanity/document-internationalization@studio-v3-plugin-v2
|
|
39
|
+
```
|
|
44
40
|
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
Add it as a plugin in sanity.config.ts (or .js):
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
|
|
47
|
+
// sanity.config.ts
|
|
48
|
+
import {createConfig} from 'sanity'
|
|
49
|
+
import {documentInternationalization} from '@sanity/document-internationalization'
|
|
50
|
+
|
|
51
|
+
export const createConfig({
|
|
52
|
+
// ...
|
|
53
|
+
plugins: [
|
|
54
|
+
documentInternationalization({
|
|
55
|
+
// Required
|
|
56
|
+
supportedLanguages: [
|
|
57
|
+
{id: 'nb', title: 'Norwegian (Bokmål)'},
|
|
58
|
+
{id: 'nn', title: 'Norwegian (Nynorsk)'},
|
|
59
|
+
{id: 'en', title: 'English'}
|
|
60
|
+
],
|
|
61
|
+
schemaTypes: ['lesson'],
|
|
62
|
+
// Optional
|
|
63
|
+
languageField: `language` // defauts to "language"
|
|
64
|
+
// Requires access to the Publishing API
|
|
65
|
+
bulkPublish: true // defaults to false
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
})
|
|
69
|
+
```
|
|
47
70
|
|
|
48
|
-
|
|
71
|
+
The schema types that use document internationalization must also have a `string` field type with the same name configured in the `languageField` setting. You can hide this field since the plugin will handle writing patches to it.
|
|
49
72
|
|
|
50
|
-
|
|
73
|
+
```ts
|
|
74
|
+
// ./schema/lesson.ts
|
|
51
75
|
|
|
52
|
-
|
|
53
|
-
|
|
76
|
+
// ...all other settings
|
|
77
|
+
defineField({
|
|
78
|
+
name: 'language',
|
|
79
|
+
type: 'string',
|
|
80
|
+
readOnly: true,
|
|
81
|
+
hidden: true,
|
|
82
|
+
})
|
|
54
83
|
```
|
|
55
84
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
85
|
+
## Querying with GROQ
|
|
86
|
+
|
|
87
|
+
To query a single document and all its translations, we use the `references()` function in GROQ.
|
|
88
|
+
|
|
89
|
+
```json5
|
|
90
|
+
// All `lesson` documents of a single language
|
|
91
|
+
*[_type == "lesson" && language == $language]{
|
|
92
|
+
// Just these fields
|
|
93
|
+
title,
|
|
94
|
+
slug,
|
|
95
|
+
language,
|
|
96
|
+
// Get the translations metadata
|
|
97
|
+
// And resolve the `value` field in each array item
|
|
98
|
+
"_translations": *[_type == "translation.metadata" && references(^._id)].translations[].value->{
|
|
99
|
+
title,
|
|
100
|
+
slug,
|
|
101
|
+
language
|
|
102
|
+
},
|
|
103
|
+
}
|
|
60
104
|
```
|
|
61
105
|
|
|
106
|
+
## Querying with GraphQL
|
|
107
|
+
|
|
108
|
+
Fortunately, the Sanity GraphQL API contains a similar filter for document references.
|
|
109
|
+
|
|
110
|
+
```graphql
|
|
111
|
+
# In this example we retrieve a lesson by its `slug.current` field value
|
|
112
|
+
query GetLesson($language: String!, $slug: String!) {
|
|
113
|
+
allLesson(limit: 1, where: {language: {eq: $language}, slug: {current: {eq: $slug}}}) {
|
|
114
|
+
_id
|
|
115
|
+
title
|
|
116
|
+
language
|
|
117
|
+
slug {
|
|
118
|
+
current
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
# And then can run this query to find translation metadata documents that use its ID
|
|
124
|
+
query GetTranslations($id: ID!) {
|
|
125
|
+
allTranslationMetadata(where: {_: {references: $id}}) {
|
|
126
|
+
translations {
|
|
127
|
+
_key
|
|
128
|
+
value {
|
|
129
|
+
title
|
|
130
|
+
slug {
|
|
131
|
+
current
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
62
138
|
|
|
63
|
-
|
|
139
|
+
## Migrating from v0 / v1
|
|
64
140
|
|
|
65
|
-
|
|
66
|
-
1. [Enabling and configuring the plugin](docs/enabling-and-configuring.md)
|
|
67
|
-
To declare available Languages and other settings
|
|
68
|
-
2. [Activating internationalization on schema](docs/activating-internationalization-on-schema.md)
|
|
69
|
-
To enable all the above features on schema
|
|
70
|
-
3. [Customise Desk Structure](docs/desk-structure.md)
|
|
71
|
-
To filter documents down to the base language version
|
|
141
|
+
There are two scripts in the `./migrations` folder of this repository. They contain scripts that should help move your content over – however, they may require updating to match your current settings.
|
|
72
142
|
|
|
73
|
-
|
|
143
|
+
**These have not been thoroughly tested on all platforms. Please take a backup before proceeding. Test on a duplicate dataset.**
|
|
74
144
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
3. [Translation Maintenance](docs/translation-maintenance.md)
|
|
78
|
-
4. [GraphQL support](docs/graphql-intl-doc.md)
|
|
79
|
-
5. [Advanced languages](docs/advanced-languages.md)
|
|
80
|
-
6. [Usage with custom publish action](docs/usage-with-custom-publish.md)
|
|
81
|
-
7. [If you don't see the plugin document actions](docs/usage-with-custom-publish.md#add-additional-actions)
|
|
82
|
-
8. [GROQ query examples](/docs/groq-query-examples.md)
|
|
145
|
+
- `./migrations/renameField.ts` will update the language field on translated documents
|
|
146
|
+
- `./migrations/createMetadata.ts` will create metadata documents for the arrays of references and unset those fields from translated documents
|
|
83
147
|
|
|
84
|
-
##
|
|
148
|
+
## Roadmap
|
|
85
149
|
|
|
86
|
-
|
|
150
|
+
- [ ] Asynchronous language plugin config option
|
|
151
|
+
- [ ] Export a validator to allow the same slug on connected translations
|
|
152
|
+
- [ ] Guidance to copy/paste changes between documents
|
|
153
|
+
- [ ] Guidance on handling singletons
|
|
154
|
+
- [ ] Add extra fields to the metadata document
|
|
87
155
|
|
|
88
|
-
|
|
156
|
+
## License
|
|
89
157
|
|
|
158
|
+
MIT © Simeon Griggs
|
|
159
|
+
See LICENSE
|
|
90
160
|
|
|
91
161
|
## License
|
|
92
162
|
|
|
@@ -106,3 +176,7 @@ Run ["CI & Release" workflow](https://github.com/sanity-io/document-internationa
|
|
|
106
176
|
Make sure to select the main branch and check "Release new version".
|
|
107
177
|
|
|
108
178
|
Semantic release will only release on configured branches, so it is safe to run release on any branch.
|
|
179
|
+
|
|
180
|
+
## License
|
|
181
|
+
|
|
182
|
+
[MIT](LICENSE) © Simeon Griggs
|
package/lib/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=["config"];var t,a,n,i,l,r,s,o,u,c,d;function h(e,t){if(null==e)return{};var a,n,i=function(e,t){if(null==e)return{};var a,n,i={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}function m(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function g(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function f(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?g(Object(a),!0).forEach((function(t){p(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):g(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}import{useClient as v,isKeyedObject as b,useSchema as y,useEditState as S,useDocumentOperation as _,useValidationStatus as C,useSyncState as w,DefaultPreview as M,useDocumentStore as I,definePlugin as A}from"sanity";import E from"just-safe-get";import T from"lodash/compact";import*as L from"react";import N,{useState as k,useEffect as B,useMemo as D,forwardRef as R,useCallback as O,createContext as P,useContext as G,useRef as j}from"react";import{useToast as K,Stack as z,Text as F,Card as U,Autocomplete as x,Flex as H,Box as W,Button as Z,Code as V,Container as Y,Dialog as J,Grid as $,MenuItem as q,Badge as Q,MenuButton as X,Menu as ee}from"@sanity/ui";import{CheckmarkIcon as te,PublishIcon as ae,TrashIcon as ne,CopyIcon as ie,EarthGlobeIcon as le,SpinnerIcon as re,AddIcon as se,ChevronDownIcon as oe}from"@sanity/icons";import{jsx as ue,jsxs as ce}from"react/jsx-runtime";import{ConfirmDeleteDialog as de,usePaneRouter as he,deskTool as me}from"sanity/desk";import{uuid as ge}from"@sanity/uuid";import fe,{keyframes as pe,css as ve}from"styled-components";import be from"just-split";import ye from"lodash/chunk";import Se from"twemoji";import _e from"html-react-parser";import{getEmojiFlag as Ce}from"@cprecioso/country-flag-emoji";import{distinctUntilChanged as we,catchError as Me}from"rxjs/operators";import Ie from"react-fast-compare";import Ae from"just-omit";import{hues as Ee}from"@sanity/color";import{RouterContext as Te}from"sanity/router";const Le=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],Ne=[{value:"af",title:"Afrikaans"},{value:"af-ZA",title:"Afrikaans (South Africa)"},{value:"ar",title:"Arabic"},{value:"ar-AE",title:"Arabic (U.A.E.)"},{value:"ar-BH",title:"Arabic (Bahrain)"},{value:"ar-DZ",title:"Arabic (Algeria)"},{value:"ar-EG",title:"Arabic (Egypt)"},{value:"ar-IQ",title:"Arabic (Iraq)"},{value:"ar-JO",title:"Arabic (Jordan)"},{value:"ar-KW",title:"Arabic (Kuwait)"},{value:"ar-LB",title:"Arabic (Lebanon)"},{value:"ar-LY",title:"Arabic (Libya)"},{value:"ar-MA",title:"Arabic (Morocco)"},{value:"ar-OM",title:"Arabic (Oman)"},{value:"ar-QA",title:"Arabic (Qatar)"},{value:"ar-SA",title:"Arabic (Saudi Arabia)"},{value:"ar-SY",title:"Arabic (Syria)"},{value:"ar-TN",title:"Arabic (Tunisia)"},{value:"ar-YE",title:"Arabic (Yemen)"},{value:"az",title:"Azeri"},{value:"az-Cyrl-AZ",title:"Azeri (Cyrillic, Azerbaijan)"},{value:"az-Latn-AZ",title:"Azeri (Latin, Azerbaijan)"},{value:"be",title:"Belarusian"},{value:"be-BY",title:"Belarusian (Belarus)"},{value:"bg",title:"Bulgarian"},{value:"bg-BG",title:"Bulgarian (Bulgaria)"},{value:"bs-Latn-BA",title:"Bosnian (Bosnia and Herzegovina)"},{value:"ca",title:"Catalan"},{value:"ca-ES",title:"Catalan (Catalan)"},{value:"cs",title:"Czech"},{value:"cs-CZ",title:"Czech (Czech Republic)"},{value:"cy-GB",title:"Welsh (United Kingdom)"},{value:"da",title:"Danish"},{value:"da-DK",title:"Danish (Denmark)"},{value:"de",title:"German"},{value:"de-AT",title:"German (Austria)"},{value:"de-DE",title:"German (Germany)"},{value:"de-CH",title:"German (Switzerland)"},{value:"de-LI",title:"German (Liechtenstein)"},{value:"de-LU",title:"German (Luxembourg)"},{value:"dv",title:"Divehi"},{value:"dv-MV",title:"Divehi (Maldives)"},{value:"el",title:"Greek"},{value:"el-GR",title:"Greek (Greece)"},{value:"en",title:"English"},{value:"en-029",title:"English (Caribbean)"},{value:"en-AU",title:"English (Australia)"},{value:"en-BZ",title:"English (Belize)"},{value:"en-CA",title:"English (Canada)"},{value:"en-GB",title:"English (United Kingdom)"},{value:"en-IE",title:"English (Ireland)"},{value:"en-JM",title:"English (Jamaica)"},{value:"en-NZ",title:"English (New Zealand)"},{value:"en-PH",title:"English (Republic of the Philippines)"},{value:"en-TT",title:"English (Trinidad and Tobago)"},{value:"en-US",title:"English (United States)"},{value:"en-ZA",title:"English (South Africa)"},{value:"en-ZW",title:"English (Zimbabwe)"},{value:"es",title:"Spanish"},{value:"es-AR",title:"Spanish (Argentina)"},{value:"es-BO",title:"Spanish (Bolivia)"},{value:"es-CL",title:"Spanish (Chile)"},{value:"es-CO",title:"Spanish (Colombia)"},{value:"es-CR",title:"Spanish (Costa Rica)"},{value:"es-DO",title:"Spanish (Dominican Republic)"},{value:"es-EC",title:"Spanish (Ecuador)"},{value:"es-ES",title:"Spanish (Spain)"},{value:"es-GT",title:"Spanish (Guatemala)"},{value:"es-HN",title:"Spanish (Honduras)"},{value:"es-MX",title:"Spanish (Mexico)"},{value:"es-NI",title:"Spanish (Nicaragua)"},{value:"es-PA",title:"Spanish (Panama)"},{value:"es-PE",title:"Spanish (Peru)"},{value:"es-PR",title:"Spanish (Puerto Rico)"},{value:"es-PY",title:"Spanish (Paraguay)"},{value:"es-SV",title:"Spanish (El Salvador)"},{value:"es-UY",title:"Spanish (Uruguay)"},{value:"es-VE",title:"Spanish (Venezuela)"},{value:"et",title:"Estonian"},{value:"et-EE",title:"Estonian (Estonia)"},{value:"eu",title:"Basque"},{value:"eu-ES",title:"Basque (Basque)"},{value:"fa",title:"Persian"},{value:"fa-IR",title:"Persian (Iran)"},{value:"fi",title:"Finnish"},{value:"fi-FI",title:"Finnish (Finland)"},{value:"fo",title:"Faroese"},{value:"fo-FO",title:"Faroese (Faroe Islands)"},{value:"fr",title:"French"},{value:"fr-BE",title:"French (Belgium)"},{value:"fr-CA",title:"French (Canada)"},{value:"fr-FR",title:"French (France)"},{value:"fr-CH",title:"French (Switzerland)"},{value:"fr-LU",title:"French (Luxembourg)"},{value:"fr-MC",title:"French (Principality of Monaco)"},{value:"gl",title:"Galician"},{value:"gl-ES",title:"Galician (Galician)"},{value:"gu",title:"Gujarati"},{value:"gu-IN",title:"Gujarati (India)"},{value:"he",title:"Hebrew"},{value:"he-IL",title:"Hebrew (Israel)"},{value:"hi",title:"Hindi"},{value:"hi-IN",title:"Hindi (India)"},{value:"hr",title:"Croatian"},{value:"hr-BA",title:"Croatian (Bosnia and Herzegovina)"},{value:"hr-HR",title:"Croatian (Croatia)"},{value:"hu",title:"Hungarian"},{value:"hu-HU",title:"Hungarian (Hungary)"},{value:"hy",title:"Armenian"},{value:"hy-AM",title:"Armenian (Armenia)"},{value:"id",title:"Indonesian"},{value:"id-ID",title:"Indonesian (Indonesia)"},{value:"is",title:"Icelandic"},{value:"is-IS",title:"Icelandic (Iceland)"},{value:"it",title:"Italian"},{value:"it-CH",title:"Italian (Switzerland)"},{value:"it-IT",title:"Italian (Italy)"},{value:"ja",title:"Japanese"},{value:"ja-JP",title:"Japanese (Japan)"},{value:"ka",title:"Georgian"},{value:"ka-GE",title:"Georgian (Georgia)"},{value:"kk",title:"Kazakh"},{value:"kk-KZ",title:"Kazakh (Kazakhstan)"},{value:"kn",title:"Kannada"},{value:"kn-IN",title:"Kannada (India)"},{value:"ko",title:"Korean"},{value:"kok",title:"Konkani"},{value:"kok-IN",title:"Konkani (India)"},{value:"ko-KR",title:"Korean (Korea)"},{value:"ky",title:"Kyrgyz"},{value:"ky-KG",title:"Kyrgyz (Kyrgyzstan)"},{value:"lt",title:"Lithuanian"},{value:"lt-LT",title:"Lithuanian (Lithuania)"},{value:"lv",title:"Latvian"},{value:"lv-LV",title:"Latvian (Latvia)"},{value:"mi-NZ",title:"Maori (New Zealand)"},{value:"mk",title:"Macedonian"},{value:"mk-MK",title:"Macedonian (Former Yugoslav Republic of Macedonia)"},{value:"mn",title:"Mongolian"},{value:"mn-MN",title:"Mongolian (Cyrillic, Mongolia)"},{value:"mr",title:"Marathi"},{value:"mr-IN",title:"Marathi (India)"},{value:"ms",title:"Malay"},{value:"ms-BN",title:"Malay (Brunei Darussalam)"},{value:"ms-MY",title:"Malay (Malaysia)"},{value:"mt-MT",title:"Maltese (Malta)"},{value:"nb-NO",title:"Norwegian, Bokmal (Norway)"},{value:"nl",title:"Dutch"},{value:"nl-BE",title:"Dutch (Belgium)"},{value:"nl-NL",title:"Dutch (Netherlands)"},{value:"nn-NO",title:"Norwegian, Nynorsk (Norway)"},{value:"no",title:"Norwegian"},{value:"ns-ZA",title:"Northern Sotho (South Africa)"},{value:"pa",title:"Punjabi"},{value:"pa-IN",title:"Punjabi (India)"},{value:"pl",title:"Polish"},{value:"pl-PL",title:"Polish (Poland)"},{value:"pt",title:"Portuguese"},{value:"pt-BR",title:"Portuguese (Brazil)"},{value:"pt-PT",title:"Portuguese (Portugal)"},{value:"quz-BO",title:"Quechua (Bolivia)"},{value:"quz-EC",title:"Quechua (Ecuador)"},{value:"quz-PE",title:"Quechua (Peru)"},{value:"ro",title:"Romanian"},{value:"ro-RO",title:"Romanian (Romania)"},{value:"ru",title:"Russian"},{value:"ru-RU",title:"Russian (Russia)"},{value:"sa",title:"Sanskrit"},{value:"sa-IN",title:"Sanskrit (India)"},{value:"se-FI",title:"Sami (Northern) (Finland)"},{value:"se-NO",title:"Sami (Northern) (Norway)"},{value:"se-SE",title:"Sami (Northern) (Sweden)"},{value:"sk",title:"Slovak"},{value:"sk-SK",title:"Slovak (Slovakia)"},{value:"sl",title:"Slovenian"},{value:"sl-SI",title:"Slovenian (Slovenia)"},{value:"sma-NO",title:"Sami (Southern) (Norway)"},{value:"sma-SE",title:"Sami (Southern) (Sweden)"},{value:"smj-NO",title:"Sami (Lule) (Norway)"},{value:"smj-SE",title:"Sami (Lule) (Sweden)"},{value:"smn-FI",title:"Sami (Inari) (Finland)"},{value:"sms-FI",title:"Sami (Skolt) (Finland)"},{value:"sq",title:"Albanian"},{value:"sq-AL",title:"Albanian (Albania)"},{value:"sr",title:"Serbian"},{value:"sr-Cyrl-BA",title:"Serbian (Cyrillic) (Bosnia and Herzegovina)"},{value:"sr-Cyrl-CS",title:"Serbian (Cyrillic, Serbia)"},{value:"sr-Latn-BA",title:"Serbian (Latin) (Bosnia and Herzegovina)"},{value:"sr-Latn-CS",title:"Serbian (Latin, Serbia)"},{value:"sv",title:"Swedish"},{value:"sv-FI",title:"Swedish (Finland)"},{value:"sv-SE",title:"Swedish (Sweden)"},{value:"sw",title:"Kiswahili"},{value:"sw-KE",title:"Kiswahili (Kenya)"},{value:"syr",title:"Syriac"},{value:"syr-SY",title:"Syriac (Syria)"},{value:"ta",title:"Tamil"},{value:"ta-IN",title:"Tamil (India)"},{value:"te",title:"Telugu"},{value:"te-IN",title:"Telugu (India)"},{value:"th",title:"Thai"},{value:"th-TH",title:"Thai (Thailand)"},{value:"tn-ZA",title:"Tswana (South Africa)"},{value:"tr",title:"Turkish"},{value:"tr-TR",title:"Turkish (Turkey)"},{value:"tt",title:"Tatar"},{value:"tt-RU",title:"Tatar (Russia)"},{value:"uk",title:"Ukrainian"},{value:"uk-UA",title:"Ukrainian (Ukraine)"},{value:"ur",title:"Urdu"},{value:"ur-PK",title:"Urdu (Islamic Republic of Pakistan)"},{value:"uz",title:"Uzbek"},{value:"uz-Cyrl-UZ",title:"Uzbek (Cyrillic, Uzbekistan)"},{value:"uz-Latn-UZ",title:"Uzbek (Latin, Uzbekistan)"},{value:"vi",title:"Vietnamese"},{value:"vi-VN",title:"Vietnamese (Vietnam)"},{value:"xh-ZA",title:"Xhosa (South Africa)"},{value:"zh-CN",title:"Chinese (People's Republic of China)"},{value:"zh-HK",title:"Chinese (Hong Kong S.A.R.)"},{value:"zh-CHS",title:"Chinese (Simplified)"},{value:"zh-CHT",title:"Chinese (Traditional)"},{value:"zh-MO",title:"Chinese (Macao S.A.R.)"},{value:"zh-SG",title:"Chinese (Singapore)"},{value:"zh-TW",title:"Chinese (Taiwan)"},{value:"zu-ZA",title:"Zulu (South Africa)"}],ke="i18n",Be="__i18n_";var De=(e=>(e.STRONG="strong",e.WEAK="weak",e.DISABLED="disabled",e))(De||{}),Re=(e=>(e.SUBPATH="subpath",e.DELIMITER="delimiter",e))(Re||{});const Oe={publishing:"Publishing...",publish:"Publish",updatingIntlFields:"Updating i18n fields",intlFieldsUpdated:"i18n fields updated",baseDocumentCopied:"Base document copied",translationCreatedToast:{title:e=>"Translation created: ".concat(e),description:e=>"The content from ‘".concat(e,"’ is copied into the new document translation.")},loading:"Loading languages...",draft:"Draft",missingTranslations:"Following languages are missing some translations compared to the base language",base:"Base",missing:"Missing",deleteAll:{buttonTitle:"Delete (incl. translations)",deleting:"Deleting..."},duplicateAll:{buttonTitle:"Duplicate (incl. translations)",duplicating:"Duplicating..."},translationsMaintenance:{title:"Translation Maintenance",selectSchemaPlaceholder:"Select schema type",idStructureMismatch:"document(s) with mismatched ID structures",missingLanguageField:"document(s) are missing the language field",missingDocumentRefs:"document(s) have missing translation references",missingBaseDocumentRefs:"document(s) have missing base document references",orphanDocuments:"orphaned translation document(s)",referenceBehaviorMismatch:"document(s) with mismatched reference behaviors",baseLanguageMismatch:"base document(s) with mismatched language field",fix:"Fix",pendingTransactionDialog:{header:"Confirm pending transaction",caution:"Before continuing please review the transactions. Keep in mind, the translation maintenance functionality may remove or update many documents at once. It is recommended to back-up your dataset before performing data maintenance",cancel:"Cancel",confirm:"Confirm operation"}},errors:{baseDocumentNotPublished:"It looks like you have not published your base translation yet. When using strong references it is required to publish the base document before publishing any translated entries"},languageSelect:{placeholder:"Switch language",listLabels:{existing:"Select document translations",missing:"Create new document translations"}}},Pe=(e,t,a)=>e.idStructure===Re.DELIMITER?"".concat(t).concat("__i18n_").concat(a||"*"):"".concat("i18n",".").concat(t,".").concat(a||"*"),Ge=(e,t)=>t?e.find((e=>e.id===t))||null:e.length>0?e[0]:null;function je(){return v({apiVersion:"2021-10-01"})}const Ke=async(e,t,a,n)=>{const i=(e=>e.map((e=>{if("string"==typeof e){const t=Ne.find((t=>t.value===e));return t?{title:t.title,id:e}:{title:e,id:e}}return"name"in e?(console.warn('The "name" field in your language configuration is deprecated, please replace it with "id".'),{title:e.title,id:e.name}):{title:e.title,id:e.id}})))(await(async()=>{if(Array.isArray(a))return a;const t=await e.fetch(a.query),n=a.value;return"string"==typeof n?t.map((e=>E(e,n))):t.map((e=>"name"in n?{name:E(e,n.name),title:E(e,n.title)}:{id:E(e,n.id),title:E(e,n.title)}))})());return t.languagesLoader?t.languagesLoader(i,null!=n?n:void 0):i},ze=e=>{if(!e)return;const t=e.replace(/^drafts\./,""),a=new RegExp("".concat("i18n","\\.([^.]+)\\.[^.]+")),n=t.match(a);if(n&&2===n.length)return n[1];const i=t.split("__i18n_");return i.length>0?i[0]:t},Fe=async function(e,t,a){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(t.idStructure===Re.DELIMITER){const t=a.split("-");t[t.length-1]="".concat(t[t.length-1]).concat("__i18n_","*");const i=await e.fetch(n?"*[_id match $segments]":"*[_id match $segments && !(_id in path('drafts.**'))]",{segments:t});return i?i.filter((e=>e._id.startsWith(a)||n&&e._id.startsWith("drafts.".concat(a)))):[]}const i=await e.fetch(n?"*[_id in path($path) || _id in path($draftPath)]":"*[_id in path($path)]",{path:Pe(t,a,"*"),draftPath:"drafts.".concat(Pe(t,a,"*"))});return null!=i?i:[]};function Ue(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return f({_type:"reference",_ref:e.replace("drafts.","")},!0===t?{_weak:!0}:{})}function xe(e,t){return(null==e?void 0:e[t.fieldNames.lang])||t.base||null}function He(e){return e.reduce(((e,t,a)=>{const n="number"==typeof t,i=b(t),l=n||i?"[]":"".concat(0===a?"":".").concat(t);return"".concat(e).concat(l)}),"")}function We(e,t){var a,n,i,l,r,s;return{base:(null==t?void 0:t.base)||(null==e?void 0:e.base)||"",languages:(null==t?void 0:t.languages)||(null==e?void 0:e.languages)||[],idStructure:(null==e?void 0:e.idStructure)||Re.DELIMITER,referenceBehavior:(null==e?void 0:e.referenceBehavior)||De.STRONG,withTranslationsMaintenance:!0===(null==e?void 0:e.withTranslationsMaintenance),shouldReload:null==e?void 0:e.shouldReload,languagesLoader:null==e?void 0:e.languagesLoader,fallbackLanguageSelect:null==e?void 0:e.fallbackLanguageSelect,customFlagComponents:null==e?void 0:e.customFlagComponents,fieldNames:{lang:(null==(a=null==t?void 0:t.fieldNames)?void 0:a.lang)||(null==(n=null==e?void 0:e.fieldNames)?void 0:n.lang)||"__i18n_lang",references:(null==(i=null==t?void 0:t.fieldNames)?void 0:i.references)||(null==(l=null==e?void 0:e.fieldNames)?void 0:l.references)||"__i18n_refs",baseReference:(null==(r=null==t?void 0:t.fieldNames)?void 0:r.baseReference)||(null==(s=null==e?void 0:e.fieldNames)?void 0:s.baseReference)||"__i18n_base"}}}function Ze(e,t){const a=y(),n=D((()=>{if(t){const e=a.get(t);if(e&&"boolean"!=typeof e.i18n)return null==e?void 0:e.i18n}return null}),[t,a]);return D((()=>We(e,n)),[n,e])}function Ve(e){return t=>{let{type:a,id:n,onComplete:i}=t;const l=K(),r=je(),s=Ze(e,a),o=ze(n),u=L.useRef(null),[c,d]=L.useState(null),[h,m]=L.useState(!1),{draft:g,published:p}=S(n,a),v=S(o,a),{publish:b}=_(n,a),{isValidating:y,validation:M}=C(n,a),I=w(n,a),A=w(o,a),E=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const[i,l]=k(e);return B((()=>{if(i!==e)if(e){if(a){const e=setTimeout((()=>l(!0)),t);return()=>clearTimeout(e)}l(!0)}else if(!e){if(n){const e=setTimeout((()=>l(!1)),t);return()=>clearTimeout(e)}l(!1)}}),[i,e,t,a,n]),i}(!!("published"===c||"publishing"===c||h||b.disabled||I.isSyncing||A.isSyncing||y||M.some((e=>"error"===e.level)))),N=L.useMemo((()=>"publishing"===c?Oe.publishing:h?Oe.updatingIntlFields:Oe.publish),[c,h]),D=L.useCallback((async()=>{m(!0);try{const e=g||p;e&&await async function(e,t,a,n){var i;const{_type:l,_id:r}=a,s=ze(r),o=r!==s,u=t.fieldNames.lang,c=t.fieldNames.references,d=t.fieldNames.baseReference,h=await Ke(e,t,t.languages,a),m=xe(a,t)||(null==(i=Ge(h,t.base))?void 0:i.id),g=e.transaction();if(g.createIfNotExists({_id:r,_type:l}),g.patch(r,{set:f({[u]:m},o&&t.referenceBehavior!==De.DISABLED?{[d]:Ue(s,t.referenceBehavior===De.WEAK)}:{})}),await g.commit(),n){const a=await Fe(e,t,s);if(a.length>0){const n=e.transaction();let i=[];t.referenceBehavior!==De.DISABLED&&(i=T(a.map((e=>{const a=xe(e,t);return a?f({_key:a},Ue(e._id,t.referenceBehavior===De.WEAK)):null}),{}))),n.patch(s,{set:{[c]:i}}),await n.commit()}}}(r,s,e,v.published),l.push({closable:!0,status:"success",title:Oe.intlFieldsUpdated})}catch(e){console.error(e),l.push({closable:!0,status:"error",title:e.toString()})}m(!1)}),[l,g,p,r,v.published,s]),R=L.useCallback((()=>{d("publishing");if(n!==o&&!v.published&&s.referenceBehavior===De.STRONG)throw new Error(Oe.errors.baseDocumentNotPublished);b.execute()}),[n,o,b,s,v.published]);return L.useEffect((()=>{const e="publishing"===c&&!g,t=e?"published":null,a=setTimeout((()=>{d(t)}),e?200:4e3);return()=>clearTimeout(a)}),[c,g]),L.useEffect((()=>{"published"===c&&(u.current||(u.current=D().then((()=>i&&i())).finally((()=>u.current=null))))}),[c,i,D]),{disabled:E,label:N,icon:"published"===c?te:ae,shortcut:E?null:"Ctrl+Alt+P",onHandle:R}}}const Ye={NOTHING_TO_DELETE:"This document doesn't yet exist or is already deleted"};function Je(e){return function(t){let{id:a,type:n,onComplete:i}=t;const l=K(),r=je(),s=Ze(e,n),o=N.useMemo((()=>ze(a)),[a]),u=S(o,n),c=w(a,n),d=w(o,n),{delete:h}=_(a,n),[m,g]=N.useState(!1),[f,p]=N.useState(!1),v=N.useCallback((()=>{p(!0)}),[]),b=N.useCallback((()=>{p(!1),i&&i()}),[i]),y=N.useCallback((async()=>{try{if(g(!0),p(!1),u.draft||u.published){const e=r.transaction();u.draft&&e.delete("drafts.".concat(o)),u.published&&e.patch(o,{unset:[s.fieldNames.references]}),await e.commit()}const e=await Fe(r,s,o,!0),t=r.transaction();e.forEach((e=>{t.delete(e._id)})),await t.commit(),h.execute(),i&&i()}catch(e){l.push({closable:!0,status:"error",title:e.toString()})}finally{g(!0)}}),[l,s,r,o,u.draft,u.published,h,i]);return{onHandle:v,tone:"critical",icon:ne,disabled:m||Boolean(h.disabled)||c.isSyncing||d.isSyncing,shortcut:"CTRL+ALT+D",title:h.disabled&&Ye[h.disabled]||"",label:m?Oe.deleteAll.deleting:Oe.deleteAll.buttonTitle,modal:f&&{type:"dialog",onClose:i,content:ue(de,{action:"delete",id:a,type:n,onCancel:b,onConfirm:y})}}}}const $e={NOTHING_TO_DUPLICATE:"This document doesn't yet exist so there's nothing to duplicate"};function qe(e){return t=>{let{id:a,type:n,draft:i,published:l}=t;const r=K(),s=je(),o=Ze(e,n),u=ze(a),{duplicate:c}=_(a,n),[d,h]=N.useState(!1),m=N.useCallback((async()=>{h(!0);try{const e=ge(),t=await Fe(s,o,u),a=s.transaction();a.create(f(f({},null!=i?i:l),{},{_id:e,_type:n})),t.forEach((t=>{const n=t._id.startsWith("drafts."),i=Pe(o,e,xe(t,o));a.create(f(f({},t),{},{_id:n?"drafts.".concat(i):i}))})),await a.commit()}catch(e){console.error(e),r.push({description:e.message})}h(!1)}),[s,o,r,u,n,i,l]);return{icon:ie,disabled:Boolean(c.disabled)||d,title:c.disabled&&$e[c.disabled]||"",label:d?Oe.duplicateAll.duplicating:Oe.duplicateAll.buttonTitle,onHandle:m}}}const Qe=(e,t,a)=>{let{schema:n,schemaType:i,documentId:l}=t;const r=n.get(i),s=r&&r.i18n,o=l===ze(l);let u=e;return s&&(u=u.map((e=>{const t="publish"===e.action,n="delete"===e.action;return t?Ve(a):n&&o?Je(a):e})),o&&u.push(qe(a))),u},Xe=R((function(e,t){let{value:a,onChange:n,onOpen:i}=e;const l=y(),r=D((()=>{var e;return null==(e=l._original)?void 0:e.types.filter((e=>!!e.i18n))}),[l]);return ce(z,{space:4,children:[ue(F,{children:Oe.translationsMaintenance.selectSchemaPlaceholder}),ue(U,{children:ue(x,{ref:t,fontSize:[2,2,3],icon:le,id:"i18n-schema-selector",options:null==r?void 0:r.map((e=>({value:e.name,payload:e}))),value:a,placeholder:"Search",openButton:{onClick:()=>i},onChange:n,renderValue:(e,t)=>(null==t?void 0:t.payload.title)||e,renderOption:e=>{let{payload:t}=e;return ue(U,{padding:2,radius:2,as:"button",children:ue(M,{layout:"default",title:t.title,media:t.icon})})}})})]})})),et=e=>{let{pending:t,count:a,labelName:n,children:i,onClick:l}=e;return ue(U,{padding:3,radius:2,shadow:1,tone:a>0?"caution":"default",children:ce(H,{align:"center",children:[ue(W,{flex:1,children:ce(F,{muted:a<=0,children:[ue("span",{children:a}),ue("span",{children:" "}),ue("span",{children:n?String(Oe.translationsMaintenance[n]):i})]})}),a>0&&ue(Z,{padding:2,fontSize:2,disabled:t,onClick:l,text:Oe.translationsMaintenance.fix})]})})},tt=(e,t,a,n)=>{var i;const l=null==(i=t.fieldNames)?void 0:i.lang,r=e.transaction();return n.forEach((e=>{const n=a.get(e._type),i=("object"==typeof n.i18n?n.i18n.base:void 0)||t.base;if(!e[l]){const t=(e=>{const t=new RegExp("".concat("i18n","\\.[^.]+\\.([^.]+)")),a=e.match(t);if(a&&2===a.length)return a[1];const n=e.split("__i18n_");return n.length>1?n[1]:void 0})(e._id)||i;r.patch(e._id,{set:{[l]:t}})}})),r},at=(e,t,a,n)=>{const i=t.fieldNames.references;return ye(a,50).map((a=>{const l=e.transaction();return a.forEach((e=>{let a=[];const r=n.filter((t=>ze(t._id)===e._id));t.referenceBehavior!==De.DISABLED&&(a=T(r.map((e=>{const a=xe(e,t);return a?f({_key:a},Ue(e._id,t.referenceBehavior===De.WEAK)):null}),{}))),l.patch(e._id,{set:{[i]:a}})})),l}))},nt=(e,t,a,n)=>{const i=e.transaction();return n.forEach((e=>{a.find((a=>{var n,i;return Array.isArray(null==e?void 0:e[t.fieldNames.references])&&(null==(n=null==e?void 0:e[t.fieldNames.references])?void 0:n.some((t=>t._ref===e._id)))||a._id===(null==(i=null==e?void 0:e[t.fieldNames.baseReference])?void 0:i._ref)}))||i.delete(e._id)})),i},it=async(e,t,a)=>{const n=await Ke(e,t,t.languages),i=Ge(n,t.base),l=t.fieldNames.lang,r=e.transaction();return a.forEach((e=>{e[l]!==(null==i?void 0:i.id)&&r.patch(e._id,{set:{[l]:null==i?void 0:i.id}})})),r},lt=(e,t,a)=>{const n=e.transaction();if(t.referenceBehavior!==De.DISABLED){const e=t.fieldNames.baseReference;a.forEach((a=>{if(!a[e]){const i=ze(a._id);n.patch(a._id,{set:{[e]:Ue(i,t.referenceBehavior===De.WEAK)}})}}))}return n},rt=fe(U)(t||(t=m(["\n grid-column-start: 1;\n grid-row-start: 1;\n"]))),st=fe(V)(a||(a=m(["\n word-break: break-word;\n white-space: break-spaces;\n"]))),ot=fe(H)(n||(n=m(["\n grid-column-start: 1;\n grid-row-start: 1;\n"]))),ut=R((function(e,t){let{config:a}=e;const[n,i]=k(""),l=je(),{pending:r,setPending:s,documents:o,baseDocuments:u,translatedDocuments:c,documentsSummaryInformation:d,fetchInformation:h}=((e,t)=>{const a=je(),n=Ze(e,t),[i,l]=N.useState(!1),[r,s]=N.useState([]),[o,u]=N.useState([]),c=N.useMemo((()=>n.idStructure===Re.DELIMITER?r.filter((e=>!e._id.includes("__i18n_"))):r.filter((e=>!e._id.startsWith("i18n")))),[n,r]),d=N.useMemo((()=>n.idStructure===Re.DELIMITER?r.filter((e=>e._id.includes("__i18n_"))):r.filter((e=>e._id.startsWith("i18n")))),[n,r]),h=N.useMemo((()=>n.idStructure===Re.DELIMITER?r.filter((e=>e._id.startsWith("i18n"))):r.filter((e=>e._id.includes("__i18n_")))),[n,r]),m=N.useCallback((async e=>{l(!0);const[t,i]=await Promise.all([Ke(a,n,n.languages),a.fetch("*[_type == $type && !(_id in path('drafts.**'))]",{type:e})]);u(t),s(i),l(!1)}),[n,a]),g=N.useMemo((()=>{var e,t,a;const i=Ge(o,n.base),l=c,s=d,u=null==(e=n.fieldNames)?void 0:e.lang,m=null==(t=n.fieldNames)?void 0:t.references,g=null==(a=n.fieldNames)?void 0:a.baseReference;return{idStructureMismatch:h,missingLanguageField:r.filter((e=>!e[u])),missingDocumentRefs:l.filter((e=>{const t=s.filter((t=>ze(t._id)===e._id));return Object.values(e[m]||[]).filter((e=>"reference"===e._type&&!!e._ref)).length!=t.length})),missingBaseDocumentRefs:s.filter((e=>!e[g])),orphanDocuments:s.filter((e=>!l.find((t=>ze(e._id)===t._id)))),referenceBehaviorMismatch:l.filter((e=>{const t=e[m]||[];return n.referenceBehavior===De.DISABLED?Object.keys(t).length>0:n.referenceBehavior===De.WEAK?Object.values(t).some((e=>!e._weak)):Object.values(t).some((e=>!!e._weak))})),baseLanguageMismatch:l.filter((e=>(null==i?void 0:i.id)&&e[u]!==i.id))}}),[n,r,o,c,d,h]);return N.useEffect((()=>{t&&m(t)}),[t]),{pending:i,setPending:l,documents:r,baseDocuments:c,translatedDocuments:d,idStructureMismatchDocuments:h,documentsSummaryInformation:g,fetchInformation:m}})(a,n),[m,g]=k(null),p=y(),v=Ze(a,n),b=O((e=>i(e)),[]),S=O((()=>i("")),[]),_=O((()=>{g(((e,t,a,n)=>{const i=t.fieldNames.references,l=new Set(n.map((e=>ze(e._id)))),r=e.transaction();l.forEach((e=>{r.patch(e,{set:{[i]:[]}})}));const s=be(n.filter((e=>e._id!==ze(e._id))),100).map((n=>{const l=e.transaction();return n.forEach((e=>{const n=ze(e._id),r=xe(e,t);if(r){const s=Pe(t,n,r);l.createIfNotExists(f(f({},e),{},{_id:s,_type:a})),l.delete(e._id),t.referenceBehavior!==De.DISABLED&&(l.patch(n,{setIfMissing:{[i]:[]}}),l.patch(n,{insert:{after:"".concat(i,"[-1]"),items:[f({_key:r},Ue(s,t.referenceBehavior===De.WEAK))]}}))}})),l}));return[r,...s]})(l,v,n,o))}),[l,v,n,o]),C=O((()=>{g([tt(l,v,p,o)])}),[l,p,v,o]),w=O((()=>{g(at(l,v,u,c))}),[l,v,u,c]),M=O((()=>{g([lt(l,v,c)])}),[l,v,c]),I=O((()=>{g([nt(l,v,u,c)])}),[l,v,u,c]),A=O((()=>{g(at(l,v,u,c))}),[l,v,u,c]),E=O((async()=>{g([await it(l,v,u)])}),[l,v,u]),T=O((()=>{if(m){const e=JSON.stringify(m.map((e=>e.toJSON())),null,2),t=new Blob([e],{type:"application/json"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download="transactions.json",n.style.display="none",document.body.appendChild(n),n.click(),URL.revokeObjectURL(a)}}),[m]),L=O((()=>{g(null)}),[g]),B=O((async()=>{s(!0);try{m&&(await m.reduce((async(e,t)=>{await e,await t.commit()}),Promise.resolve()),await h(n),g(null))}catch(e){console.error(e)}finally{s(!1)}}),[s,h,n,m]);return ce(Y,{width:1,children:[ce(z,{space:2,children:[ue(W,{padding:4,children:ue(Xe,{value:n,onChange:b,onOpen:S,ref:t})}),!!n&&ue(W,{paddingX:4,children:ce(z,{space:2,children:[ue(et,{pending:r,count:d.idStructureMismatch.length,labelName:"idStructureMismatch",onClick:_}),ue(et,{pending:r,count:d.missingLanguageField.length,labelName:"missingLanguageField",onClick:C}),ue(et,{pending:r,count:d.missingDocumentRefs.length,labelName:"missingDocumentRefs",onClick:w}),ue(et,{pending:r,count:d.missingBaseDocumentRefs.length,labelName:"missingBaseDocumentRefs",onClick:M}),ue(et,{pending:r,count:d.orphanDocuments.length,labelName:"orphanDocuments",onClick:I}),ue(et,{pending:r,count:d.referenceBehaviorMismatch.length,labelName:"referenceBehaviorMismatch",onClick:A}),ue(et,{pending:r,count:d.baseLanguageMismatch.length,labelName:"baseLanguageMismatch",onClick:E})]})})]}),!!(null==m?void 0:m.length)&&ue(J,{id:"confirm-pending-transactions",width:2,header:Oe.translationsMaintenance.pendingTransactionDialog.header,onClose:L,footer:ue(H,{padding:3,justify:"flex-end",children:ce($,{autoFlow:"column",autoCols:"auto",gap:2,children:[ue(Z,{tone:"default",loading:r,disabled:r,text:Oe.translationsMaintenance.pendingTransactionDialog.cancel,onClick:L}),ue(Z,{tone:"critical",loading:r,disabled:r,text:Oe.translationsMaintenance.pendingTransactionDialog.confirm,onClick:B})]})}),children:ce(z,{padding:3,space:3,children:[ue(U,{padding:3,radius:2,shadow:1,tone:"caution",children:ue(F,{size:2,children:Oe.translationsMaintenance.pendingTransactionDialog.caution})}),ce($,{cols:1,children:[ue(rt,{padding:3,radius:2,shadow:1,tone:"default",children:ue(st,{language:"json",children:JSON.stringify(m.map((e=>e.toJSON())),null,2)})}),ue(ot,{padding:2,justify:"flex-end",align:"flex-start",onClick:T,children:ue(Z,{text:"Download"})})]})]})})]})}));const ct=e=>e.document(),dt=e=>{const{S:t,schema:a}=e,n=[],i=t.documentTypeListItems().filter((e=>{let t=e.getSchemaType();t="string"==typeof t?a.get(t):t;const i=t&&t.i18n;return i||n.push(e),i}));return{withoutI18n:n,withI18n:i}},ht=e=>{const{S:t}=e,a=function(e){return R((function(t,a){return ue(ut,f(f({},e),{},{ref:a}))}))}(e);return t.component(a).title(Oe.translationsMaintenance.title).id("__i18n_translations_maintenance_tab")},mt=e=>{const{S:t}=e;return t.listItem().id("__i18n_translations_maintenance_tab").title(Oe.translationsMaintenance.title).icon(le).child(ht(e))},gt=e=>{const{S:t,config:a,schema:n}=e,i=We(a,"object"==typeof n.i18n?n.i18n:void 0),l=dt(e),r={[Re.SUBPATH]:(e,t)=>t.filter("!(_id in path($path)) && !(_id in path($drafts)) && _type == $type").params({path:"".concat("i18n",".**"),drafts:"drafts.".concat("i18n",".**"),type:e.getId()}),[Re.DELIMITER]:(e,t)=>t.filter("!(_id match $id) && _type == $type").params({id:"*".concat("__i18n_","*"),type:e.getId()})},s=[...l.withoutI18n,...l.withI18n.map((e=>{const a=e.getSchemaType(),n="string"==typeof a?a:null==a?void 0:a.name;return e.child(r[i.idStructure](e,t.documentList().id(e.getId()||"").title(e.getTitle()||"").schemaType(null!=n?n:"").menuItems([...n?t.orderingMenuItemsForType(n):[]])))}))];return i.withTranslationsMaintenance&&s.splice(0,0,mt(e)),s.map((e=>e.serialize()))};function ft(e){const{S:t}=e;if(0===dt(e).withI18n.length)return t.defaults();const a=gt(e);return t.list().id("__root__").title("Content").items(a).showIcons(a.some((e=>{return!(!(t=e.schemaType)||"string"==typeof t)&&Boolean(t.icon);var t})))}function pt(e){return(t,a)=>{const{document:n,path:i,type:l}=a,r=null==l?void 0:l.options;if(!n)throw new Error("`document` was not provided in validation context.");if(!i)throw new Error("`path` was not provided in validation context.");const s=(null==r?void 0:r.disableArrayWarning)||!1,o=ze(n._id),u=n._type,c=He(i.concat("current"));if(!s&&c.includes("[]")){const e=He(i);console.warn(["Slug field at path ".concat(e," is within an array and cannot be automatically checked for uniqueness"),'If you need to check for uniqueness, provide your own "isUnique" method',"To disable this message, set `disableArrayWarning: true` on the slug `options` field"].join("\n"))}const d=["_type == $docType",'!(_id in path("drafts.**"))',"_id != $baseId",'!(_id in path("i18n." + $baseId + ".*"))','!(_id match $baseId + "'.concat("__i18n_",'*")'),"".concat(c," == $slug")].join(" && ");return e.fetch("!defined(*[".concat(d,"][0]._id)"),{docType:u,baseId:o,slug:t},{tag:"validation.slug-is-unique"})}}const vt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!e)return"";switch(e.toLocaleLowerCase()){case"en":return"gb";case"sq":return"al";default:return e}},bt=P({}),yt=fe(W)(i||(i=m(["\n min-width: 24px;\n transform: translateY(1px);\n"]))),St=e=>{let{code:t,langCulture:a}=e;const n=D((()=>t&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!e)return"";const t=vt(e);if(!Le.includes(t.toUpperCase()))return"";return Ce(t)}(t)),[t]),i=Se.parse(null!=n?n:"🇺🇳",{folder:"svg",ext:".svg"}),l=_e(i),{customFlagComponents:r}=G(bt),s=D((()=>{if(a&&r){const e=a.replace(/[^a-zA-Z0-9_]/g,"_");if(e in r)return r[e]}return null}),[a,r]);return ue(W,{"aria-label":t,children:s&&t?ue(s,{code:t}):ue(yt,{children:l})})};const _t={},Ct={apiVersion:"v2022-05-09"};const wt=(e,t)=>{var a,n;return Number(null!=(a=e.isBase)?a:0)-Number(null!=(n=t.isBase)?n:0)};function Mt(e){let{children:t}=e;return ue(W,{padding:2,children:ue(F,{muted:!0,size:1,children:t})})}const It=R((function(e,t){return ue("svg",f(f({"data-sanity-icon":"splitPane",width:"1em",height:"1em",viewBox:"0 0 25 25",fill:"none",xmlns:"http://www.w3.org/2000/svg",ref:t},e),{},{children:ue("path",{d:"M10.5 5.5V19.5M13 12.5H15.5M18 12.5H15.5M15.5 12.5V15M15.5 12.5V10M4.5 5.5H20.5V19.5H4.5V5.5Z",stroke:"currentColor",strokeWidth:1.2})}))})),At=P({currentDocumentId:null,currentDocumentType:null,baseLanguage:null,currentLanguage:null}),Et=pe(l||(l=m(["\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n"]))),Tt=fe(re)(r||(r=m(["\n animation: "," 500ms linear infinite;\n"])),Et),Lt=fe(Z)(s||(s=m(["\n display: none;\n flex-shrink: 0;\n margin-left: 4px;\n\n & svg {\n display: block;\n color: ",";\n }\n\n ","\n"])),Ee.gray[700].hex,(e=>{let{theme:t}=e;return ve(o||(o=m(["\n @media (min-width: ","em) {\n display: block;\n }\n "])),t.sanity.media[1]/16)})),Nt=N.forwardRef(((e,t)=>ue("button",f({type:"button",ref:t},e)))),kt=fe.button(u||(u=m(["\n color: ",";\n background-color: ",";\n\n span {\n color: ",";\n }\n"])),(e=>{let{theme:t}=e;return t.sanity.color.button.default.primary.enabled.fg}),(e=>{let{theme:t}=e;return t.sanity.color.button.default.primary.enabled.bg}),(e=>{let{theme:t}=e;return t.sanity.color.button.default.primary.enabled.fg})),Bt=e=>{let{status:t,language:a}=e;const n=K(),i=G(bt),l=je(),{currentDocumentId:r,currentDocumentType:s,baseLanguage:o}=N.useContext(At);if(!r||!s)throw new Error("No document in view");const u=Ze(i,s),c=N.useContext(Te),{routerPanesState:d,groupIndex:h,replaceCurrent:m}=he(),[g,p]=N.useState(!1),v=N.useMemo((()=>ze(r)),[r]),b=N.useMemo((()=>a.id.split(/[_-]/).pop()),[a.id]),y=N.useMemo((()=>a.id===(null==o?void 0:o.id)?v:Pe(u,v,a.id)),[u,v,a.id,o]),_=S(v,s),C=N.useMemo((()=>a.isBase?a.title.length>=20?Oe.base.split(" ")[0]:Oe.base:null),[a]),w=N.useCallback(((e,t)=>{m({id:e,params:{type:t}})}),[m]),M=N.useCallback(((e,t)=>{if(!c)return;const a=[...d];a.splice(h+1,0,[{id:e,params:{type:t}}]);const n=c.resolvePathFromState({panes:a});c.navigateUrl({path:n})}),[c,d,h]),I=N.useCallback((async()=>{try{p(!0);const e=_.draft||_.published,t=u.fieldNames.lang,i=u.fieldNames.references,r=u.fieldNames.baseReference,c=u.referenceBehavior;await l.createIfNotExists(f(f({_id:"drafts.".concat(y),_type:s},e?Ae(e,["_id","_type",i]):{}),{},{[t]:a.id},(null==e?void 0:e._id)&&c!==De.DISABLED?{[r]:{_type:"reference",_ref:e._id.replace("drafts.",""),_weak:!0,_strengthenOnPublish:{type:s,weak:"weak"===c,template:{id:s,params:void 0}}}}:{})),n.push({closable:!0,status:"success",title:Oe.translationCreatedToast.title(a.title),description:o?Oe.translationCreatedToast.description(o.title):void 0}),w(y,s)}catch(e){n.push({closable:!0,status:"error",title:e.toString()})}finally{p(!1)}}),[u,_,y,s,a.id,a.title,n,o,w,l]),A=N.useCallback((()=>{w(y,s)}),[w,y,s]),E=N.useCallback((()=>{M(y,s)}),[M,y,s]);return"missing"===t?ue(q,{as:Nt,"data-as":"button",disabled:g,icon:g?Tt:se,text:a.title,onClick:I}):ce(H,{children:[ue(q,{as:a.isCurrentLanguage?kt:Nt,"data-as":"button","data-selected":a.isCurrentLanguage,selected:a.isCurrentLanguage,onClick:A,paddingY:1,paddingX:2,children:ce(H,{align:"center",gap:2,children:[ue(St,{code:b,langCulture:a.id}),ue(W,{flex:1,children:ue(F,{children:a.title})}),C?ue(Q,{fontSize:0,children:C}):null]})}),!a.isCurrentLanguage&&ue(Lt,{type:"button",tone:"default",mode:"bleed",padding:2,onClick:E,children:ue(It,{width:19,height:19})})]})},Dt=fe(W)(c||(c=m(["\n border-bottom: 1px solid var(--card-shadow-outline-color);\n"]))),Rt=fe(W)(d||(d=m(["\n minwidth: 250;\n"]))),Ot=e=>{let{draftLanguageObjects:t,publishedLanguageObjects:a,missingLanguageObjects:n}=e;const i=N.useMemo((()=>Boolean(!(!t.length&&!a.length)&&n.length)),[t,a,n]),l=N.useMemo((()=>[...t.map((e=>f(f({},e),{},{status:"draft"}))),...a.map((e=>f(f({},e),{},{status:"published"})))].sort(wt).reverse()),[t,a]);return ce(Rt,{children:[!!l.length&&ce(W,{children:[ue(Mt,{children:Oe.languageSelect.listLabels.existing}),ue($,{columns:1,gap:1,children:l.map((e=>ue(Bt,{status:e.status,language:e},e.id)))})]}),i&&ue(Dt,{marginY:1}),!!n.length&&ce(W,{children:[ue(Mt,{children:Oe.languageSelect.listLabels.missing}),ue($,{columns:1,gap:1,children:n.map((e=>ue(Bt,{status:"missing",language:e},e.id)))})]})]})},Pt={constrainSize:!0,placement:"bottom",portal:!0},Gt=e=>{let{schemaType:t,document:a}=e;var n,i;const l=Ze(G(bt),t.name),[r,s]=function(e,t){const a=je(),{draft:n,published:i}=S(t._id.replace(/^drafts\./,""),t._type),[l,r]=k(!1),[s,o]=k([]),u=O((async()=>{if(0===s.length||e.shouldReload&&e.shouldReload(null!=n?n:i)){r(!0);const t=await Ke(a,e,e.languages,null!=n?n:i);o(t),r(!1)}}),[a,e,n,i,s]);return B((()=>{u()}),[n,i,s,e,u]),[l,s]}(l,a),o=N.useMemo((()=>Ge(s,l.base)),[s,l.base]),u=N.useMemo((()=>xe(a,l)||(o?o.id:null)),[a,o,l]),c=N.useMemo((()=>s.find((e=>e.id===u))),[s,u]),d=N.useMemo((()=>null==u?void 0:u.split(/[-_]/).pop()),[u]),h='*[_type == $type && _id in $ids]{\n _id,\n "'.concat(l.fieldNames.lang,'": ').concat(l.fieldNames.lang,"\n }"),m=N.useMemo((()=>{const e=ze(a._id),t=s.map((t=>t===o?e:Pe(l,e,t.id))),n=t.map((e=>"drafts.".concat(e)));return{ids:[...t,...n],type:a._type}}),[l,o,s,a._id,a._type]),{loading:g,data:p}=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_t,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ct;const[n,i]=k(!0),[l,r]=k(!1),[s,o]=k(null),u=j(null),c=I();return B((()=>(e&&(u.current=c.listenQuery(e,t,a).pipe(we(Ie),Me((e=>(console.error(e),r(e),i(!1),o(null),e)))).subscribe((e=>{o((t=>Ie(t,e)?t:e)),i(!1),r(!1)}))),()=>u.current?u.current.unsubscribe():void 0)),[e,t,a]),{loading:n,error:l,data:s}}(h,m),v=N.useMemo((()=>{const e=[],t=[],a=[];if(!(null==p?void 0:p.length))return{draftLanguageObjects:e,publishedLanguageObjects:t,missingLanguageObjects:a};const n=p.reduce(((e,t)=>{if(!t._id.startsWith("drafts.")){return p.some((e=>e._id==="drafts.".concat(t._id)))?e:[...e,t]}return[...e,t]}),[]),i=new Map;return n.forEach((e=>{const t=E(null!=e?e:{},l.fieldNames.lang),a=e&&e._id.replace(/^drafts\./,"")===ze(e._id);t?i.set(t,e):a&&(null==o?void 0:o.id)&&i.set(o.id,e)})),s.forEach(((n,l)=>{const r=f(f({},n),{},{isBase:o?n.id===o.id:0===l,isCurrentLanguage:n.id===u}),s=i.get(n.id);(null==s?void 0:s._id)&&!s._id.startsWith("drafts.")?t.push(r):(null==s?void 0:s._id)&&s._id.startsWith("drafts.")?e.push(r):a.push(r)})),{draftLanguageObjects:e,publishedLanguageObjects:t,missingLanguageObjects:a}}),[l,s,o,p,u]);return!c||!u||r||g||0===s.length?ue(Z,{disabled:!0,mode:"bleed",padding:3,loading:r||g,iconRight:oe,text:Oe.languageSelect.placeholder}):ue(At.Provider,{value:{baseLanguage:o,currentLanguage:c,currentDocumentType:a._type,currentDocumentId:a._id},children:ue(X,{id:"document-internationalization/language-select",popover:Pt,button:ue(Z,{paddingY:1,paddingX:2,mode:"bleed",title:null!=(n=c.title)?n:c.id,children:ce(H,{align:"center",gap:2,children:[ue(St,{code:d,langCulture:u}),ue(W,{flex:1,children:ue(F,{children:null!=(i=c.title)?i:c.id})}),ue(oe,{width:19,height:19})]})}),menu:ue(ee,{children:ue(Ot,f({},v))})})})};function jt(t){const{config:a}=t,n=h(t,e),i=t.value;return ce(bt.Provider,{value:a,children:[i._id&&ue(H,{flex:1,justify:"flex-end",children:ue(Gt,{schemaType:t.schemaType,document:i})}),t.renderDefault(n)]})}const Kt=A((e=>({name:"document-i18n",document:{actions:(t,a)=>Qe(t,a,e),badges:t=>{return[...t,(a=e,e=>{const t=Ze(a,e.type),n=e.draft||e.published,i=n?xe(n,t):null;return i?{label:i,color:"success"}:null})];var a}},form:{components:{input(t){const{value:a}=t;return t.schemaType.i18n&&"object"==typeof a&&(null==a?void 0:a._id)?ue(jt,f({config:e},t)):t.renderDefault(t)}}}})));function zt(e,t){var a;const n=Kt(t);return T([...Array.isArray(e)?e:e(t),null==(a=t.includeDeskTool)||a?me({structure:(e,a)=>{let{schema:n}=a;return ft({S:e,schema:n,config:t})}}):null,n])}export{Be as I18nDelimiter,ke as I18nPrefix,Re as IdStructure,Ne as LanguageCultures,De as ReferenceBehavior,Le as SupportedEmojiFlagCodes,Oe as UiMessages,Je as createDeleteAction,qe as createDuplicateAction,pt as createIsSlugUnique,Ve as createPublishAction,Kt as documentI18n,ct as getDefaultDocumentNode,ft as getDocumentList,dt as getDocumentTypes,gt as getFilteredDocumentTypeListItems,mt as getMaintenanceListItem,ht as getMaintenanceTabComponent,Qe as resolveActions,zt as withDocumentI18nPlugin};
|
|
1
|
+
function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function t(t){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?e(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}import{jsx as a,jsxs as r,Fragment as i}from"react/jsx-runtime";import{defineType as l,defineField as o,useClient as s,useEditState as c,useValidationStatus as d,useSchema as u,SanityPreview as p,useWorkspace as m,definePlugin as h}from"sanity";import{internationalizedArray as g}from"sanity-plugin-internationalized-array";import{useToast as f,Button as y,Flex as v,Spinner as b,Text as _,Box as T,Badge as k,useClickOutside as I,Card as O,Stack as j,Popover as P}from"@sanity/ui";import{TranslateIcon as S,SplitVerticalIcon as w,CheckmarkIcon as x,AddIcon as C,CogIcon as D,ChevronRightIcon as F}from"@sanity/icons";import z,{useCallback as E,useState as L}from"react";import{uuid as B}from"@sanity/uuid";import{usePaneRouter as M}from"sanity/desk";import{RouterContext as $}from"sanity/router";import{useListeningQuery as U}from"sanity-plugin-utils";var A=e=>l({type:"document",name:"translation.metadata",title:"Translation metadata",icon:S,liveEdit:!0,fields:[o({name:"translations",type:"internationalizedArrayReference"}),o({name:"schemaTypes",description:"Used to filter the reference fields above so all translations share the same types.",type:"array",of:[{type:"string"}],options:{list:e},readOnly:e=>{let{value:t}=e;return Boolean(t)}})],preview:{select:{translations:"translations",documentSchemaTypes:"schemaTypes"},prepare(e){const{translations:t,documentSchemaTypes:n}=e,a=1===t.length?"1 Translation":"".concat(t.length," Translations"),r=t.length?t.map((e=>e._key.toUpperCase())).join(", "):"";return{title:a,subtitle:[r?"(".concat(r,")"):null,(null==n?void 0:n.length)?n.map((e=>e.toUpperCase())).join(", "):"No Schemas Defined"].filter(Boolean).join(" ")}}}});function N(e,t){const n=z.useContext($),{routerPanesState:a,groupIndex:r}=M();return z.useCallback((()=>{if(!n||!e||!t)return;const i=[...a];i.splice(r+1,0,[{id:e,params:{type:t}}]);const l=n.resolvePathFromState({panes:i});n.navigateUrl({path:l})}),[e,t,n,a,r])}function q(e,t,n){return{_key:e,value:{_type:"reference",_ref:t,_weak:!0,_strengthenOnPublish:{type:n}}}}function R(e){var n;const{index:i,language:l,languageField:o,schemaType:c,documentId:d,disabled:u,current:p,sourceId:m,sourceLanguageId:h,metadata:g,translation:I}=e,O=s(),j=f(),P=N(null==(n=null==I?void 0:I.value)?void 0:n._ref,c),S=E((()=>P()),[P]),D=E((async()=>{var e;const n=Boolean(null==g?void 0:g._id),a=O.transaction(),r=d.startsWith("drafts.")?[d,d.replace("drafts.","")]:[d,"drafts.".concat(d)],s=t(t({},await O.fetch("*[_id in $ids]|order(_updatedAt desc)[0]",{ids:r})),{},{_id:"drafts.".concat(B()),[o]:l.id});a.create(s);const u=null!=(e=null==g?void 0:g._id)?e:B(),p=q(l.id,s._id.replace("drafts.",""),c);if(n){const e="translations[".concat(i-1,"]"),t=O.patch(u).setIfMissing({translations:[]}).insert("before",e,[p]);a.patch(t)}else{const e=h?q(h,m,c):null;a.createIfNotExists({_id:u,_type:"translation.metadata",schemaTypes:[c],translations:[p,e].filter(Boolean)})}a.commit().then((()=>j.push({status:"success",title:"Created ".concat(l.title," translation"),description:n?"Updated Translations Metadata":"Created Translations Metadata"}))).catch((e=>(console.error(e),j.push({status:"error",title:"Error creating translation",description:e.message}))))}),[O,d,i,l,o,null==g?void 0:g._id,c,m,h,j]);return a(y,{onClick:I?S:D,mode:p?"default":"bleed",disabled:u||p,children:r(v,{gap:3,align:"center",children:[u?a(b,{}):a(_,{size:2,children:a(I?w:p?x:C,{})}),a(T,{flex:1,children:a(_,{children:l.title})}),a(k,{tone:u||p?"default":"primary",children:l.id})]})})}function V(e){const{id:t}=e,n=N(t,"translation.metadata");return a(y,{disabled:!t,mode:"ghost",text:"Manage Translations",icon:D,onClick:()=>n()})}function W(e){const{language:t,languageField:n,documentId:r,schemaType:i,source:l,disabled:o=!1}=e,c=s(),d=f(),u=z.useCallback((()=>{const e=l?l._id:"draft.".concat(r),a=c.transaction();l||a.createIfNotExists({_id:e,_type:i});const o=c.patch(e).set({[n]:t.id});a.patch(o),a.commit().then((()=>{d.push({title:"Set document language to ".concat(t.title),status:"success"})})).catch((e=>(console.error(e),d.push({title:"Failed to set document language to ".concat(t.title),status:"error"}))))}),[l,r,c,n,t,i,d]);return a(y,{mode:"ghost",text:t.title,icon:F,onClick:()=>u(),disabled:o,justify:"flex-start"})}function G(e){const{supportedLanguages:t,schemaType:n,documentId:l,languageField:o}=e,[s,d]=L(!1),u=E((()=>d((e=>!e))),[]),[p,m]=L(null),[h,g]=L(null),f=E((()=>d(!1)),[]);I(f,[p,h]);const{data:v,loading:b,error:k}=function(e,t){const{data:n,loading:a,error:r}=U("*[_type == $translationSchema && $id in translations[].value._ref][0]",{params:{id:e,translationSchema:"translation.metadata"}});return{data:n,loading:a,error:r}}(l),{draft:w,published:x}=c(l,n),C=w||x,D=null==C?void 0:C[o],F=t.some((e=>e.id===D)),z=a(T,{overflow:"auto",children:k?a(O,{tone:"critical",padding:2,children:r(_,{children:["Error: ",k]})}):r(j,{padding:1,space:1,children:[t.length>0?r(i,{children:[t.map(((e,t)=>{var r;return!b&&D&&F?a(R,{index:t,language:e,languageField:o,schemaType:n,documentId:l,disabled:b,current:e.id===D,metadata:v,sourceId:l,sourceLanguageId:D,translation:null==v?void 0:v.translations.find((t=>t._key===e.id))},e.id):a(W,{languageField:o,source:C,documentId:l,schemaType:n,language:e,disabled:null!=(r=null==v?void 0:v.translations.filter((e=>{var t;return(null==(t=null==e?void 0:e.value)?void 0:t._ref)!==l})).some((t=>t._key===e.id)))&&r},e.id)})),b?null:r(i,{children:[D?null:a(O,{tone:"caution",padding:3,children:r(_,{size:1,children:["Choose a language to ",a("br",{}),"apply to ",a("strong",{children:"this Document"})]})}),D&&!F?a(O,{tone:"caution",padding:3,children:r(_,{size:1,children:["Change the current language value ",a("code",{children:D}),a("br",{}),"to one of the supported languages"]})}):null]})]}):null,a(V,{id:null==v?void 0:v._id})]})});return a(P,{constrainSize:!0,content:z,open:s,portal:!0,ref:g,children:a(y,{text:"Translations",mode:"bleed",disabled:!C,tone:!C||!b&&D&&F?void 0:"caution",icon:S,onClick:u,ref:m,selected:s})})}function H(e){const{id:t,addId:n,removeId:r}=e,i=c(t,""),l=d(t,""),o=u(),s=z.useMemo((()=>l.validation.length>0&&l.validation.find((e=>"error"===e.level))),[l]);return z.useEffect((()=>{s?n(t):r(t)}),[n,t,r,s]),i.draft?a(O,{border:!0,padding:2,tone:s?"critical":"positive",children:i.published?a(p,{layout:"default",value:i.published,schemaType:o.get(i.published._type)}):a(b,{})}):null}function J(e){const{translations:t}=e.value,n=s({apiVersion:"v2022-11-21"}),{projectId:i,dataset:l}=m(),o=f(),[c,d]=z.useState([]),u=E((e=>{d((t=>[...t,e]))}),[]),p=E((e=>{d((t=>t.filter((t=>t!==e))))}),[]),h=E((()=>{const e=t.map((e=>({documentId:e.value._ref})));n.request({uri:"/publish/".concat(i,"/").concat(l),method:"POST",body:e}).then((e=>{o.push({status:"success",title:"Success",description:"Bulk publish complete"})})).catch((e=>{console.error(e),o.push({status:"error",title:"Error",description:"Bulk publish failed"})}))}),[t,n,i,l,o]);return(null==t?void 0:t.length)>0?r(j,{space:4,children:[r(j,{space:3,children:[a(_,{weight:"bold",size:1,children:"Bulk publishing"}),r(_,{children:["There"," ",1===t.length?"is 1 document":"are ".concat(t.length," documents"),"."]}),c.length>0?r(_,{weight:"medium",children:[1===c.length?"1 draft has":"".concat(c.length," drafts have")," ","validation issues that must addressed first."]}):a(_,{children:"They are all valid."})]}),a(j,{space:2,children:t.map((e=>a(H,{id:e.value._ref,addId:u,removeId:p},e._key)))}),a(y,{text:"Simultaneously Publish ".concat(1===t.length?"1 Document":"".concat(t.length," Documents")),onClick:h,disabled:Boolean(c.length)})]}):null}const K={supportedLanguages:[],schemaTypes:[],languageField:"language",bulkPublish:!1},Q=h((e=>{const{supportedLanguages:n,schemaTypes:i,languageField:l,bulkPublish:s}=t(t({},K),e);return{name:"@sanity/document-internationalization",form:{components:{input:e=>s&&"root"===e.id&&"translation.metadata"===e.schemaType.name?r(j,{space:5,children:[a(J,t({},e)),e.renderDefault(e)]}):e.renderDefault(e)}},document:{unstable_languageFilter:(e,t)=>{const{schemaType:r,documentId:o}=t;return i.includes(r)?[...e,()=>((e,t)=>a(G,{supportedLanguages:n,schemaType:e,documentId:null!=t?t:"",languageField:l}))(r,o)]:e},badges:(e,t)=>{let{schemaType:a}=t;return i.includes(a)?[e=>function(e,t,n){const a=(null==e?void 0:e.draft)||(null==e?void 0:e.published),r=null==a?void 0:a[n],i=t.find((e=>e.id===r));return i?{label:i.id,title:i.title,color:"primary"}:null}(e,n,l),...e]:e}},schema:{types:[A(i)],templates:(e,t)=>{let{schema:a}=t;return[...e,...i.map((e=>{var t,n;return{id:"".concat(e,"-parameterized"),title:"".concat(null!=(n=null==(t=null==a?void 0:a.get(e))?void 0:t.title)?n:e,": with Language"),schemaType:e,parameters:[{name:"languageId",title:"Language ID",type:"string"}],value:e=>{let{languageId:t}=e;return{[l]:t}}}})),...i.flatMap((e=>n.map((t=>({id:"".concat(e,"-").concat(t.id),title:"".concat(t.title," Lesson"),schemaType:e,value:{[l]:t.id}})))))]}},plugins:[g({languages:n,fieldTypes:[o({name:"reference",type:"reference",to:i.map((e=>({type:e}))),options:{collapsed:!1,filter:e=>{let{parent:t,document:n}=e;if(!t)return null;const a=(Array.isArray(t)?t:[t]).find((e=>e._key));return(null==a?void 0:a._key)?n.schemaTypes?{filter:"_type in $schemaTypes && ".concat(l," == $language"),params:{schemaTypes:n.schemaTypes,language:a._key}}:{filter:"".concat(l," == $language"),params:{language:a._key}}:null}}},{strict:!1})]})]}}));export{Q as documentInternationalization};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|