@sanity/language-filter 2.34.3-cdr-ga-4.23 → 2.36.0-v2-studio.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2016 - 2022 Sanity.io
3
+ Copyright (c) 2022 Sanity.io
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Field-level translation filter Plugin for Sanity.io
2
2
 
3
+ > This is a **Sanity Studio v2** plugin.
4
+ > For the v3 version, please refer to the [v3-branch](https://github.com/sanity-io/language-filter).
5
+
6
+
3
7
  A Sanity plugin that supports filtering localized fields by language
4
8
 
5
9
  ![Language Filter UI](https://user-images.githubusercontent.com/9684022/150549913-68f1b7c7-3305-48b4-b72b-41b95e82450c.gif)
@@ -28,11 +32,16 @@ For **document-level translations** you should use the [@sanity/document-interna
28
32
 
29
33
  ## Installation
30
34
 
31
- ```
32
- sanity install @sanity/language-filter
35
+ ```sh
36
+ yarn add @sanity/language-filter@studio-v2
33
37
  ```
34
38
 
35
- Installing with `sanity install` updates your `sanity.json` to include this plugin. If installing with npm or yarn, ensure your `plugins` array includes `@sanity/language-filter`.
39
+ Next, add `"@sanity/language-filter"` to `sanity.json` plugins array:
40
+ ```json
41
+ "plugins": [
42
+ "@sanity/language-filter"
43
+ ]
44
+ ```
36
45
 
37
46
  ### Add config file
38
47
 
@@ -13,4 +13,3 @@ interface Props {
13
13
  }
14
14
  declare const SelectLanguage: ({ currentDocumentType, selected, languages, defaultLanguages, documentTypes, onChange, }: Props) => JSX.Element;
15
15
  export default SelectLanguage;
16
- //# sourceMappingURL=SelectLanguage.d.ts.map
@@ -5,4 +5,3 @@ interface Props {
5
5
  }
6
6
  declare const SelectLanguageProvider: ({ schemaType }: Props) => JSX.Element | null;
7
7
  export default SelectLanguageProvider;
8
- //# sourceMappingURL=SelectLanguageProvider.d.ts.map
@@ -1,7 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ObjectField, SchemaType } from '@sanity/types';
3
- export declare type SelectedLanguages = string[];
3
+ export type SelectedLanguages = string[];
4
4
  export declare const setLangs: (languages: SelectedLanguages) => void;
5
5
  export declare const selectedLanguages$: Observable<string[]>;
6
6
  export declare const filterFn$: Observable<(enclosingType: SchemaType, field: ObjectField) => boolean>;
7
- //# sourceMappingURL=datastore.d.ts.map
@@ -42,6 +42,9 @@ var SelectLanguage = _ref => {
42
42
  isOpen = _useState2[0],
43
43
  setIsOpen = _useState2[1];
44
44
  var allIsSelected = languages.length === selected.length;
45
+ var handleClose = () => {
46
+ setIsOpen(false);
47
+ };
45
48
  var handleKeyUp = (0, _react.useCallback)(e => {
46
49
  if (e.key === 'Escape') {
47
50
  handleClose();
@@ -50,9 +53,6 @@ var SelectLanguage = _ref => {
50
53
  var handleOpen = () => {
51
54
  setIsOpen(prev => !prev);
52
55
  };
53
- var handleClose = () => {
54
- setIsOpen(false);
55
- };
56
56
  var selectLang = langId => {
57
57
  onChange(selected.concat(langId));
58
58
  };
@@ -155,4 +155,5 @@ var SelectLanguage = _ref => {
155
155
  }));
156
156
  };
157
157
  var _default = SelectLanguage;
158
- exports.default = _default;
158
+ exports.default = _default;
159
+ //# sourceMappingURL=SelectLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectLanguage.js","names":["ACTION_LABEL","STYLES_TOGGLE","flex","STYLES_CHECKBOX","display","SelectLanguage","currentDocumentType","selected","languages","defaultLanguages","documentTypes","onChange","React","useState","triggerRef","setTriggerRef","popoverRef","setPopoverRef","isOpen","setIsOpen","allIsSelected","length","handleClose","handleKeyUp","useCallback","e","key","handleOpen","prev","selectLang","langId","concat","unselectLang","filter","id","isDefaultLang","includes","isValidDocumentType","handleSelectAll","map","language","handleSelectNone","handleLangCheckboxChange","event","currentTarget","getAttribute","checked","useClickOutside","content","lang","label","title","languageId","ChevronDownIcon"],"sources":["../src/SelectLanguage.tsx"],"sourcesContent":["import React, {useState, useCallback} from 'react'\nimport {Button, Checkbox, Flex, Box, Text, Stack, Popover, useClickOutside} from '@sanity/ui'\nimport {ChevronDownIcon} from '@sanity/icons'\n\nconst ACTION_LABEL = 'Filter languages'\ninterface LanguageOption {\n title: string\n id: string\n}\n\ninterface Props {\n languages: LanguageOption[]\n currentDocumentType?: string\n defaultLanguages?: string[]\n documentTypes?: string[]\n selected: string[]\n onChange: (ids: string[]) => void\n}\n\nconst STYLES_TOGGLE = {flex: 1}\nconst STYLES_CHECKBOX = {display: 'block'}\n\nconst SelectLanguage = ({\n currentDocumentType,\n selected,\n languages,\n defaultLanguages,\n documentTypes,\n onChange,\n}: Props) => {\n const [triggerRef, setTriggerRef] = React.useState<HTMLButtonElement | null>(null)\n const [popoverRef, setPopoverRef] = React.useState<HTMLElement | null>(null)\n const [isOpen, setIsOpen] = useState(false)\n const allIsSelected = languages.length === selected.length\n\n const handleClose = () => {\n setIsOpen(false)\n }\n\n const handleKeyUp = useCallback((e) => {\n if (e.key === 'Escape') {\n handleClose()\n }\n }, [])\n\n const handleOpen = () => {\n setIsOpen((prev) => !prev)\n }\n\n const selectLang = (langId: string) => {\n onChange(selected.concat(langId))\n }\n\n const unselectLang = (langId: string) => {\n onChange(selected.filter((id) => id !== langId))\n }\n\n const isDefaultLang = (langId: string) => {\n return defaultLanguages && defaultLanguages.includes(langId)\n }\n\n const isValidDocumentType = () => {\n return documentTypes && currentDocumentType ? documentTypes.includes(currentDocumentType) : true\n }\n\n const handleSelectAll = () => {\n onChange(languages.map((language) => language.id))\n }\n const handleSelectNone = () => {\n onChange([])\n }\n\n const handleLangCheckboxChange = (event: React.FormEvent<HTMLInputElement>) => {\n const id = event.currentTarget.getAttribute('data-lang-id')\n const checked = event.currentTarget.checked\n\n if (!id) {\n return\n }\n\n if (checked) {\n selectLang(id)\n } else {\n unselectLang(id)\n }\n }\n\n useClickOutside(() => {\n handleClose()\n }, [popoverRef, triggerRef])\n\n if (!isValidDocumentType()) {\n return <></>\n }\n\n const content = (\n <Box overflow=\"auto\" sizing=\"border\" onKeyUp={handleKeyUp}>\n <Flex padding={2}>\n <Button\n type=\"button\"\n mode=\"ghost\"\n tone=\"default\"\n onClick={allIsSelected ? handleSelectNone : handleSelectAll}\n paddingX={3}\n paddingY={2}\n autoFocus\n style={STYLES_TOGGLE}\n >\n Select {allIsSelected ? 'none' : 'all'}\n </Button>\n </Flex>\n <Box padding={3} paddingX={2}>\n <Stack as=\"ul\" space={3}>\n {languages.map((lang) => {\n const label = lang.title + (isDefaultLang(lang.id) ? ' (Default)' : '')\n const languageId = `language-${lang.id}`\n return (\n <Flex as=\"li\" align=\"center\" key={lang.id}>\n <Checkbox\n id={languageId}\n style={STYLES_CHECKBOX}\n onChange={handleLangCheckboxChange}\n data-lang-id={lang.id}\n checked={selected.includes(lang.id)}\n disabled={isDefaultLang(lang.id)}\n />\n <Box flex={1} paddingLeft={3}>\n <Text>\n <label htmlFor={languageId} style={STYLES_CHECKBOX}>\n {label}\n </label>\n </Text>\n </Box>\n </Flex>\n )\n })}\n </Stack>\n </Box>\n </Box>\n )\n\n return (\n <>\n <Button\n fontSize={1}\n iconRight={ChevronDownIcon}\n mode=\"bleed\"\n ref={setTriggerRef}\n onClick={handleOpen}\n padding={2}\n title={\n allIsSelected\n ? 'Filter language fields'\n : 'Displaying fields only for the selected languages'\n }\n selected={isOpen}\n text={\n <>\n {ACTION_LABEL} ({`${selected.length}/${languages.length}`})\n </>\n }\n />\n <Popover\n content={content}\n open={isOpen}\n placement=\"bottom\"\n ref={setPopoverRef}\n referenceElement={triggerRef}\n tone=\"default\"\n constrainSize\n autoFocus\n portal\n />\n </>\n )\n}\n\nexport default SelectLanguage\n"],"mappings":"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"}
@@ -66,7 +66,6 @@ var SelectLanguageProvider = _ref => {
66
66
  if (FallbackImplementation) {
67
67
  // This is happening only inside the mono repo because Lerna is hoisting it incorrectly.
68
68
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
69
- // @ts-expect-error
70
69
  return /*#__PURE__*/_react.default.createElement(FallbackImplementation, {
71
70
  schemaType: schemaType
72
71
  });
@@ -74,4 +73,5 @@ var SelectLanguageProvider = _ref => {
74
73
  return null;
75
74
  };
76
75
  var _default = SelectLanguageProvider;
77
- exports.default = _default;
76
+ exports.default = _default;
77
+ //# sourceMappingURL=SelectLanguageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectLanguageProvider.js","names":["SelectLanguageProvider","schemaType","subscriptionRef$","useRef","useState","selected","setSelected","currentDocumentType","setCurrentDocumentType","shouldShow","useMemo","documentTypes","config","name","includes","FallbackImplementation","languageFilterImplementations","Array","isArray","filter","component","useEffect","current","selectedLanguages$","subscribe","selectedLangs","unsubscribe","supportedLanguages","defaultLanguages","setLangs"],"sources":["../src/SelectLanguageProvider.tsx"],"sourcesContent":["// @todo: remove the following line when part imports has been removed from this file\n///<reference types=\"@sanity/types/parts\" />\n\nimport React, {useRef, useEffect, useState, useMemo} from 'react'\nimport config from 'part:@sanity/language-filter/config'\nimport {SchemaType} from '@sanity/types'\nimport {Subscription} from 'rxjs'\nimport languageFilterImplementations from 'all:part:@sanity/desk-tool/language-select-component'\nimport {selectedLanguages$, setLangs} from './datastore'\nimport SelectLanguage from './SelectLanguage'\n\ninterface Props {\n schemaType?: SchemaType\n}\n\nconst SelectLanguageProvider = ({schemaType}: Props) => {\n const subscriptionRef$ = useRef<Subscription | null>(null)\n const [selected, setSelected] = useState<string[]>([])\n const [currentDocumentType, setCurrentDocumentType] = useState<string | undefined>()\n const shouldShow = useMemo(() => {\n const {documentTypes} = config\n return !!(documentTypes && schemaType?.name && documentTypes.includes(schemaType.name))\n }, [schemaType])\n const FallbackImplementation = useMemo(() => {\n if (languageFilterImplementations && Array.isArray(languageFilterImplementations)) {\n return (\n languageFilterImplementations?.filter(\n (component) => SelectLanguageProvider !== component\n )?.[0] ?? null\n )\n }\n return null\n }, [])\n\n useEffect(() => {\n setCurrentDocumentType(schemaType?.name)\n }, [schemaType])\n\n useEffect(() => {\n subscriptionRef$.current = selectedLanguages$.subscribe((selectedLangs: string[]) => {\n setSelected(selectedLangs)\n })\n return () => {\n if (subscriptionRef$.current) {\n subscriptionRef$.current.unsubscribe()\n }\n }\n }, [])\n\n if (shouldShow) {\n return (\n <SelectLanguage\n languages={config.supportedLanguages}\n defaultLanguages={config.defaultLanguages}\n documentTypes={config.documentTypes}\n currentDocumentType={currentDocumentType}\n selected={selected}\n onChange={setLangs}\n />\n )\n }\n\n if (FallbackImplementation) {\n // This is happening only inside the mono repo because Lerna is hoisting it incorrectly.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n return <FallbackImplementation schemaType={schemaType} />\n }\n\n return null\n}\n\nexport default SelectLanguageProvider\n"],"mappings":";;;;;;AAGA;AACA;AAGA;AACA;AACA;AAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7C,IAAMA,sBAAsB,GAAG,QAAyB;EAAA,IAAvBC,UAAU,QAAVA,UAAU;EACzC,IAAMC,gBAAgB,GAAG,IAAAC,aAAM,EAAsB,IAAI,CAAC;EAC1D,gBAAgC,IAAAC,eAAQ,EAAW,EAAE,CAAC;IAAA;IAA/CC,QAAQ;IAAEC,WAAW;EAC5B,iBAAsD,IAAAF,eAAQ,GAAsB;IAAA;IAA7EG,mBAAmB;IAAEC,sBAAsB;EAClD,IAAMC,UAAU,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC/B,IAAOC,aAAa,GAAIC,eAAM,CAAvBD,aAAa;IACpB,OAAO,CAAC,EAAEA,aAAa,IAAIV,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEY,IAAI,IAAIF,aAAa,CAACG,QAAQ,CAACb,UAAU,CAACY,IAAI,CAAC,CAAC;EACzF,CAAC,EAAE,CAACZ,UAAU,CAAC,CAAC;EAChB,IAAMc,sBAAsB,GAAG,IAAAL,cAAO,EAAC,MAAM;IAC3C,IAAIM,gCAA6B,IAAIC,KAAK,CAACC,OAAO,CAACF,gCAA6B,CAAC,EAAE;MAAA;MACjF,gCACEA,gCAA6B,aAA7BA,gCAA6B,iDAA7BA,gCAA6B,CAAEG,MAAM,CAClCC,SAAS,IAAKpB,sBAAsB,KAAKoB,SAAS,CACpD,2DAFD,uBAEI,CAAC,CAAC,yEAAI,IAAI;IAElB;IACA,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAC,gBAAS,EAAC,MAAM;IACdb,sBAAsB,CAACP,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEY,IAAI,CAAC;EAC1C,CAAC,EAAE,CAACZ,UAAU,CAAC,CAAC;EAEhB,IAAAoB,gBAAS,EAAC,MAAM;IACdnB,gBAAgB,CAACoB,OAAO,GAAGC,6BAAkB,CAACC,SAAS,CAAEC,aAAuB,IAAK;MACnFnB,WAAW,CAACmB,aAAa,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO,MAAM;MACX,IAAIvB,gBAAgB,CAACoB,OAAO,EAAE;QAC5BpB,gBAAgB,CAACoB,OAAO,CAACI,WAAW,EAAE;MACxC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAIjB,UAAU,EAAE;IACd,oBACE,6BAAC,uBAAc;MACb,SAAS,EAAEG,eAAM,CAACe,kBAAmB;MACrC,gBAAgB,EAAEf,eAAM,CAACgB,gBAAiB;MAC1C,aAAa,EAAEhB,eAAM,CAACD,aAAc;MACpC,mBAAmB,EAAEJ,mBAAoB;MACzC,QAAQ,EAAEF,QAAS;MACnB,QAAQ,EAAEwB;IAAS,EACnB;EAEN;EAEA,IAAId,sBAAsB,EAAE;IAC1B;IACA;IACA,oBAAO,6BAAC,sBAAsB;MAAC,UAAU,EAAEd;IAAW,EAAG;EAC3D;EAEA,OAAO,IAAI;AACb,CAAC;AAAA,eAEcD,sBAAsB;AAAA"}
package/lib/datastore.js CHANGED
@@ -4,11 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setLangs = exports.selectedLanguages$ = exports.filterFn$ = void 0;
7
- var _union2 = _interopRequireDefault(require("lodash/union"));
8
- var _intersection2 = _interopRequireDefault(require("lodash/intersection"));
9
7
  var _rxjs = require("rxjs");
10
8
  var _operators = require("rxjs/operators");
11
9
  var _config = _interopRequireDefault(require("part:@sanity/language-filter/config"));
10
+ var _lodash = require("lodash");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
12
  // @todo: remove the following line when part imports has been removed from this file
14
13
  ///<reference types="@sanity/types/parts" />
@@ -33,9 +32,9 @@ var persistOn = (key, defaultValue) => input$ => {
33
32
  var SUPPORTED_LANG_IDS = _config.default.supportedLanguages.map(lang => lang.id);
34
33
  var selectedLanguages$ = onSelect$.pipe(persistOn('@sanity/plugin/language-filter/selected-languages', _config.default.defaultLanguages || SUPPORTED_LANG_IDS),
35
34
  // constrain persisted/selected languages to the ones currently supported
36
- (0, _operators.map)(selectedLangs => (0, _intersection2.default)(selectedLangs, SUPPORTED_LANG_IDS)),
35
+ (0, _operators.map)(selectedLangs => (0, _lodash.intersection)(selectedLangs, SUPPORTED_LANG_IDS)),
37
36
  // make sure default languages always gets selected
38
- Array.isArray(_config.default.defaultLanguages) ? (0, _operators.map)(selectedLangs => (0, _union2.default)(selectedLangs, _config.default.defaultLanguages || [])) : id, (0, _operators.publishReplay)(1), (0, _operators.refCount)());
37
+ Array.isArray(_config.default.defaultLanguages) ? (0, _operators.map)(selectedLangs => (0, _lodash.union)(selectedLangs, _config.default.defaultLanguages || [])) : id, (0, _operators.publishReplay)(1), (0, _operators.refCount)());
39
38
  exports.selectedLanguages$ = selectedLanguages$;
40
39
  var defaultFilterField = (enclosingType, field, selectedLanguages) => !enclosingType.name.startsWith('locale') || selectedLanguages.includes(field.name);
41
40
  var filterField = _config.default.filterField || defaultFilterField;
@@ -44,4 +43,5 @@ var filterFn$ = selectedLanguages$.pipe((0, _operators.map)(langs => {
44
43
  return filterField(enclosingType, field, langs);
45
44
  };
46
45
  }));
47
- exports.filterFn$ = filterFn$;
46
+ exports.filterFn$ = filterFn$;
47
+ //# sourceMappingURL=datastore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datastore.js","names":["onSelect$","Subject","id","v","setLangs","languages","next","persistOn","key","defaultValue","input$","persisted","persistedValue","window","localStorage","getItem","JSON","parse","err","pipe","startWith","tap","value","setItem","stringify","SUPPORTED_LANG_IDS","config","supportedLanguages","map","lang","selectedLanguages$","defaultLanguages","selectedLangs","intersection","Array","isArray","union","publishReplay","refCount","defaultFilterField","enclosingType","field","selectedLanguages","name","startsWith","includes","filterField","filterFn$","langs"],"sources":["../src/datastore.ts"],"sourcesContent":["// @todo: remove the following line when part imports has been removed from this file\n///<reference types=\"@sanity/types/parts\" />\n\nimport {Observable, Subject} from 'rxjs'\nimport {map, publishReplay, refCount, startWith, tap} from 'rxjs/operators'\nimport config from 'part:@sanity/language-filter/config'\nimport {intersection, union} from 'lodash'\nimport {ObjectField, SchemaType} from '@sanity/types'\n\nexport type SelectedLanguages = string[]\ninterface SupportedLanguage {\n id: string\n title: string\n}\n\nconst onSelect$ = new Subject<SelectedLanguages>()\n\nconst id = (v: any) => v\n\nexport const setLangs = (languages: SelectedLanguages) => onSelect$.next(languages)\n\nconst persistOn = (key: string, defaultValue: string[]) => (input$: Observable<string[]>) => {\n let persisted\n try {\n const persistedValue = window.localStorage.getItem(key)\n if (persistedValue) {\n persisted = JSON.parse(persistedValue)\n }\n } catch (err) {} // eslint-disable-line no-empty\n\n return input$.pipe(\n startWith(persisted || defaultValue),\n tap((value) => {\n window.localStorage.setItem(key, JSON.stringify(value))\n })\n )\n}\n\nconst SUPPORTED_LANG_IDS = config.supportedLanguages.map((lang: SupportedLanguage) => lang.id)\n\nexport const selectedLanguages$ = onSelect$.pipe(\n persistOn(\n '@sanity/plugin/language-filter/selected-languages',\n config.defaultLanguages || SUPPORTED_LANG_IDS\n ),\n // constrain persisted/selected languages to the ones currently supported\n map((selectedLangs: SelectedLanguages) => intersection(selectedLangs, SUPPORTED_LANG_IDS)),\n // make sure default languages always gets selected\n Array.isArray(config.defaultLanguages)\n ? map((selectedLangs) => union(selectedLangs, config.defaultLanguages || []))\n : id,\n publishReplay(1),\n refCount()\n)\n\nconst defaultFilterField = (\n enclosingType: SchemaType,\n field: ObjectField,\n selectedLanguages: string[]\n) => !enclosingType.name.startsWith('locale') || selectedLanguages.includes(field.name)\n\nconst filterField = config.filterField || defaultFilterField\n\nexport const filterFn$ = selectedLanguages$.pipe(\n map((langs) => {\n return (enclosingType: SchemaType, field: ObjectField) => {\n return filterField(enclosingType, field, langs)\n }\n })\n)\n"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;AAA0C;AAN1C;AACA;;AAcA,IAAMA,SAAS,GAAG,IAAIC,aAAO,EAAqB;AAElD,IAAMC,EAAE,GAAIC,CAAM,IAAKA,CAAC;AAEjB,IAAMC,QAAQ,GAAIC,SAA4B,IAAKL,SAAS,CAACM,IAAI,CAACD,SAAS,CAAC;AAAA;AAEnF,IAAME,SAAS,GAAG,CAACC,GAAW,EAAEC,YAAsB,KAAMC,MAA4B,IAAK;EAC3F,IAAIC,SAAS;EACb,IAAI;IACF,IAAMC,cAAc,GAAGC,MAAM,CAACC,YAAY,CAACC,OAAO,CAACP,GAAG,CAAC;IACvD,IAAII,cAAc,EAAE;MAClBD,SAAS,GAAGK,IAAI,CAACC,KAAK,CAACL,cAAc,CAAC;IACxC;EACF,CAAC,CAAC,OAAOM,GAAG,EAAE,CAAC,CAAC,CAAC;;EAEjB,OAAOR,MAAM,CAACS,IAAI,CAChB,IAAAC,oBAAS,EAACT,SAAS,IAAIF,YAAY,CAAC,EACpC,IAAAY,cAAG,EAAEC,KAAK,IAAK;IACbT,MAAM,CAACC,YAAY,CAACS,OAAO,CAACf,GAAG,EAAEQ,IAAI,CAACQ,SAAS,CAACF,KAAK,CAAC,CAAC;EACzD,CAAC,CAAC,CACH;AACH,CAAC;AAED,IAAMG,kBAAkB,GAAGC,eAAM,CAACC,kBAAkB,CAACC,GAAG,CAAEC,IAAuB,IAAKA,IAAI,CAAC3B,EAAE,CAAC;AAEvF,IAAM4B,kBAAkB,GAAG9B,SAAS,CAACmB,IAAI,CAC9CZ,SAAS,CACP,mDAAmD,EACnDmB,eAAM,CAACK,gBAAgB,IAAIN,kBAAkB,CAC9C;AACD;AACA,IAAAG,cAAG,EAAEI,aAAgC,IAAK,IAAAC,oBAAY,EAACD,aAAa,EAAEP,kBAAkB,CAAC,CAAC;AAC1F;AACAS,KAAK,CAACC,OAAO,CAACT,eAAM,CAACK,gBAAgB,CAAC,GAClC,IAAAH,cAAG,EAAEI,aAAa,IAAK,IAAAI,aAAK,EAACJ,aAAa,EAAEN,eAAM,CAACK,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAC3E7B,EAAE,EACN,IAAAmC,wBAAa,EAAC,CAAC,CAAC,EAChB,IAAAC,mBAAQ,GAAE,CACX;AAAA;AAED,IAAMC,kBAAkB,GAAG,CACzBC,aAAyB,EACzBC,KAAkB,EAClBC,iBAA2B,KACxB,CAACF,aAAa,CAACG,IAAI,CAACC,UAAU,CAAC,QAAQ,CAAC,IAAIF,iBAAiB,CAACG,QAAQ,CAACJ,KAAK,CAACE,IAAI,CAAC;AAEvF,IAAMG,WAAW,GAAGpB,eAAM,CAACoB,WAAW,IAAIP,kBAAkB;AAErD,IAAMQ,SAAS,GAAGjB,kBAAkB,CAACX,IAAI,CAC9C,IAAAS,cAAG,EAAEoB,KAAK,IAAK;EACb,OAAO,CAACR,aAAyB,EAAEC,KAAkB,KAAK;IACxD,OAAOK,WAAW,CAACN,aAAa,EAAEC,KAAK,EAAEO,KAAK,CAAC;EACjD,CAAC;AACH,CAAC,CAAC,CACH;AAAA"}
@@ -9,4 +9,5 @@ Object.defineProperty(exports, "default", {
9
9
  return _datastore.filterFn$;
10
10
  }
11
11
  });
12
- var _datastore = require("./datastore");
12
+ var _datastore = require("./datastore");
13
+ //# sourceMappingURL=filter-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-fields.js","names":[],"sources":["../src/filter-fields.js"],"sourcesContent":["export {filterFn$ as default} from './datastore'\n"],"mappings":";;;;;;;;;;;AAAA"}
package/package.json CHANGED
@@ -1,11 +1,7 @@
1
1
  {
2
2
  "name": "@sanity/language-filter",
3
- "version": "2.34.3-cdr-ga-4.23+0ec91d6bac",
3
+ "version": "2.36.0-v2-studio.1",
4
4
  "description": "A Sanity plugin that supports filtering localized fields by language",
5
- "main": "index.js",
6
- "scripts": {
7
- "clean": "rimraf lib dest"
8
- },
9
5
  "keywords": [
10
6
  "sanity",
11
7
  "cms",
@@ -14,30 +10,69 @@
14
10
  "content",
15
11
  "language-filter"
16
12
  ],
13
+ "homepage": "https://www.sanity.io/",
14
+ "bugs": {
15
+ "url": "https://github.com/sanity-io/language-filter/issues"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git@github.com:sanity-io/language-filter.git"
20
+ },
21
+ "license": "MIT",
22
+ "author": "Sanity.io <hello@sanity.io>",
23
+ "main": "./lib/filter-fields.js",
24
+ "types": "./dts/SelectLanguage.d.ts",
25
+ "files": [
26
+ "lib",
27
+ "dts",
28
+ "src",
29
+ "sanity.json",
30
+ "config.dist.json"
31
+ ],
32
+ "scripts": {
33
+ "prebuild": "npm run clean",
34
+ "build": "tsc --declaration --emitDeclarationOnly && sanipack build",
35
+ "clean": "rimraf lib",
36
+ "lint": "eslint .",
37
+ "prepare": "husky install",
38
+ "prepublishOnly": "npm run build",
39
+ "watch": "sanipack build --watch"
40
+ },
17
41
  "dependencies": {
18
42
  "@sanity/icons": "^1.3.4",
19
- "@sanity/types": "2.34.3-cdr-ga-4.23+0ec91d6bac",
43
+ "@sanity/types": "2.35.0",
20
44
  "@sanity/ui": "^0.37.22",
21
45
  "lodash": "^4.17.15",
22
46
  "rxjs": "^6.5.3"
23
47
  },
48
+ "devDependencies": {
49
+ "@commitlint/cli": "^17.3.0",
50
+ "@commitlint/config-conventional": "^17.3.0",
51
+ "@sanity/semantic-release-preset": "^2.0.1",
52
+ "@types/lodash": "^4.14.190",
53
+ "@types/styled-components": "5.1.26",
54
+ "@typescript-eslint/eslint-plugin": "^5.42.0",
55
+ "@typescript-eslint/parser": "^5.42.0",
56
+ "eslint": "^8.27.0",
57
+ "eslint-config-prettier": "^8.5.0",
58
+ "eslint-config-sanity": "^6.0.0",
59
+ "eslint-plugin-prettier": "^4.2.1",
60
+ "eslint-plugin-react": "^7.31.10",
61
+ "eslint-plugin-react-hooks": "^4.6.0",
62
+ "husky": "^8.0.1",
63
+ "lint-staged": "^13.0.3",
64
+ "prettier": "^2.7.1",
65
+ "prettier-plugin-packagejson": "^2.3.0",
66
+ "prop-types": "^15.8.1",
67
+ "react": "17.0.1",
68
+ "rimraf": "^2.7.1",
69
+ "sanipack": "^2.1.0"
70
+ },
24
71
  "peerDependencies": {
25
72
  "prop-types": "^15.3",
26
73
  "react": "^16.9 || ^17"
27
74
  },
28
- "author": "Sanity.io <hello@sanity.io>",
29
- "license": "MIT",
30
- "bugs": {
31
- "url": "https://github.com/sanity-io/sanity/issues"
32
- },
33
- "homepage": "https://www.sanity.io/",
34
- "repository": {
35
- "type": "git",
36
- "url": "git+https://github.com/sanity-io/sanity.git",
37
- "directory": "packages/@sanity/language-filter"
38
- },
39
75
  "publishConfig": {
40
76
  "access": "public"
41
- },
42
- "gitHead": "0ec91d6bac2d74562989fe6f763b1c9fded1ff13"
77
+ }
43
78
  }
@@ -33,6 +33,10 @@ const SelectLanguage = ({
33
33
  const [isOpen, setIsOpen] = useState(false)
34
34
  const allIsSelected = languages.length === selected.length
35
35
 
36
+ const handleClose = () => {
37
+ setIsOpen(false)
38
+ }
39
+
36
40
  const handleKeyUp = useCallback((e) => {
37
41
  if (e.key === 'Escape') {
38
42
  handleClose()
@@ -43,10 +47,6 @@ const SelectLanguage = ({
43
47
  setIsOpen((prev) => !prev)
44
48
  }
45
49
 
46
- const handleClose = () => {
47
- setIsOpen(false)
48
- }
49
-
50
50
  const selectLang = (langId: string) => {
51
51
  onChange(selected.concat(langId))
52
52
  }
@@ -63,7 +63,6 @@ const SelectLanguageProvider = ({schemaType}: Props) => {
63
63
  if (FallbackImplementation) {
64
64
  // This is happening only inside the mono repo because Lerna is hoisting it incorrectly.
65
65
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
66
- // @ts-expect-error
67
66
  return <FallbackImplementation schemaType={schemaType} />
68
67
  }
69
68
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectLanguage.d.ts","sourceRoot":"","sources":["../../src/SelectLanguage.tsx"],"names":[],"mappings":";AAKA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;CACX;AAED,UAAU,KAAK;IACb,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAClC;AAKD,QAAA,MAAM,cAAc,6FAOjB,KAAK,gBAkJP,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectLanguageProvider.d.ts","sourceRoot":"","sources":["../../src/SelectLanguageProvider.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAMxC,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,QAAA,MAAM,sBAAsB,mBAAkB,KAAK,uBAuDlD,CAAA;AAED,eAAe,sBAAsB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"datastore.d.ts","sourceRoot":"","sources":["../../src/datastore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAU,MAAM,MAAM,CAAA;AAIxC,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,eAAe,CAAA;AAErD,oBAAY,iBAAiB,GAAG,MAAM,EAAE,CAAA;AAUxC,eAAO,MAAM,QAAQ,wCAA8D,CAAA;AAqBnF,eAAO,MAAM,kBAAkB,sBAa9B,CAAA;AAUD,eAAO,MAAM,SAAS,6BAEK,UAAU,SAAS,WAAW,aAIxD,CAAA"}
package/tsconfig.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig",
3
- "include": ["src"],
4
- "compilerOptions": {
5
- "composite": true,
6
- "rootDir": "./src",
7
- "outDir": "./dist/dts",
8
- "jsx": "react"
9
- },
10
- "references": [
11
- {"path": "../types"}
12
- ]
13
- }