@sanity/language-filter 0.147.10-ts-client.1 → 1.0.0-firstpass-v3-impl.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.
@@ -1,52 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _datastore = require("./datastore");
11
-
12
- var _SelectLanguage = _interopRequireDefault(require("./SelectLanguage"));
13
-
14
- var _config = _interopRequireDefault(require("part:@sanity/language-filter/config"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
-
20
- class SelectLanguageProvider extends _react.default.Component {
21
- constructor() {
22
- super(...arguments);
23
-
24
- _defineProperty(this, "state", {
25
- selected: []
26
- });
27
- }
28
-
29
- componentDidMount(props) {
30
- this.subscription = _datastore.selectedLanguages$.subscribe(selected => {
31
- this.setState({
32
- selected: selected
33
- });
34
- });
35
- }
36
-
37
- componentWillUnmount(props) {
38
- this.subscription.unsubscribe();
39
- }
40
-
41
- render() {
42
- var selected = this.state.selected;
43
- return _react.default.createElement(_SelectLanguage.default, {
44
- languages: _config.default.supportedLanguages,
45
- selected: selected,
46
- onChange: _datastore.setLangs
47
- });
48
- }
49
-
50
- }
51
-
52
- exports.default = SelectLanguageProvider;
package/lib/datastore.js DELETED
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.filterFn$ = exports.selectedLanguages$ = exports.setLangs = void 0;
7
-
8
- var _intersection2 = _interopRequireDefault(require("lodash/intersection"));
9
-
10
- var _rxjs = require("rxjs");
11
-
12
- var _operators = require("rxjs/operators");
13
-
14
- var _config = _interopRequireDefault(require("part:@sanity/language-filter/config"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- var onSelect$ = new _rxjs.Subject();
19
-
20
- var setLangs = langs => onSelect$.next(langs);
21
-
22
- exports.setLangs = setLangs;
23
-
24
- var persistOn = (key, defaultValue) => input$ => {
25
- var persisted;
26
-
27
- try {
28
- persisted = JSON.parse(window.localStorage.getItem(key));
29
- } catch (err) {} // eslint-disable-line no-empty
30
-
31
-
32
- return input$.pipe((0, _operators.startWith)(persisted || defaultValue), (0, _operators.tap)(value => {
33
- window.localStorage.setItem(key, JSON.stringify(value));
34
- }));
35
- };
36
-
37
- var SUPPORTED_LANG_IDS = _config.default.supportedLanguages.map(lang => lang.id);
38
-
39
- var selectedLanguages$ = onSelect$.pipe((0, _operators.map)(selectedLangs => (0, _intersection2.default)(selectedLangs, SUPPORTED_LANG_IDS)), (0, _operators.publishReplay)(1), (0, _operators.refCount)(), persistOn('@sanity/plugin/language-filter/selected-languages', SUPPORTED_LANG_IDS));
40
- exports.selectedLanguages$ = selectedLanguages$;
41
-
42
- var defaultFilterField = (enclosingType, field, selectedLanguages) => !enclosingType.name.startsWith('locale') || selectedLanguages.includes(field.name);
43
-
44
- var filterField = _config.default.filterField || defaultFilterField;
45
- var filterFn$ = selectedLanguages$.pipe((0, _operators.map)(langs => {
46
- return (enclosingType, field) => filterField(enclosingType, field, langs);
47
- }));
48
- exports.filterFn$ = filterFn$;
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function get() {
9
- return _datastore.filterFn$;
10
- }
11
- });
12
-
13
- var _datastore = require("./datastore");
@@ -1,50 +0,0 @@
1
- @import 'part:@sanity/base/theme/variables-style';
2
-
3
- .target {
4
- display: flex;
5
- align-items: center;
6
- color: var(--text-color);
7
- opacity: 1;
8
- min-width: 4rem;
9
- font-size: var(--font-size-xsmall);
10
- white-space: nowrap;
11
- height: 2.5rem;
12
- align-self: center;
13
- margin-right: 1em;
14
- }
15
-
16
- .arrow {
17
- margin-left: 0.4em;
18
- }
19
-
20
- .root {
21
- padding: 0.5em;
22
- background-color: var(--component-bg);
23
- color: var(--text-color);
24
- composes: shadow-6dp from 'part:@sanity/base/theme/shadows-style';
25
- user-select: none;
26
- text-align: left;
27
- overflow: auto;
28
- overflow-x: hidden;
29
- }
30
-
31
- .list {
32
- composes: resetList from 'part:@sanity/base/theme/layout/helpers';
33
- }
34
-
35
- .functions {
36
- padding: 0.5em;
37
- text-align: center;
38
- }
39
-
40
- .selectedNumFilter {
41
- color: var(--state-danger-color);
42
- font-weight: bold;
43
- }
44
-
45
- .item {
46
- padding: 0.5em;
47
- composes: resetListItem from 'part:@sanity/base/theme/layout/helpers';
48
- composes: item from 'part:@sanity/base/theme/layout/selectable-style';
49
- white-space: nowrap;
50
- }
@@ -1,106 +0,0 @@
1
- /* eslint-disable complexity */
2
- import React, {Fragment} from 'react'
3
- import PropTypes from 'prop-types'
4
- import Poppable from 'part:@sanity/components/utilities/poppable'
5
- import Checkbox from 'part:@sanity/components/toggles/checkbox'
6
- import Button from 'part:@sanity/components/buttons/default'
7
- import styles from './styles/SelectLanguage.css'
8
- import AngleDown from 'part:@sanity/base/angle-down-icon'
9
- import AngleUp from 'part:@sanity/base/angle-up-icon'
10
-
11
- const LanguagePropType = PropTypes.shape({id: PropTypes.string, title: PropTypes.string})
12
- export default class SelectLanguage extends React.Component {
13
- static propTypes = {
14
- languages: PropTypes.arrayOf(LanguagePropType),
15
- selected: PropTypes.arrayOf(LanguagePropType),
16
- onChange: PropTypes.func
17
- }
18
-
19
- state = {isOpen: false}
20
- refElement = React.createRef()
21
-
22
- handleToggle = () => this.setState(prevState => ({isOpen: !prevState.isOpen}))
23
- handleOpen = () => this.setState({isOpen: true})
24
- handleClose = () => {
25
- this.setState({isOpen: false})
26
- }
27
-
28
- selectLang = langId => {
29
- const {selected, onChange} = this.props
30
- onChange(selected.concat(langId))
31
- }
32
-
33
- unselectLang = langId => {
34
- const {selected, onChange} = this.props
35
- onChange(selected.filter(id => id !== langId))
36
- }
37
-
38
- handleSelectAll = event => {
39
- const {languages, onChange} = this.props
40
- onChange(languages.map(l => l.id))
41
- }
42
- handleSelectNone = event => {
43
- const {onChange} = this.props
44
- onChange([])
45
- }
46
- handleLangCheckboxChange = event => {
47
- const id = event.target.getAttribute('data-lang-id')
48
- const checked = event.target.checked
49
- this[checked ? 'selectLang' : 'unselectLang'](id)
50
- }
51
-
52
- render() {
53
- const {isOpen} = this.state
54
- const {languages, selected} = this.props
55
- const allIsSelected = languages.length === selected.length
56
- const refElement =
57
- this.refElement && this.refElement.current && this.refElement.current._element
58
-
59
- return (
60
- <Fragment>
61
- <span
62
- className={styles.target}
63
- onClick={this.handleToggle}
64
- ref={this.refElement}
65
- title={
66
- allIsSelected
67
- ? 'Filter language fields'
68
- : 'Displaying only fields for selected languages'
69
- }
70
- >
71
- Filter languages{allIsSelected ? '…' : ` (${selected.length}/${languages.length})`}
72
- <span className={styles.arrow}>{isOpen ? <AngleUp /> : <AngleDown />}</span>
73
- </span>
74
- <Poppable
75
- onEscape={this.handleClose}
76
- onClickOutside={this.handleClose}
77
- placement="bottom-end"
78
- referenceElement={refElement}
79
- >
80
- {isOpen && (
81
- <div className={styles.root}>
82
- <div className={styles.functions}>
83
- <Button onClick={allIsSelected ? this.handleSelectNone : this.handleSelectAll}>
84
- Select {allIsSelected ? 'none' : 'all'}
85
- </Button>
86
- </div>
87
- <ul className={styles.list}>
88
- {languages.map(lang => (
89
- <li className={styles.item} key={lang.id}>
90
- <Checkbox
91
- onChange={this.handleLangCheckboxChange}
92
- data-lang-id={lang.id}
93
- checked={selected.includes(lang.id)}
94
- >
95
- {lang.title}
96
- </Checkbox>
97
- </li>
98
- ))}
99
- </ul>
100
- </div>
101
- )}
102
- </Poppable>
103
- </Fragment>
104
- )
105
- }
106
- }
@@ -1,28 +0,0 @@
1
- import React from 'react'
2
- import {selectedLanguages$, setLangs} from './datastore'
3
- import SelectLanguage from './SelectLanguage'
4
- import config from 'part:@sanity/language-filter/config'
5
-
6
- export default class SelectLanguageProvider extends React.Component {
7
- state = {selected: []}
8
-
9
- componentDidMount(props) {
10
- this.subscription = selectedLanguages$.subscribe(selected => {
11
- this.setState({selected: selected})
12
- })
13
- }
14
- componentWillUnmount(props) {
15
- this.subscription.unsubscribe()
16
- }
17
-
18
- render() {
19
- const {selected} = this.state
20
- return (
21
- <SelectLanguage
22
- languages={config.supportedLanguages}
23
- selected={selected}
24
- onChange={setLangs}
25
- />
26
- )
27
- }
28
- }
package/src/datastore.js DELETED
@@ -1,42 +0,0 @@
1
- import {Subject} from 'rxjs'
2
- import {map, publishReplay, refCount, startWith, tap} from 'rxjs/operators'
3
- import config from 'part:@sanity/language-filter/config'
4
- import {intersection} from 'lodash'
5
-
6
- const onSelect$ = new Subject()
7
-
8
- export const setLangs = langs => onSelect$.next(langs)
9
-
10
- const persistOn = (key, defaultValue) => input$ => {
11
- let persisted
12
- try {
13
- persisted = JSON.parse(window.localStorage.getItem(key))
14
- } catch (err) {} // eslint-disable-line no-empty
15
-
16
- return input$.pipe(
17
- startWith(persisted || defaultValue),
18
- tap(value => {
19
- window.localStorage.setItem(key, JSON.stringify(value))
20
- })
21
- )
22
- }
23
-
24
- const SUPPORTED_LANG_IDS = config.supportedLanguages.map(lang => lang.id)
25
-
26
- export const selectedLanguages$ = onSelect$.pipe(
27
- map(selectedLangs => intersection(selectedLangs, SUPPORTED_LANG_IDS)),
28
- publishReplay(1),
29
- refCount(),
30
- persistOn('@sanity/plugin/language-filter/selected-languages', SUPPORTED_LANG_IDS)
31
- )
32
-
33
- const defaultFilterField = (enclosingType, field, selectedLanguages) =>
34
- !enclosingType.name.startsWith('locale') || selectedLanguages.includes(field.name)
35
-
36
- const filterField = config.filterField || defaultFilterField
37
-
38
- export const filterFn$ = selectedLanguages$.pipe(
39
- map(langs => {
40
- return (enclosingType, field) => filterField(enclosingType, field, langs)
41
- })
42
- )
@@ -1 +0,0 @@
1
- export {filterFn$ as default} from './datastore'
@@ -1,50 +0,0 @@
1
- @import 'part:@sanity/base/theme/variables-style';
2
-
3
- .target {
4
- display: flex;
5
- align-items: center;
6
- color: var(--text-color);
7
- opacity: 1;
8
- min-width: 4rem;
9
- font-size: var(--font-size-xsmall);
10
- white-space: nowrap;
11
- height: 2.5rem;
12
- align-self: center;
13
- margin-right: 1em;
14
- }
15
-
16
- .arrow {
17
- margin-left: 0.4em;
18
- }
19
-
20
- .root {
21
- padding: 0.5em;
22
- background-color: var(--component-bg);
23
- color: var(--text-color);
24
- composes: shadow-6dp from 'part:@sanity/base/theme/shadows-style';
25
- user-select: none;
26
- text-align: left;
27
- overflow: auto;
28
- overflow-x: hidden;
29
- }
30
-
31
- .list {
32
- composes: resetList from 'part:@sanity/base/theme/layout/helpers';
33
- }
34
-
35
- .functions {
36
- padding: 0.5em;
37
- text-align: center;
38
- }
39
-
40
- .selectedNumFilter {
41
- color: var(--state-danger-color);
42
- font-weight: bold;
43
- }
44
-
45
- .item {
46
- padding: 0.5em;
47
- composes: resetListItem from 'part:@sanity/base/theme/layout/helpers';
48
- composes: item from 'part:@sanity/base/theme/layout/selectable-style';
49
- white-space: nowrap;
50
- }