@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/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
- )
@@ -1 +0,0 @@
1
- export {filterFn$ as default} from './datastore'
package/tsconfig.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig",
3
- "include": ["src"],
4
- "compilerOptions": {
5
- "composite": true,
6
- "rootDir": "./src",
7
- "outDir": "./dist/dts",
8
- "jsx": "react"
9
- },
10
- "references": [
11
- {"path": "../types"}
12
- ]
13
- }