@sanity/language-filter 2.31.2-performance-opts.7 → 3.0.0-v3-studio.1
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 +98 -32
- package/lib/cjs/index.js +425 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/esm/index.js +419 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/types/index.d.ts +56 -0
- package/lib/types/index.d.ts.map +1 -0
- package/package.json +77 -31
- package/sanity.json +2 -10
- package/src/LanguageFilterContext.tsx +30 -0
- package/src/LanguageFilterMenuButton.tsx +147 -0
- package/src/LanguageFilterObjectInput.tsx +72 -0
- package/src/filterField.test.ts +91 -0
- package/src/filterField.ts +34 -0
- package/src/index.ts +14 -0
- package/src/languageSubscription.ts +32 -0
- package/src/plugin.tsx +86 -0
- package/src/types.ts +27 -0
- package/src/usePaneLanguages.ts +78 -0
- package/src/useSelectedLanguageIds.ts +40 -0
- package/v2-incompatible.js +11 -0
- package/config.dist.json +0 -3
- package/dist/dts/SelectLanguage.d.ts +0 -16
- package/dist/dts/SelectLanguage.d.ts.map +0 -1
- package/dist/dts/SelectLanguageProvider.d.ts +0 -8
- package/dist/dts/SelectLanguageProvider.d.ts.map +0 -1
- package/dist/dts/datastore.d.ts +0 -7
- package/dist/dts/datastore.d.ts.map +0 -1
- package/lib/SelectLanguage.js +0 -191
- package/lib/SelectLanguageProvider.js +0 -98
- package/lib/datastore.js +0 -62
- package/lib/filter-fields.js +0 -13
- package/src/SelectLanguage.tsx +0 -178
- package/src/SelectLanguageProvider.tsx +0 -70
- package/src/datastore.ts +0 -70
- package/src/filter-fields.js +0 -1
- package/tsconfig.json +0 -13
package/src/datastore.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// @todo: remove the following line when part imports has been removed from this file
|
|
2
|
-
///<reference types="@sanity/types/parts" />
|
|
3
|
-
|
|
4
|
-
import {Observable, Subject} from 'rxjs'
|
|
5
|
-
import {map, publishReplay, refCount, startWith, tap} from 'rxjs/operators'
|
|
6
|
-
import config from 'part:@sanity/language-filter/config'
|
|
7
|
-
import {intersection, union} from 'lodash'
|
|
8
|
-
import {ObjectField, SchemaType} from '@sanity/types'
|
|
9
|
-
|
|
10
|
-
export type SelectedLanguages = string[]
|
|
11
|
-
interface SupportedLanguage {
|
|
12
|
-
id: string
|
|
13
|
-
title: string
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const onSelect$ = new Subject<SelectedLanguages>()
|
|
17
|
-
|
|
18
|
-
const id = (v: any) => v
|
|
19
|
-
|
|
20
|
-
export const setLangs = (languages: SelectedLanguages) => onSelect$.next(languages)
|
|
21
|
-
|
|
22
|
-
const persistOn = (key: string, defaultValue: string[]) => (input$: Observable<string[]>) => {
|
|
23
|
-
let persisted
|
|
24
|
-
try {
|
|
25
|
-
const persistedValue = window.localStorage.getItem(key)
|
|
26
|
-
if (persistedValue) {
|
|
27
|
-
persisted = JSON.parse(persistedValue)
|
|
28
|
-
}
|
|
29
|
-
} catch (err) {} // eslint-disable-line no-empty
|
|
30
|
-
|
|
31
|
-
return input$.pipe(
|
|
32
|
-
startWith(persisted || defaultValue),
|
|
33
|
-
tap((value) => {
|
|
34
|
-
window.localStorage.setItem(key, JSON.stringify(value))
|
|
35
|
-
})
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const SUPPORTED_LANG_IDS = config.supportedLanguages.map((lang: SupportedLanguage) => lang.id)
|
|
40
|
-
|
|
41
|
-
export const selectedLanguages$ = onSelect$.pipe(
|
|
42
|
-
persistOn(
|
|
43
|
-
'@sanity/plugin/language-filter/selected-languages',
|
|
44
|
-
config.defaultLanguages || SUPPORTED_LANG_IDS
|
|
45
|
-
),
|
|
46
|
-
// constrain persisted/selected languages to the ones currently supported
|
|
47
|
-
map((selectedLangs: SelectedLanguages) => intersection(selectedLangs, SUPPORTED_LANG_IDS)),
|
|
48
|
-
// make sure default languages always gets selected
|
|
49
|
-
Array.isArray(config.defaultLanguages)
|
|
50
|
-
? map((selectedLangs) => union(selectedLangs, config.defaultLanguages || []))
|
|
51
|
-
: id,
|
|
52
|
-
publishReplay(1),
|
|
53
|
-
refCount()
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
const defaultFilterField = (
|
|
57
|
-
enclosingType: SchemaType,
|
|
58
|
-
field: ObjectField,
|
|
59
|
-
selectedLanguages: string[]
|
|
60
|
-
) => !enclosingType.name.startsWith('locale') || selectedLanguages.includes(field.name)
|
|
61
|
-
|
|
62
|
-
const filterField = config.filterField || defaultFilterField
|
|
63
|
-
|
|
64
|
-
export const filterFn$ = selectedLanguages$.pipe(
|
|
65
|
-
map((langs) => {
|
|
66
|
-
return (enclosingType: SchemaType, field: ObjectField) => {
|
|
67
|
-
return filterField(enclosingType, field, langs)
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
)
|
package/src/filter-fields.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {filterFn$ as default} from './datastore'
|