@sanity/language-filter 5.0.0 → 5.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/filterField.ts","../src/LanguageFilterStudioContext.tsx","../src/plugin.tsx"],"mappings":";UAEiB,qBAAA;EACf,cAAA;AAAA;AAAA,UAGe,oBAAA,SAA6B,gBAAA;EAC5C,OAAA,GAAU,qBAAA;AAAA;AAAA,KAGA,QAAA;EACV,EAAA,EAAI,IAAA,CAAK,4BAAA;EACT,KAAA;AAAA;AAAA,KAGU,gBAAA,IACV,MAAA,EAAQ,YAAA,EACR,aAAA,EAAe,MAAA,sBACZ,OAAA,CAAQ,QAAA;AAAA,KAED,mBAAA,IACV,aAAA,EAAe,gBAAA,EACf,KAAA,EAAO,WAAA,GAAc,aAAA,EACrB,mBAAA,YACA,WAAA,EAAa,MAAA;AAAA,UAGE,oBAAA;EACf,kBAAA,EAAoB,QAAA,KAAa,gBAAA;EACjC,gBAAA;EACA,aAAA;EACA,WAAA,GAAc,mBAAA;;;;;EAKd,UAAA;AAAA;AAAA,UAGe,6BAAA,SAAsC,oBAAA;EACrD,kBAAA,EAAoB,QAAA;AAAA;AAAA,cCpCT,kBAAA,EAAoB,mBAAA;AAAA,iBAMjB,uBAAA,CACd,UAAA,EAAY,UAAA,cACZ,OAAA,EAAS,oBAAA;AAAA,UCIM,oCAAA;EACf,OAAA,EAAS,QAAA,CAAS,6BAAA;AAAA;AAAA,UAGH,gCAAA,SAAyC,oCAAA;EACxD,mBAAA;EACA,sBAAA,GAAyB,GAAA;AAAA;;;;;iBAoEX,8BAAA,CAAA,GAAkC,gCAAA;AAAA,cCvCrC,cAAA,EAAgB,UAAA,QAAkB,YAAA,CAAa,oBAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/filterField.ts","../src/LanguageFilterStudioContext.tsx","../src/plugin.tsx"],"mappings":";UAEiB,qBAAA;EACf,cAAA;AAAA;AAAA,UAGe,oBAAA,SAA6B,gBAAA;EAC5C,OAAA,GAAU,qBAAA;AAAA;AAAA,KAGA,QAAA;EACV,EAAA,EAAI,IAAA,CAAK,4BAAA;EACT,KAAA;AAAA;AAAA,KAGU,gBAAA,IACV,MAAA,EAAQ,YAAA,EACR,aAAA,EAAe,MAAA,sBACZ,OAAA,CAAQ,QAAA;AAAA,KAED,mBAAA,IACV,aAAA,EAAe,gBAAA,EACf,KAAA,EAAO,WAAA,GAAc,aAAA,EACrB,mBAAA,YACA,WAAA,EAAa,MAAA;AAAA,UAGE,oBAAA;EACf,kBAAA,EAAoB,QAAA,KAAa,gBAAA;EACjC,gBAAA;EACA,aAAA;EACA,WAAA,GAAc,mBAAA;;;;;EAKd,UAAA;AAAA;AAAA,UAGe,6BAAA,SAAsC,oBAAA;EACrD,kBAAA,EAAoB,QAAA;AAAA;AAAA,cCpCT,kBAAA,EAAoB,mBAAA;AAAA,iBAMjB,uBAAA,CACd,UAAA,EAAY,UAAA,cACZ,OAAA,EAAS,oBAAA;AAAA,UCCM,oCAAA;EACf,OAAA,EAAS,QAAA,CAAS,6BAAA;AAAA;AAAA,UAGH,gCAAA,SAAyC,oCAAA;EACxD,mBAAA;EACA,sBAAA,GAAyB,GAAA;AAAA;;;;;iBAoFX,8BAAA,CAAA,GAAkC,gCAAA;AAAA,cCpDrC,cAAA,EAAgB,UAAA,QAAkB,YAAA,CAAa,oBAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { useState, createContext, useEffect, useContext } from "react";
3
+ import { createContext, useState, useContext } from "react";
4
+ import { useObservable } from "react-rx";
5
+ import { of, defer, from, catchError, tap } from "rxjs";
4
6
  import { useClient, TextWithTone, useFormValue, useSchema, definePlugin, isObjectSchemaType } from "sanity";
5
7
  import { EyeClosedIcon, EyeOpenIcon, TranslateIcon, CheckmarkCircleIcon, CircleIcon } from "@sanity/icons";
6
8
  import { useClickOutsideEvent, Card, Stack, Box, Popover, Button, Text, Flex, TextInput, Badge } from "@sanity/ui";
@@ -18,33 +20,36 @@ function isDocument(schemaType) {
18
20
  function getRootType(schema) {
19
21
  return schema.type ? getRootType(schema.type) : schema;
20
22
  }
23
+ function getSelectableLanguages({
24
+ supportedLanguages,
25
+ defaultLanguages
26
+ }) {
27
+ return supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id));
28
+ }
21
29
  const storageKey = "@sanity/plugin/language-filter/selected-languages";
22
30
  function getPersistedLanguageIds(options) {
23
31
  const selectableLangs = getSelectableLanguages(options).map((l) => l.id);
24
32
  let selected = selectableLangs;
25
33
  try {
26
34
  const persistedValue = window.localStorage.getItem(storageKey);
27
- persistedValue && (selected = JSON.parse(persistedValue));
35
+ if (persistedValue) {
36
+ const parsed = JSON.parse(persistedValue);
37
+ Array.isArray(parsed) && parsed.every((item) => typeof item == "string") && (selected = parsed);
38
+ }
28
39
  } catch {
29
40
  }
30
- return selected = intersection(selected, selectableLangs), selected;
41
+ selected = intersection(selected, selectableLangs);
42
+ const supportedLanguageIds = options.supportedLanguages.map((language) => language.id), defaultLanguageIds = intersection(options.defaultLanguages ?? [], supportedLanguageIds);
43
+ return unique$1([...defaultLanguageIds, ...selected]);
31
44
  }
