diff --git a/CHANGELOG.md b/CHANGELOG.md index 68ae65d..258ec37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## changelog +## 0.9.0 + +增加react-intl,修改部分样式。 + ## 0.8.4 增加preview的属性,可外界控制loading。 diff --git a/packages/dooringx-doc/package.json b/packages/dooringx-doc/package.json index ddc9328..4626f5b 100644 --- a/packages/dooringx-doc/package.json +++ b/packages/dooringx-doc/package.json @@ -1,6 +1,7 @@ { "name": "dooringx-doc", "version": "0.0.1", + "private":true, "scripts": { "start": "svelte-kit dev", "dev": "svelte-kit dev", diff --git a/packages/dooringx-doc/src/changelog/1.1.md b/packages/dooringx-doc/src/changelog/1.1.md index 5adf48b..00845dd 100644 --- a/packages/dooringx-doc/src/changelog/1.1.md +++ b/packages/dooringx-doc/src/changelog/1.1.md @@ -4,6 +4,10 @@ order: 1 --- ## changelog +## 0.9.0 + +增加react-intl,修改部分样式。 + ## 0.8.4 增加preview的属性,可外界控制loading。 diff --git a/packages/dooringx-doc/src/docs/3.6.md b/packages/dooringx-doc/src/docs/3.6.md index 67a0748..64cb14c 100644 --- a/packages/dooringx-doc/src/docs/3.6.md +++ b/packages/dooringx-doc/src/docs/3.6.md @@ -1,5 +1,5 @@ --- -title: 命令 +title: 命令开发 sTitle: dooringx-lib插件开发 order: 14 --- diff --git a/packages/dooringx-example/src/layouts/index.tsx b/packages/dooringx-example/src/layouts/index.tsx index 66232a8..7e2113b 100644 --- a/packages/dooringx-example/src/layouts/index.tsx +++ b/packages/dooringx-example/src/layouts/index.tsx @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-07-07 14:51:17 * @LastEditors: yehuozhili - * @LastEditTime: 2021-08-12 14:37:38 + * @LastEditTime: 2021-08-27 14:45:47 * @FilePath: \dooringx\packages\dooringx-example\src\layouts\index.tsx */ import { Button } from 'antd'; @@ -14,9 +14,12 @@ import plugin from '../plugin'; import 'antd/dist/antd.css'; import '../global.less'; import 'animate.css'; - +import { IntlProvider } from 'react-intl'; +import { locale } from 'dooringx-lib'; +import { localeKey } from '../../../dooringx-lib/dist/locale'; export const config = new UserConfig(plugin); export const configContext = createContext(config); + // 自定义右键 const contextMenuState = config.getContextMenuState(); const unmountContextMenu = contextMenuState.unmountContextMenu; @@ -70,6 +73,22 @@ const ContextMenu = () => { }; contextMenuState.contextMenu = ; -export default function Layout({ children }: IRouteComponentProps) { - return {children}; +interface LocaleContextType { + change: Function; + current: localeKey; +} +export const LocaleContext = createContext({ + change: () => {}, + current: 'zh-CN', +}); + +export default function Layout({ children }: IRouteComponentProps) { + const [l, setLocale] = useState('zh-CN'); + return ( + + + {children} + + + ); } diff --git a/packages/dooringx-example/src/pages/index.tsx b/packages/dooringx-example/src/pages/index.tsx index 572b910..a833bbf 100644 --- a/packages/dooringx-example/src/pages/index.tsx +++ b/packages/dooringx-example/src/pages/index.tsx @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-05-15 12:49:28 * @LastEditors: yehuozhili - * @LastEditTime: 2021-08-19 16:52:35 + * @LastEditTime: 2021-08-27 16:24:39 * @FilePath: \dooringx\packages\dooringx-example\src\pages\index.tsx */ import { @@ -16,10 +16,12 @@ import { } from 'dooringx-lib'; import { InsertRowBelowOutlined } from '@ant-design/icons'; import { useContext } from 'react'; -import { configContext } from '@/layouts'; +import { configContext, LocaleContext } from '@/layouts'; import { useCallback } from 'react'; import { PREVIEWSTATE } from '@/constant'; import { Button, Popover } from 'antd'; +import { localeKey } from '../../../dooringx-lib/dist/locale'; + export const HeaderHeight = '40px'; const footerConfig = function () { return ( @@ -33,6 +35,7 @@ const footerConfig = function () { export default function IndexPage() { const config = useContext(configContext); + const locale = useContext(LocaleContext); const everyFn = () => {}; @@ -59,6 +62,15 @@ export default function IndexPage() { > 普通预览 +
); const SortableItem = SortableElement( - ({ value }: { value: { value: IBlockType; config: UserConfig } }) => ( + ({ value }: { value: { value: IBlockType; config: UserConfig; intl: IntlShape } }) => (
{ changeItem(value.config.getStore(), value.value.id, 'position', 'absolute'); }} + okText={value.intl.formatMessage({ id: 'yes' })} + cancelText={value.intl.formatMessage({ id: 'no' })} > - + { changeItem(value.config.getStore(), value.value.id, 'position', 'static'); }} + okText={value.intl.formatMessage({ id: 'yes' })} + cancelText={value.intl.formatMessage({ id: 'no' })} > - + { changeLayer(value.config.getStore(), value.value.id, 'delete'); }} + okText={value.intl.formatMessage({ id: 'yes' })} + cancelText={value.intl.formatMessage({ id: 'no' })} > - +
) ); const SortableList = SortableContainer( - ({ items }: { items: { data: IBlockType[]; config: UserConfig } }) => { + ({ items }: { items: { data: IBlockType[]; config: UserConfig; intl: IntlShape } }) => { return (
{items.data.map((value, index: number) => ( - + ))}
); @@ -131,9 +169,13 @@ export function Control(props: PropsWithChildren) { store.setData(cloneData); }; + const intl = useIntl(); + const content = data.length === 0 ? ( -
暂时没有组件
+
+ +
) : (
) { items={{ data, config: props.config, + intl: intl, }} onSortEnd={onSortEnd} axis="y" @@ -203,15 +246,17 @@ export function Control(props: PropsWithChildren) { onClick={() => { setVisible(true); }} + style={{ width: '100px', overflow: 'hidden', textOverflow: 'ellipsis' }} > - 新建弹窗 +
} @@ -237,7 +282,7 @@ export function Control(props: PropsWithChildren) {
setConfigVisible(false)} onCancel={() => setConfigVisible(false)} @@ -245,7 +290,12 @@ export function Control(props: PropsWithChildren) { > {props.config.getStoreChanger().getState().modalEditName !== '' && ( -
请退出编辑弹窗后再打开该配置
+
+ +
)} {props.config.getStoreChanger().getState().modalEditName === '' && Object.keys(props.config.getStore().getData().modalMap).map((v) => { @@ -254,13 +304,39 @@ export function Control(props: PropsWithChildren) { key={v} actions={[ { - props.config.getStoreChanger().updateModal(props.config.getStore(), v); + const sign = props.config + .getStoreChanger() + .updateModal(props.config.getStore(), v); + if (!sign.success && sign.sign === 0) { + message.error( + intl.formatMessage({ + id: 'modal.popup.save', + defaultMessage: '请保存弹窗后编辑其他弹窗', + }) + ); + } + if (!sign.success && sign.sign === 1) { + message.error( + intl.formatMessage( + { + id: 'modal.popup.notfond', + defaultMessage: '未找到该弹窗 {name}', + }, + { + name: sign.param, + } + ) + ); + } setConfigVisible(false); }} - okText={'是'} - cancelText={'否'} + okText={intl.formatMessage({ id: 'yes' })} + cancelText={intl.formatMessage({ id: 'no' })} > , @@ -268,13 +344,42 @@ export function Control(props: PropsWithChildren) { { - props.config.getStoreChanger().removeModal(props.config.getStore(), v); + const sign = props.config + .getStoreChanger() + .removeModal(props.config.getStore(), v); + if (!sign.success && sign.sign === 0) { + message.error( + intl.formatMessage({ + id: 'modal.popup.save', + defaultMessage: '请保存弹窗后编辑其他弹窗', + }) + ); + } + if (!sign.success && sign.sign === 1) { + message.error( + intl.formatMessage( + { + id: 'modal.popup.notfond', + defaultMessage: '未找到该弹窗 {name}', + }, + { + name: sign.param, + } + ) + ); + } + setConfigVisible(false); }} - okText={'是'} - cancelText={'否'} + okText={intl.formatMessage({ id: 'yes' })} + cancelText={intl.formatMessage({ id: 'no' })} > - + , ]} > @@ -284,7 +389,9 @@ export function Control(props: PropsWithChildren) { })} {props.config.getStoreChanger().getState().modalEditName === '' && Object.keys(props.config.getStore().getData().modalMap).length === 0 && ( -
暂时没有弹窗
+
+ +
)}
@@ -295,22 +402,53 @@ export function Control(props: PropsWithChildren) { .then((values) => { form.resetFields(); const modalName = values.modalName; - props.config.getStoreChanger().newModalMap(props.config.getStore(), modalName); + const sign = props.config + .getStoreChanger() + .newModalMap(props.config.getStore(), modalName); + if (sign.succeess && sign.sign === 0) { + message.error( + intl.formatMessage({ + id: 'modal.popup.save', + defaultMessage: '请保存弹窗后编辑其他弹窗', + }) + ); + } + if (sign.succeess && sign.sign === 1) { + message.error( + intl.formatMessage( + { + id: 'modal.popup.repeat', + defaultMessage: '已有重名弹窗 {name}', + }, + { + name: sign.param, + } + ) + ); + } setVisible(false); }) .catch((info) => { console.log('Validate Failed:', info); }); }} - title="新增弹窗" + title={intl.formatMessage({ id: 'modal.new', defaultMessage: '新增弹窗' })} onCancel={() => setVisible(false)} visible={visible} >
diff --git a/packages/dooringx-lib/src/components/leftConfig.tsx b/packages/dooringx-lib/src/components/leftConfig.tsx index fc1361f..a89578a 100644 --- a/packages/dooringx-lib/src/components/leftConfig.tsx +++ b/packages/dooringx-lib/src/components/leftConfig.tsx @@ -158,7 +158,6 @@ function LeftConfig(props: LeftConfigProps) { style={{ flex: 1 }} defaultSelectedKeys={[menuSelect]} mode="vertical" - inlineCollapsed={props.showName ? undefined : true} className={`${styles.menuWidth} ${styles.menus} yh-menu`} > {leftMapRenderListCategory.map((v, i) => { diff --git a/packages/dooringx-lib/src/components/rightConfig.tsx b/packages/dooringx-lib/src/components/rightConfig.tsx index c49a802..9cd1b1c 100644 --- a/packages/dooringx-lib/src/components/rightConfig.tsx +++ b/packages/dooringx-lib/src/components/rightConfig.tsx @@ -2,19 +2,25 @@ * @Author: yehuozhili * @Date: 2021-03-14 05:42:13 * @LastEditors: yehuozhili - * @LastEditTime: 2021-08-09 14:37:24 + * @LastEditTime: 2021-08-27 16:20:29 * @FilePath: \dooringx\packages\dooringx-lib\src\components\rightConfig.tsx */ import { CreateOptionsRes } from '../core/components/formTypes'; import { IBlockType, IStoreData } from '../core/store/storetype'; -import { PropsWithChildren, useEffect, useMemo, useState } from 'react'; +import { CSSProperties, PropsWithChildren, useEffect, useMemo, useState } from 'react'; import React from 'react'; import { Tabs, Input, Row, Col, Checkbox, InputNumber } from 'antd'; import UserConfig from '../config'; import { RGBColor, SketchPicker } from 'react-color'; import { rgba2Obj } from '../core/utils'; import deepcopy from 'deepcopy'; +import { FormattedMessage } from 'react-intl'; +const colStyle: CSSProperties = { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-end', +}; interface RightConfigProps { state: IStoreData; config: UserConfig; @@ -32,7 +38,6 @@ function RightConfig(props: PropsWithChildren) { const rightMapRenderListCategory = useMemo(() => { return props.config.getConfig().rightRenderListCategory; }, [props.config]); - const store = props.config.getStore(); useEffect(() => { @@ -79,7 +84,14 @@ function RightConfig(props: PropsWithChildren) { ); }); } else { - return
还没有配置属性
; + return ( +
+ +
+ ); } } return null; @@ -152,13 +164,13 @@ function RightConfig(props: PropsWithChildren) { {!current && !isEdit && !customGlobal && (
- 全局设置 + - 标题 + - + { @@ -182,9 +194,12 @@ function RightConfig(props: PropsWithChildren) { - 容器高度 + - + ) { - 容器底色 + - + {
) {
{colorPickerVisible && ( <> -
+
{ @@ -276,9 +300,9 @@ function RightConfig(props: PropsWithChildren) { - body底色 + - + {
) {
{colorPickerVisible2 && ( <> -
+
{ @@ -347,10 +377,17 @@ function RightConfig(props: PropsWithChildren) { {!current && !isEdit && customGlobal && customGlobal(props.config)} {!current && isEdit && (
- 弹窗设置 + + + - 取消点击删除弹窗 - + + + + { diff --git a/packages/dooringx-lib/src/components/timeLine/timeline.tsx b/packages/dooringx-lib/src/components/timeLine/timeline.tsx index b3c6b9a..6897d97 100644 --- a/packages/dooringx-lib/src/components/timeLine/timeline.tsx +++ b/packages/dooringx-lib/src/components/timeLine/timeline.tsx @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-08-09 15:15:25 * @LastEditors: yehuozhili - * @LastEditTime: 2021-08-16 20:30:03 + * @LastEditTime: 2021-08-27 14:16:07 * @FilePath: \dooringx\packages\dooringx-lib\src\components\timeLine\timeline.tsx */ import deepcopy from 'deepcopy'; @@ -21,6 +21,7 @@ import { iter, } from './timelineItem'; import { specialCoList } from '../../core/utils/special'; +import { FormattedMessage } from 'react-intl'; export interface TimeLineProps { style?: CSSProperties; @@ -181,7 +182,7 @@ export function TimeLine(props: TimeLineProps) { height: itemHeight, }} > - 组件名称 + { store.setData(clonedata); }; -export const changeLayer = (store: Store, id: string, action: 'up' | 'down' | 'delete') => { +export const changeLayer = ( + store: Store, + id: string, + action: 'up' | 'down' | 'delete', + msg = { + adjust: '该组件不可调整', + remove: '该组件无法删除', + } +) => { const clonedata: IStoreData = deepCopy(store.getData()); let index = -1; switch (action) { @@ -93,7 +101,7 @@ export const changeLayer = (store: Store, id: string, action: 'up' | 'down' | 'd clonedata.block.forEach((v, i) => { if (v.id === id) { if (specialCoList.includes(v.name)) { - message.error('该组件不可调整'); + message.error(msg.adjust); return; } else { index = i; @@ -114,7 +122,7 @@ export const changeLayer = (store: Store, id: string, action: 'up' | 'down' | 'd clonedata.block.forEach((v, i) => { if (v.id === id) { if (specialCoList.includes(v.name)) { - message.error('该组件不可调整'); + message.error(msg.adjust); return; } else { index = i; @@ -144,7 +152,7 @@ export const changeLayer = (store: Store, id: string, action: 'up' | 'down' | 'd if (candelete) { store.setData(clonedata); } else { - message.error('该组件无法删除'); + message.error(msg.remove); } return; } diff --git a/packages/dooringx-lib/src/index.tsx b/packages/dooringx-lib/src/index.tsx index 2739b05..acb8258 100644 --- a/packages/dooringx-lib/src/index.tsx +++ b/packages/dooringx-lib/src/index.tsx @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-03-14 04:22:18 * @LastEditors: yehuozhili - * @LastEditTime: 2021-07-20 10:44:35 + * @LastEditTime: 2021-08-27 14:21:09 * @FilePath: \dooringx\packages\dooringx-lib\src\index.tsx */ @@ -59,3 +59,5 @@ export { default as IframeContainer } from './components/iframeContainer'; export { default as IframeContainerWrapper } from './components/IframeWrapperMove'; export { useIframePostMessage, useIframeHook } from './hooks'; export { IframeTarget } from './components/iframeTarget'; +//locale +export * as locale from './locale'; diff --git a/packages/dooringx-lib/src/locale/en.ts b/packages/dooringx-lib/src/locale/en.ts new file mode 100644 index 0000000..001364b --- /dev/null +++ b/packages/dooringx-lib/src/locale/en.ts @@ -0,0 +1,41 @@ +/* + * @Author: yehuozhili + * @Date: 2021-08-27 10:20:23 + * @LastEditors: yehuozhili + * @LastEditTime: 2021-08-27 16:06:49 + * @FilePath: \dooringx\packages\dooringx-lib\src\locale\en.ts + */ + +import { zhCN } from './zh-CN'; + +export const en: typeof zhCN = { + 'timeline.name': 'Component name', + 'contorl.popup.absolute': 'Are you sure to change to absolutely positioned element', + 'contorl.popup.static': 'Are you sure to change to static positioned element', + 'contorl.absolute': 'Change to absolute', + 'contorl.static': 'Change to static', + 'control.popup.delete': 'Are you sure to delete', + 'control.delete': 'Delete', + 'control.focus': 'Focus', + 'control.no-component': 'No components', + 'modal.new': 'New modal', + 'modal.control': 'Control modal', + 'modal.popup.exit': 'Please exit the edit modal and open the configuration again', + 'modal.popup.edit': 'Switch to this modal and edit it?', + 'modal.popup.save': 'Please save the modal and edit another modal', + 'modal.popup.notfond': 'Can not found {name} modal', + 'modal.popup.repeat': 'Duplicate name {name} already exists', + 'modal.popup.remove': 'Please save the modal before deleting', + 'modal.popup.nomodal': 'No modal', + 'modal.popup.name': 'Please enter modal name', + 'modal.name': 'Modal name', + 'modal.control.remove': 'Delete click to delete the effect of the modal', + yes: 'yes', + no: 'no', + 'right.noprops': 'No properties have been configured', + 'right.global': 'Global config', + 'right.containerheight': 'Container height', + 'right.containerColor': 'Container background color', + 'right.bodyColor': 'Body background color', + title: 'title', +}; diff --git a/packages/dooringx-lib/src/locale/index.ts b/packages/dooringx-lib/src/locale/index.ts new file mode 100644 index 0000000..da03aed --- /dev/null +++ b/packages/dooringx-lib/src/locale/index.ts @@ -0,0 +1,18 @@ +/* + * @Author: yehuozhili + * @Date: 2021-08-27 10:20:38 + * @LastEditors: yehuozhili + * @LastEditTime: 2021-08-27 14:30:05 + * @FilePath: \dooringx\packages\dooringx-lib\src\locale\index.ts + */ +import { en } from './en'; +import { zhCN } from './zh-CN'; + +export const localeMap = { + 'zh-CN': zhCN, + en, +}; +export type localeKey = keyof typeof localeMap; + +export { en } from './en'; +export { zhCN } from './zh-CN'; diff --git a/packages/dooringx-lib/src/locale/zh-CN.ts b/packages/dooringx-lib/src/locale/zh-CN.ts new file mode 100644 index 0000000..45c58fd --- /dev/null +++ b/packages/dooringx-lib/src/locale/zh-CN.ts @@ -0,0 +1,38 @@ +/* + * @Author: yehuozhili + * @Date: 2021-08-27 10:20:15 + * @LastEditors: yehuozhili + * @LastEditTime: 2021-08-27 16:06:45 + * @FilePath: \dooringx\packages\dooringx-lib\src\locale\zh-CN.ts + */ +export const zhCN = { + 'timeline.name': '组件名称', + 'contorl.popup.absolute': '确认变更为绝对定位吗', + 'contorl.popup.static': '确认变更为静态定位吗', + 'contorl.absolute': '切换绝对定位', + 'contorl.static': '切换静态定位', + 'control.popup.delete': '确认删除吗', + 'control.delete': '删除', + 'control.focus': '选中聚焦', + 'control.no-component': '暂无组件', + 'modal.new': '新增弹窗', + 'modal.control': '弹窗配置', + 'modal.popup.exit': '请退出编辑弹窗后再打开该配置', + 'modal.popup.edit': '是否切换至该弹窗并进行编辑?', + 'modal.popup.save': '请保存弹窗后编辑其他弹窗', + 'modal.popup.notfond': '未找到该弹窗 {name}', + 'modal.popup.repeat': '已有重名弹窗 {name}', + 'modal.popup.remove': '请保存弹窗后再删除', + 'modal.popup.nomodal': '暂时没有弹窗', + 'modal.popup.name': '请输入弹窗名称', + 'modal.name': '弹窗名称', + 'modal.control.remove': '取消点击删除弹窗', + yes: '是', + no: '否', + 'right.noprops': '还没有配置属性', + 'right.global': '全局设置', + 'right.containerheight': '容器高度', + 'right.containerColor': '容器底色', + 'right.bodyColor': 'body底色', + title: '标题', +}; diff --git a/yarn.lock b/yarn.lock index 7dafce6..2fbc60e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1124,6 +1124,47 @@ resolved "https://registry.yarnpkg.com/@fontsource/fira-mono/-/fira-mono-4.5.0.tgz#bea97a54b60dc269d1c78469b007835af44dfa7f" integrity sha512-KE+d3wmgq/YKM0BqgUF7p2yeBNi805Nfof1lC1wJ7E9i2EWoC363sGdKG+MQBVm+ei3GYZu+Bo8Xha1w1pkB7g== +"@formatjs/ecma402-abstract@1.9.8": + version "1.9.8" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.9.8.tgz#f3dad447fbc7f063f88e2a148b7a353161740e74" + integrity sha512-2U4n11bLmTij/k4ePCEFKJILPYwdMcJTdnKVBi+JMWBgu5O1N+XhCazlE6QXqVO1Agh2Doh0b/9Jf1mSmSVfhA== + dependencies: + "@formatjs/intl-localematcher" "0.2.20" + tslib "^2.1.0" + +"@formatjs/fast-memoize@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz#1123bfcc5d21d761f15d8b1c32d10e1b6530355d" + integrity sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w== + dependencies: + tslib "^2.1.0" + +"@formatjs/icu-messageformat-parser@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.11.tgz#e4ba40b9a8aefc8bccfc96be5906d3bca305b4b3" + integrity sha512-5mWb8U8aulYGwnDZWrr+vdgn5PilvtrqQYQ1pvpgzQes/osi85TwmL2GqTGLlKIvBKD2XNA61kAqXYY95w4LWg== + dependencies: + "@formatjs/ecma402-abstract" "1.9.8" + "@formatjs/icu-skeleton-parser" "1.2.12" + tslib "^2.1.0" + +"@formatjs/icu-skeleton-parser@1.2.12": + version "1.2.12" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.12.tgz#45426eb1448c0c08c931eb9f0672283c0e4d0062" + integrity sha512-DTFxWmEA02ZNW6fsYjGYSADvtrqqjCYF7DSgCmMfaaE0gLP4pCdAgOPE+lkXXU+jP8iCw/YhMT2Seyk/C5lBWg== + dependencies: + "@formatjs/ecma402-abstract" "1.9.8" + tslib "^2.1.0" + +"@formatjs/intl-displaynames@5.2.3": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-5.2.3.tgz#a0cebc81e89c5414177ade71a2f2388d799ee6e8" + integrity sha512-5BmhSurLbfgdeo0OBcNPPkIS8ikMMYaHe2NclxEQZqcMvrnQzNMNnUE2dDF5vZx+mkvKq77aQYzpc8RfqVsRCQ== + dependencies: + "@formatjs/ecma402-abstract" "1.9.8" + "@formatjs/intl-localematcher" "0.2.20" + tslib "^2.1.0" + "@formatjs/intl-displaynames@^1.2.0": version "1.2.10" resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-1.2.10.tgz#bb9625cca90b099978cd967c6a98aaf4e23fc878" @@ -1131,6 +1172,15 @@ dependencies: "@formatjs/intl-utils" "^2.3.0" +"@formatjs/intl-listformat@6.3.3": + version "6.3.3" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-6.3.3.tgz#0cb83a012c0ae46876e30589a086695298e0fb5c" + integrity sha512-3nzAKgVS5rePDa5HiH0OwZgAhqxLtzlMc9Pg4QgajRHSP1TqFiMmQnnn52wd3+xVTb7cjZVm3JBnTv51/MhTOg== + dependencies: + "@formatjs/ecma402-abstract" "1.9.8" + "@formatjs/intl-localematcher" "0.2.20" + tslib "^2.1.0" + "@formatjs/intl-listformat@^1.4.1": version "1.4.8" resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-1.4.8.tgz#70b81005e7dcf74329cb5b314a940ce5fce36cd0" @@ -1138,6 +1188,13 @@ dependencies: "@formatjs/intl-utils" "^2.3.0" +"@formatjs/intl-localematcher@0.2.20": + version "0.2.20" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.20.tgz#782aef53d1c1b6112ee67468dc59f9b8d1ba7b17" + integrity sha512-/Ro85goRZnCojzxOegANFYL0LaDIpdPjAukR7xMTjOtRx+3yyjR0ifGTOW3/Kjhmab3t6GnyHBYWZSudxEOxPA== + dependencies: + tslib "^2.1.0" + "@formatjs/intl-pluralrules@^1.5.0": version "1.5.9" resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-1.5.9.tgz#c363c833c0ccde11eb508de4c09d3eaa232e819a" @@ -1164,6 +1221,19 @@ resolved "https://registry.yarnpkg.com/@formatjs/intl-utils/-/intl-utils-2.3.0.tgz#2dc8c57044de0340eb53a7ba602e59abf80dc799" integrity sha512-KWk80UPIzPmUg+P0rKh6TqspRw0G6eux1PuJr+zz47ftMaZ9QDwbGzHZbtzWkl5hgayM/qrKRutllRC7D/vVXQ== +"@formatjs/intl@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.14.1.tgz#03e12f7e2cf557defdd1a5aeb1c143efb8cfbc7b" + integrity sha512-mtL8oBgFwTu0GHFnxaF93fk/zNzNkPzl+27Fwg5AZ88pWHWb7037dpODzoCBnaIVk4FBO5emUn/6jI9Byj8hOw== + dependencies: + "@formatjs/ecma402-abstract" "1.9.8" + "@formatjs/fast-memoize" "1.2.0" + "@formatjs/icu-messageformat-parser" "2.0.11" + "@formatjs/intl-displaynames" "5.2.3" + "@formatjs/intl-listformat" "6.3.3" + intl-messageformat "9.9.1" + tslib "^2.1.0" + "@icons/material@^0.2.4": version "0.2.4" resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" @@ -2853,6 +2923,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@17": + version "17.0.19" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.19.tgz#8f2a85e8180a43b57966b237d26a29481dacc991" + integrity sha512-sX1HisdB1/ZESixMTGnMxH9TDe8Sk709734fEQZzCV/4lSu9kJCPbo2PbTRoZM+53Pp0P10hYVyReUueGwUi4A== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/react@^16", "@types/react@^16.9.43": version "16.14.11" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.11.tgz#992a0cd4b66b9f27315042b5d96e976717368f04" @@ -7698,6 +7777,15 @@ intl-messageformat-parser@^3.6.4: dependencies: "@formatjs/intl-unified-numberformat" "^3.2.0" +intl-messageformat@9.9.1: + version "9.9.1" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.9.1.tgz#255d453b0656b4f7e741f31d2b4a95bf2adfe064" + integrity sha512-cuzS/XKHn//hvKka77JKU2dseiVY2dofQjIOZv6ZFxFt4Z9sPXnZ7KQ9Ak2r+4XBCjI04MqJ1PhKs/3X22AkfA== + dependencies: + "@formatjs/fast-memoize" "1.2.0" + "@formatjs/icu-messageformat-parser" "2.0.11" + tslib "^2.1.0" + intl-messageformat@^7.8.4: version "7.8.4" resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-7.8.4.tgz#c29146a06b9cd26662978a4d95fff2b133e3642f" @@ -12525,6 +12613,22 @@ react-intl@3.12.1: intl-messageformat-parser "^3.6.4" shallow-equal "^1.2.1" +react-intl@^5.20.10: + version "5.20.10" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.20.10.tgz#8b0f18a5b76e9f8f5a3ccc993deb0c4cef9dcde0" + integrity sha512-zy0ZQhpjkGsKcK1BFo2HbGM/q8GBVovzoXZGQ76DowR0yr6UzQuPLkrlIrObL2zxIYiDaxaz+hUJaoa2a1xqOQ== + dependencies: + "@formatjs/ecma402-abstract" "1.9.8" + "@formatjs/icu-messageformat-parser" "2.0.11" + "@formatjs/intl" "1.14.1" + "@formatjs/intl-displaynames" "5.2.3" + "@formatjs/intl-listformat" "6.3.3" + "@types/hoist-non-react-statics" "^3.3.1" + "@types/react" "17" + hoist-non-react-statics "^3.3.2" + intl-messageformat "9.9.1" + tslib "^2.1.0" + react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"