mui-language-picker 1.1.15 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 SIL LSDev
3
+ Copyright (c) 2020-2022 SIL LSDev
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
@@ -4,7 +4,7 @@ Material UI react language picker
4
4
 
5
5
  ## Installation
6
6
 
7
- Complete installation for [material-ui](https://material-ui.com/getting-started/installation/).
7
+ Complete information for [material-ui](https://mui.com/material-ui/).
8
8
 
9
9
  ```sh
10
10
  npm install mui-language-picker --save
@@ -12,19 +12,26 @@ npm install mui-language-picker --save
12
12
 
13
13
  ## Usage
14
14
 
15
- ### TypeScript React 16 code
15
+ ### TypeScript React 18 code
16
16
 
17
17
  ```typescript
18
18
  import {
19
19
  LanguagePicker,
20
20
  ILanguagePickerStrings,
21
21
  languagePickerStrings_en,
22
+ LangTag,
23
+ DisplayName,
22
24
  } from "mui-language-picker";
23
25
 
24
26
  const MyComponent = (props: any) => {
25
27
  const [bcp47, setBcp47] = React.useState("und");
26
28
  const [lgName, setLgName] = React.useState("");
27
29
  const [fontName, setFontName] = React.useState("");
30
+ const [tag, setTag] = React.useState<LangTag>()
31
+
32
+ const displayName = (name: string, tag?:LangTag) => {
33
+ return tag.localname || tag.name
34
+ }
28
35
 
29
36
  return (
30
37
  <LanguagePicker
@@ -34,6 +41,8 @@ const MyComponent = (props: any) => {
34
41
  setName={setLgName}
35
42
  font={fontName}
36
43
  setFont={setFontName}
44
+ displayName={displayName}
45
+ setInfo={setTag}
37
46
  t={languagePickerStrings_en}
38
47
  />
39
48
  );
@@ -54,6 +63,8 @@ Output should be a Language Picker when entered opens a dialog
54
63
  | setName\* | (name: string) => void | callback to change language name |
55
64
  | font | string | font family name |
56
65
  | setFont\* | (font: string) => void | callback to change font family name |
66
+ | displayName\* | DisplayName | function to control display of name |
67
+ | setInfo\* | (tag: LangTag) => void | callback to receive tag information |
57
68
  | disabled\* | boolean | true if control disabled |
58
69
  | t | ILanguagePickerStrings | localization strings (see below) |
59
70
 
@@ -63,24 +74,53 @@ Output should be a Language Picker when entered opens a dialog
63
74
 
64
75
  ```typescript
65
76
  export const languagePickerStrings_en = {
66
- font: "Font",
67
- script: "Script",
68
- language: "Language",
69
- selectLanguage: "Choose Language Details",
70
- findALanguage: "Find a language by name, code, or country",
71
- codeExplained: "Code Explained",
72
- subtags: "Subtags",
73
- details: "Details",
74
- languageOf: "A Language of $1$2.",
75
- inScript: " in the $1 script",
76
- select: "Save",
77
- cancel: "Cancel",
78
- phonetic: "Phonetic",
77
+ font: 'Font',
78
+ script: 'Script',
79
+ language: 'Language',
80
+ selectLanguage: 'Choose Language Details',
81
+ findALanguage: 'Find a language by name, code, or country',
82
+ codeExplained: 'Code Explained',
83
+ subtags: 'Subtags',
84
+ details: 'Details',
85
+ languageOf: 'A Language of $1$2.',
86
+ inScript: ' in the $1 script',
87
+ select: 'Save',
88
+ cancel: 'Cancel',
89
+ phonetic: 'Phonetic',
90
+ changeName: 'Change Name',
91
+ nameInstruction:
92
+ 'If you would like to change the language name enter the new name here.',
93
+ newName: 'New Language Name',
94
+ change: 'Change',
79
95
  } as ILanguagePickerStrings;
80
96
  ```
81
97
 
98
+ ### Information returned by setInfo
99
+
100
+ ```typescript
101
+ export interface LangTag {
102
+ full: string;
103
+ iana?: string;
104
+ iso639_3?: string;
105
+ localname?: string;
106
+ name: string;
107
+ names?: string[];
108
+ nophonvars?: boolean;
109
+ region?: string;
110
+ regionname?: string;
111
+ regions?: string[];
112
+ script: string;
113
+ sldr: boolean;
114
+ tag: string;
115
+ tags?: string[];
116
+ variants?: string[];
117
+ defaultFont?: string;
118
+ fonts?: string[];
119
+ }
120
+ ```
121
+
82
122
  ### Change control background
83
- If the theme involves using a dark background, the control background can be changed with css. See also [material-ui](https://material-ui.com/) documentation.
123
+ If the theme involves using a dark background, the control background can be changed with css. See also [material-ui](https://mui.com/) documentation.
84
124
  ```css
85
125
  #LangBcp47 .MuiFilledInput-root {
86
126
  background-color: rgba(255, 255, 255, 0.9);
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { ILanguagePickerStrings } from './model';
3
+ interface IProps {
4
+ isOpen: boolean;
5
+ onClose?: () => void;
6
+ curName?: string;
7
+ onNewName?: (name: string) => void;
8
+ t?: ILanguagePickerStrings;
9
+ }
10
+ export default function ChangeName({ isOpen, onClose, curName, onNewName, t, }: IProps): JSX.Element;
11
+ export {};
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ var React = __importStar(require("react"));
30
+ var Button_1 = __importDefault(require("@mui/material/Button"));
31
+ var TextField_1 = __importDefault(require("@mui/material/TextField"));
32
+ var Dialog_1 = __importDefault(require("@mui/material/Dialog"));
33
+ var DialogActions_1 = __importDefault(require("@mui/material/DialogActions"));
34
+ var DialogContent_1 = __importDefault(require("@mui/material/DialogContent"));
35
+ var DialogContentText_1 = __importDefault(require("@mui/material/DialogContentText"));
36
+ var DialogTitle_1 = __importDefault(require("@mui/material/DialogTitle"));
37
+ var localization_1 = require("./localization");
38
+ function ChangeName(_a) {
39
+ var isOpen = _a.isOpen, onClose = _a.onClose, curName = _a.curName, onNewName = _a.onNewName, t = _a.t;
40
+ var _b = React.useState(isOpen), open = _b[0], setOpen = _b[1];
41
+ var _c = React.useState(curName || ''), name = _c[0], setName = _c[1];
42
+ var handleClose = function (save) { return function () {
43
+ if (save && name)
44
+ onNewName && onNewName(name);
45
+ onClose && onClose();
46
+ setOpen(false);
47
+ }; };
48
+ var handleNameChange = function (event) {
49
+ setName(event.target.value);
50
+ };
51
+ React.useEffect(function () {
52
+ setOpen(isOpen);
53
+ }, [isOpen]);
54
+ return (React.createElement(Dialog_1.default, { open: open, onClose: handleClose() },
55
+ React.createElement(DialogTitle_1.default, null, (t === null || t === void 0 ? void 0 : t.changeName) || localization_1.languagePickerStrings_en.changeName),
56
+ React.createElement(DialogContent_1.default, null,
57
+ React.createElement(DialogContentText_1.default, null, (t === null || t === void 0 ? void 0 : t.nameInstruction) || localization_1.languagePickerStrings_en.nameInstruction),
58
+ React.createElement(TextField_1.default, { autoFocus: true, margin: "dense", id: "name", label: (t === null || t === void 0 ? void 0 : t.newName) || localization_1.languagePickerStrings_en.newName, fullWidth: true, value: name, onChange: handleNameChange })),
59
+ React.createElement(DialogActions_1.default, null,
60
+ React.createElement(Button_1.default, { onClick: handleClose() }, (t === null || t === void 0 ? void 0 : t.cancel) || localization_1.languagePickerStrings_en.cancel),
61
+ React.createElement(Button_1.default, { onClick: handleClose(true) }, (t === null || t === void 0 ? void 0 : t.change) || localization_1.languagePickerStrings_en.change))));
62
+ }
63
+ exports.default = ChangeName;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const GrowingSpacer: () => JSX.Element;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GrowingSpacer = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var material_1 = require("@mui/material");
9
+ var GrowingSpacer = function () { return react_1.default.createElement(material_1.Box, { sx: { flexGrow: 1 } }, '\u00A0'); };
10
+ exports.GrowingSpacer = GrowingSpacer;
@@ -1,12 +1,14 @@
1
1
  /// <reference types="react" />
2
2
  import { ILanguagePickerStrings } from './model';
3
3
  import { LangTag, ScriptName } from './langPicker/types';
4
+ import { DisplayName } from './getDisplayName';
4
5
  interface IProps {
5
6
  list: number[];
6
7
  choose: (tag: LangTag) => void;
7
8
  secondary?: boolean;
8
9
  langTags: LangTag[];
9
10
  scriptName: ScriptName;
11
+ displayName?: DisplayName;
10
12
  t: ILanguagePickerStrings;
11
13
  }
12
14
  export declare function LanguageChoice(props: IProps): JSX.Element;
@@ -1,41 +1,39 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
26
  exports.LanguageChoice = void 0;
7
- var react_1 = __importDefault(require("react"));
8
- var styles_1 = require("@material-ui/core/styles");
9
- var core_1 = require("@material-ui/core");
27
+ var react_1 = __importStar(require("react"));
28
+ var material_1 = require("@mui/material");
10
29
  var lodash_1 = require("lodash");
11
- var useStyles = styles_1.makeStyles(function (theme) {
12
- return styles_1.createStyles({
13
- root: {
14
- flexGrow: 1,
15
- maxWidth: 752,
16
- },
17
- paper: {
18
- backgroundColor: theme.palette.background.paper,
19
- },
20
- list: {
21
- overflowY: 'scroll',
22
- },
23
- title: {
24
- margin: theme.spacing(4, 0, 2),
25
- },
26
- firstLine: {
27
- display: 'flex',
28
- },
29
- grow: {
30
- flexGrow: 1,
31
- },
32
- });
33
- });
30
+ var GrowingSpacer_1 = require("./GrowingSpacer");
31
+ var getDisplayName_1 = require("./getDisplayName");
34
32
  function LanguageChoice(props) {
35
33
  var list = props.list, langTags = props.langTags, scriptName = props.scriptName, secondary = props.secondary, t = props.t, choose = props.choose;
36
- var classes = useStyles();
37
- var dense = react_1.default.useState(true)[0];
38
- var _a = react_1.default.useState(window.innerHeight), height = _a[0], setHeight = _a[1];
34
+ var displayName = props.displayName;
35
+ var dense = (0, react_1.useState)(true)[0];
36
+ var _a = (0, react_1.useState)(window.innerHeight), height = _a[0], setHeight = _a[1];
39
37
  var handleChoose = function (tag) { return function () {
40
38
  choose(tag);
41
39
  }; };
@@ -44,8 +42,8 @@ function LanguageChoice(props) {
44
42
  choose(tag);
45
43
  }
46
44
  }; };
47
- react_1.default.useEffect(function () {
48
- var handleResize = lodash_1.debounce(function () { return setHeight(window.innerHeight); }, 100);
45
+ (0, react_1.useEffect)(function () {
46
+ var handleResize = (0, lodash_1.debounce)(function () { return setHeight(window.innerHeight); }, 100);
49
47
  window.addEventListener('resize', handleResize);
50
48
  return function () {
51
49
  window.removeEventListener('resize', handleResize);
@@ -59,25 +57,25 @@ function LanguageChoice(props) {
59
57
  };
60
58
  var detail = function (tag) {
61
59
  return (react_1.default.createElement(react_1.default.Fragment, null,
62
- react_1.default.createElement(core_1.Typography, { component: 'span' }, t.languageOf
60
+ react_1.default.createElement(material_1.Typography, { component: 'span' }, t.languageOf
63
61
  .replace('$1', tag.regionname ? tag.regionname : '')
64
62
  .replace('$2', scriptDetail(tag))),
65
63
  react_1.default.createElement("br", null),
66
- react_1.default.createElement(core_1.Typography, { component: 'span' }, tag.names ? tag.names.join(', ') : '')));
64
+ react_1.default.createElement(material_1.Typography, { component: 'span' }, tag.names ? tag.names.join(', ') : '')));
67
65
  };
68
66
  var langElems = function (refList, refTags) {
69
67
  return refList.map(function (r, i) {
70
68
  var tag = refTags[r];
71
- return (react_1.default.createElement(core_1.ListItem, { key: tag.tag + " " + i, button: true, onClick: handleChoose(tag), onKeyDown: handleKeydown(tag) },
72
- react_1.default.createElement(core_1.ListItemText, { primary: react_1.default.createElement("div", { className: classes.firstLine },
73
- react_1.default.createElement(core_1.Typography, null, tag.name),
74
- react_1.default.createElement("div", { className: classes.grow }, '\u00A0'),
75
- react_1.default.createElement(core_1.Typography, null, tag.tag)), secondary: secondary ? detail(tag) : null })));
69
+ return (react_1.default.createElement(material_1.ListItem, { key: "".concat(tag.tag, " ").concat(i), button: true, onClick: handleChoose(tag), onKeyDown: handleKeydown(tag) },
70
+ react_1.default.createElement(material_1.ListItemText, { primary: react_1.default.createElement(material_1.Box, { sx: { display: 'flex' } },
71
+ react_1.default.createElement(material_1.Typography, null, (0, getDisplayName_1.getDisplayName)(tag.name, tag, displayName)),
72
+ react_1.default.createElement(GrowingSpacer_1.GrowingSpacer, null),
73
+ react_1.default.createElement(material_1.Typography, null, tag.tag)), secondary: secondary ? detail(tag) : null })));
76
74
  });
77
75
  };
78
- return (react_1.default.createElement("div", { className: classes.root },
79
- react_1.default.createElement("div", { className: classes.paper },
80
- react_1.default.createElement(core_1.List, { dense: dense, className: classes.list, style: { maxHeight: Math.max(height - 450, 200) } }, langElems(list, langTags)))));
76
+ return (react_1.default.createElement(material_1.Box, { sx: { flexGrow: 1, maxWidth: 752 } },
77
+ react_1.default.createElement(material_1.Box, { sx: { backgroundColor: 'background.paper' } },
78
+ react_1.default.createElement(material_1.List, { dense: dense, sx: { overflowY: 'scroll' }, style: { maxHeight: Math.max(height - 450, 200) } }, langElems(list, langTags)))));
81
79
  }
82
80
  exports.LanguageChoice = LanguageChoice;
83
81
  exports.default = LanguageChoice;
@@ -1,5 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { ILanguagePickerStrings } from './model';
3
+ import { LangTag } from './langPicker/types';
4
+ import { DisplayName } from './getDisplayName';
3
5
  interface IStateProps {
4
6
  t: ILanguagePickerStrings;
5
7
  }
@@ -7,9 +9,11 @@ interface IProps extends IStateProps {
7
9
  value: string;
8
10
  name: string;
9
11
  font: string;
12
+ displayName?: DisplayName;
10
13
  setCode?: (code: string) => void;
11
14
  setName?: (name: string) => void;
12
15
  setFont?: (font: string) => void;
16
+ setInfo?: (tag: LangTag) => void;
13
17
  disabled?: boolean;
14
18
  }
15
19
  export declare const LanguagePicker: (props: IProps) => JSX.Element;
@@ -16,12 +16,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.LanguagePicker = void 0;
18
18
  var react_1 = __importDefault(require("react"));
19
- var styles_1 = require("@material-ui/core/styles");
20
- var core_1 = require("@material-ui/core");
21
- var Clear_1 = __importDefault(require("@material-ui/icons/Clear"));
19
+ var material_1 = require("@mui/material");
20
+ var Clear_1 = __importDefault(require("@mui/icons-material/Clear"));
21
+ var BorderColor_1 = __importDefault(require("@mui/icons-material/BorderColor"));
22
22
  var util_1 = require("./util");
23
23
  var LanguageChoice_1 = __importDefault(require("./LanguageChoice"));
24
- var clsx_1 = __importDefault(require("clsx"));
25
24
  var LgExact_1 = require("./index/LgExact");
26
25
  var LgScripts_1 = require("./index/LgScripts");
27
26
  var LgScriptName_1 = require("./index/LgScriptName");
@@ -29,51 +28,22 @@ var LgFontMap_1 = require("./index/LgFontMap");
29
28
  var bcp47_1 = require("./bcp47");
30
29
  var langTags_1 = require("./langTags");
31
30
  var useDebounce_1 = __importDefault(require("./useDebounce"));
31
+ var GrowingSpacer_1 = require("./GrowingSpacer");
32
+ var ChangeName_1 = __importDefault(require("./ChangeName"));
33
+ var getDisplayName_1 = require("./getDisplayName");
32
34
  var MAXOPTIONS = 50;
33
- var useStyles = styles_1.makeStyles(function (theme) {
34
- return styles_1.createStyles({
35
- root: {
36
- '& .MuiDialog-paperScrollPaper': {
37
- marginBottom: 'auto',
38
- width: '90%',
39
- },
40
- },
41
- check: {
42
- justifyContent: 'flex-end',
43
- },
44
- label: {
45
- flexDirection: 'row-reverse',
46
- },
47
- label2: {
48
- flexDirection: 'row-reverse',
49
- marginRight: 0,
50
- },
51
- textField: {
52
- width: 150,
53
- marginLeft: theme.spacing(1),
54
- marginRight: theme.spacing(1),
55
- },
56
- fontField: {
57
- width: 300,
58
- marginLeft: theme.spacing(1),
59
- marginRight: theme.spacing(1),
60
- },
61
- menu: {
62
- width: 200,
63
- },
64
- hide: {
65
- display: 'none',
66
- },
67
- grow: {
68
- flexGrow: 1,
69
- },
70
- });
71
- });
72
- exports.LanguagePicker = function (props) {
35
+ var menuWidth = { width: 200 };
36
+ var StyledDialog = (0, material_1.styled)(material_1.Dialog)(function () { return ({
37
+ '& .MuiDialog-paperScrollPaper': {
38
+ marginBottom: 'auto',
39
+ width: '90%',
40
+ },
41
+ }); });
42
+ var LanguagePicker = function (props) {
73
43
  var _a;
74
44
  var disabled = props.disabled;
75
- var value = props.value, name = props.name, font = props.font, setCode = props.setCode, setName = props.setName, setFont = props.setFont, t = props.t;
76
- var classes = useStyles();
45
+ var value = props.value, name = props.name, font = props.font, setCode = props.setCode, setName = props.setName, setFont = props.setFont, setInfo = props.setInfo, t = props.t;
46
+ var displayName = props.displayName;
77
47
  var _b = react_1.default.useState(false), open = _b[0], setOpen = _b[1];
78
48
  var _c = react_1.default.useState(value), curValue = _c[0], setCurValue = _c[1];
79
49
  var _d = react_1.default.useState(name), curName = _d[0], setCurName = _d[1];
@@ -84,8 +54,9 @@ exports.LanguagePicker = function (props) {
84
54
  var _j = react_1.default.useState(''), defaultScript = _j[0], setDefaultScript = _j[1];
85
55
  var _k = react_1.default.useState(''), defaultFont = _k[0], setDefaultFont = _k[1];
86
56
  var _l = react_1.default.useState(Array()), fontOpts = _l[0], setFontOpts = _l[1];
57
+ var _m = react_1.default.useState(false), newName = _m[0], setNewName = _m[1];
87
58
  var langEl = react_1.default.useRef();
88
- var debouncedResponse = useDebounce_1.default(response, 500);
59
+ var debouncedResponse = (0, useDebounce_1.default)(response, 500);
89
60
  var TAB = 9;
90
61
  var SHIFT = 16;
91
62
  var CTRL = 17;
@@ -97,10 +68,11 @@ exports.LanguagePicker = function (props) {
97
68
  return;
98
69
  if (e.keyCode && [TAB, SHIFT, CTRL].indexOf(e.keyCode) !== -1)
99
70
  return;
100
- var found = bcp47_1.bcp47Find(curValue);
71
+ var found = (0, bcp47_1.bcp47Find)(curValue);
101
72
  if (curValue !== 'und') {
102
73
  if (found && !Array.isArray(found)) {
103
- setResponse(curName + ' (' + curValue + ')');
74
+ var tagName = (0, getDisplayName_1.getDisplayName)(curName, found, displayName);
75
+ setResponse(tagName + ' (' + curValue + ')');
104
76
  setTag(found);
105
77
  selectFont(found);
106
78
  setDefaultScript(found.script);
@@ -108,9 +80,9 @@ exports.LanguagePicker = function (props) {
108
80
  }
109
81
  else {
110
82
  var key = curValue.toLocaleLowerCase();
111
- if (LgExact_1.hasExact(key)) {
83
+ if ((0, LgExact_1.hasExact)(key)) {
112
84
  setResponse(curName + ' (' + curValue + ')');
113
- var langTag = langTags_1.langTags[LgExact_1.getExact(key)[0]];
85
+ var langTag = langTags_1.langTags[(0, LgExact_1.getExact)(key)[0]];
114
86
  setTag(langTag);
115
87
  selectFont(langTag);
116
88
  setDefaultScript(langTag.script);
@@ -142,7 +114,8 @@ exports.LanguagePicker = function (props) {
142
114
  };
143
115
  var displayTag = function (tagP, val) {
144
116
  if (tagP && tagP.name) {
145
- setResponse(tagP.name + ' (' + tagP.tag + ')');
117
+ var tagName = (0, getDisplayName_1.getDisplayName)(tagP.name, tagP, displayName);
118
+ setResponse(tagName + ' (' + tagP.tag + ')');
146
119
  setCurValue(val ? val : tagP.tag);
147
120
  setCurName(tagP.name);
148
121
  }
@@ -154,6 +127,8 @@ exports.LanguagePicker = function (props) {
154
127
  setName(curName);
155
128
  if (setFont)
156
129
  setFont(curFont);
130
+ if (setInfo && tag)
131
+ setInfo(tag);
157
132
  if (tag) {
158
133
  displayTag(tag, curValue);
159
134
  }
@@ -184,7 +159,7 @@ exports.LanguagePicker = function (props) {
184
159
  var selectFont = function (tagP) {
185
160
  if (!tagP || tagP.tag === 'und')
186
161
  return;
187
- var parse = bcp47_1.bcp47Parse(tagP.tag);
162
+ var parse = (0, bcp47_1.bcp47Parse)(tagP.tag);
188
163
  var script = parse.script ? parse.script : tagP.script;
189
164
  var region = parse.region ? parse.region : tagP.region;
190
165
  var code = script;
@@ -202,6 +177,17 @@ exports.LanguagePicker = function (props) {
202
177
  else
203
178
  selectDefaultFont(code);
204
179
  };
180
+ var handleNewName = function () {
181
+ setNewName(true);
182
+ };
183
+ var handleCloseName = function () {
184
+ setNewName(false);
185
+ };
186
+ var handleSetName = function (name) {
187
+ setCurName(name);
188
+ var tagName = (0, getDisplayName_1.getDisplayName)(name, tag, displayName);
189
+ setResponse(tagName);
190
+ };
205
191
  react_1.default.useEffect(function () {
206
192
  if (response === '')
207
193
  handleClear();
@@ -215,7 +201,7 @@ exports.LanguagePicker = function (props) {
215
201
  var handleScriptChange = function (tagP) { return function (e) {
216
202
  var val = e.target.value;
217
203
  setDefaultScript(val);
218
- var parse = bcp47_1.bcp47Parse(curValue);
204
+ var parse = (0, bcp47_1.bcp47Parse)(curValue);
219
205
  var script = parse.script ? parse.script : tagP === null || tagP === void 0 ? void 0 : tagP.script;
220
206
  if (script !== val) {
221
207
  var newTag = parse.language || 'und';
@@ -223,13 +209,13 @@ exports.LanguagePicker = function (props) {
223
209
  newTag += '-' + val;
224
210
  if (parse.region)
225
211
  newTag += '-' + parse.region;
226
- var found = bcp47_1.bcp47Find(newTag);
212
+ var found = (0, bcp47_1.bcp47Find)(newTag);
227
213
  if (found) {
228
214
  var firstFind = Array.isArray(found) ? found[0] : found;
229
215
  setTag(firstFind);
230
216
  var myTag_1 = firstFind.tag;
231
217
  if (val === IpaTag)
232
- myTag_1 += "-" + IpaTag;
218
+ myTag_1 += "-".concat(IpaTag);
233
219
  else if (parse.variant && parse.variant !== IpaTag)
234
220
  myTag_1 += '-' + parse.variant;
235
221
  if (parse.extension)
@@ -246,14 +232,14 @@ exports.LanguagePicker = function (props) {
246
232
  }
247
233
  }; };
248
234
  var selectScript = function (tagP) {
249
- var tagParts = bcp47_1.bcp47Parse(tagP.tag);
235
+ var tagParts = (0, bcp47_1.bcp47Parse)(tagP.tag);
250
236
  selectFont(tagP);
251
237
  setDefaultScript(tagParts.script ? tagParts.script : tagP.script);
252
238
  };
253
239
  var scriptList = function (tagP) {
254
240
  if (!tagP)
255
241
  return [];
256
- return LgScripts_1.getScripts(tagP.tag.split('-')[0]).concat(IpaTag);
242
+ return (0, LgScripts_1.getScripts)(tagP.tag.split('-')[0]).concat(IpaTag);
257
243
  };
258
244
  var handleLanguageClick = function () {
259
245
  if (tag)
@@ -262,7 +248,7 @@ exports.LanguagePicker = function (props) {
262
248
  };
263
249
  var handleChoose = function (tagP) {
264
250
  var newTag = tagP;
265
- var found = bcp47_1.bcp47Find(response);
251
+ var found = (0, bcp47_1.bcp47Find)(response);
266
252
  var maxMatch = '';
267
253
  var tagList = [tagP.full, tagP.tag];
268
254
  if (tagP.iso639_3) {
@@ -273,7 +259,7 @@ exports.LanguagePicker = function (props) {
273
259
  tagList.push(tagP.iso639_3 + '-' + tagP.script + '-' + tagP.region);
274
260
  }
275
261
  }
276
- var parse = bcp47_1.bcp47Parse(response);
262
+ var parse = (0, bcp47_1.bcp47Parse)(response);
277
263
  if (parse.extlang && parse.language) {
278
264
  tagList.push(parse.language);
279
265
  tagList.push(parse.language + '-' + tagP.script);
@@ -298,7 +284,7 @@ exports.LanguagePicker = function (props) {
298
284
  if (maxMatch !== '') {
299
285
  var newCode = tagP.tag;
300
286
  if (parse.variant && tagP.tag.indexOf(tagP.script) > 0) {
301
- newCode = tagP.tag.replace("-" + tagP.script, '');
287
+ newCode = tagP.tag.replace("-".concat(tagP.script), '');
302
288
  }
303
289
  newTag = __assign(__assign({}, tagP), { tag: newCode + response.slice(maxMatch.length) });
304
290
  displayTag(newTag);
@@ -326,14 +312,14 @@ exports.LanguagePicker = function (props) {
326
312
  var list_1 = Array();
327
313
  debouncedResponse.split(' ').forEach(function (w) {
328
314
  if (w.length > 1) {
329
- var wLangTags = bcp47_1.bcp47Index(w);
315
+ var wLangTags = (0, bcp47_1.bcp47Index)(w);
330
316
  if (wLangTags) {
331
317
  list_1 = mergeList(list_1, wLangTags);
332
318
  }
333
319
  else {
334
- var token = util_1.woBadChar(w).toLocaleLowerCase();
335
- if (LgExact_1.hasExact(token)) {
336
- list_1 = mergeList(list_1, LgExact_1.getExact(token));
320
+ var token = (0, util_1.woBadChar)(w).toLocaleLowerCase();
321
+ if ((0, LgExact_1.hasExact)(token)) {
322
+ list_1 = mergeList(list_1, (0, LgExact_1.getExact)(token));
337
323
  }
338
324
  }
339
325
  }
@@ -342,18 +328,18 @@ exports.LanguagePicker = function (props) {
342
328
  if (w.length > 1) {
343
329
  var lastDash = w.lastIndexOf('-');
344
330
  if (lastDash !== -1) {
345
- var wLangTags = bcp47_1.bcp47Index(w.slice(0, lastDash));
331
+ var wLangTags = (0, bcp47_1.bcp47Index)(w.slice(0, lastDash));
346
332
  if (wLangTags)
347
333
  list_1 = mergeList(list_1, wLangTags);
348
334
  }
349
335
  else {
350
- var token_1 = util_1.woBadChar(w).toLocaleLowerCase();
351
- if (LgExact_1.hasPart(token_1)) {
336
+ var token_1 = (0, util_1.woBadChar)(w).toLocaleLowerCase();
337
+ if ((0, LgExact_1.hasPart)(token_1)) {
352
338
  var tokLen_1 = token_1.length;
353
- Object.keys(LgExact_1.getPart(token_1)).forEach(function (k) {
339
+ Object.keys((0, LgExact_1.getPart)(token_1)).forEach(function (k) {
354
340
  if (list_1.length < MAXOPTIONS) {
355
341
  if (token_1 === k.slice(0, tokLen_1))
356
- list_1 = mergeList(list_1, LgExact_1.getExact(k));
342
+ list_1 = mergeList(list_1, (0, LgExact_1.getExact)(k));
357
343
  }
358
344
  });
359
345
  }
@@ -362,48 +348,49 @@ exports.LanguagePicker = function (props) {
362
348
  });
363
349
  if (list_1.length > 0) {
364
350
  return (react_1.default.createElement(react_1.default.Fragment, null,
365
- react_1.default.createElement(core_1.FormGroup, { row: true, className: classes.check },
366
- react_1.default.createElement(core_1.FormControlLabel, { className: classes.label2, control: react_1.default.createElement(core_1.Checkbox, { checked: secondary, onChange: function (event) { return setSecondary(event.target.checked); }, value: "secondary" }), label: t.details })),
367
- react_1.default.createElement(LanguageChoice_1.default, { list: list_1, secondary: secondary, choose: handleChoose, langTags: langTags_1.langTags, scriptName: LgScriptName_1.scriptName, t: t })));
351
+ react_1.default.createElement(material_1.FormGroup, { row: true, sx: { justifyContent: 'flex-end' } },
352
+ react_1.default.createElement(material_1.FormControlLabel, { sx: { flexDirection: 'row-reverse', mr: 0 }, control: react_1.default.createElement(material_1.Checkbox, { checked: secondary, onChange: function (event) { return setSecondary(event.target.checked); }, value: "secondary" }), label: t.details })),
353
+ react_1.default.createElement(LanguageChoice_1.default, { list: list_1, secondary: secondary, choose: handleChoose, langTags: langTags_1.langTags, scriptName: LgScriptName_1.scriptName, displayName: displayName, t: t })));
368
354
  }
369
355
  }
370
356
  return react_1.default.createElement(react_1.default.Fragment, null);
371
357
  };
372
358
  return (react_1.default.createElement("div", { id: "LangBcp47" },
373
- react_1.default.createElement(core_1.TextField, { variant: "filled", margin: "dense", id: "lang-bcp47", label: t.language, required: true, style: { width: 300 }, value: value !== 'und' ? name + ' (' + value + ')' : '', onClick: handleClickOpen, onKeyDown: handleClickOpen, disabled: disabled ? disabled : false }),
374
- react_1.default.createElement(core_1.Dialog, { id: "LanguagePicker", open: open, onClose: handleCancel, "aria-labelledby": "form-dialog-title", className: classes.root },
375
- react_1.default.createElement(core_1.DialogTitle, { id: "form-dialog-title" }, t.selectLanguage),
376
- react_1.default.createElement(core_1.DialogContent, { dividers: true },
377
- react_1.default.createElement(core_1.TextField, { autoFocus: true, margin: "normal", id: "language", label: t.findALanguage, fullWidth: true, value: response, onChange: handleChange, onClick: handleLanguageClick, variant: "outlined", InputProps: {
359
+ react_1.default.createElement(material_1.TextField, { variant: "filled", margin: "dense", id: "lang-bcp47", label: t.language, required: true, style: { width: 300 }, value: value !== 'und' ? name + ' (' + value + ')' : '', onClick: handleClickOpen, onKeyDown: handleClickOpen, disabled: disabled ? disabled : false }),
360
+ react_1.default.createElement(StyledDialog, { id: "LanguagePicker", open: open, onClose: handleCancel, "aria-labelledby": "form-dialog-title" },
361
+ react_1.default.createElement(material_1.DialogTitle, { id: "form-dialog-title" }, t.selectLanguage),
362
+ react_1.default.createElement(material_1.DialogContent, { dividers: true },
363
+ react_1.default.createElement(material_1.TextField, { autoFocus: true, margin: "normal", id: "language", label: t.findALanguage, fullWidth: true, value: response, onChange: handleChange, onClick: handleLanguageClick, variant: "outlined", InputProps: {
378
364
  ref: langEl,
379
- endAdornment: (react_1.default.createElement(core_1.InputAdornment, { position: "end", className: clsx_1.default((_a = {}, _a[classes.hide] = response === '', _a)) },
380
- react_1.default.createElement(core_1.IconButton, { edge: "end", "aria-label": "clear language", onClick: handleClear },
381
- react_1.default.createElement(Clear_1.default, null)))),
365
+ endAdornment: (react_1.default.createElement(material_1.InputAdornment, { position: "end" },
366
+ react_1.default.createElement(material_1.IconButton, { edge: "end", "aria-label": "clear language", onClick: handleClear },
367
+ react_1.default.createElement(Clear_1.default, { color: "primary" })))),
382
368
  } }),
383
369
  optList(),
384
- react_1.default.createElement(core_1.FormControlLabel, { control: react_1.default.createElement(core_1.TextField, { id: "select-script", select: true, className: classes.textField, label: t.script, value: defaultScript, onChange: handleScriptChange(tag), style: { width: 400 }, SelectProps: {
385
- MenuProps: {
386
- className: classes.menu,
387
- },
370
+ react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.TextField, { id: "select-script", select: true, sx: { width: 150, mx: 1 }, label: t.script, value: defaultScript, onChange: handleScriptChange(tag), style: { width: 400 }, SelectProps: {
371
+ MenuProps: __assign({ sx: menuWidth }),
388
372
  }, helperText: '', margin: "normal", variant: "filled", required: true }, scriptList(tag)
389
- .map(function (s) { return (react_1.default.createElement(core_1.MenuItem, { key: s, value: s }, LgScriptName_1.scriptName[s] + ' - ' + s)); })
373
+ .map(function (s) { return (react_1.default.createElement(material_1.MenuItem, { key: s, value: s }, LgScriptName_1.scriptName[s] + ' - ' + s)); })
390
374
  .concat(scriptList(tag).includes(defaultScript)
391
375
  ? []
392
376
  : [
393
- react_1.default.createElement(core_1.MenuItem, { key: defaultScript, value: defaultScript }, defaultScript),
377
+ react_1.default.createElement(material_1.MenuItem, { key: defaultScript, value: defaultScript }, defaultScript),
394
378
  ])), label: "" }),
395
- react_1.default.createElement(core_1.FormControlLabel, { control: react_1.default.createElement(core_1.TextField, { id: "select-font", select: true, className: classes.fontField, label: t.font, value: defaultFont, onChange: addFontInfo, SelectProps: {
396
- MenuProps: {
397
- className: classes.menu,
398
- },
399
- }, helperText: '', margin: "normal", variant: "filled", required: true }, fontOpts.map(function (s) { return (react_1.default.createElement(core_1.MenuItem, { key: s, value: s }, s)); })), label: "" })),
400
- react_1.default.createElement(core_1.DialogActions, null,
379
+ react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.TextField, { id: "select-font", select: true, sx: { width: 300, mx: 1 }, label: t.font, value: defaultFont, onChange: addFontInfo, SelectProps: {
380
+ MenuProps: __assign({ sx: menuWidth }),
381
+ }, helperText: '', margin: "normal", variant: "filled", required: true }, fontOpts.map(function (s) { return (react_1.default.createElement(material_1.MenuItem, { key: s, value: s }, s)); })), label: "" })),
382
+ react_1.default.createElement(material_1.DialogActions, null,
401
383
  react_1.default.createElement("a", { href: "https://www.w3.org/International/questions/qa-choosing-language-tags", target: "_blank", rel: "noopener noreferrer" },
402
- react_1.default.createElement(core_1.Typography, null, t.codeExplained)),
403
- react_1.default.createElement("div", { className: classes.grow }, '\u00A0'),
404
- react_1.default.createElement(core_1.Button, { onClick: handleCancel, color: "primary" },
405
- react_1.default.createElement(core_1.Typography, null, t.cancel)),
406
- react_1.default.createElement(core_1.Button, { onClick: handleSelect, color: "primary", disabled: tag === undefined },
407
- react_1.default.createElement(core_1.Typography, null, t.select))))));
384
+ react_1.default.createElement(material_1.Typography, null, t.codeExplained)),
385
+ curName !== '' && (react_1.default.createElement(material_1.Tooltip, { title: (_a = t.changeName) !== null && _a !== void 0 ? _a : 'Change name' },
386
+ react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: handleNewName },
387
+ react_1.default.createElement(BorderColor_1.default, { fontSize: "small" })))),
388
+ react_1.default.createElement(GrowingSpacer_1.GrowingSpacer, null),
389
+ react_1.default.createElement(material_1.Button, { onClick: handleCancel, color: "primary" },
390
+ react_1.default.createElement(material_1.Typography, null, t.cancel)),
391
+ react_1.default.createElement(material_1.Button, { onClick: handleSelect, color: "primary", disabled: tag === undefined },
392
+ react_1.default.createElement(material_1.Typography, null, t.select)))),
393
+ newName && (react_1.default.createElement(ChangeName_1.default, { isOpen: newName, onClose: handleCloseName, curName: curName, onNewName: handleSetName, t: t }))));
408
394
  };
395
+ exports.LanguagePicker = LanguagePicker;
409
396
  exports.default = exports.LanguagePicker;
@@ -0,0 +1,3 @@
1
+ import { LangTag } from './model';
2
+ export declare type DisplayName = (curName: string, tag: LangTag | undefined) => string;
3
+ export declare const getDisplayName: (curName: string, tag: LangTag | undefined, displayName?: DisplayName) => string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDisplayName = void 0;
4
+ var getDisplayName = function (curName, tag, displayName) {
5
+ // If user setup a custom language name
6
+ if (tag && curName !== tag.name)
7
+ return curName;
8
+ // if caller provided a custom name formatter
9
+ if (displayName)
10
+ return displayName(curName, tag);
11
+ // By default show the local name if present and the name
12
+ var tagName = curName;
13
+ if ((tag === null || tag === void 0 ? void 0 : tag.localname) && tag.localname.toLowerCase() !== curName.toLowerCase())
14
+ tagName = "".concat(tag.localname, " / ").concat(curName);
15
+ return tagName;
16
+ };
17
+ exports.getDisplayName = getDisplayName;
@@ -204,7 +204,7 @@ var _31925_1 = require("./Exact/31925");
204
204
  var _31908_1 = require("./Exact/31908");
205
205
  var _20013_1 = require("./Exact/20013");
206
206
  var _32321_1 = require("./Exact/32321");
207
- exports.hasExact = function (key) {
207
+ var hasExact = function (key) {
208
208
  if (!key || key.length === 0)
209
209
  return false;
210
210
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -413,7 +413,8 @@ exports.hasExact = function (key) {
413
413
  default: return false;
414
414
  }
415
415
  };
416
- exports.getExact = function (key) {
416
+ exports.hasExact = hasExact;
417
+ var getExact = function (key) {
417
418
  if (!key || key.length === 0)
418
419
  return [];
419
420
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -622,7 +623,8 @@ exports.getExact = function (key) {
622
623
  default: return [];
623
624
  }
624
625
  };
625
- exports.hasPart = function (key) {
626
+ exports.getExact = getExact;
627
+ var hasPart = function (key) {
626
628
  if (!key || key.length === 0)
627
629
  return false;
628
630
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -831,7 +833,8 @@ exports.hasPart = function (key) {
831
833
  default: return false;
832
834
  }
833
835
  };
834
- exports.getPart = function (key) {
836
+ exports.hasPart = hasPart;
837
+ var getPart = function (key) {
835
838
  if (!key || key.length === 0)
836
839
  return [];
837
840
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -1040,3 +1043,4 @@ exports.getPart = function (key) {
1040
1043
  default: return [];
1041
1044
  }
1042
1045
  };
1046
+ exports.getPart = getPart;
@@ -29,7 +29,7 @@ var _119_1 = require("./Scripts/119");
29
29
  var _120_1 = require("./Scripts/120");
30
30
  var _121_1 = require("./Scripts/121");
31
31
  var _122_1 = require("./Scripts/122");
32
- exports.hasScripts = function (key) {
32
+ var hasScripts = function (key) {
33
33
  if (!key || key.length === 0)
34
34
  return false;
35
35
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -63,7 +63,8 @@ exports.hasScripts = function (key) {
63
63
  default: return false;
64
64
  }
65
65
  };
66
- exports.getScripts = function (key) {
66
+ exports.hasScripts = hasScripts;
67
+ var getScripts = function (key) {
67
68
  if (!key || key.length === 0)
68
69
  return [];
69
70
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -97,7 +98,8 @@ exports.getScripts = function (key) {
97
98
  default: return [];
98
99
  }
99
100
  };
100
- exports.hasPart = function (key) {
101
+ exports.getScripts = getScripts;
102
+ var hasPart = function (key) {
101
103
  if (!key || key.length === 0)
102
104
  return false;
103
105
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -131,7 +133,8 @@ exports.hasPart = function (key) {
131
133
  default: return false;
132
134
  }
133
135
  };
134
- exports.getPart = function (key) {
136
+ exports.hasPart = hasPart;
137
+ var getPart = function (key) {
135
138
  if (!key || key.length === 0)
136
139
  return [];
137
140
  switch (key.slice(0, 1).charCodeAt(0)) {
@@ -165,3 +168,4 @@ exports.getPart = function (key) {
165
168
  default: return [];
166
169
  }
167
170
  };
171
+ exports.getPart = getPart;
package/dist/index.js CHANGED
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
8
12
  }));
9
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./LanguagePicker"), exports);
@@ -12,5 +12,9 @@ export interface ILanguagePickerStrings {
12
12
  select: string;
13
13
  cancel: string;
14
14
  phonetic: string;
15
+ changeName?: string;
16
+ nameInstruction?: string;
17
+ newName?: string;
18
+ change?: string;
15
19
  }
16
20
  export declare const languagePickerStrings_en: ILanguagePickerStrings;
@@ -15,5 +15,9 @@ exports.languagePickerStrings_en = {
15
15
  inScript: ' in the $1 script',
16
16
  select: 'Save',
17
17
  cancel: 'Cancel',
18
- phonetic: 'Phonetic'
18
+ phonetic: 'Phonetic',
19
+ changeName: 'Change Name',
20
+ nameInstruction: 'If you would like to change the language name enter the new name here.',
21
+ newName: 'New Language Name',
22
+ change: 'Change',
19
23
  };
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
8
12
  }));
9
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("../langPicker/types"), exports);
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var react_1 = require("react");
4
4
  var useDebounce = function (value, delay) {
5
- var _a = react_1.useState(value), debouncedValue = _a[0], setDebouncedValue = _a[1];
6
- react_1.useEffect(function () {
5
+ var _a = (0, react_1.useState)(value), debouncedValue = _a[0], setDebouncedValue = _a[1];
6
+ (0, react_1.useEffect)(function () {
7
7
  var handler = setTimeout(function () {
8
8
  setDebouncedValue(value);
9
9
  }, delay);
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.woBadChar = exports.hasBadChar = void 0;
4
4
  var badChar = " (),.:/!?_'`0123456789";
5
- exports.hasBadChar = function (s) {
5
+ var hasBadChar = function (s) {
6
6
  for (var _i = 0, _a = s.split(''); _i < _a.length; _i++) {
7
7
  var c = _a[_i];
8
8
  if (badChar.indexOf(c) !== -1)
@@ -10,7 +10,8 @@ exports.hasBadChar = function (s) {
10
10
  }
11
11
  return false;
12
12
  };
13
- exports.woBadChar = function (s) {
13
+ exports.hasBadChar = hasBadChar;
14
+ var woBadChar = function (s) {
14
15
  if (!s)
15
16
  return '';
16
17
  var result = '';
@@ -21,3 +22,4 @@ exports.woBadChar = function (s) {
21
22
  }
22
23
  return result;
23
24
  };
25
+ exports.woBadChar = woBadChar;
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
8
12
  }));
9
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./badChar"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mui-language-picker",
3
- "version": "1.1.15",
3
+ "version": "1.2.2",
4
4
  "description": "Material UI language picker",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,42 +29,47 @@
29
29
  },
30
30
  "homepage": "https://github.com/sillsdev/mui-language-picker#readme",
31
31
  "devDependencies": {
32
- "@babel/cli": "^7.11.6",
33
- "@babel/core": "^7.11.6",
34
- "@babel/preset-env": "^7.11.5",
35
- "@babel/preset-react": "^7.10.4",
36
- "@material-ui/core": "^4.11.0",
37
- "@material-ui/icons": "^4.9.1",
38
- "@testing-library/jest-dom": "^4.2.4",
39
- "@testing-library/react": "^9.5.0",
40
- "@testing-library/user-event": "^7.2.1",
41
- "@types/jest": "^24.9.1",
32
+ "@babel/cli": "^7.18.10",
33
+ "@babel/core": "^7.18.13",
34
+ "@babel/preset-env": "^7.18.10",
35
+ "@babel/preset-react": "^7.18.6",
36
+ "@emotion/react": "^11.10.0",
37
+ "@emotion/styled": "^11.10.0",
38
+ "@mui/icons-material": "^5.10.2",
39
+ "@mui/material": "^5.10.2",
40
+ "@testing-library/jest-dom": "^5.16.5",
41
+ "@testing-library/react": "^13.3.0",
42
+ "@testing-library/user-event": "^13.5.0",
43
+ "@types/jest": "^27.5.2",
42
44
  "@types/lodash": "^4.14.162",
43
- "@types/node": "^12.12.67",
44
- "@types/react": "^16.9.52",
45
- "@types/react-dom": "^16.9.8",
45
+ "@types/node": "^16.11.52",
46
+ "@types/react": "^18.0.17",
47
+ "@types/react-dom": "^18.0.6",
46
48
  "copyfiles": "^2.4.0",
47
- "jest": "^26.5.3",
48
- "react": "^16.13.1",
49
- "react-dom": "^16.13.1",
49
+ "jest": "^28.1.3",
50
+ "jest-environment-jsdom": "^28.1.3",
51
+ "react": "^18.2.0",
52
+ "react-dom": "^18.2.0",
53
+ "react-testing-library": "^8.0.1",
50
54
  "rimraf": "^3.0.2",
51
- "ts-jest": "^26.4.1",
55
+ "ts-jest": "^28.0.8",
52
56
  "tslint": "^6.1.3",
53
- "typescript": "^3.9.7",
57
+ "typescript": "^4.7.4",
54
58
  "write": "^2.0.0"
55
59
  },
56
60
  "peerdependencies": {
57
- "@material-ui/core": "^4.10.0",
58
- "@material-ui/icons": "^4.9.1",
59
- "react": "^16.13.1",
60
- "react-dom": "^16.13.1"
61
+ "@emotion/react": "^11.10.0",
62
+ "@emotion/styled": "^11.10.0",
63
+ "@mui/icons-material": "^5.10.2",
64
+ "@mui/material": "^5.10.2",
65
+ "react": "^18.2.0",
66
+ "react-dom": "^18.2.0"
61
67
  },
62
68
  "prettier": {
63
69
  "trailingComma": "es5"
64
70
  },
65
71
  "dependencies": {
66
- "keycode": "^2.2.0",
67
- "lodash": "^4.17.20"
72
+ "lodash": "^4.17.21"
68
73
  },
69
74
  "jest": {
70
75
  "moduleFileExtensions": [
@@ -76,5 +81,17 @@
76
81
  "\\.(ts|tsx)$": "ts-jest"
77
82
  },
78
83
  "testRegex": "(/__tests__/.*|.*\\.test)\\.(ts|tsx)$"
84
+ },
85
+ "browserslist": {
86
+ "production": [
87
+ ">0.2%",
88
+ "not dead",
89
+ "not op_mini all"
90
+ ],
91
+ "development": [
92
+ "last 1 chrome version",
93
+ "last 1 firefox version",
94
+ "last 1 safari version"
95
+ ]
79
96
  }
80
97
  }