32
- function persistLanguageIds(languageIds) {
45
+ function setPersistedLanguageIds(languageIds) {
33
46
  window.localStorage.setItem(storageKey, JSON.stringify(languageIds));
34
47
  }
35
48
  function intersection(array1, array2) {
36
49
  return array1.filter((value) => array2.includes(value));
37
50
  }
38
- function getSelectableLanguages({
39
- supportedLanguages,
40
- defaultLanguages
41
- }) {
42
- return Array.isArray(supportedLanguages) ? supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id)) : [];
43
- }
44
- function useSelectedLanguageIds(options) {
45
- const $ = c(2);
46
- let t0;
47
- return $[0] !== options ? (t0 = () => [...options.defaultLanguages ?? [], ...getPersistedLanguageIds(options)], $[0] = options, $[1] = t0) : t0 = $[1], useState(t0);
51
+ function unique$1(values) {
52
+ return Array.from(new Set(values));
48
53
  }
49
54
  const defaultContextValue = {
50
55
  options: {
@@ -56,43 +61,52 @@ const defaultContextValue = {
56
61
  },
57
62
  selectedLanguageIds: [],
58
63
  setSelectedLanguageIds: () => console.error("LanguageFilterStudioContext not initialized")
59
- }, LanguageFilterStudioContext = createContext(defaultContextValue);
64
+ }, LanguageFilterStudioContext = createContext(defaultContextValue), INITIAL_VALUE = [];
60
65
  function LanguageFilterStudioProvider(props) {
61
- const $ = c(19);
66
+ const $ = c(18);
62
67
  let t0;
63
68
  $[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t0 = {
64
69
  apiVersion: "2023-01-01"
65
70
  }, $[0] = t0) : t0 = $[0];
66
- const client = useClient(t0);
71
+ const client = useClient(t0), supportedLanguages = props.options.supportedLanguages, defaultLanguages = props.options.defaultLanguages;
67
72
  let t1;
68
- $[1] !== props.options.supportedLanguages ? (t1 = Array.isArray(props.options.supportedLanguages) ? props.options.supportedLanguages : [], $[1] = props.options.supportedLanguages, $[2] = t1) : t1 = $[2];
69
- const [languages, setLanguages] = useState(t1);
70
- let t2, t3;
71
- $[3] !== client || $[4] !== props.options.supportedLanguages ? (t2 = () => {
72
- let asyncLanguages = [];
73
- const getLanguages = async function(supportedLanguagesCallback) {
74
- asyncLanguages = await supportedLanguagesCallback(client, {}), setLanguages(asyncLanguages);
75
- };
76
- Array.isArray(props.options.supportedLanguages) || getLanguages(props.options.supportedLanguages);
77
- }, t3 = [client, props.options.supportedLanguages], $[3] = client, $[4] = props.options.supportedLanguages, $[5] = t2, $[6] = t3) : (t2 = $[5], t3 = $[6]), useEffect(t2, t3);
78
- let t4;
79
- $[7] !== languages || $[8] !== props.options ? (t4 = {
73
+ $[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t1 = [], $[1] = t1) : t1 = $[1];
74
+ const [selectedLanguageIds, setSelectedLanguageIds] = useState(t1);
75
+ let t2;
76
+ $[2] !== client || $[3] !== defaultLanguages || $[4] !== supportedLanguages ? (t2 = () => (Array.isArray(supportedLanguages) ? of(supportedLanguages) : defer(() => from(supportedLanguages(client, {}))).pipe(catchError(_temp$2))).pipe(tap((languages) => {
77
+ const persistedLanguageIds = getPersistedLanguageIds({
78
+ supportedLanguages: languages,
79
+ defaultLanguages
80
+ });
81
+ setSelectedLanguageIds(persistedLanguageIds);
82
+ })), $[2] = client, $[3] = defaultLanguages, $[4] = supportedLanguages, $[5] = t2) : t2 = $[5];
83
+ const [languages$] = useState(t2), languages_0 = useObservable(languages$, INITIAL_VALUE);
84
+ let t3;
85
+ $[6] !== languages_0 || $[7] !== props.options ? (t3 = {
80
86
  ...defaultContextValue.options,
81
87
  ...props.options,
82
- supportedLanguages: languages
83
- }, $[7] = languages, $[8] = props.options, $[9] = t4) : t4 = $[9];
84
- const options = t4, [selectedLanguageIds, setSelectedLanguageIds] = useSelectedLanguageIds(options);
88
+ supportedLanguages: languages_0
89
+ }, $[6] = languages_0, $[7] = props.options, $[8] = t3) : t3 = $[8];
90
+ const options = t3;
91
+ let t4;
92
+ $[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t4 = (ids) => {
93
+ setSelectedLanguageIds(ids), setPersistedLanguageIds(ids);
94
+ }, $[9] = t4) : t4 = $[9];
95
+ const onSelectedLanguageIdsChange = t4;
85
96
  let t5;
86
- $[10] !== options || $[11] !== selectedLanguageIds || $[12] !== setSelectedLanguageIds ? (t5 = {
97
+ $[10] !== options || $[11] !== selectedLanguageIds ? (t5 = {
87
98
  options,
88
99
  selectedLanguageIds,
89
- setSelectedLanguageIds
90
- }, $[10] = options, $[11] = selectedLanguageIds, $[12] = setSelectedLanguageIds, $[13] = t5) : t5 = $[13];
100
+ setSelectedLanguageIds: onSelectedLanguageIdsChange
101
+ }, $[10] = options, $[11] = selectedLanguageIds, $[12] = t5) : t5 = $[12];
91
102
  const value = t5;
92
103
  let t6;
93
- $[14] !== props ? (t6 = props.renderDefault(props), $[14] = props, $[15] = t6) : t6 = $[15];
104
+ $[13] !== props ? (t6 = props.renderDefault(props), $[13] = props, $[14] = t6) : t6 = $[14];
94
105
  let t7;
95
- return $[16] !== t6 || $[17] !== value ? (t7 = /* @__PURE__ */ jsx(LanguageFilterStudioContext.Provider, { value, children: t6 }), $[16] = t6, $[17] = value, $[18] = t7) : t7 = $[18], t7;
106
+ return $[15] !== t6 || $[16] !== value ? (t7 = /* @__PURE__ */ jsx(LanguageFilterStudioContext.Provider, { value, children: t6 }), $[15] = t6, $[16] = value, $[17] = t7) : t7 = $[17], t7;
107
+ }
108
+ function _temp$2() {
109
+ return of([]);
96
110
  }
97
111
  function useLanguageFilterStudioContext() {
98
112
  return useContext(LanguageFilterStudioContext);
@@ -114,7 +128,7 @@ function usePaneLanguages() {
114
128
  const selectableLanguages = t2;
115
129
  let t3;
116
130
  $[4] !== defaultLanguages || $[5] !== setSelectedLanguageIds ? (t3 = (ids) => {
117
- setSelectedLanguageIds(unique([...defaultLanguages, ...ids])), persistLanguageIds(unique([...defaultLanguages, ...ids]));
131
+ setSelectedLanguageIds(unique([...defaultLanguages, ...ids]));
118
132
  }, $[4] = defaultLanguages, $[5] = setSelectedLanguageIds, $[6] = t3) : t3 = $[6];
119
133
  const updateSelectedIds = t3;
120
134
  let t4;
@@ -209,7 +223,7 @@ function LanguageFilterMenuButton() {
209
223
  $[31] !== activeLanguages || $[32] !== toggleLanguage ? (t21 = (lang) => /* @__PURE__ */ jsx(LanguageFilterOption, { id: lang.id, onToggle: toggleLanguage, selected: activeLanguages.includes(lang.id), title: lang.title }, lang.id), $[31] = activeLanguages, $[32] = toggleLanguage, $[33] = t21) : t21 = $[33];
210
224
  const t22 = languageOptions.filter(t20).map(t21);
211
225
  let t23;
212
- $[34] !== T1 || $[35] !== t11 || $[36] !== t18 || $[37] !== t19 || $[38] !== t22 ? (t23 = /* @__PURE__ */ jsxs(T1, { padding: t9, space: t10, children: [
226
+ $[34] !== T1 || $[35] !== t11 || $[36] !== t18 || $[37] !== t19 || $[38] !== t22 ? (t23 = /* @__PURE__ */ jsxs(T1, { padding: t9, gap: t10, children: [
213
227
  t11,
214
228
  t18,
215
229
  t19,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/filterField.ts","../src/useSelectedLanguageIds.ts","../src/LanguageFilterStudioContext.tsx","../src/usePaneLanguages.ts","../src/LanguageFilterMenuButton.tsx","../src/LanguageFilterObjectInput.tsx","../src/plugin.tsx"],"sourcesContent":["import type {SchemaType} from 'sanity'\n\nimport type {FilterFieldFunction, LanguageFilterConfig, LanguageFilterSchema} from './types'\n\nexport const defaultFilterField: FilterFieldFunction = (\n enclosingType,\n field,\n selectedLanguageIds,\n) => !enclosingType.name.startsWith('locale') || selectedLanguageIds.includes(field.name)\n\nexport function isLanguageFilterEnabled(\n schemaType: SchemaType | undefined,\n options: LanguageFilterConfig,\n): boolean {\n const schemaFilter =\n // oxlint-disable-next-line no-unsafe-type-assertion -- Checking if schemaType has options.languageFilter\n isDocument(schemaType) && (schemaType as LanguageFilterSchema)?.options?.languageFilter\n const defaultEnabled = !options.documentTypes\n\n return !!(\n (defaultEnabled && schemaFilter !== false) ||\n (!defaultEnabled && schemaFilter) ||\n (schemaType && options.documentTypes?.includes(schemaType.name))\n )\n}\n\nfunction isDocument(schemaType?: SchemaType) {\n return schemaType?.jsonType === 'object' && getRootType(schemaType).name === 'document'\n}\n\nfunction getRootType(schema: SchemaType): SchemaType {\n if (schema.type) {\n return getRootType(schema.type)\n }\n return schema\n}\n","import {useState} from 'react'\n\nimport type {Language, LanguageFilterConfig} from './types'\nconst storageKey = '@sanity/plugin/language-filter/selected-languages'\n\nfunction getPersistedLanguageIds(options: LanguageFilterConfig): string[] {\n const selectableLangs = getSelectableLanguages(options).map((l) => l.id)\n\n let selected: string[] = selectableLangs\n try {\n const persistedValue = window.localStorage.getItem(storageKey)\n if (persistedValue) {\n selected = JSON.parse(persistedValue)\n }\n } catch {}\n\n // constrain persisted/selected languages to the ones currently supported\n selected = intersection(selected, selectableLangs)\n return selected\n}\n\nexport function persistLanguageIds(languageIds: string[]): void {\n window.localStorage.setItem(storageKey, JSON.stringify(languageIds))\n}\n\nfunction intersection(array1: string[], array2: string[]) {\n return array1.filter((value) => array2.includes(value))\n}\n\nexport function getSelectableLanguages({\n supportedLanguages,\n defaultLanguages,\n}: LanguageFilterConfig): Language[] {\n return Array.isArray(supportedLanguages)\n ? supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id))\n : []\n}\n\nexport function useSelectedLanguageIds(\n options: LanguageFilterConfig,\n): [string[], (ids: string[]) => void] {\n return useState(() => [...(options.defaultLanguages ?? []), ...getPersistedLanguageIds(options)])\n}\n","import {createContext, useContext, useEffect, useMemo, useState} from 'react'\nimport {type LayoutProps, useClient} from 'sanity'\n\nimport {defaultFilterField} from './filterField'\nimport type {\n Language,\n LanguageCallback,\n LanguageFilterConfig,\n LanguageFilterConfigProcessed,\n} from './types'\nimport {useSelectedLanguageIds} from './useSelectedLanguageIds'\n\nexport interface LanguageFilterStudioContextProps {\n options: Required<LanguageFilterConfig>\n}\n\nexport interface LanguageFilterStudioContextProcessed {\n options: Required<LanguageFilterConfigProcessed>\n}\n\nexport interface LanguageFilterStudioContextValue extends LanguageFilterStudioContextProcessed {\n selectedLanguageIds: string[]\n setSelectedLanguageIds: (ids: string[]) => void\n}\n\nexport const defaultContextValue: LanguageFilterStudioContextValue = {\n options: {\n apiVersion: '2022-11-27',\n supportedLanguages: [],\n defaultLanguages: [],\n documentTypes: [],\n filterField: defaultFilterField,\n },\n selectedLanguageIds: [],\n setSelectedLanguageIds: () => console.error('LanguageFilterStudioContext not initialized'),\n}\n\nconst LanguageFilterStudioContext =\n createContext<LanguageFilterStudioContextValue>(defaultContextValue)\n\n/**\n * This is a separate Provider from the Context that wraps the document pane\n * but it used to listen to changes to the selected language IDs inside it\n * and provide them to a Studio-wide context\n */\nexport function LanguageFilterStudioProvider(\n props: LayoutProps & LanguageFilterStudioContextProps,\n): React.JSX.Element {\n const client = useClient({apiVersion: '2023-01-01'})\n const [languages, setLanguages] = useState<Language[]>(\n Array.isArray(props.options.supportedLanguages) ? props.options.supportedLanguages : [],\n )\n useEffect(() => {\n let asyncLanguages: Language[] = []\n\n async function getLanguages(supportedLanguagesCallback: LanguageCallback) {\n asyncLanguages = await supportedLanguagesCallback(client, {})\n setLanguages(asyncLanguages)\n }\n\n if (!Array.isArray(props.options.supportedLanguages)) {\n void getLanguages(props.options.supportedLanguages)\n }\n }, [client, props.options.supportedLanguages])\n\n const options = useMemo<Required<LanguageFilterConfigProcessed>>(() => {\n return {\n ...defaultContextValue.options,\n ...props.options,\n supportedLanguages: languages,\n }\n }, [props.options, languages])\n\n const [selectedLanguageIds, setSelectedLanguageIds] = useSelectedLanguageIds(options)\n const value = useMemo(\n () => ({options, selectedLanguageIds, setSelectedLanguageIds}),\n [options, selectedLanguageIds, setSelectedLanguageIds],\n )\n\n return (\n <LanguageFilterStudioContext.Provider value={value}>\n {props.renderDefault(props)}\n </LanguageFilterStudioContext.Provider>\n )\n}\n\n/**\n * Retrieves plugin options and the currently selected\n * language IDs from anywhere in the Studio\n */\nexport function useLanguageFilterStudioContext(): LanguageFilterStudioContextValue {\n return useContext(LanguageFilterStudioContext)\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useLanguageFilterStudioContext} from './LanguageFilterStudioContext'\nimport {getSelectableLanguages, persistLanguageIds} from './useSelectedLanguageIds'\n\nconst unique = (arr: string[]) => Array.from(new Set(arr))\n\nexport function usePaneLanguages(): {\n activeLanguages: string[]\n allSelected: boolean\n selectAll: () => void\n selectNone: () => void\n toggleLanguage: (languageId: string) => void\n} {\n const {selectedLanguageIds, setSelectedLanguageIds, options} = useLanguageFilterStudioContext()\n const {defaultLanguages = []} = options\n\n const selectableLanguages = useMemo(() => getSelectableLanguages(options), [options])\n\n const updateSelectedIds = useCallback(\n (ids: string[]) => {\n setSelectedLanguageIds(unique([...defaultLanguages, ...ids]))\n persistLanguageIds(unique([...defaultLanguages, ...ids]))\n },\n [defaultLanguages, setSelectedLanguageIds],\n )\n\n const selectAll = useCallback(\n () => updateSelectedIds(selectableLanguages.map((l) => l.id)),\n [updateSelectedIds, selectableLanguages],\n )\n\n const selectNone = useCallback(() => {\n updateSelectedIds(defaultLanguages)\n }, [defaultLanguages, updateSelectedIds])\n\n const toggleLanguage = useCallback(\n (languageId: string) => {\n let lang = selectedLanguageIds\n\n if (lang.includes(languageId)) {\n lang = lang.filter((l) => l !== languageId)\n } else {\n lang = unique([...lang, languageId])\n }\n\n updateSelectedIds(lang)\n },\n [updateSelectedIds, selectedLanguageIds],\n )\n\n const activeLanguages = useMemo(\n () => unique([...(defaultLanguages ?? []), ...selectedLanguageIds]),\n [defaultLanguages, selectedLanguageIds],\n )\n\n return {\n activeLanguages,\n allSelected:\n selectedLanguageIds.length === selectableLanguages.length + defaultLanguages.length,\n selectAll,\n selectNone,\n toggleLanguage,\n }\n}\n","import {\n CheckmarkCircleIcon,\n CircleIcon,\n EyeClosedIcon,\n EyeOpenIcon,\n TranslateIcon,\n} from '@sanity/icons'\nimport {\n Badge,\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Stack,\n Text,\n TextInput,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {type MouseEventHandler, useCallback, useState} from 'react'\nimport {TextWithTone} from 'sanity'\n\nimport {useLanguageFilterStudioContext} from './LanguageFilterStudioContext'\nimport {usePaneLanguages} from './usePaneLanguages'\n\nexport function LanguageFilterMenuButton(): React.JSX.Element {\n const {options} = useLanguageFilterStudioContext()\n\n const defaultLanguages = options.supportedLanguages.filter((l) =>\n options.defaultLanguages?.includes(l.id),\n )\n\n const languageOptions = options.supportedLanguages.filter(\n (l) => !options.defaultLanguages?.includes(l.id),\n )\n const [open, setOpen] = useState(false)\n const {activeLanguages, allSelected, selectAll, selectNone, toggleLanguage} = usePaneLanguages()\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n\n const handleToggleAll: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n const checked = event.currentTarget.value === 'ALL'\n\n if (checked) {\n selectAll()\n } else {\n selectNone()\n }\n },\n [selectAll, selectNone],\n )\n\n const handleClick = useCallback(() => setOpen((o) => !o), [])\n\n const handleClickOutside = useCallback(() => setOpen(false), [])\n\n useClickOutsideEvent(\n handleClickOutside,\n useCallback(\n () => [button, popover].filter((el): el is HTMLElement => el !== null),\n [button, popover],\n ),\n )\n\n const langCount = options.supportedLanguages.length\n\n // Search filter query\n const [query, setQuery] = useState('')\n const handleQuery = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.currentTarget.value) {\n setQuery(event.currentTarget.value)\n } else {\n setQuery('')\n }\n }, [])\n\n const showSearch = langCount > 4\n\n const content = (\n <Box overflow=\"auto\" style={{maxHeight: 'calc(100vh - 200px)'}}>\n <Stack padding={1} space={1}>\n {defaultLanguages.length > 0 && (\n <>\n {defaultLanguages.map((l) => (\n <LanguageFilterOption key={l.id} id={l.id} title={l.title} selected />\n ))}\n <Card borderTop />\n </>\n )}\n\n <Button\n mode=\"bleed\"\n onClick={handleToggleAll}\n justify=\"flex-start\"\n value={allSelected ? 'NONE' : 'ALL'}\n disabled={!!query}\n >\n <Flex gap={3} align=\"center\">\n <Text size={2}>\n {allSelected ? (\n <TextWithTone tone=\"primary\">\n <EyeClosedIcon />\n </TextWithTone>\n ) : (\n <EyeOpenIcon />\n )}\n </Text>\n <Box flex={1}>\n <Text>{allSelected ? 'Hide all' : 'Show all'}</Text>\n </Box>\n </Flex>\n </Button>\n\n {showSearch ? (\n <TextInput onChange={handleQuery} value={query} placeholder=\"Filter languages\" />\n ) : (\n <Card borderTop />\n )}\n\n {languageOptions\n .filter((language) => {\n if (query) {\n return language.title.toLowerCase().includes(query.toLowerCase())\n }\n return true\n })\n .map((lang) => (\n <LanguageFilterOption\n id={lang.id}\n key={lang.id}\n onToggle={toggleLanguage}\n selected={activeLanguages.includes(lang.id)}\n title={lang.title}\n />\n ))}\n </Stack>\n </Box>\n )\n\n const buttonText =\n activeLanguages.length === langCount\n ? 'Showing all'\n : `Showing ${activeLanguages.length} / ${langCount}`\n return (\n <Popover animate content={content} open={open} portal ref={setPopover}>\n <Button\n text={buttonText}\n icon={TranslateIcon}\n mode=\"bleed\"\n onClick={handleClick}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nfunction LanguageFilterOption(props: {\n id: string\n selected: boolean\n title: string\n onToggle?: (id: string) => void\n}) {\n const {id, onToggle, selected, title} = props\n\n const handleChange = useCallback(() => {\n if (onToggle) {\n onToggle(id)\n }\n }, [id, onToggle])\n\n const disabled = !onToggle\n\n return (\n <Button mode=\"bleed\" onClick={handleChange} justify=\"flex-start\" disabled={disabled}>\n <Flex gap={3} align=\"center\">\n <Text size={2}>\n {selected ? (\n <TextWithTone tone={disabled ? 'default' : 'positive'}>\n <CheckmarkCircleIcon />\n </TextWithTone>\n ) : (\n <CircleIcon />\n )}\n </Text>\n <Box flex={1}>\n <Text>{title}</Text>\n </Box>\n <Badge>{id}</Badge>\n </Flex>\n </Button>\n )\n}\n","import {useMemo} from 'react'\nimport {type ObjectInputProps, type ObjectMember, useFormValue, useSchema} from 'sanity'\n\nimport {isLanguageFilterEnabled} from './filterField'\nimport {useLanguageFilterStudioContext} from './LanguageFilterStudioContext'\n\n// First check that this Object is in a schema type for which language-filter is enabled\nexport function FilteredObjectWrapper(props: ObjectInputProps) {\n const {options} = useLanguageFilterStudioContext()\n\n // oxlint-disable-next-line no-unsafe-type-assertion -- documentType is always a string for Sanity documents\n const documentType = useFormValue(['_type']) as string\n const schema = useSchema()\n const languageFilterEnabled = isLanguageFilterEnabled(schema.get(documentType), options)\n return languageFilterEnabled ? <FilteredObjectInput {...props} /> : props.renderDefault(props)\n}\n\n// Modify the object members based on selected languages in the filter\nfunction FilteredObjectInput(props: ObjectInputProps) {\n const {members: membersProp, schemaType, renderDefault, ...restProps} = props\n const {selectedLanguageIds, options} = useLanguageFilterStudioContext()\n const {filterField} = options\n const parentValue = props.value\n\n const members: ObjectMember[] = useMemo(() => {\n return membersProp\n .filter((member) => {\n return (\n (member.kind === 'field' &&\n filterField(schemaType, member, selectedLanguageIds, parentValue)) ||\n member.kind === 'fieldSet' ||\n member.kind === 'error'\n )\n })\n .map((member) => {\n if (member.kind === 'fieldSet') {\n return Object.assign({}, member, {\n fieldSet: Object.assign({}, member.fieldSet, {\n members: member.fieldSet.members.filter((fieldsetMember) => {\n return (\n fieldsetMember.kind === 'field' &&\n filterField(schemaType, fieldsetMember, selectedLanguageIds, parentValue)\n )\n }),\n }),\n })\n }\n return member\n })\n }, [schemaType, membersProp, filterField, selectedLanguageIds, parentValue])\n\n return renderDefault({...restProps, members, schemaType, renderDefault})\n}\n","import {\n definePlugin,\n type DocumentLanguageFilterComponent,\n isObjectSchemaType,\n type ObjectInputProps,\n} from 'sanity'\n\nimport {isLanguageFilterEnabled} from './filterField'\nimport {LanguageFilterMenuButton} from './LanguageFilterMenuButton'\nimport {FilteredObjectWrapper} from './LanguageFilterObjectInput'\nimport {defaultContextValue, LanguageFilterStudioProvider} from './LanguageFilterStudioContext'\nimport type {LanguageFilterConfig} from './types'\n\n/**\n * ## Usage in sanity.config.ts (or .js)\n *\n * ```\n * import {defineConfig} from 'sanity'\n * import {languageFilter} from '@sanity/language-filter'\n *\n * export const defineConfig({\n * /...\n * plugins: [\n * languageFilter({\n * supportedLanguages: [\n * {id: 'nb', title: 'Norwegian (Bokmål)'},\n * {id: 'nn', title: 'Norwegian (Nynorsk)'},\n * {id: 'en', title: 'English'},\n * {id: 'es', title: 'Spanish'},\n * {id: 'arb', title: 'Arabic'},\n * {id: 'pt', title: 'Portuguese'},\n * //...\n * ],\n * // Select Norwegian (Bokmål) by default\n * defaultLanguages: ['nb'],\n * // Only show language filter for document type `page` (schemaType.name)\n * // Can also enable via document-options: options.languageFilter: true\n * documentTypes: ['page'],\n * // default filter function shown\n * filterField: (enclosingType, field, selectedLanguageIds) =>\n * !enclosingType.name.startsWith('locale') || selectedLanguageIds.includes(field.name),\n * })\n * ]\n * })\n * ```\n */\n\nconst RenderLanguageFilter: DocumentLanguageFilterComponent = () => {\n return <LanguageFilterMenuButton />\n}\n\nexport const languageFilter: ReturnType<typeof definePlugin<LanguageFilterConfig>> =\n definePlugin<LanguageFilterConfig>((options) => {\n const pluginOptions = {\n ...defaultContextValue.options,\n ...options,\n }\n\n return {\n name: '@sanity/language-filter',\n studio: {\n components: {\n layout: (props) => LanguageFilterStudioProvider({...props, options: pluginOptions}),\n },\n },\n\n document: {\n unstable_languageFilter: (prev, {schemaType, schema}) => {\n if (isLanguageFilterEnabled(schema.get(schemaType), options)) {\n return [...prev, RenderLanguageFilter]\n }\n return prev\n },\n },\n\n form: {\n components: {\n input: (props) => {\n if (props.id !== 'root' && isObjectSchemaType(props.schemaType)) {\n // oxlint-disable-next-line no-unsafe-type-assertion -- isObjectSchemaType confirms the type\n return FilteredObjectWrapper(props as ObjectInputProps)\n }\n\n return props.renderDefault(props)\n },\n },\n },\n }\n })\n"],"names":["defaultFilterField","enclosingType","field","selectedLanguageIds","name","startsWith","includes","isLanguageFilterEnabled","schemaType","options","schemaFilter","isDocument","languageFilter","defaultEnabled","documentTypes","jsonType","getRootType","schema","type","storageKey","getPersistedLanguageIds","selectableLangs","getSelectableLanguages","map","l","id","selected","persistedValue","window","localStorage","getItem","JSON","parse","intersection","persistLanguageIds","languageIds","setItem","stringify","array1","array2","filter","value","supportedLanguages","defaultLanguages","Array","isArray","lang","useSelectedLanguageIds","$","_c","t0","useState","defaultContextValue","apiVersion","filterField","setSelectedLanguageIds","console","error","LanguageFilterStudioContext","createContext","LanguageFilterStudioProvider","props","for","client","useClient","t1","languages","setLanguages","t2","t3","asyncLanguages","getLanguages","supportedLanguagesCallback","useEffect","t4","t5","t6","renderDefault","t7","useLanguageFilterStudioContext","useContext","unique","arr","from","Set","usePaneLanguages","undefined","selectableLanguages","ids","updateSelectedIds","_temp","selectAll","selectNone","languageId","l_0","toggleLanguage","activeLanguages","t8","length","t9","allSelected","LanguageFilterMenuButton","languageOptions","open","setOpen","button","setButton","popover","setPopover","event","currentTarget","handleToggleAll","handleClick","handleClickOutside","_temp2","useClickOutsideEvent","langCount","query","setQuery","Symbol","event_0","handleQuery","showSearch","T0","Box","maxHeight","T1","Stack","t10","t11","_temp3","t12","t13","t14","t15","t16","t17","t18","t19","t20","language","title","toLowerCase","t21","t22","t23","t24","content","buttonText","t25","TranslateIcon","t26","l_1","el","o","LanguageFilterOption","onToggle","handleChange","disabled","FilteredObjectWrapper","documentType","useFormValue","useSchema","get","languageFilterEnabled","FilteredObjectInput","members","membersProp","restProps","parentValue","member","kind","member_0","Object","assign","fieldSet","fieldsetMember","RenderLanguageFilter","definePlugin","pluginOptions","studio","components","layout","document","unstable_languageFilter","prev","form","input","isObjectSchemaType"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/filterField.ts","../src/getSelectableLanguages.ts","../src/persistedLanguageIds.ts","../src/LanguageFilterStudioContext.tsx","../src/usePaneLanguages.ts","../src/LanguageFilterMenuButton.tsx","../src/LanguageFilterObjectInput.tsx","../src/plugin.tsx"],"sourcesContent":["import type {SchemaType} from 'sanity'\n\nimport type {FilterFieldFunction, LanguageFilterConfig, LanguageFilterSchema} from './types'\n\nexport const defaultFilterField: FilterFieldFunction = (\n enclosingType,\n field,\n selectedLanguageIds,\n) => !enclosingType.name.startsWith('locale') || selectedLanguageIds.includes(field.name)\n\nexport function isLanguageFilterEnabled(\n schemaType: SchemaType | undefined,\n options: LanguageFilterConfig,\n): boolean {\n const schemaFilter =\n // oxlint-disable-next-line no-unsafe-type-assertion -- Checking if schemaType has options.languageFilter\n isDocument(schemaType) && (schemaType as LanguageFilterSchema)?.options?.languageFilter\n const defaultEnabled = !options.documentTypes\n\n return !!(\n (defaultEnabled && schemaFilter !== false) ||\n (!defaultEnabled && schemaFilter) ||\n (schemaType && options.documentTypes?.includes(schemaType.name))\n )\n}\n\nfunction isDocument(schemaType?: SchemaType) {\n return schemaType?.jsonType === 'object' && getRootType(schemaType).name === 'document'\n}\n\nfunction getRootType(schema: SchemaType): SchemaType {\n if (schema.type) {\n return getRootType(schema.type)\n }\n return schema\n}\n","import type {Language} from './types'\n\nexport function getSelectableLanguages({\n supportedLanguages,\n defaultLanguages,\n}: {\n supportedLanguages: Language[]\n defaultLanguages?: string[]\n}): Language[] {\n return supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id))\n}\n","import {getSelectableLanguages} from './getSelectableLanguages'\nimport type {Language} from './types'\n\nconst storageKey = '@sanity/plugin/language-filter/selected-languages'\n\nexport function getPersistedLanguageIds(options: {\n supportedLanguages: Language[]\n defaultLanguages?: string[]\n}): string[] {\n const selectableLangs = getSelectableLanguages(options).map((l) => l.id)\n let selected: string[] = selectableLangs\n try {\n const persistedValue = window.localStorage.getItem(storageKey)\n if (persistedValue) {\n const parsed = JSON.parse(persistedValue)\n if (Array.isArray(parsed) && parsed.every((item) => typeof item === 'string')) {\n selected = parsed\n }\n }\n } catch {}\n\n // constrain persisted/selected languages to the ones currently supported\n selected = intersection(selected, selectableLangs)\n\n const supportedLanguageIds = options.supportedLanguages.map((language) => language.id)\n const defaultLanguageIds = intersection(options.defaultLanguages ?? [], supportedLanguageIds)\n return unique([...defaultLanguageIds, ...selected])\n}\n\nexport function setPersistedLanguageIds(languageIds: string[]): void {\n window.localStorage.setItem(storageKey, JSON.stringify(languageIds))\n}\n\nfunction intersection(array1: string[], array2: string[]) {\n return array1.filter((value) => array2.includes(value))\n}\n\nfunction unique(values: string[]) {\n return Array.from(new Set(values))\n}\n","import {createContext, useCallback, useContext, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, defer, from, of, tap} from 'rxjs'\nimport {type LayoutProps, useClient} from 'sanity'\n\nimport {defaultFilterField} from './filterField'\nimport {getPersistedLanguageIds, setPersistedLanguageIds} from './persistedLanguageIds'\nimport type {LanguageFilterConfig, LanguageFilterConfigProcessed, Language} from './types'\n\nexport interface LanguageFilterStudioContextProps {\n options: Required<LanguageFilterConfig>\n}\n\nexport interface LanguageFilterStudioContextProcessed {\n options: Required<LanguageFilterConfigProcessed>\n}\n\nexport interface LanguageFilterStudioContextValue extends LanguageFilterStudioContextProcessed {\n selectedLanguageIds: string[]\n setSelectedLanguageIds: (ids: string[]) => void\n}\n\nexport const defaultContextValue: LanguageFilterStudioContextValue = {\n options: {\n apiVersion: '2022-11-27',\n supportedLanguages: [],\n defaultLanguages: [],\n documentTypes: [],\n filterField: defaultFilterField,\n },\n selectedLanguageIds: [],\n setSelectedLanguageIds: () => console.error('LanguageFilterStudioContext not initialized'),\n}\n\nconst LanguageFilterStudioContext =\n createContext<LanguageFilterStudioContextValue>(defaultContextValue)\n\nconst INITIAL_VALUE: Language[] = []\n\n/**\n * This is a separate Provider from the Context that wraps the document pane\n * but it used to listen to changes to the selected language IDs inside it\n * and provide them to a Studio-wide context\n */\nexport function LanguageFilterStudioProvider(\n props: LayoutProps & LanguageFilterStudioContextProps,\n): React.JSX.Element {\n const client = useClient({apiVersion: '2023-01-01'})\n const supportedLanguages = props.options.supportedLanguages\n const defaultLanguages = props.options.defaultLanguages\n const [selectedLanguageIds, setSelectedLanguageIds] = useState<string[]>([])\n const [languages$] = useState(() => {\n // We first resolve the languages from the callback or the array.\n const languagesObservable = Array.isArray(supportedLanguages)\n ? of(supportedLanguages)\n : defer(() => from(supportedLanguages(client, {}))).pipe(\n // If language resolution fails, keep the plugin operational with no selectable languages.\n catchError(() => of([])),\n )\n\n // After resolving the languages we can get the persisted languages by checking localStorage.\n return languagesObservable.pipe(\n tap((languages) => {\n const persistedLanguageIds = getPersistedLanguageIds({\n supportedLanguages: languages,\n defaultLanguages,\n })\n setSelectedLanguageIds(persistedLanguageIds)\n }),\n )\n })\n\n const languages = useObservable(languages$, INITIAL_VALUE)\n\n const options = useMemo<Required<LanguageFilterConfigProcessed>>(() => {\n return {\n ...defaultContextValue.options,\n ...props.options,\n supportedLanguages: languages,\n }\n }, [props.options, languages])\n\n const onSelectedLanguageIdsChange = useCallback((ids: string[]) => {\n setSelectedLanguageIds(ids)\n setPersistedLanguageIds(ids)\n }, [])\n\n const value = useMemo(\n () => ({options, selectedLanguageIds, setSelectedLanguageIds: onSelectedLanguageIdsChange}),\n [options, selectedLanguageIds, onSelectedLanguageIdsChange],\n )\n\n return (\n <LanguageFilterStudioContext.Provider value={value}>\n {props.renderDefault(props)}\n </LanguageFilterStudioContext.Provider>\n )\n}\n\n/**\n * Retrieves plugin options and the currently selected\n * language IDs from anywhere in the Studio\n */\nexport function useLanguageFilterStudioContext(): LanguageFilterStudioContextValue {\n return useContext(LanguageFilterStudioContext)\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {getSelectableLanguages} from './getSelectableLanguages'\nimport {useLanguageFilterStudioContext} from './LanguageFilterStudioContext'\n\nconst unique = (arr: string[]) => Array.from(new Set(arr))\n\nexport function usePaneLanguages(): {\n activeLanguages: string[]\n allSelected: boolean\n selectAll: () => void\n selectNone: () => void\n toggleLanguage: (languageId: string) => void\n} {\n const {selectedLanguageIds, setSelectedLanguageIds, options} = useLanguageFilterStudioContext()\n // oxlint-disable-next-line no-useless-default-assignment\n const {defaultLanguages = []} = options\n\n const selectableLanguages = useMemo(() => getSelectableLanguages(options), [options])\n\n const updateSelectedIds = useCallback(\n (ids: string[]) => {\n setSelectedLanguageIds(unique([...defaultLanguages, ...ids]))\n },\n [defaultLanguages, setSelectedLanguageIds],\n )\n\n const selectAll = useCallback(\n () => updateSelectedIds(selectableLanguages.map((l) => l.id)),\n [updateSelectedIds, selectableLanguages],\n )\n\n const selectNone = useCallback(() => {\n updateSelectedIds(defaultLanguages)\n }, [defaultLanguages, updateSelectedIds])\n\n const toggleLanguage = useCallback(\n (languageId: string) => {\n let lang = selectedLanguageIds\n\n if (lang.includes(languageId)) {\n lang = lang.filter((l) => l !== languageId)\n } else {\n lang = unique([...lang, languageId])\n }\n\n updateSelectedIds(lang)\n },\n [updateSelectedIds, selectedLanguageIds],\n )\n\n const activeLanguages = useMemo(\n () => unique([...(defaultLanguages ?? []), ...selectedLanguageIds]),\n [defaultLanguages, selectedLanguageIds],\n )\n\n return {\n activeLanguages,\n allSelected:\n selectedLanguageIds.length === selectableLanguages.length + defaultLanguages.length,\n selectAll,\n selectNone,\n toggleLanguage,\n }\n}\n","import {\n CheckmarkCircleIcon,\n CircleIcon,\n EyeClosedIcon,\n EyeOpenIcon,\n TranslateIcon,\n} from '@sanity/icons'\nimport {\n Badge,\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Stack,\n Text,\n TextInput,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {type MouseEventHandler, useCallback, useState} from 'react'\nimport {TextWithTone} from 'sanity'\n\nimport {useLanguageFilterStudioContext} from './LanguageFilterStudioContext'\nimport {usePaneLanguages} from './usePaneLanguages'\n\nexport function LanguageFilterMenuButton(): React.JSX.Element {\n const {options} = useLanguageFilterStudioContext()\n\n const defaultLanguages = options.supportedLanguages.filter((l) =>\n options.defaultLanguages?.includes(l.id),\n )\n\n const languageOptions = options.supportedLanguages.filter(\n (l) => !options.defaultLanguages?.includes(l.id),\n )\n const [open, setOpen] = useState(false)\n const {activeLanguages, allSelected, selectAll, selectNone, toggleLanguage} = usePaneLanguages()\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n\n const handleToggleAll: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n const checked = event.currentTarget.value === 'ALL'\n\n if (checked) {\n selectAll()\n } else {\n selectNone()\n }\n },\n [selectAll, selectNone],\n )\n\n const handleClick = useCallback(() => setOpen((o) => !o), [])\n\n const handleClickOutside = useCallback(() => setOpen(false), [])\n\n useClickOutsideEvent(\n handleClickOutside,\n useCallback(\n () => [button, popover].filter((el): el is HTMLElement => el !== null),\n [button, popover],\n ),\n )\n\n const langCount = options.supportedLanguages.length\n\n // Search filter query\n const [query, setQuery] = useState('')\n const handleQuery = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.currentTarget.value) {\n setQuery(event.currentTarget.value)\n } else {\n setQuery('')\n }\n }, [])\n\n const showSearch = langCount > 4\n\n const content = (\n <Box overflow=\"auto\" style={{maxHeight: 'calc(100vh - 200px)'}}>\n <Stack padding={1} gap={1}>\n {defaultLanguages.length > 0 && (\n <>\n {defaultLanguages.map((l) => (\n <LanguageFilterOption key={l.id} id={l.id} title={l.title} selected />\n ))}\n <Card borderTop />\n </>\n )}\n\n <Button\n mode=\"bleed\"\n onClick={handleToggleAll}\n justify=\"flex-start\"\n value={allSelected ? 'NONE' : 'ALL'}\n disabled={!!query}\n >\n <Flex gap={3} align=\"center\">\n <Text size={2}>\n {allSelected ? (\n <TextWithTone tone=\"primary\">\n <EyeClosedIcon />\n </TextWithTone>\n ) : (\n <EyeOpenIcon />\n )}\n </Text>\n <Box flex={1}>\n <Text>{allSelected ? 'Hide all' : 'Show all'}</Text>\n </Box>\n </Flex>\n </Button>\n\n {showSearch ? (\n <TextInput onChange={handleQuery} value={query} placeholder=\"Filter languages\" />\n ) : (\n <Card borderTop />\n )}\n\n {languageOptions\n .filter((language) => {\n if (query) {\n return language.title.toLowerCase().includes(query.toLowerCase())\n }\n return true\n })\n .map((lang) => (\n <LanguageFilterOption\n id={lang.id}\n key={lang.id}\n onToggle={toggleLanguage}\n selected={activeLanguages.includes(lang.id)}\n title={lang.title}\n />\n ))}\n </Stack>\n </Box>\n )\n\n const buttonText =\n activeLanguages.length === langCount\n ? 'Showing all'\n : `Showing ${activeLanguages.length} / ${langCount}`\n return (\n <Popover animate content={content} open={open} portal ref={setPopover}>\n <Button\n text={buttonText}\n icon={TranslateIcon}\n mode=\"bleed\"\n onClick={handleClick}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nfunction LanguageFilterOption(props: {\n id: string\n selected: boolean\n title: string\n onToggle?: (id: string) => void\n}) {\n const {id, onToggle, selected, title} = props\n\n const handleChange = useCallback(() => {\n if (onToggle) {\n onToggle(id)\n }\n }, [id, onToggle])\n\n const disabled = !onToggle\n\n return (\n <Button mode=\"bleed\" onClick={handleChange} justify=\"flex-start\" disabled={disabled}>\n <Flex gap={3} align=\"center\">\n <Text size={2}>\n {selected ? (\n <TextWithTone tone={disabled ? 'default' : 'positive'}>\n <CheckmarkCircleIcon />\n </TextWithTone>\n ) : (\n <CircleIcon />\n )}\n </Text>\n <Box flex={1}>\n <Text>{title}</Text>\n </Box>\n <Badge>{id}</Badge>\n </Flex>\n </Button>\n )\n}\n","import {useMemo} from 'react'\nimport {type ObjectInputProps, type ObjectMember, useFormValue, useSchema} from 'sanity'\n\nimport {isLanguageFilterEnabled} from './filterField'\nimport {useLanguageFilterStudioContext} from './LanguageFilterStudioContext'\n\n// First check that this Object is in a schema type for which language-filter is enabled\nexport function FilteredObjectWrapper(props: ObjectInputProps) {\n const {options} = useLanguageFilterStudioContext()\n\n // oxlint-disable-next-line no-unsafe-type-assertion -- documentType is always a string for Sanity documents\n const documentType = useFormValue(['_type']) as string\n const schema = useSchema()\n const languageFilterEnabled = isLanguageFilterEnabled(schema.get(documentType), options)\n return languageFilterEnabled ? <FilteredObjectInput {...props} /> : props.renderDefault(props)\n}\n\n// Modify the object members based on selected languages in the filter\nfunction FilteredObjectInput(props: ObjectInputProps) {\n const {members: membersProp, schemaType, renderDefault, ...restProps} = props\n const {selectedLanguageIds, options} = useLanguageFilterStudioContext()\n const {filterField} = options\n const parentValue = props.value\n\n const members: ObjectMember[] = useMemo(() => {\n return membersProp\n .filter((member) => {\n return (\n (member.kind === 'field' &&\n filterField(schemaType, member, selectedLanguageIds, parentValue)) ||\n member.kind === 'fieldSet' ||\n member.kind === 'error'\n )\n })\n .map((member) => {\n if (member.kind === 'fieldSet') {\n return Object.assign({}, member, {\n fieldSet: Object.assign({}, member.fieldSet, {\n members: member.fieldSet.members.filter((fieldsetMember) => {\n return (\n fieldsetMember.kind === 'field' &&\n filterField(schemaType, fieldsetMember, selectedLanguageIds, parentValue)\n )\n }),\n }),\n })\n }\n return member\n })\n }, [schemaType, membersProp, filterField, selectedLanguageIds, parentValue])\n\n return renderDefault({...restProps, members, schemaType, renderDefault})\n}\n","import {\n definePlugin,\n type DocumentLanguageFilterComponent,\n isObjectSchemaType,\n type ObjectInputProps,\n} from 'sanity'\n\nimport {isLanguageFilterEnabled} from './filterField'\nimport {LanguageFilterMenuButton} from './LanguageFilterMenuButton'\nimport {FilteredObjectWrapper} from './LanguageFilterObjectInput'\nimport {defaultContextValue, LanguageFilterStudioProvider} from './LanguageFilterStudioContext'\nimport type {LanguageFilterConfig} from './types'\n\n/**\n * ## Usage in sanity.config.ts (or .js)\n *\n * ```\n * import {defineConfig} from 'sanity'\n * import {languageFilter} from '@sanity/language-filter'\n *\n * export const defineConfig({\n * /...\n * plugins: [\n * languageFilter({\n * supportedLanguages: [\n * {id: 'nb', title: 'Norwegian (Bokmål)'},\n * {id: 'nn', title: 'Norwegian (Nynorsk)'},\n * {id: 'en', title: 'English'},\n * {id: 'es', title: 'Spanish'},\n * {id: 'arb', title: 'Arabic'},\n * {id: 'pt', title: 'Portuguese'},\n * //...\n * ],\n * // Select Norwegian (Bokmål) by default\n * defaultLanguages: ['nb'],\n * // Only show language filter for document type `page` (schemaType.name)\n * // Can also enable via document-options: options.languageFilter: true\n * documentTypes: ['page'],\n * // default filter function shown\n * filterField: (enclosingType, field, selectedLanguageIds) =>\n * !enclosingType.name.startsWith('locale') || selectedLanguageIds.includes(field.name),\n * })\n * ]\n * })\n * ```\n */\n\nconst RenderLanguageFilter: DocumentLanguageFilterComponent = () => {\n return <LanguageFilterMenuButton />\n}\n\nexport const languageFilter: ReturnType<typeof definePlugin<LanguageFilterConfig>> =\n definePlugin<LanguageFilterConfig>((options) => {\n const pluginOptions = {\n ...defaultContextValue.options,\n ...options,\n }\n\n return {\n name: '@sanity/language-filter',\n studio: {\n components: {\n layout: (props) => LanguageFilterStudioProvider({...props, options: pluginOptions}),\n },\n },\n\n document: {\n unstable_languageFilter: (prev, {schemaType, schema}) => {\n if (isLanguageFilterEnabled(schema.get(schemaType), options)) {\n return [...prev, RenderLanguageFilter]\n }\n return prev\n },\n },\n\n form: {\n components: {\n input: (props) => {\n if (props.id !== 'root' && isObjectSchemaType(props.schemaType)) {\n // oxlint-disable-next-line no-unsafe-type-assertion -- isObjectSchemaType confirms the type\n return FilteredObjectWrapper(props as ObjectInputProps)\n }\n\n return props.renderDefault(props)\n },\n },\n },\n }\n })\n"],"names":["defaultFilterField","enclosingType","field","selectedLanguageIds","name","startsWith","includes","isLanguageFilterEnabled","schemaType","options","schemaFilter","isDocument","languageFilter","defaultEnabled","documentTypes","jsonType","getRootType","schema","type","getSelectableLanguages","supportedLanguages","defaultLanguages","filter","lang","id","storageKey","getPersistedLanguageIds","selectableLangs","map","l","selected","persistedValue","window","localStorage","getItem","parsed","JSON","parse","Array","isArray","every","item","intersection","supportedLanguageIds","language","defaultLanguageIds","unique","setPersistedLanguageIds","languageIds","setItem","stringify","array1","array2","value","values","from","Set","defaultContextValue","apiVersion","filterField","setSelectedLanguageIds","console","error","LanguageFilterStudioContext","createContext","INITIAL_VALUE","LanguageFilterStudioProvider","props","$","_c","t0","for","client","useClient","t1","Symbol","useState","t2","of","defer","pipe","catchError","_temp","tap","languages","persistedLanguageIds","languages$","languages_0","useObservable","t3","t4","ids","onSelectedLanguageIdsChange","t5","t6","renderDefault","t7","useLanguageFilterStudioContext","useContext","arr","usePaneLanguages","undefined","selectableLanguages","updateSelectedIds","selectAll","selectNone","languageId","l_0","toggleLanguage","activeLanguages","t8","length","t9","allSelected","LanguageFilterMenuButton","languageOptions","open","setOpen","button","setButton","popover","setPopover","event","currentTarget","handleToggleAll","handleClick","handleClickOutside","_temp2","useClickOutsideEvent","langCount","query","setQuery","event_0","handleQuery","showSearch","T0","Box","maxHeight","T1","Stack","t10","t11","_temp3","t12","t13","t14","t15","t16","t17","t18","t19","t20","title","toLowerCase","t21","t22","t23","t24","content","buttonText","t25","TranslateIcon","t26","l_1","el","o","LanguageFilterOption","onToggle","handleChange","disabled","FilteredObjectWrapper","documentType","useFormValue","useSchema","get","languageFilterEnabled","FilteredObjectInput","members","membersProp","restProps","parentValue","member","kind","member_0","Object","assign","fieldSet","fieldsetMember","RenderLanguageFilter","definePlugin","pluginOptions","studio","components","layout","document","unstable_languageFilter","prev","form","input","isObjectSchemaType"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/language-filter",
3
- "version": "5.0.0",
3
+ "version": "5.0.2",
4
4
  "description": "A Sanity plugin that supports filtering localized fields by language",
5
5
  "keywords": [
6
6
  "sanity",
@@ -28,20 +28,25 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@sanity/icons": "^3.7.4",
31
- "@sanity/ui": "^3.1.14"
31
+ "@sanity/ui": "^3.2.0",
32
+ "react-rx": "^4.2.2",
33
+ "rxjs": "^7.8.2"
32
34
  },
33
35
  "devDependencies": {
34
- "@sanity/pkg-utils": "^10.4.11",
36
+ "@sanity/pkg-utils": "^10.4.18",
35
37
  "@testing-library/jest-dom": "^6.9.1",
38
+ "@testing-library/react": "^16.3.2",
39
+ "@types/node": "^24.12.4",
36
40
  "@types/react": "^19.2.14",
37
41
  "@types/react-dom": "^19.2.3",
38
42
  "babel-plugin-react-compiler": "^1.0.0",
39
- "jsdom": "^28.1.0",
40
- "react": "^19.2.4",
41
- "react-dom": "^19.2.4",
42
- "sanity": "^5.17.1",
43
- "@repo/tsconfig": "0.0.0",
44
- "@repo/package.config": "0.0.0"
43
+ "jsdom": "^29.0.1",
44
+ "react": "^19.2.5",
45
+ "react-dom": "^19.2.5",
46
+ "sanity": "^5.21.0",
47
+ "styled-components": "^6.4.1",
48
+ "@repo/package.config": "0.0.0",
49
+ "@repo/tsconfig": "0.0.0"
45
50
  },
46
51
  "peerDependencies": {
47
52
  "react": "^19.2",