@sanity/language-filter 3.0.0-v3-studio.3 → 3.0.0-v3-studio.5

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/lib/cjs/index.js CHANGED
@@ -47,9 +47,7 @@ function $bb26db9356030deb$export$f00537e9911d9516({ options: options , enabled:
47
47
  });
48
48
  }
49
49
  function $bb26db9356030deb$export$d5c74ca916607f46() {
50
- const value = (0, $k7rGe$react.useContext)($bb26db9356030deb$var$LanguageFilterContext);
51
- if (!value) throw new Error("LanguageFilterContext is missing");
52
- return value;
50
+ return (0, $k7rGe$react.useContext)($bb26db9356030deb$var$LanguageFilterContext);
53
51
  }
54
52
 
55
53
 
@@ -81,20 +79,18 @@ function $fe597f02a0bccb26$export$b484a630b97f9ca3(options) {
81
79
 
82
80
 
83
81
  function $a0f4109b367c6ff0$export$7f9ce1f19dc34df5(props) {
84
- const { options: options , enabled: enabled } = (0, $bb26db9356030deb$export$d5c74ca916607f46)();
85
- const { next: next , subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
86
- if (!enabled || !options) return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)((0, $k7rGe$reactjsxruntime.Fragment), {
87
- children: next(restProps)
88
- });
82
+ const context = (0, $bb26db9356030deb$export$d5c74ca916607f46)();
83
+ const { options: options , enabled: enabled } = context || {};
84
+ const { subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
85
+ if (!enabled || !options) return props.renderDefault(restProps);
89
86
  return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)($a0f4109b367c6ff0$var$FilteredObjectInput, {
90
87
  ...restProps,
91
- next: next,
92
88
  options: options,
93
89
  subscribeSelectedIds: subscribeSelectedIds
94
90
  });
95
91
  }
96
92
  function $a0f4109b367c6ff0$var$FilteredObjectInput(props) {
97
- const { members: membersProp , options: options , schemaType: schemaType , next: next , subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
93
+ const { members: membersProp , options: options , schemaType: schemaType , renderDefault: renderDefault , subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
98
94
  const [selectedIds, setSelectedIds] = (0, $fe597f02a0bccb26$export$b484a630b97f9ca3)(options);
99
95
  (0, $k7rGe$react.useEffect)(()=>{
100
96
  const unsubscribe = subscribeSelectedIds(setSelectedIds);
@@ -132,12 +128,11 @@ function $a0f4109b367c6ff0$var$FilteredObjectInput(props) {
132
128
  filterField,
133
129
  activeLanguages
134
130
  ]);
135
- return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)((0, $k7rGe$reactjsxruntime.Fragment), {
136
- children: next({
137
- ...restProps,
138
- members: members,
139
- schemaType: schemaType
140
- })
131
+ return renderDefault({
132
+ ...restProps,
133
+ members: members,
134
+ schemaType: schemaType,
135
+ renderDefault: renderDefault
141
136
  });
142
137
  }
143
138
 
@@ -412,20 +407,22 @@ const $45e3093e7de8dca2$export$bae498c4212cce68 = (0, $k7rGe$sanity.createPlugin
412
407
  }
413
408
  },
414
409
  form: {
415
- renderInput (props, next) {
416
- const enabled = (0, $f29012bc04d39674$export$fe9baa09973dbf22)(props.schemaType, options);
417
- // will only be considered enabled for document, so this is only done once
418
- if (enabled) return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)((0, $bb26db9356030deb$export$f00537e9911d9516), {
419
- enabled: enabled,
420
- options: options,
421
- children: next(props)
422
- });
423
- if (props.schemaType.jsonType === "object") return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)((0, $a0f4109b367c6ff0$export$7f9ce1f19dc34df5), {
424
- ...props,
425
- next: next,
426
- subscribeSelectedIds: subscribeSelectedIds
427
- });
428
- return undefined;
410
+ components: {
411
+ // eslint-disable-next-line func-name-matching
412
+ input: function LanguageFilterWrapper(props) {
413
+ const enabled = (0, $f29012bc04d39674$export$fe9baa09973dbf22)(props.schemaType, options);
414
+ // will only be considered enabled for document, so this is only done once
415
+ if (enabled) return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)((0, $bb26db9356030deb$export$f00537e9911d9516), {
416
+ enabled: enabled,
417
+ options: options,
418
+ children: props.renderDefault(props)
419
+ });
420
+ if (props.schemaType.jsonType === "object") return /*#__PURE__*/ (0, $k7rGe$reactjsxruntime.jsx)((0, $a0f4109b367c6ff0$export$7f9ce1f19dc34df5), {
421
+ ...props,
422
+ subscribeSelectedIds: subscribeSelectedIds
423
+ });
424
+ return props.renderDefault(props);
425
+ }
429
426
  }
430
427
  }
431
428
  };
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/index.ts","src/plugin.tsx","src/LanguageFilterObjectInput.tsx","src/filterField.ts","src/LanguageFilterContext.tsx","src/useSelectedLanguageIds.ts","src/LanguageFilterMenuButton.tsx","src/usePaneLanguages.ts","src/languageSubscription.ts"],"sourcesContent":["/**\n * Plugin function\n */\nexport {languageFilter} from './plugin'\n\nexport {defaultFilterField, isLanguageFilterEnabled} from './filterField'\n\nexport type {\n LanguageFilterConfig,\n LanguageFilterSchema,\n LanguageFilterOptions,\n FilterFieldFunction,\n Language,\n} from './types'\n","import React from 'react'\nimport {_DocumentLanguageFilterComponent, createPlugin, ObjectInputProps} from 'sanity'\nimport {LanguageFilterObjectInput} from './LanguageFilterObjectInput'\nimport {LanguageFilterMenuButton} from './LanguageFilterMenuButton'\nimport {LanguageFilterConfig} from './types'\nimport {isLanguageFilterEnabled} from './filterField'\nimport {LanguageFilterProvider} from './LanguageFilterContext'\nimport {createSelectedLanguageIdsBus} from './languageSubscription'\n\n/**\n * ## Usage in sanity.config.ts (or .js)\n *\n * ```\n * import {createConfig} from 'sanity'\n * import {languageFilter} from '@sanity/language-filter'\n *\n * export const createConfig({\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 */\nexport const languageFilter = createPlugin<LanguageFilterConfig>((options) => {\n const {onSelectedIdsChange, subscribeSelectedIds} = createSelectedLanguageIdsBus()\n\n const RenderLanguageFilter: _DocumentLanguageFilterComponent = () => {\n return <LanguageFilterMenuButton options={options} onSelectedIdsChange={onSelectedIdsChange} />\n }\n\n return {\n name: '@sanity/language-filter',\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 renderInput(props, next) {\n const enabled = isLanguageFilterEnabled(props.schemaType, options)\n // will only be considered enabled for document, so this is only done once\n if (enabled) {\n return (\n <LanguageFilterProvider enabled={enabled} options={options}>\n {next(props)}\n </LanguageFilterProvider>\n )\n }\n if (props.schemaType.jsonType === 'object') {\n return (\n <LanguageFilterObjectInput\n {...(props as ObjectInputProps)}\n next={next}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n }\n\n return undefined\n },\n },\n }\n})\n","import React, {useEffect, useMemo} from 'react'\nimport {ObjectInputProps, ObjectMember, RenderInputCallback} from 'sanity'\nimport {LanguageFilterConfig} from './types'\nimport {defaultFilterField} from './filterField'\nimport {useLanguageFilterContext} from './LanguageFilterContext'\nimport {useSelectedLanguageIds} from './useSelectedLanguageIds'\n\nexport type LanguageFilterObjectInputProps = {\n options: LanguageFilterConfig\n next: RenderInputCallback\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n} & ObjectInputProps\n\nexport function LanguageFilterObjectInput(\n props: ObjectInputProps & {\n next: RenderInputCallback\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n }\n) {\n const {options, enabled} = useLanguageFilterContext()\n const {next, subscribeSelectedIds, ...restProps} = props\n if (!enabled || !options) {\n return <>{next(restProps)}</>\n }\n return (\n <FilteredObjectInput\n {...restProps}\n next={next}\n options={options}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n}\n\nfunction FilteredObjectInput(props: LanguageFilterObjectInputProps) {\n const {\n members: membersProp,\n options,\n schemaType,\n next,\n subscribeSelectedIds,\n ...restProps\n } = props\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n useEffect(() => {\n const unsubscribe = subscribeSelectedIds(setSelectedIds)\n return () => unsubscribe()\n }, [subscribeSelectedIds, setSelectedIds])\n\n const activeLanguages = useMemo(\n () => [...(options.defaultLanguages ?? []), ...selectedIds],\n [options.defaultLanguages, selectedIds]\n )\n\n const filterField = options.filterField ?? defaultFilterField\n\n const members: ObjectMember[] = useMemo(() => {\n return membersProp\n .filter((member) => {\n return (\n (member.kind === 'field' && filterField(schemaType, member, activeLanguages)) ||\n member.kind === 'fieldSet'\n )\n })\n .map((member) => {\n if (member.kind === 'fieldSet') {\n return {\n ...member,\n fieldSet: {\n ...member.fieldSet,\n members: member.fieldSet.members.filter((fieldsetMember) => {\n return (\n fieldsetMember.kind === 'field' &&\n filterField(schemaType, fieldsetMember, activeLanguages)\n )\n }),\n },\n }\n }\n return member\n })\n }, [schemaType, membersProp, filterField, activeLanguages])\n\n return <>{next({...restProps, members, schemaType})}</>\n}\n","import type {SchemaType} from 'sanity'\nimport {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 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 React, {createContext, PropsWithChildren, useContext, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterContextValue {\n // eslint-disable-next-line react/require-default-props\n options: LanguageFilterConfig\n // eslint-disable-next-line react/require-default-props\n enabled: boolean\n}\n\nconst LanguageFilterContext = createContext<LanguageFilterContextValue | undefined>(undefined)\n\nexport function LanguageFilterProvider({\n options,\n enabled,\n children,\n}: PropsWithChildren<\n Omit<LanguageFilterContextValue, 'selectedLanguageIds' | 'setSelectedLanguageIds'>\n>) {\n const value = useMemo(() => ({options, enabled}), [options, enabled])\n return <LanguageFilterContext.Provider value={value}>{children}</LanguageFilterContext.Provider>\n}\n\nexport function useLanguageFilterContext() {\n const value = useContext(LanguageFilterContext)\n if (!value) {\n throw new Error('LanguageFilterContext is missing')\n }\n return value\n}\n","import {Language, LanguageFilterConfig} from './types'\nimport {useState} from 'react'\nconst storageKey = '@sanity/plugin/language-filter/selected-languages'\n\nexport function 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 (err) {} // eslint-disable-line no-empty\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 supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id))\n}\n\nexport function useSelectedLanguageIds(\n options: LanguageFilterConfig\n): [string[], (ids: string[]) => void] {\n return useState(() => getPersistedLanguageIds(options))\n}\n","import {Box, Button, Card, Checkbox, Flex, Popover, Stack, Text, useClickOutside} from '@sanity/ui'\nimport React, {FormEvent, useCallback, useState} from 'react'\nimport {usePaneLanguages} from './usePaneLanguages'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterMenuButtonProps {\n options: LanguageFilterConfig\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function LanguageFilterMenuButton(props: LanguageFilterMenuButtonProps) {\n const {options, onSelectedIdsChange} = props\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 options,\n onSelectedIdsChange,\n })\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n\n const handleToggleAll = useCallback(\n (event: FormEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked\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 useClickOutside(handleClickOutside, [button, popover])\n\n const content = (\n <Box overflow=\"auto\" padding={1}>\n {defaultLanguages.length > 0 && (\n <Card radius={2}>\n <Stack padding={2} space={3}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Default language{defaultLanguages.length > 1 && <>s</>}\n </Text>\n </Box>\n\n {defaultLanguages.map((l) => (\n <Text key={l.id}>{l.title}</Text>\n ))}\n </Stack>\n </Card>\n )}\n\n <Stack marginTop={3} padding={2} space={2}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Show translations\n </Text>\n </Box>\n\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={allSelected} name=\"_allSelected\" onChange={handleToggleAll} />\n <Box flex={1}>\n <Text muted={!allSelected} weight=\"semibold\">\n All translations\n </Text>\n </Box>\n </Flex>\n </Card>\n\n {languageOptions.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 langCount = options.supportedLanguages.length\n return (\n <Popover content={content} open={open} portal ref={setPopover}>\n <Button\n text={\n <Flex gap={1}>\n <Box>Filter languages:</Box>\n <Flex gap={1} justify=\"space-around\">\n <Flex\n style={{width: `${Math.floor(Math.log10(langCount) + 1)}ch`}}\n justify=\"flex-end\"\n >\n {activeLanguages.length}\n </Flex>\n <Box>/</Box>\n <Box>{langCount}</Box>\n </Flex>\n </Flex>\n }\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 onToggle: (id: string) => void\n selected: boolean\n title: string\n}) {\n const {id, onToggle, selected, title} = props\n\n const handleChange = useCallback(() => {\n onToggle(id)\n }, [id, onToggle])\n\n return (\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={selected} name={`language-${id}`} onChange={handleChange} />\n <Box flex={1}>\n <Text muted={!selected}>{title}</Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {useCallback, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\nimport {\n getSelectableLanguages,\n persistLanguageIds,\n useSelectedLanguageIds,\n} from './useSelectedLanguageIds'\n\nexport interface UsePaneLanguagesParams {\n options: LanguageFilterConfig\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function usePaneLanguages(props: UsePaneLanguagesParams): {\n activeLanguages: string[]\n allSelected: boolean\n selectAll: () => void\n selectNone: () => void\n toggleLanguage: (languageId: string) => void\n} {\n const {options, onSelectedIdsChange} = props\n const {defaultLanguages} = options\n\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n const selectableLanguages = useMemo(() => getSelectableLanguages(options), [options])\n\n const updateSelectedIds = useCallback(\n (ids: string[]) => {\n setSelectedIds(ids)\n persistLanguageIds(ids)\n onSelectedIdsChange(ids)\n },\n [onSelectedIdsChange, setSelectedIds]\n )\n\n const selectAll = useCallback(\n () => updateSelectedIds(selectableLanguages.map((l) => l.id)),\n [updateSelectedIds, selectableLanguages]\n )\n\n const selectNone = useCallback(() => {\n updateSelectedIds([])\n }, [updateSelectedIds])\n\n const toggleLanguage = useCallback(\n (languageId: string) => {\n let lang = selectedIds\n\n if (lang.includes(languageId)) {\n lang = lang.filter((l) => l !== languageId)\n } else {\n lang = [...lang, languageId]\n }\n\n updateSelectedIds(lang)\n },\n [updateSelectedIds, selectedIds]\n )\n\n const activeLanguages = useMemo(\n () => [...(defaultLanguages ?? []), ...selectedIds],\n [defaultLanguages, selectedIds]\n )\n\n return {\n activeLanguages,\n allSelected: selectedIds.length === selectableLanguages.length,\n selectAll,\n selectNone,\n toggleLanguage,\n }\n}\n","export type LanguageSubscription = (ids: string[]) => void\nexport type Unsubscribe = () => void\nexport type LanguageSubscribe = (subscription: LanguageSubscription) => Unsubscribe\n\nexport interface SelectedLanguageIdsBus {\n onSelectedIdsChange: (ids: string[]) => void\n subscribeSelectedIds: LanguageSubscribe\n}\n\n/**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\nexport function createSelectedLanguageIdsBus(): SelectedLanguageIdsBus {\n const subs: LanguageSubscription[] = []\n\n const onSelectedIdsChange = (ids: string[]) => {\n subs.forEach((s) => s(ids))\n }\n const subscribeSelectedIds = (subscription: LanguageSubscription) => {\n subs.push(subscription)\n return () => {\n subs.splice(subs.indexOf(subscription), 1)\n }\n }\n\n return {\n onSelectedIdsChange,\n subscribeSelectedIds,\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../"}
1
+ {"mappings":"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","sources":["src/index.ts","src/plugin.tsx","src/LanguageFilterObjectInput.tsx","src/filterField.ts","src/LanguageFilterContext.tsx","src/useSelectedLanguageIds.ts","src/LanguageFilterMenuButton.tsx","src/usePaneLanguages.ts","src/languageSubscription.ts"],"sourcesContent":["/**\n * Plugin function\n */\nexport {languageFilter} from './plugin'\n\nexport {defaultFilterField, isLanguageFilterEnabled} from './filterField'\n\nexport type {\n LanguageFilterConfig,\n LanguageFilterSchema,\n LanguageFilterOptions,\n FilterFieldFunction,\n Language,\n} from './types'\n","import React from 'react'\nimport {createPlugin, DocumentLanguageFilterComponent, ObjectInputProps} from 'sanity'\nimport {LanguageFilterObjectInput} from './LanguageFilterObjectInput'\nimport {LanguageFilterMenuButton} from './LanguageFilterMenuButton'\nimport {LanguageFilterConfig} from './types'\nimport {isLanguageFilterEnabled} from './filterField'\nimport {LanguageFilterProvider} from './LanguageFilterContext'\nimport {createSelectedLanguageIdsBus} from './languageSubscription'\n\n/**\n * ## Usage in sanity.config.ts (or .js)\n *\n * ```\n * import {createConfig} from 'sanity'\n * import {languageFilter} from '@sanity/language-filter'\n *\n * export const createConfig({\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 */\nexport const languageFilter = createPlugin<LanguageFilterConfig>((options) => {\n const {onSelectedIdsChange, subscribeSelectedIds} = createSelectedLanguageIdsBus()\n\n const RenderLanguageFilter: DocumentLanguageFilterComponent = () => {\n return <LanguageFilterMenuButton options={options} onSelectedIdsChange={onSelectedIdsChange} />\n }\n\n return {\n name: '@sanity/language-filter',\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 // eslint-disable-next-line func-name-matching\n input: function LanguageFilterWrapper(props) {\n const enabled = isLanguageFilterEnabled(props.schemaType, options)\n // will only be considered enabled for document, so this is only done once\n if (enabled) {\n return (\n <LanguageFilterProvider enabled={enabled} options={options}>\n {props.renderDefault(props)}\n </LanguageFilterProvider>\n )\n }\n if (props.schemaType.jsonType === 'object') {\n return (\n <LanguageFilterObjectInput\n {...(props as ObjectInputProps)}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n }\n\n return props.renderDefault(props)\n },\n },\n },\n }\n})\n","import React, {useEffect, useMemo} from 'react'\nimport {ObjectInputProps, ObjectMember} from 'sanity'\nimport {LanguageFilterConfig} from './types'\nimport {defaultFilterField} from './filterField'\nimport {useLanguageFilterContext} from './LanguageFilterContext'\nimport {useSelectedLanguageIds} from './useSelectedLanguageIds'\n\nexport type LanguageFilterObjectInputProps = {\n options: LanguageFilterConfig\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n} & ObjectInputProps\n\nexport function LanguageFilterObjectInput(\n props: ObjectInputProps & {\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n }\n) {\n const context = useLanguageFilterContext()\n const {options, enabled} = context || {}\n const {subscribeSelectedIds, ...restProps} = props\n if (!enabled || !options) {\n return props.renderDefault(restProps)\n }\n return (\n <FilteredObjectInput\n {...restProps}\n options={options}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n}\n\nfunction FilteredObjectInput(props: LanguageFilterObjectInputProps) {\n const {\n members: membersProp,\n options,\n schemaType,\n renderDefault,\n subscribeSelectedIds,\n ...restProps\n } = props\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n useEffect(() => {\n const unsubscribe = subscribeSelectedIds(setSelectedIds)\n return () => unsubscribe()\n }, [subscribeSelectedIds, setSelectedIds])\n\n const activeLanguages = useMemo(\n () => [...(options.defaultLanguages ?? []), ...selectedIds],\n [options.defaultLanguages, selectedIds]\n )\n\n const filterField = options.filterField ?? defaultFilterField\n\n const members: ObjectMember[] = useMemo(() => {\n return membersProp\n .filter((member) => {\n return (\n (member.kind === 'field' && filterField(schemaType, member, activeLanguages)) ||\n member.kind === 'fieldSet'\n )\n })\n .map((member) => {\n if (member.kind === 'fieldSet') {\n return {\n ...member,\n fieldSet: {\n ...member.fieldSet,\n members: member.fieldSet.members.filter((fieldsetMember) => {\n return (\n fieldsetMember.kind === 'field' &&\n filterField(schemaType, fieldsetMember, activeLanguages)\n )\n }),\n },\n }\n }\n return member\n })\n }, [schemaType, membersProp, filterField, activeLanguages])\n\n return renderDefault({...restProps, members, schemaType, renderDefault})\n}\n","import type {SchemaType} from 'sanity'\nimport {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 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 React, {createContext, PropsWithChildren, useContext, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterContextValue {\n // eslint-disable-next-line react/require-default-props\n options: LanguageFilterConfig\n // eslint-disable-next-line react/require-default-props\n enabled: boolean\n}\n\nconst LanguageFilterContext = createContext<LanguageFilterContextValue | undefined>(undefined)\n\nexport function LanguageFilterProvider({\n options,\n enabled,\n children,\n}: PropsWithChildren<\n Omit<LanguageFilterContextValue, 'selectedLanguageIds' | 'setSelectedLanguageIds'>\n>) {\n const value = useMemo(() => ({options, enabled}), [options, enabled])\n return <LanguageFilterContext.Provider value={value}>{children}</LanguageFilterContext.Provider>\n}\n\nexport function useLanguageFilterContext() {\n return useContext(LanguageFilterContext)\n}\n","import {Language, LanguageFilterConfig} from './types'\nimport {useState} from 'react'\nconst storageKey = '@sanity/plugin/language-filter/selected-languages'\n\nexport function 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 (err) {} // eslint-disable-line no-empty\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 supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id))\n}\n\nexport function useSelectedLanguageIds(\n options: LanguageFilterConfig\n): [string[], (ids: string[]) => void] {\n return useState(() => getPersistedLanguageIds(options))\n}\n","import {Box, Button, Card, Checkbox, Flex, Popover, Stack, Text, useClickOutside} from '@sanity/ui'\nimport React, {FormEvent, useCallback, useState} from 'react'\nimport {usePaneLanguages} from './usePaneLanguages'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterMenuButtonProps {\n options: LanguageFilterConfig\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function LanguageFilterMenuButton(props: LanguageFilterMenuButtonProps) {\n const {options, onSelectedIdsChange} = props\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 options,\n onSelectedIdsChange,\n })\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n\n const handleToggleAll = useCallback(\n (event: FormEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked\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 useClickOutside(handleClickOutside, [button, popover])\n\n const content = (\n <Box overflow=\"auto\" padding={1}>\n {defaultLanguages.length > 0 && (\n <Card radius={2}>\n <Stack padding={2} space={3}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Default language{defaultLanguages.length > 1 && <>s</>}\n </Text>\n </Box>\n\n {defaultLanguages.map((l) => (\n <Text key={l.id}>{l.title}</Text>\n ))}\n </Stack>\n </Card>\n )}\n\n <Stack marginTop={3} padding={2} space={2}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Show translations\n </Text>\n </Box>\n\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={allSelected} name=\"_allSelected\" onChange={handleToggleAll} />\n <Box flex={1}>\n <Text muted={!allSelected} weight=\"semibold\">\n All translations\n </Text>\n </Box>\n </Flex>\n </Card>\n\n {languageOptions.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 langCount = options.supportedLanguages.length\n return (\n <Popover content={content} open={open} portal ref={setPopover}>\n <Button\n text={\n <Flex gap={1}>\n <Box>Filter languages:</Box>\n <Flex gap={1} justify=\"space-around\">\n <Flex\n style={{width: `${Math.floor(Math.log10(langCount) + 1)}ch`}}\n justify=\"flex-end\"\n >\n {activeLanguages.length}\n </Flex>\n <Box>/</Box>\n <Box>{langCount}</Box>\n </Flex>\n </Flex>\n }\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 onToggle: (id: string) => void\n selected: boolean\n title: string\n}) {\n const {id, onToggle, selected, title} = props\n\n const handleChange = useCallback(() => {\n onToggle(id)\n }, [id, onToggle])\n\n return (\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={selected} name={`language-${id}`} onChange={handleChange} />\n <Box flex={1}>\n <Text muted={!selected}>{title}</Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {useCallback, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\nimport {\n getSelectableLanguages,\n persistLanguageIds,\n useSelectedLanguageIds,\n} from './useSelectedLanguageIds'\n\nexport interface UsePaneLanguagesParams {\n options: LanguageFilterConfig\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function usePaneLanguages(props: UsePaneLanguagesParams): {\n activeLanguages: string[]\n allSelected: boolean\n selectAll: () => void\n selectNone: () => void\n toggleLanguage: (languageId: string) => void\n} {\n const {options, onSelectedIdsChange} = props\n const {defaultLanguages} = options\n\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n const selectableLanguages = useMemo(() => getSelectableLanguages(options), [options])\n\n const updateSelectedIds = useCallback(\n (ids: string[]) => {\n setSelectedIds(ids)\n persistLanguageIds(ids)\n onSelectedIdsChange(ids)\n },\n [onSelectedIdsChange, setSelectedIds]\n )\n\n const selectAll = useCallback(\n () => updateSelectedIds(selectableLanguages.map((l) => l.id)),\n [updateSelectedIds, selectableLanguages]\n )\n\n const selectNone = useCallback(() => {\n updateSelectedIds([])\n }, [updateSelectedIds])\n\n const toggleLanguage = useCallback(\n (languageId: string) => {\n let lang = selectedIds\n\n if (lang.includes(languageId)) {\n lang = lang.filter((l) => l !== languageId)\n } else {\n lang = [...lang, languageId]\n }\n\n updateSelectedIds(lang)\n },\n [updateSelectedIds, selectedIds]\n )\n\n const activeLanguages = useMemo(\n () => [...(defaultLanguages ?? []), ...selectedIds],\n [defaultLanguages, selectedIds]\n )\n\n return {\n activeLanguages,\n allSelected: selectedIds.length === selectableLanguages.length,\n selectAll,\n selectNone,\n toggleLanguage,\n }\n}\n","export type LanguageSubscription = (ids: string[]) => void\nexport type Unsubscribe = () => void\nexport type LanguageSubscribe = (subscription: LanguageSubscription) => Unsubscribe\n\nexport interface SelectedLanguageIdsBus {\n onSelectedIdsChange: (ids: string[]) => void\n subscribeSelectedIds: LanguageSubscribe\n}\n\n/**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\nexport function createSelectedLanguageIdsBus(): SelectedLanguageIdsBus {\n const subs: LanguageSubscription[] = []\n\n const onSelectedIdsChange = (ids: string[]) => {\n subs.forEach((s) => s(ids))\n }\n const subscribeSelectedIds = (subscription: LanguageSubscription) => {\n subs.push(subscription)\n return () => {\n subs.splice(subs.indexOf(subscription), 1)\n }\n }\n\n return {\n onSelectedIdsChange,\n subscribeSelectedIds,\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../"}
package/lib/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import {jsx as $gGrEF$jsx, Fragment as $gGrEF$Fragment, jsxs as $gGrEF$jsxs} from "react/jsx-runtime";
1
+ import {jsx as $gGrEF$jsx, jsxs as $gGrEF$jsxs, Fragment as $gGrEF$Fragment} from "react/jsx-runtime";
2
2
  import {useEffect as $gGrEF$useEffect, useMemo as $gGrEF$useMemo, createContext as $gGrEF$createContext, useContext as $gGrEF$useContext, useState as $gGrEF$useState, useCallback as $gGrEF$useCallback} from "react";
3
3
  import {createPlugin as $gGrEF$createPlugin} from "sanity";
4
4
  import {useClickOutside as $gGrEF$useClickOutside, Box as $gGrEF$Box, Card as $gGrEF$Card, Stack as $gGrEF$Stack, Text as $gGrEF$Text, Flex as $gGrEF$Flex, Checkbox as $gGrEF$Checkbox, Popover as $gGrEF$Popover, Button as $gGrEF$Button} from "@sanity/ui";
@@ -40,9 +40,7 @@ function $8e787dd57b4fe32f$export$f00537e9911d9516({ options: options , enabled:
40
40
  });
41
41
  }
42
42
  function $8e787dd57b4fe32f$export$d5c74ca916607f46() {
43
- const value = (0, $gGrEF$useContext)($8e787dd57b4fe32f$var$LanguageFilterContext);
44
- if (!value) throw new Error("LanguageFilterContext is missing");
45
- return value;
43
+ return (0, $gGrEF$useContext)($8e787dd57b4fe32f$var$LanguageFilterContext);
46
44
  }
47
45
 
48
46
 
@@ -74,20 +72,18 @@ function $90af43ca884ccacd$export$b484a630b97f9ca3(options) {
74
72
 
75
73
 
76
74
  function $f69da2f7cb45fe3f$export$7f9ce1f19dc34df5(props) {
77
- const { options: options , enabled: enabled } = (0, $8e787dd57b4fe32f$export$d5c74ca916607f46)();
78
- const { next: next , subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
79
- if (!enabled || !options) return /*#__PURE__*/ (0, $gGrEF$jsx)((0, $gGrEF$Fragment), {
80
- children: next(restProps)
81
- });
75
+ const context = (0, $8e787dd57b4fe32f$export$d5c74ca916607f46)();
76
+ const { options: options , enabled: enabled } = context || {};
77
+ const { subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
78
+ if (!enabled || !options) return props.renderDefault(restProps);
82
79
  return /*#__PURE__*/ (0, $gGrEF$jsx)($f69da2f7cb45fe3f$var$FilteredObjectInput, {
83
80
  ...restProps,
84
- next: next,
85
81
  options: options,
86
82
  subscribeSelectedIds: subscribeSelectedIds
87
83
  });
88
84
  }
89
85
  function $f69da2f7cb45fe3f$var$FilteredObjectInput(props) {
90
- const { members: membersProp , options: options , schemaType: schemaType , next: next , subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
86
+ const { members: membersProp , options: options , schemaType: schemaType , renderDefault: renderDefault , subscribeSelectedIds: subscribeSelectedIds , ...restProps } = props;
91
87
  const [selectedIds, setSelectedIds] = (0, $90af43ca884ccacd$export$b484a630b97f9ca3)(options);
92
88
  (0, $gGrEF$useEffect)(()=>{
93
89
  const unsubscribe = subscribeSelectedIds(setSelectedIds);
@@ -125,12 +121,11 @@ function $f69da2f7cb45fe3f$var$FilteredObjectInput(props) {
125
121
  filterField,
126
122
  activeLanguages
127
123
  ]);
128
- return /*#__PURE__*/ (0, $gGrEF$jsx)((0, $gGrEF$Fragment), {
129
- children: next({
130
- ...restProps,
131
- members: members,
132
- schemaType: schemaType
133
- })
124
+ return renderDefault({
125
+ ...restProps,
126
+ members: members,
127
+ schemaType: schemaType,
128
+ renderDefault: renderDefault
134
129
  });
135
130
  }
136
131
 
@@ -405,20 +400,22 @@ const $91a08798d183e77b$export$bae498c4212cce68 = (0, $gGrEF$createPlugin)((opti
405
400
  }
406
401
  },
407
402
  form: {
408
- renderInput (props, next) {
409
- const enabled = (0, $40fa05cab0bde0d4$export$fe9baa09973dbf22)(props.schemaType, options);
410
- // will only be considered enabled for document, so this is only done once
411
- if (enabled) return /*#__PURE__*/ (0, $gGrEF$jsx)((0, $8e787dd57b4fe32f$export$f00537e9911d9516), {
412
- enabled: enabled,
413
- options: options,
414
- children: next(props)
415
- });
416
- if (props.schemaType.jsonType === "object") return /*#__PURE__*/ (0, $gGrEF$jsx)((0, $f69da2f7cb45fe3f$export$7f9ce1f19dc34df5), {
417
- ...props,
418
- next: next,
419
- subscribeSelectedIds: subscribeSelectedIds
420
- });
421
- return undefined;
403
+ components: {
404
+ // eslint-disable-next-line func-name-matching
405
+ input: function LanguageFilterWrapper(props) {
406
+ const enabled = (0, $40fa05cab0bde0d4$export$fe9baa09973dbf22)(props.schemaType, options);
407
+ // will only be considered enabled for document, so this is only done once
408
+ if (enabled) return /*#__PURE__*/ (0, $gGrEF$jsx)((0, $8e787dd57b4fe32f$export$f00537e9911d9516), {
409
+ enabled: enabled,
410
+ options: options,
411
+ children: props.renderDefault(props)
412
+ });
413
+ if (props.schemaType.jsonType === "object") return /*#__PURE__*/ (0, $gGrEF$jsx)((0, $f69da2f7cb45fe3f$export$7f9ce1f19dc34df5), {
414
+ ...props,
415
+ subscribeSelectedIds: subscribeSelectedIds
416
+ });
417
+ return props.renderDefault(props);
418
+ }
422
419
  }
423
420
  }
424
421
  };
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/index.ts","src/plugin.tsx","src/LanguageFilterObjectInput.tsx","src/filterField.ts","src/LanguageFilterContext.tsx","src/useSelectedLanguageIds.ts","src/LanguageFilterMenuButton.tsx","src/usePaneLanguages.ts","src/languageSubscription.ts"],"sourcesContent":["/**\n * Plugin function\n */\nexport {languageFilter} from './plugin'\n\nexport {defaultFilterField, isLanguageFilterEnabled} from './filterField'\n\nexport type {\n LanguageFilterConfig,\n LanguageFilterSchema,\n LanguageFilterOptions,\n FilterFieldFunction,\n Language,\n} from './types'\n","import React from 'react'\nimport {_DocumentLanguageFilterComponent, createPlugin, ObjectInputProps} from 'sanity'\nimport {LanguageFilterObjectInput} from './LanguageFilterObjectInput'\nimport {LanguageFilterMenuButton} from './LanguageFilterMenuButton'\nimport {LanguageFilterConfig} from './types'\nimport {isLanguageFilterEnabled} from './filterField'\nimport {LanguageFilterProvider} from './LanguageFilterContext'\nimport {createSelectedLanguageIdsBus} from './languageSubscription'\n\n/**\n * ## Usage in sanity.config.ts (or .js)\n *\n * ```\n * import {createConfig} from 'sanity'\n * import {languageFilter} from '@sanity/language-filter'\n *\n * export const createConfig({\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 */\nexport const languageFilter = createPlugin<LanguageFilterConfig>((options) => {\n const {onSelectedIdsChange, subscribeSelectedIds} = createSelectedLanguageIdsBus()\n\n const RenderLanguageFilter: _DocumentLanguageFilterComponent = () => {\n return <LanguageFilterMenuButton options={options} onSelectedIdsChange={onSelectedIdsChange} />\n }\n\n return {\n name: '@sanity/language-filter',\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 renderInput(props, next) {\n const enabled = isLanguageFilterEnabled(props.schemaType, options)\n // will only be considered enabled for document, so this is only done once\n if (enabled) {\n return (\n <LanguageFilterProvider enabled={enabled} options={options}>\n {next(props)}\n </LanguageFilterProvider>\n )\n }\n if (props.schemaType.jsonType === 'object') {\n return (\n <LanguageFilterObjectInput\n {...(props as ObjectInputProps)}\n next={next}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n }\n\n return undefined\n },\n },\n }\n})\n","import React, {useEffect, useMemo} from 'react'\nimport {ObjectInputProps, ObjectMember, RenderInputCallback} from 'sanity'\nimport {LanguageFilterConfig} from './types'\nimport {defaultFilterField} from './filterField'\nimport {useLanguageFilterContext} from './LanguageFilterContext'\nimport {useSelectedLanguageIds} from './useSelectedLanguageIds'\n\nexport type LanguageFilterObjectInputProps = {\n options: LanguageFilterConfig\n next: RenderInputCallback\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n} & ObjectInputProps\n\nexport function LanguageFilterObjectInput(\n props: ObjectInputProps & {\n next: RenderInputCallback\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n }\n) {\n const {options, enabled} = useLanguageFilterContext()\n const {next, subscribeSelectedIds, ...restProps} = props\n if (!enabled || !options) {\n return <>{next(restProps)}</>\n }\n return (\n <FilteredObjectInput\n {...restProps}\n next={next}\n options={options}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n}\n\nfunction FilteredObjectInput(props: LanguageFilterObjectInputProps) {\n const {\n members: membersProp,\n options,\n schemaType,\n next,\n subscribeSelectedIds,\n ...restProps\n } = props\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n useEffect(() => {\n const unsubscribe = subscribeSelectedIds(setSelectedIds)\n return () => unsubscribe()\n }, [subscribeSelectedIds, setSelectedIds])\n\n const activeLanguages = useMemo(\n () => [...(options.defaultLanguages ?? []), ...selectedIds],\n [options.defaultLanguages, selectedIds]\n )\n\n const filterField = options.filterField ?? defaultFilterField\n\n const members: ObjectMember[] = useMemo(() => {\n return membersProp\n .filter((member) => {\n return (\n (member.kind === 'field' && filterField(schemaType, member, activeLanguages)) ||\n member.kind === 'fieldSet'\n )\n })\n .map((member) => {\n if (member.kind === 'fieldSet') {\n return {\n ...member,\n fieldSet: {\n ...member.fieldSet,\n members: member.fieldSet.members.filter((fieldsetMember) => {\n return (\n fieldsetMember.kind === 'field' &&\n filterField(schemaType, fieldsetMember, activeLanguages)\n )\n }),\n },\n }\n }\n return member\n })\n }, [schemaType, membersProp, filterField, activeLanguages])\n\n return <>{next({...restProps, members, schemaType})}</>\n}\n","import type {SchemaType} from 'sanity'\nimport {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 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 React, {createContext, PropsWithChildren, useContext, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterContextValue {\n // eslint-disable-next-line react/require-default-props\n options: LanguageFilterConfig\n // eslint-disable-next-line react/require-default-props\n enabled: boolean\n}\n\nconst LanguageFilterContext = createContext<LanguageFilterContextValue | undefined>(undefined)\n\nexport function LanguageFilterProvider({\n options,\n enabled,\n children,\n}: PropsWithChildren<\n Omit<LanguageFilterContextValue, 'selectedLanguageIds' | 'setSelectedLanguageIds'>\n>) {\n const value = useMemo(() => ({options, enabled}), [options, enabled])\n return <LanguageFilterContext.Provider value={value}>{children}</LanguageFilterContext.Provider>\n}\n\nexport function useLanguageFilterContext() {\n const value = useContext(LanguageFilterContext)\n if (!value) {\n throw new Error('LanguageFilterContext is missing')\n }\n return value\n}\n","import {Language, LanguageFilterConfig} from './types'\nimport {useState} from 'react'\nconst storageKey = '@sanity/plugin/language-filter/selected-languages'\n\nexport function 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 (err) {} // eslint-disable-line no-empty\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 supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id))\n}\n\nexport function useSelectedLanguageIds(\n options: LanguageFilterConfig\n): [string[], (ids: string[]) => void] {\n return useState(() => getPersistedLanguageIds(options))\n}\n","import {Box, Button, Card, Checkbox, Flex, Popover, Stack, Text, useClickOutside} from '@sanity/ui'\nimport React, {FormEvent, useCallback, useState} from 'react'\nimport {usePaneLanguages} from './usePaneLanguages'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterMenuButtonProps {\n options: LanguageFilterConfig\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function LanguageFilterMenuButton(props: LanguageFilterMenuButtonProps) {\n const {options, onSelectedIdsChange} = props\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 options,\n onSelectedIdsChange,\n })\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n\n const handleToggleAll = useCallback(\n (event: FormEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked\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 useClickOutside(handleClickOutside, [button, popover])\n\n const content = (\n <Box overflow=\"auto\" padding={1}>\n {defaultLanguages.length > 0 && (\n <Card radius={2}>\n <Stack padding={2} space={3}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Default language{defaultLanguages.length > 1 && <>s</>}\n </Text>\n </Box>\n\n {defaultLanguages.map((l) => (\n <Text key={l.id}>{l.title}</Text>\n ))}\n </Stack>\n </Card>\n )}\n\n <Stack marginTop={3} padding={2} space={2}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Show translations\n </Text>\n </Box>\n\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={allSelected} name=\"_allSelected\" onChange={handleToggleAll} />\n <Box flex={1}>\n <Text muted={!allSelected} weight=\"semibold\">\n All translations\n </Text>\n </Box>\n </Flex>\n </Card>\n\n {languageOptions.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 langCount = options.supportedLanguages.length\n return (\n <Popover content={content} open={open} portal ref={setPopover}>\n <Button\n text={\n <Flex gap={1}>\n <Box>Filter languages:</Box>\n <Flex gap={1} justify=\"space-around\">\n <Flex\n style={{width: `${Math.floor(Math.log10(langCount) + 1)}ch`}}\n justify=\"flex-end\"\n >\n {activeLanguages.length}\n </Flex>\n <Box>/</Box>\n <Box>{langCount}</Box>\n </Flex>\n </Flex>\n }\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 onToggle: (id: string) => void\n selected: boolean\n title: string\n}) {\n const {id, onToggle, selected, title} = props\n\n const handleChange = useCallback(() => {\n onToggle(id)\n }, [id, onToggle])\n\n return (\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={selected} name={`language-${id}`} onChange={handleChange} />\n <Box flex={1}>\n <Text muted={!selected}>{title}</Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {useCallback, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\nimport {\n getSelectableLanguages,\n persistLanguageIds,\n useSelectedLanguageIds,\n} from './useSelectedLanguageIds'\n\nexport interface UsePaneLanguagesParams {\n options: LanguageFilterConfig\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function usePaneLanguages(props: UsePaneLanguagesParams): {\n activeLanguages: string[]\n allSelected: boolean\n selectAll: () => void\n selectNone: () => void\n toggleLanguage: (languageId: string) => void\n} {\n const {options, onSelectedIdsChange} = props\n const {defaultLanguages} = options\n\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n const selectableLanguages = useMemo(() => getSelectableLanguages(options), [options])\n\n const updateSelectedIds = useCallback(\n (ids: string[]) => {\n setSelectedIds(ids)\n persistLanguageIds(ids)\n onSelectedIdsChange(ids)\n },\n [onSelectedIdsChange, setSelectedIds]\n )\n\n const selectAll = useCallback(\n () => updateSelectedIds(selectableLanguages.map((l) => l.id)),\n [updateSelectedIds, selectableLanguages]\n )\n\n const selectNone = useCallback(() => {\n updateSelectedIds([])\n }, [updateSelectedIds])\n\n const toggleLanguage = useCallback(\n (languageId: string) => {\n let lang = selectedIds\n\n if (lang.includes(languageId)) {\n lang = lang.filter((l) => l !== languageId)\n } else {\n lang = [...lang, languageId]\n }\n\n updateSelectedIds(lang)\n },\n [updateSelectedIds, selectedIds]\n )\n\n const activeLanguages = useMemo(\n () => [...(defaultLanguages ?? []), ...selectedIds],\n [defaultLanguages, selectedIds]\n )\n\n return {\n activeLanguages,\n allSelected: selectedIds.length === selectableLanguages.length,\n selectAll,\n selectNone,\n toggleLanguage,\n }\n}\n","export type LanguageSubscription = (ids: string[]) => void\nexport type Unsubscribe = () => void\nexport type LanguageSubscribe = (subscription: LanguageSubscription) => Unsubscribe\n\nexport interface SelectedLanguageIdsBus {\n onSelectedIdsChange: (ids: string[]) => void\n subscribeSelectedIds: LanguageSubscribe\n}\n\n/**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\nexport function createSelectedLanguageIdsBus(): SelectedLanguageIdsBus {\n const subs: LanguageSubscription[] = []\n\n const onSelectedIdsChange = (ids: string[]) => {\n subs.forEach((s) => s(ids))\n }\n const subscribeSelectedIds = (subscription: LanguageSubscription) => {\n subs.push(subscription)\n return () => {\n subs.splice(subs.indexOf(subscription), 1)\n }\n }\n\n return {\n onSelectedIdsChange,\n subscribeSelectedIds,\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../"}
1
+ {"mappings":"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","sources":["src/index.ts","src/plugin.tsx","src/LanguageFilterObjectInput.tsx","src/filterField.ts","src/LanguageFilterContext.tsx","src/useSelectedLanguageIds.ts","src/LanguageFilterMenuButton.tsx","src/usePaneLanguages.ts","src/languageSubscription.ts"],"sourcesContent":["/**\n * Plugin function\n */\nexport {languageFilter} from './plugin'\n\nexport {defaultFilterField, isLanguageFilterEnabled} from './filterField'\n\nexport type {\n LanguageFilterConfig,\n LanguageFilterSchema,\n LanguageFilterOptions,\n FilterFieldFunction,\n Language,\n} from './types'\n","import React from 'react'\nimport {createPlugin, DocumentLanguageFilterComponent, ObjectInputProps} from 'sanity'\nimport {LanguageFilterObjectInput} from './LanguageFilterObjectInput'\nimport {LanguageFilterMenuButton} from './LanguageFilterMenuButton'\nimport {LanguageFilterConfig} from './types'\nimport {isLanguageFilterEnabled} from './filterField'\nimport {LanguageFilterProvider} from './LanguageFilterContext'\nimport {createSelectedLanguageIdsBus} from './languageSubscription'\n\n/**\n * ## Usage in sanity.config.ts (or .js)\n *\n * ```\n * import {createConfig} from 'sanity'\n * import {languageFilter} from '@sanity/language-filter'\n *\n * export const createConfig({\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 */\nexport const languageFilter = createPlugin<LanguageFilterConfig>((options) => {\n const {onSelectedIdsChange, subscribeSelectedIds} = createSelectedLanguageIdsBus()\n\n const RenderLanguageFilter: DocumentLanguageFilterComponent = () => {\n return <LanguageFilterMenuButton options={options} onSelectedIdsChange={onSelectedIdsChange} />\n }\n\n return {\n name: '@sanity/language-filter',\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 // eslint-disable-next-line func-name-matching\n input: function LanguageFilterWrapper(props) {\n const enabled = isLanguageFilterEnabled(props.schemaType, options)\n // will only be considered enabled for document, so this is only done once\n if (enabled) {\n return (\n <LanguageFilterProvider enabled={enabled} options={options}>\n {props.renderDefault(props)}\n </LanguageFilterProvider>\n )\n }\n if (props.schemaType.jsonType === 'object') {\n return (\n <LanguageFilterObjectInput\n {...(props as ObjectInputProps)}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n }\n\n return props.renderDefault(props)\n },\n },\n },\n }\n})\n","import React, {useEffect, useMemo} from 'react'\nimport {ObjectInputProps, ObjectMember} from 'sanity'\nimport {LanguageFilterConfig} from './types'\nimport {defaultFilterField} from './filterField'\nimport {useLanguageFilterContext} from './LanguageFilterContext'\nimport {useSelectedLanguageIds} from './useSelectedLanguageIds'\n\nexport type LanguageFilterObjectInputProps = {\n options: LanguageFilterConfig\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n} & ObjectInputProps\n\nexport function LanguageFilterObjectInput(\n props: ObjectInputProps & {\n subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void\n }\n) {\n const context = useLanguageFilterContext()\n const {options, enabled} = context || {}\n const {subscribeSelectedIds, ...restProps} = props\n if (!enabled || !options) {\n return props.renderDefault(restProps)\n }\n return (\n <FilteredObjectInput\n {...restProps}\n options={options}\n subscribeSelectedIds={subscribeSelectedIds}\n />\n )\n}\n\nfunction FilteredObjectInput(props: LanguageFilterObjectInputProps) {\n const {\n members: membersProp,\n options,\n schemaType,\n renderDefault,\n subscribeSelectedIds,\n ...restProps\n } = props\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n useEffect(() => {\n const unsubscribe = subscribeSelectedIds(setSelectedIds)\n return () => unsubscribe()\n }, [subscribeSelectedIds, setSelectedIds])\n\n const activeLanguages = useMemo(\n () => [...(options.defaultLanguages ?? []), ...selectedIds],\n [options.defaultLanguages, selectedIds]\n )\n\n const filterField = options.filterField ?? defaultFilterField\n\n const members: ObjectMember[] = useMemo(() => {\n return membersProp\n .filter((member) => {\n return (\n (member.kind === 'field' && filterField(schemaType, member, activeLanguages)) ||\n member.kind === 'fieldSet'\n )\n })\n .map((member) => {\n if (member.kind === 'fieldSet') {\n return {\n ...member,\n fieldSet: {\n ...member.fieldSet,\n members: member.fieldSet.members.filter((fieldsetMember) => {\n return (\n fieldsetMember.kind === 'field' &&\n filterField(schemaType, fieldsetMember, activeLanguages)\n )\n }),\n },\n }\n }\n return member\n })\n }, [schemaType, membersProp, filterField, activeLanguages])\n\n return renderDefault({...restProps, members, schemaType, renderDefault})\n}\n","import type {SchemaType} from 'sanity'\nimport {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 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 React, {createContext, PropsWithChildren, useContext, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterContextValue {\n // eslint-disable-next-line react/require-default-props\n options: LanguageFilterConfig\n // eslint-disable-next-line react/require-default-props\n enabled: boolean\n}\n\nconst LanguageFilterContext = createContext<LanguageFilterContextValue | undefined>(undefined)\n\nexport function LanguageFilterProvider({\n options,\n enabled,\n children,\n}: PropsWithChildren<\n Omit<LanguageFilterContextValue, 'selectedLanguageIds' | 'setSelectedLanguageIds'>\n>) {\n const value = useMemo(() => ({options, enabled}), [options, enabled])\n return <LanguageFilterContext.Provider value={value}>{children}</LanguageFilterContext.Provider>\n}\n\nexport function useLanguageFilterContext() {\n return useContext(LanguageFilterContext)\n}\n","import {Language, LanguageFilterConfig} from './types'\nimport {useState} from 'react'\nconst storageKey = '@sanity/plugin/language-filter/selected-languages'\n\nexport function 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 (err) {} // eslint-disable-line no-empty\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 supportedLanguages.filter((lang) => !defaultLanguages?.includes(lang.id))\n}\n\nexport function useSelectedLanguageIds(\n options: LanguageFilterConfig\n): [string[], (ids: string[]) => void] {\n return useState(() => getPersistedLanguageIds(options))\n}\n","import {Box, Button, Card, Checkbox, Flex, Popover, Stack, Text, useClickOutside} from '@sanity/ui'\nimport React, {FormEvent, useCallback, useState} from 'react'\nimport {usePaneLanguages} from './usePaneLanguages'\nimport {LanguageFilterConfig} from './types'\n\nexport interface LanguageFilterMenuButtonProps {\n options: LanguageFilterConfig\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function LanguageFilterMenuButton(props: LanguageFilterMenuButtonProps) {\n const {options, onSelectedIdsChange} = props\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 options,\n onSelectedIdsChange,\n })\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n\n const handleToggleAll = useCallback(\n (event: FormEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked\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 useClickOutside(handleClickOutside, [button, popover])\n\n const content = (\n <Box overflow=\"auto\" padding={1}>\n {defaultLanguages.length > 0 && (\n <Card radius={2}>\n <Stack padding={2} space={3}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Default language{defaultLanguages.length > 1 && <>s</>}\n </Text>\n </Box>\n\n {defaultLanguages.map((l) => (\n <Text key={l.id}>{l.title}</Text>\n ))}\n </Stack>\n </Card>\n )}\n\n <Stack marginTop={3} padding={2} space={2}>\n <Box paddingBottom={2}>\n <Text size={1} weight=\"semibold\">\n Show translations\n </Text>\n </Box>\n\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={allSelected} name=\"_allSelected\" onChange={handleToggleAll} />\n <Box flex={1}>\n <Text muted={!allSelected} weight=\"semibold\">\n All translations\n </Text>\n </Box>\n </Flex>\n </Card>\n\n {languageOptions.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 langCount = options.supportedLanguages.length\n return (\n <Popover content={content} open={open} portal ref={setPopover}>\n <Button\n text={\n <Flex gap={1}>\n <Box>Filter languages:</Box>\n <Flex gap={1} justify=\"space-around\">\n <Flex\n style={{width: `${Math.floor(Math.log10(langCount) + 1)}ch`}}\n justify=\"flex-end\"\n >\n {activeLanguages.length}\n </Flex>\n <Box>/</Box>\n <Box>{langCount}</Box>\n </Flex>\n </Flex>\n }\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 onToggle: (id: string) => void\n selected: boolean\n title: string\n}) {\n const {id, onToggle, selected, title} = props\n\n const handleChange = useCallback(() => {\n onToggle(id)\n }, [id, onToggle])\n\n return (\n <Card as=\"label\">\n <Flex align=\"center\" gap={2}>\n <Checkbox checked={selected} name={`language-${id}`} onChange={handleChange} />\n <Box flex={1}>\n <Text muted={!selected}>{title}</Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {useCallback, useMemo} from 'react'\nimport {LanguageFilterConfig} from './types'\nimport {\n getSelectableLanguages,\n persistLanguageIds,\n useSelectedLanguageIds,\n} from './useSelectedLanguageIds'\n\nexport interface UsePaneLanguagesParams {\n options: LanguageFilterConfig\n /**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\n onSelectedIdsChange: (ids: string[]) => void\n}\n\nexport function usePaneLanguages(props: UsePaneLanguagesParams): {\n activeLanguages: string[]\n allSelected: boolean\n selectAll: () => void\n selectNone: () => void\n toggleLanguage: (languageId: string) => void\n} {\n const {options, onSelectedIdsChange} = props\n const {defaultLanguages} = options\n\n const [selectedIds, setSelectedIds] = useSelectedLanguageIds(options)\n\n const selectableLanguages = useMemo(() => getSelectableLanguages(options), [options])\n\n const updateSelectedIds = useCallback(\n (ids: string[]) => {\n setSelectedIds(ids)\n persistLanguageIds(ids)\n onSelectedIdsChange(ids)\n },\n [onSelectedIdsChange, setSelectedIds]\n )\n\n const selectAll = useCallback(\n () => updateSelectedIds(selectableLanguages.map((l) => l.id)),\n [updateSelectedIds, selectableLanguages]\n )\n\n const selectNone = useCallback(() => {\n updateSelectedIds([])\n }, [updateSelectedIds])\n\n const toggleLanguage = useCallback(\n (languageId: string) => {\n let lang = selectedIds\n\n if (lang.includes(languageId)) {\n lang = lang.filter((l) => l !== languageId)\n } else {\n lang = [...lang, languageId]\n }\n\n updateSelectedIds(lang)\n },\n [updateSelectedIds, selectedIds]\n )\n\n const activeLanguages = useMemo(\n () => [...(defaultLanguages ?? []), ...selectedIds],\n [defaultLanguages, selectedIds]\n )\n\n return {\n activeLanguages,\n allSelected: selectedIds.length === selectableLanguages.length,\n selectAll,\n selectNone,\n toggleLanguage,\n }\n}\n","export type LanguageSubscription = (ids: string[]) => void\nexport type Unsubscribe = () => void\nexport type LanguageSubscribe = (subscription: LanguageSubscription) => Unsubscribe\n\nexport interface SelectedLanguageIdsBus {\n onSelectedIdsChange: (ids: string[]) => void\n subscribeSelectedIds: LanguageSubscribe\n}\n\n/**\n * We need a way to communicate state changes between the pane menu and input components.\n * LanguageFilter button lives outside the input-render tree, so Context is out.\n * This is a workaround for that.\n */\nexport function createSelectedLanguageIdsBus(): SelectedLanguageIdsBus {\n const subs: LanguageSubscription[] = []\n\n const onSelectedIdsChange = (ids: string[]) => {\n subs.forEach((s) => s(ids))\n }\n const subscribeSelectedIds = (subscription: LanguageSubscription) => {\n subs.push(subscription)\n return () => {\n subs.splice(subs.indexOf(subscription), 1)\n }\n }\n\n return {\n onSelectedIdsChange,\n subscribeSelectedIds,\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../"}
@@ -1 +1 @@
1
- {"mappings":";AAEA;IACE,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,qCAAsC,SAAQ,gBAAgB;IAC5D,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED;IACE,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,kCAAkC,CAChC,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,WAAW,GAAG,aAAa,EAClC,mBAAmB,EAAE,MAAM,EAAE,KAC1B,OAAO,CAAA;AAEZ;IACE,kBAAkB,EAAE,QAAQ,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAClC;ACvBD,OAAO,MAAM,oBAAoB,mBAIwD,CAAA;AAEzF,wCACE,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAUT;AObD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,MAAM,6DA2CX,CAAA","sources":["src/src/types.ts","src/src/filterField.ts","src/src/LanguageFilterContext.tsx","src/src/useSelectedLanguageIds.ts","src/src/LanguageFilterObjectInput.tsx","src/src/usePaneLanguages.ts","src/src/LanguageFilterMenuButton.tsx","src/src/languageSubscription.ts","src/src/plugin.tsx","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,"/**\n * Plugin function\n */\nexport {languageFilter} from './plugin'\n\nexport {defaultFilterField, isLanguageFilterEnabled} from './filterField'\n\nexport type {\n LanguageFilterConfig,\n LanguageFilterSchema,\n LanguageFilterOptions,\n FilterFieldFunction,\n Language,\n} from './types'\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../../"}
1
+ {"mappings":";AAEA;IACE,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,qCAAsC,SAAQ,gBAAgB;IAC5D,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED;IACE,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,kCAAkC,CAChC,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,WAAW,GAAG,aAAa,EAClC,mBAAmB,EAAE,MAAM,EAAE,KAC1B,OAAO,CAAA;AAEZ;IACE,kBAAkB,EAAE,QAAQ,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAClC;ACvBD,OAAO,MAAM,oBAAoB,mBAIwD,CAAA;AAEzF,wCACE,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAUT;AObD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,MAAM,6DA6CX,CAAA","sources":["src/src/types.ts","src/src/filterField.ts","src/src/LanguageFilterContext.tsx","src/src/useSelectedLanguageIds.ts","src/src/LanguageFilterObjectInput.tsx","src/src/usePaneLanguages.ts","src/src/LanguageFilterMenuButton.tsx","src/src/languageSubscription.ts","src/src/plugin.tsx","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,"/**\n * Plugin function\n */\nexport {languageFilter} from './plugin'\n\nexport {defaultFilterField, isLanguageFilterEnabled} from './filterField'\n\nexport type {\n LanguageFilterConfig,\n LanguageFilterSchema,\n LanguageFilterOptions,\n FilterFieldFunction,\n Language,\n} from './types'\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../../"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/language-filter",
3
- "version": "3.0.0-v3-studio.3",
3
+ "version": "3.0.0-v3-studio.5",
4
4
  "description": "A Sanity plugin that supports filtering localized fields by language",
5
5
  "author": "Sanity.io <hello@sanity.io>",
6
6
  "license": "MIT",
@@ -40,9 +40,9 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@sanity/icons": "^1.3.4",
43
- "@sanity/incompatible-plugin": "^1.0.0",
43
+ "@sanity/incompatible-plugin": "^1.0.4",
44
44
  "@sanity/ui": "^0.38.0",
45
- "@sanity/util": "3.0.0-dev-preview.17"
45
+ "@sanity/util": "3.0.0-dev-preview.21"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@babel/preset-env": "^7.18.10",
@@ -67,14 +67,14 @@
67
67
  "lint-staged": "^13.0.3",
68
68
  "parcel": "^2.7.0",
69
69
  "prettier": "^2.7.1",
70
- "react": "^17.0.0 || ^18.0.0",
70
+ "react": "^18.0.0",
71
71
  "rimraf": "^3.0.2",
72
- "sanity": "3.0.0-dev-preview.17",
72
+ "sanity": "3.0.0-dev-preview.21",
73
73
  "ts-jest": "^28.0.8",
74
74
  "typescript": "4.7.4"
75
75
  },
76
76
  "peerDependencies": {
77
- "react": "^17.0.0 || ^18.0.0",
77
+ "react": "^18.0.0",
78
78
  "sanity": "dev-preview"
79
79
  },
80
80
  "bugs": {
@@ -22,9 +22,5 @@ export function LanguageFilterProvider({
22
22
  }
23
23
 
24
24
  export function useLanguageFilterContext() {
25
- const value = useContext(LanguageFilterContext)
26
- if (!value) {
27
- throw new Error('LanguageFilterContext is missing')
28
- }
29
- return value
25
+ return useContext(LanguageFilterContext)
30
26
  }
@@ -1,5 +1,5 @@
1
1
  import React, {useEffect, useMemo} from 'react'
2
- import {ObjectInputProps, ObjectMember, RenderInputCallback} from 'sanity'
2
+ import {ObjectInputProps, ObjectMember} from 'sanity'
3
3
  import {LanguageFilterConfig} from './types'
4
4
  import {defaultFilterField} from './filterField'
5
5
  import {useLanguageFilterContext} from './LanguageFilterContext'
@@ -7,7 +7,6 @@ import {useSelectedLanguageIds} from './useSelectedLanguageIds'
7
7
 
8
8
  export type LanguageFilterObjectInputProps = {
9
9
  options: LanguageFilterConfig
10
- next: RenderInputCallback
11
10
  /**
12
11
  * We need a way to communicate state changes between the pane menu and input components.
13
12
  * LanguageFilter button lives outside the input-render tree, so Context is out.
@@ -18,19 +17,18 @@ export type LanguageFilterObjectInputProps = {
18
17
 
19
18
  export function LanguageFilterObjectInput(
20
19
  props: ObjectInputProps & {
21
- next: RenderInputCallback
22
20
  subscribeSelectedIds: (callback: (ids: string[]) => void) => () => void
23
21
  }
24
22
  ) {
25
- const {options, enabled} = useLanguageFilterContext()
26
- const {next, subscribeSelectedIds, ...restProps} = props
23
+ const context = useLanguageFilterContext()
24
+ const {options, enabled} = context || {}
25
+ const {subscribeSelectedIds, ...restProps} = props
27
26
  if (!enabled || !options) {
28
- return <>{next(restProps)}</>
27
+ return props.renderDefault(restProps)
29
28
  }
30
29
  return (
31
30
  <FilteredObjectInput
32
31
  {...restProps}
33
- next={next}
34
32
  options={options}
35
33
  subscribeSelectedIds={subscribeSelectedIds}
36
34
  />
@@ -42,7 +40,7 @@ function FilteredObjectInput(props: LanguageFilterObjectInputProps) {
42
40
  members: membersProp,
43
41
  options,
44
42
  schemaType,
45
- next,
43
+ renderDefault,
46
44
  subscribeSelectedIds,
47
45
  ...restProps
48
46
  } = props
@@ -87,5 +85,5 @@ function FilteredObjectInput(props: LanguageFilterObjectInputProps) {
87
85
  })
88
86
  }, [schemaType, membersProp, filterField, activeLanguages])
89
87
 
90
- return <>{next({...restProps, members, schemaType})}</>
88
+ return renderDefault({...restProps, members, schemaType, renderDefault})
91
89
  }
package/src/plugin.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import {_DocumentLanguageFilterComponent, createPlugin, ObjectInputProps} from 'sanity'
2
+ import {createPlugin, DocumentLanguageFilterComponent, ObjectInputProps} from 'sanity'
3
3
  import {LanguageFilterObjectInput} from './LanguageFilterObjectInput'
4
4
  import {LanguageFilterMenuButton} from './LanguageFilterMenuButton'
5
5
  import {LanguageFilterConfig} from './types'
@@ -43,7 +43,7 @@ import {createSelectedLanguageIdsBus} from './languageSubscription'
43
43
  export const languageFilter = createPlugin<LanguageFilterConfig>((options) => {
44
44
  const {onSelectedIdsChange, subscribeSelectedIds} = createSelectedLanguageIdsBus()
45
45
 
46
- const RenderLanguageFilter: _DocumentLanguageFilterComponent = () => {
46
+ const RenderLanguageFilter: DocumentLanguageFilterComponent = () => {
47
47
  return <LanguageFilterMenuButton options={options} onSelectedIdsChange={onSelectedIdsChange} />
48
48
  }
49
49
 
@@ -59,27 +59,29 @@ export const languageFilter = createPlugin<LanguageFilterConfig>((options) => {
59
59
  },
60
60
 
61
61
  form: {
62
- renderInput(props, next) {
63
- const enabled = isLanguageFilterEnabled(props.schemaType, options)
64
- // will only be considered enabled for document, so this is only done once
65
- if (enabled) {
66
- return (
67
- <LanguageFilterProvider enabled={enabled} options={options}>
68
- {next(props)}
69
- </LanguageFilterProvider>
70
- )
71
- }
72
- if (props.schemaType.jsonType === 'object') {
73
- return (
74
- <LanguageFilterObjectInput
75
- {...(props as ObjectInputProps)}
76
- next={next}
77
- subscribeSelectedIds={subscribeSelectedIds}
78
- />
79
- )
80
- }
62
+ components: {
63
+ // eslint-disable-next-line func-name-matching
64
+ input: function LanguageFilterWrapper(props) {
65
+ const enabled = isLanguageFilterEnabled(props.schemaType, options)
66
+ // will only be considered enabled for document, so this is only done once
67
+ if (enabled) {
68
+ return (
69
+ <LanguageFilterProvider enabled={enabled} options={options}>
70
+ {props.renderDefault(props)}
71
+ </LanguageFilterProvider>
72
+ )
73
+ }
74
+ if (props.schemaType.jsonType === 'object') {
75
+ return (
76
+ <LanguageFilterObjectInput
77
+ {...(props as ObjectInputProps)}
78
+ subscribeSelectedIds={subscribeSelectedIds}
79
+ />
80
+ )
81
+ }
81
82
 
82
- return undefined
83
+ return props.renderDefault(props)
84
+ },
83
85
  },
84
86
  },
85
87
  }