From e49580d072af17e0e86ccd3780993a4b9c2ef718 Mon Sep 17 00:00:00 2001 From: Embbnux Ji Date: Wed, 15 Sep 2021 11:21:02 +0800 Subject: [PATCH] sync features and bugfixs from 206c0e0 (#1688) * sync features and bugfix from 206c0e0 * chore: coverage all in actions * upgrade ejs --- .github/workflows/ci.yml | 69 ++++- .gitignore | 3 + .sync | 2 +- packages/babel-settings/package.json | 2 +- packages/core/package.json | 5 +- .../containers/AppView/styles.scss | 2 +- packages/glip-widgets/package.json | 2 +- packages/i18n/package.json | 2 +- .../lib/generateLoaderContent/index.test.js | 17 +- packages/locale-loader/package.json | 2 +- packages/locale-settings/package.json | 2 +- packages/phone-number/package.json | 2 +- .../integration-test/commons/Phone/index.js | 2 +- .../jest_html_reporters.html | 71 ----- .../modules/Brand/Brand.interface.ts | 68 ++++- .../modules/CallV2/Call.interface.ts | 2 +- .../CallingSettings.interface.ts | 2 +- .../modules/RcVideo/RcVideo.ts | 4 +- .../modules/RcVideoV2/RcVideo.ts | 4 +- .../Softphone.interface.ts | 0 .../{SoftphoneV2 => Softphone}/Softphone.ts | 4 +- .../modules/Softphone/actionTypes.js | 8 - .../modules/Softphone/getSoftphoneReducer.js | 39 --- .../Softphone/getSoftphoneReducer.test.js | 84 ------ .../modules/Softphone/index.js | 190 ------------ .../{SoftphoneV2 => Softphone}/index.ts | 0 .../modules/Softphone/softphoneStatus.js | 8 - .../softphoneStatus.ts | 0 .../modules/Theme/Theme.interface.ts | 7 + .../modules/Theme/Theme.ts | 59 ++++ .../modules/Theme/defaultCssVariable.ts | 39 +++ .../modules/Theme/index.ts | 2 + packages/ringcentral-integration/package.json | 4 +- .../checkShouldHideContactUser.test.tsx | 43 +++ .../test/spec-modules/Softphone.test.tsx | 2 +- packages/ringcentral-widgets-cli/package.json | 2 +- .../src/containers/AppView/styles.scss | 2 +- .../dev-server/Phone.js | 6 +- .../dev-server/brandConfig.ts | 4 +- .../dev-server/containers/AppView/styles.scss | 2 +- .../ringcentral-widgets-docs/package.json | 2 +- .../components/PropTypeDescription/index.js | 28 +- .../src/app/componentsData.json | 2 +- .../pages/Components/AlertDisplay/index.js | 2 +- .../pages/Components/AnimationAlert/index.js | 2 +- .../app/pages/Components/DialButton/index.js | 2 +- .../app/pages/Components/EntityModal/index.js | 2 +- .../Demo.js | 0 .../index.js | 5 +- .../pages/Components/RemoveButton/index.js | 2 +- .../app/pages/Components/SearchInput/index.js | 2 +- .../webpack-dev-server.config.js | 3 + .../webpack-production.config.js | 3 + .../__test__/interfaces/index.ts | 8 +- .../steps/Router/action/PageNavigation.tsx | 9 + .../__test__/steps/Router/action/index.ts | 1 + .../Webphone/Check/CheckCallButtonEnable.tsx | 24 ++ .../Check/CheckProgressIconVisible.tsx | 11 + .../Operate/ChangeConnectionStatus.tsx | 16 + .../__test__/steps/Webphone/index.ts | 3 + .../__test__/steps/index.ts | 3 + .../ringcentral-widgets-test/package.json | 6 +- .../test/unit-test/Softphone.unit.spec.js | 17 +- .../components/ActionMenu/index.js | 4 + .../components/ActionMenuList/index.js | 12 +- .../components/ActiveCallDialPad/styles.scss | 2 +- .../components/ActiveCallItemV2/styles.scss | 2 +- .../components/ActiveCallPanel/styles.scss | 2 +- .../components/CallItem/index.js | 90 +++--- .../CallLogDialpad/styles.scss | 2 +- .../components/CallsPanel/index.js | 4 + .../components/ContactDisplay/styles.scss | 2 +- .../components/ConversationPanel/index.js | 1 - .../components/ConversationsPanel/styles.scss | 2 +- .../components/DialButton/styles.scss | 7 +- .../components/DialTextInput/styles.scss | 6 +- .../components/FeedbackPanel/styles.scss | 6 +- .../components/FlipPanel/styles.scss | 8 +- .../components/ForwardPanel/styles.scss | 6 +- .../components/Header/styles.scss | 2 +- .../components/IncomingCallPanel/styles.scss | 4 +- .../components/Line/styles.scss | 4 +- .../components/LogLinkButton/styles.scss | 2 +- .../components/MessageItem/i18n/en-US.js | 1 + .../components/MessageItem/index.js | 165 +++++------ .../components/Panel/styles.scss | 2 +- .../RecentActivityMessages/styles.scss | 2 +- .../ListView/ListViewItem/ListViewItem.tsx | 8 +- .../components/SlideMenu/index.js | 55 ++-- .../components/Spinner/styles.scss | 2 +- .../components/TabContentPanel/styles.scss | 2 +- .../TabNavigationButton/styles.scss | 2 +- .../components/TextInput/styles.scss | 2 +- .../components/TransferPanel/styles.scss | 4 +- .../components/VideoPanel/VideoConfig.tsx | 4 +- .../ThemeContainer.interface.ts | 7 + .../ThemeContainer/ThemeContainer.tsx | 82 ++++++ .../containers/ThemeContainer/index.ts | 1 + .../lib/MeetingCalendarHelper/i18n/de-DE.js | 8 +- .../lib/MeetingCalendarHelper/i18n/en-AU.js | 8 +- .../lib/MeetingCalendarHelper/i18n/en-GB.js | 8 +- .../lib/MeetingCalendarHelper/i18n/en-US.js | 4 +- .../lib/MeetingCalendarHelper/i18n/es-419.js | 8 +- .../lib/MeetingCalendarHelper/i18n/es-ES.js | 8 +- .../lib/MeetingCalendarHelper/i18n/fr-CA.js | 8 +- .../lib/MeetingCalendarHelper/i18n/fr-FR.js | 8 +- .../lib/MeetingCalendarHelper/i18n/it-IT.js | 8 +- .../lib/MeetingCalendarHelper/i18n/ja-JP.js | 8 +- .../lib/MeetingCalendarHelper/i18n/ko-KR.js | 8 +- .../lib/MeetingCalendarHelper/i18n/nl-NL.js | 8 +- .../lib/MeetingCalendarHelper/i18n/pt-BR.js | 8 +- .../lib/MeetingCalendarHelper/i18n/pt-PT.js | 8 +- .../lib/MeetingCalendarHelper/i18n/zh-CN.js | 8 +- .../lib/MeetingCalendarHelper/i18n/zh-HK.js | 8 +- .../lib/MeetingCalendarHelper/i18n/zh-TW.js | 8 +- .../lib/MeetingCalendarHelper/index.ts | 5 +- .../lib/checkShouldHideContactUser.ts | 14 + .../lib/commonStyles/buttons.scss | 2 +- .../colors-variable-overwrite.scss | 42 +++ .../lib/commonStyles/colors.scss | 96 ++---- .../lib/commonStyles/fonts.scss | 10 +- .../lib/commonStyles/index.ts | 1 + .../lib/commonStyles/styles/full-size.ts | 8 + .../lib/commonStyles/styles/index.ts | 3 + .../lib/commonStyles/styles/no-select.ts | 6 + .../lib/commonStyles/styles/reset.ts | 9 + .../modules/CallHistoryUI/CallHistoryUI.ts | 1 + .../CallLogSectionV2/CallLogSection.ts | 6 +- .../modules/CallLogSectionV2/i18n/en-US.ts | 1 + .../modules/CallsListUI/CallsListUI.ts | 6 +- .../ContactDetailsUI/ContactDetailsUI.ts | 7 + .../modules/GenericMeetingUI/index.ts | 6 +- .../modules/ThemeUI/ThemeUI.interface.ts | 6 + .../modules/ThemeUI/ThemeUI.ts | 38 +++ .../modules/ThemeUI/index.ts | 1 + .../modules/VideoUI/index.ts | 7 +- packages/ringcentral-widgets/package.json | 2 +- packages/test-utils/README.md | 2 +- packages/test-utils/scripts/babel-crius.js | 3 - yarn.lock | 277 ++++++++++-------- 140 files changed, 1152 insertions(+), 967 deletions(-) delete mode 100644 packages/ringcentral-integration/jest_html_reporters.html rename packages/ringcentral-integration/modules/{SoftphoneV2 => Softphone}/Softphone.interface.ts (100%) rename packages/ringcentral-integration/modules/{SoftphoneV2 => Softphone}/Softphone.ts (98%) delete mode 100644 packages/ringcentral-integration/modules/Softphone/actionTypes.js delete mode 100644 packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.js delete mode 100644 packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.test.js delete mode 100644 packages/ringcentral-integration/modules/Softphone/index.js rename packages/ringcentral-integration/modules/{SoftphoneV2 => Softphone}/index.ts (100%) delete mode 100644 packages/ringcentral-integration/modules/Softphone/softphoneStatus.js rename packages/ringcentral-integration/modules/{SoftphoneV2 => Softphone}/softphoneStatus.ts (100%) create mode 100644 packages/ringcentral-integration/modules/Theme/Theme.interface.ts create mode 100644 packages/ringcentral-integration/modules/Theme/Theme.ts create mode 100644 packages/ringcentral-integration/modules/Theme/defaultCssVariable.ts create mode 100644 packages/ringcentral-integration/modules/Theme/index.ts create mode 100644 packages/ringcentral-integration/test/spec-lib/checkShouldHideContactUser.test.tsx rename packages/ringcentral-widgets-docs/src/app/pages/Components/{RolesAndPermissionsAlert => PermissionsAlert}/Demo.js (100%) rename packages/ringcentral-widgets-docs/src/app/pages/Components/{RolesAndPermissionsAlert => PermissionsAlert}/index.js (85%) create mode 100644 packages/ringcentral-widgets-test/__test__/steps/Router/action/PageNavigation.tsx create mode 100644 packages/ringcentral-widgets-test/__test__/steps/Router/action/index.ts create mode 100644 packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckCallButtonEnable.tsx create mode 100644 packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckProgressIconVisible.tsx create mode 100644 packages/ringcentral-widgets-test/__test__/steps/Webphone/Operate/ChangeConnectionStatus.tsx create mode 100644 packages/ringcentral-widgets-test/__test__/steps/Webphone/index.ts create mode 100644 packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.interface.ts create mode 100644 packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.tsx create mode 100644 packages/ringcentral-widgets/containers/ThemeContainer/index.ts create mode 100644 packages/ringcentral-widgets/lib/checkShouldHideContactUser.ts create mode 100644 packages/ringcentral-widgets/lib/commonStyles/colors-variable-overwrite.scss create mode 100644 packages/ringcentral-widgets/lib/commonStyles/index.ts create mode 100644 packages/ringcentral-widgets/lib/commonStyles/styles/full-size.ts create mode 100644 packages/ringcentral-widgets/lib/commonStyles/styles/index.ts create mode 100644 packages/ringcentral-widgets/lib/commonStyles/styles/no-select.ts create mode 100644 packages/ringcentral-widgets/lib/commonStyles/styles/reset.ts create mode 100644 packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.interface.ts create mode 100644 packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.ts create mode 100644 packages/ringcentral-widgets/modules/ThemeUI/index.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09a99623b5..e2fc21e6f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,14 +18,67 @@ jobs: with: node-version: ${{ matrix.node-version }} - run: yarn - - run: yarn workspace @ringcentral-integration/phone-number test - - run: yarn workspace @ringcentral-integration/i18n test - - run: yarn workspace @ringcentral-integration/locale-loader test - - run: yarn workspace @ringcentral-integration/core test - - run: yarn workspace @ringcentral-integration/commons test - - run: yarn workspace @ringcentral-integration/widgets test - - run: yarn workspace ringcentral-widgets-test test:jest - + - run: yarn workspace @ringcentral-integration/phone-number test --coverage + - name: Phone Number Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/phone-number/coverage/lcov.info + flag-name: phone-number + parallel: true + - run: yarn workspace @ringcentral-integration/i18n test --coverage + - name: I18n Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/i18n/coverage/lcov.info + flag-name: i18n + parallel: true + - run: yarn workspace @ringcentral-integration/locale-loader test --coverage + - name: locale-loader Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/locale-loader/coverage/lcov.info + flag-name: locale-loader + parallel: true + - run: yarn workspace @ringcentral-integration/core test --coverage + - name: Core Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/core/coverage/lcov.info + flag-name: core + parallel: true + - run: yarn workspace @ringcentral-integration/commons test --coverage + - name: Commons Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/ringcentral-integration/coverage/lcov.info + flag-name: commons + parallel: true + - run: yarn workspace @ringcentral-integration/widgets test --coverage + - name: Widgets Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/ringcentral-widgets/coverage/lcov.info + flag-name: widgets + parallel: true + - run: yarn workspace ringcentral-widgets-test test --coverage + - name: Widgets Integration Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./packages/ringcentral-widgets-test/coverage/lcov.info + flag-name: widgets-integration + parallel: true + - name: Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true branch-release: needs: tests if: ${{ github.ref == 'refs/heads/master' && github.event_name == 'push' }} diff --git a/.gitignore b/.gitignore index 9feb53a0dc..6b066122f3 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,7 @@ alias.json */**/gh-pages */**/junit.xml +html-report */**/html-report +*/**/jest_html_reporters.html +*/**/junit-report diff --git a/.sync b/.sync index 94f2eedf6a..1fa4436a35 100644 --- a/.sync +++ b/.sync @@ -1 +1 @@ -3bc468af3daaeb57779ea6e6fe239e75a4d45cfa +206c0e043399ff4f2bde5fcbf222d6a036e14a92 diff --git a/packages/babel-settings/package.json b/packages/babel-settings/package.json index fca8dbd362..518a6cdacb 100644 --- a/packages/babel-settings/package.json +++ b/packages/babel-settings/package.json @@ -34,6 +34,6 @@ "babel-jest": "^27.0.1" }, "ci": { - "ringcentral-js-widgets": "**" + "ringcentral-widgets-test": "**" } } diff --git a/packages/core/package.json b/packages/core/package.json index 431d9786d9..1ad3d801bd 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -7,7 +7,7 @@ "lib": "lib" }, "scripts": { - "test": "cross-env NODE_ENV=ci yarn jest", + "test": "NODE_ENV=ci yarn run-test", "build": "yarn gulp build", "gulp": "gulp --require @ringcentral-integration/babel-settings/lib/register.js", "release": "yarn gulp release" @@ -35,5 +35,8 @@ "immer": "^9.0.2", "ramda": "^0.27.0", "redux": "^4.0.5" + }, + "ci": { + "core": "**" } } diff --git a/packages/engage-voice-widget/containers/AppView/styles.scss b/packages/engage-voice-widget/containers/AppView/styles.scss index 301dc2f825..93b9b98e27 100644 --- a/packages/engage-voice-widget/containers/AppView/styles.scss +++ b/packages/engage-voice-widget/containers/AppView/styles.scss @@ -20,5 +20,5 @@ input { .root { @include full-size; - background-color: $app-background-color; + background-color: $lightgray; } diff --git a/packages/glip-widgets/package.json b/packages/glip-widgets/package.json index bcf1f10866..b0a5fcaec9 100644 --- a/packages/glip-widgets/package.json +++ b/packages/glip-widgets/package.json @@ -58,6 +58,6 @@ "react-virtualized": "^9.19.1" }, "ci": { - "ringcentral-js-widgets": "**" + "ringcentral-widgets-test": "**" } } diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 236a1f6358..3351095170 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -50,6 +50,6 @@ ] }, "ci": { - "ringcentral-js-widgets": "**" + "i18n": "**" } } diff --git a/packages/locale-loader/lib/generateLoaderContent/index.test.js b/packages/locale-loader/lib/generateLoaderContent/index.test.js index 675bb5836e..2505a03cfa 100644 --- a/packages/locale-loader/lib/generateLoaderContent/index.test.js +++ b/packages/locale-loader/lib/generateLoaderContent/index.test.js @@ -1,6 +1,7 @@ -import { transform } from 'babel-core'; +import { transform } from '@babel/core'; import formatLocale from '@ringcentral-integration/i18n/lib/formatLocale'; import fs from 'fs-extra'; +import path from 'path'; import generateLoaderContent from '.'; const files = ['en_us.js', 'FR-FR.JS', 'aa-AAAA-ZZ.JS']; @@ -12,7 +13,9 @@ describe('generateLoaderContent', () => { }); describe('generated content', () => { afterAll(async () => { - await fs.remove('./testData/generateLoaderContent/loader.js'); + await fs.remove( + path.resolve(__dirname, './testData/generateLoaderContent/loader.js'), + ); }); const content = generateLoaderContent({ files }); files.forEach((file) => { @@ -29,12 +32,16 @@ describe('generateLoaderContent', () => { expect(content.indexOf(`case '${lang}':`) > -1).toBe(true); }); }); - test('should be valid js file content', async () => { + test('should be valid js file content', () => { expect(() => { transform(content, { filename: 'en-GB.js' }); }).not.toThrow(); - await fs.mkdirp('./testData/generateLoaderContent'); - await fs.writeFile('./testData/generateLoaderContent/loader.js', content); + const folder = path.resolve( + __dirname, + '../../testData/generateLoaderContent', + ); + fs.mkdirpSync(folder); + fs.writeFileSync(path.resolve(folder, 'loader.js'), content); /* eslint-disable-next-line */ const loader = require('../../testData/generateLoaderContent/loader'); expect(typeof loader.default).toBe('function'); diff --git a/packages/locale-loader/package.json b/packages/locale-loader/package.json index 8842aa0206..56686038a3 100644 --- a/packages/locale-loader/package.json +++ b/packages/locale-loader/package.json @@ -67,6 +67,6 @@ ] }, "ci": { - "ringcentral-js-widgets": "**" + "locale-loader": "**" } } diff --git a/packages/locale-settings/package.json b/packages/locale-settings/package.json index 0dd90c42b6..16df92b7dd 100644 --- a/packages/locale-settings/package.json +++ b/packages/locale-settings/package.json @@ -6,6 +6,6 @@ "license": "MIT", "private": true, "ci": { - "ringcentral-js-widgets": "**" + "ringcentral-widgets-test": "**" } } diff --git a/packages/phone-number/package.json b/packages/phone-number/package.json index 17b41f110f..b7f9af7274 100644 --- a/packages/phone-number/package.json +++ b/packages/phone-number/package.json @@ -53,6 +53,6 @@ ] }, "ci": { - "ringcentral-js-widgets": "**" + "phone-number": "**" } } diff --git a/packages/ringcentral-integration/integration-test/commons/Phone/index.js b/packages/ringcentral-integration/integration-test/commons/Phone/index.js index f0ca148d41..7fc747df63 100644 --- a/packages/ringcentral-integration/integration-test/commons/Phone/index.js +++ b/packages/ringcentral-integration/integration-test/commons/Phone/index.js @@ -50,7 +50,7 @@ import RecentCalls from '../../../modules/RecentCalls'; import RecentMessages from '../../../modules/RecentMessages'; import RegionSettings from '../../../modules/RegionSettings'; import Ringout from '../../../modules/Ringout'; -import Softphone from '../../../modules/Softphone'; +import { Softphone } from '../../../modules/Softphone'; import Storage from '../../../modules/Storage'; import Subscription from '../../../modules/Subscription'; import { TabManager } from '../../../modules/TabManager'; diff --git a/packages/ringcentral-integration/jest_html_reporters.html b/packages/ringcentral-integration/jest_html_reporters.html deleted file mode 100644 index b923e9e526..0000000000 --- a/packages/ringcentral-integration/jest_html_reporters.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - -Report - - - -
-
- - - - \ No newline at end of file diff --git a/packages/ringcentral-integration/modules/Brand/Brand.interface.ts b/packages/ringcentral-integration/modules/Brand/Brand.interface.ts index 8d50a57837..6b1030afe3 100644 --- a/packages/ringcentral-integration/modules/Brand/Brand.interface.ts +++ b/packages/ringcentral-integration/modules/Brand/Brand.interface.ts @@ -1,3 +1,5 @@ +import type { RcThemeSwitcherProviderProps } from '@ringcentral/juno'; + export interface CallWithJupiterConfig { /** * Branded Jupiter call link @@ -13,6 +15,55 @@ export interface CallWithJupiterConfig { name: string; } +/** + * css module variables + * + * ! should not add new variables more, use Juno token please + */ +export type CssModuleVariable = { + rcBlue?: string; + bigRed?: string; + darkRed?: string; + tomato?: string; + orange?: string; + leaf?: string; + dark?: string; + night?: string; + ash?: string; + coin?: string; + smoke?: string; + silver?: string; + egg?: string; + snow?: string; + rcOrange?: string; + darkergray?: string; + darkgray?: string; + gray?: string; + bggray?: string; + lightergray?: string; + lightgray?: string; + greyLight?: string; + missed?: string; + active?: string; + primaryColor?: string; + primaryColorHighlight?: string; + primaryColorHighlightSolid?: string; + linePanelBackgroundColor?: string; + callBtnColor?: string; + extensionBackgroundColor?: string; + smsBubbleBackgroundColor?: string; + brandFontColor?: string; + brandFontColorHighlight?: string; + jupiterBackgroundColor?: string; + + // project related + c2dArrowColor?: string; + addMeetingBtnColor?: string; + addMeetingBtnTextColor?: string; + headerLogoWidth?: string; + headerLogoHeight?: string; +}; + export interface BrandConfig { /** * Brand ID registered in RingCentral @@ -101,13 +152,24 @@ export interface BrandConfig { */ allowRegionSetting?: boolean; /** - * spartanProtocol + * spartan Protocol */ - spartanProtocol: string; + spartanProtocol?: string; /** * Allow JupiterUniversalLink */ - allowJupiterUniversalLink: boolean; + allowJupiterUniversalLink?: boolean; + /** + * theme for `RcThemeProvider` + */ + theme?: RcThemeSwitcherProviderProps & { + /** + * variable for css module + * + * * make sure you need update that, all token should always get from Juno theme, prevent to use that + */ + variable?: CssModuleVariable; + }; } export interface Deps { diff --git a/packages/ringcentral-integration/modules/CallV2/Call.interface.ts b/packages/ringcentral-integration/modules/CallV2/Call.interface.ts index 2a84fc6710..57238a0bc5 100644 --- a/packages/ringcentral-integration/modules/CallV2/Call.interface.ts +++ b/packages/ringcentral-integration/modules/CallV2/Call.interface.ts @@ -7,7 +7,7 @@ import { ExtensionFeatures } from '../ExtensionFeatures'; import { NumberValidate } from '../NumberValidateV2'; import { RegionSettings } from '../RegionSettingsV2'; import { Ringout } from '../RingoutV2'; -import { Softphone } from '../SoftphoneV2'; +import { Softphone } from '../Softphone'; import { Storage } from '../StorageV2'; import { Webphone } from '../WebphoneV2'; diff --git a/packages/ringcentral-integration/modules/CallingSettingsV2/CallingSettings.interface.ts b/packages/ringcentral-integration/modules/CallingSettingsV2/CallingSettings.interface.ts index 26e28342ef..89386c6631 100644 --- a/packages/ringcentral-integration/modules/CallingSettingsV2/CallingSettings.interface.ts +++ b/packages/ringcentral-integration/modules/CallingSettingsV2/CallingSettings.interface.ts @@ -9,7 +9,7 @@ import { ForwardingNumber } from '../ForwardingNumberV2'; import { Storage } from '../StorageV2'; import { TabManager } from '../TabManager'; import { Webphone } from '../WebphoneV2'; -import { Softphone } from '../SoftphoneV2'; +import { Softphone } from '../Softphone'; import { ExtensionFeatures } from '../ExtensionFeatures'; export interface Deps { diff --git a/packages/ringcentral-integration/modules/RcVideo/RcVideo.ts b/packages/ringcentral-integration/modules/RcVideo/RcVideo.ts index b1b1b89108..d77d696ad7 100644 --- a/packages/ringcentral-integration/modules/RcVideo/RcVideo.ts +++ b/packages/ringcentral-integration/modules/RcVideo/RcVideo.ts @@ -814,8 +814,8 @@ export class RcVideo extends RcModule, RcVideoActionTypes> { meeting: { ...processedMeeting, isMeetingPasswordValid: this.validatePasswordSettings( - processedMeeting.meetingPassword ?? this.meeting.meetingPassword, - processedMeeting.isMeetingSecret ?? this.meeting.isMeetingSecret, + processedMeeting.meetingPassword ?? this.meeting?.meetingPassword, + processedMeeting.isMeetingSecret ?? this.meeting?.isMeetingSecret, ), }, patch, diff --git a/packages/ringcentral-integration/modules/RcVideoV2/RcVideo.ts b/packages/ringcentral-integration/modules/RcVideoV2/RcVideo.ts index 3608a63d31..5975982efc 100644 --- a/packages/ringcentral-integration/modules/RcVideoV2/RcVideo.ts +++ b/packages/ringcentral-integration/modules/RcVideoV2/RcVideo.ts @@ -793,8 +793,8 @@ export class RcVideo extends RcModuleV2 implements IMeeting { { ...processedMeeting, isMeetingPasswordValid: this.validatePasswordSettings( - processedMeeting.meetingPassword ?? this.meeting.meetingPassword, - processedMeeting.isMeetingSecret ?? this.meeting.isMeetingSecret, + processedMeeting.meetingPassword ?? this.meeting?.meetingPassword, + processedMeeting.isMeetingSecret ?? this.meeting?.isMeetingSecret, ), }, patch, diff --git a/packages/ringcentral-integration/modules/SoftphoneV2/Softphone.interface.ts b/packages/ringcentral-integration/modules/Softphone/Softphone.interface.ts similarity index 100% rename from packages/ringcentral-integration/modules/SoftphoneV2/Softphone.interface.ts rename to packages/ringcentral-integration/modules/Softphone/Softphone.interface.ts diff --git a/packages/ringcentral-integration/modules/SoftphoneV2/Softphone.ts b/packages/ringcentral-integration/modules/Softphone/Softphone.ts similarity index 98% rename from packages/ringcentral-integration/modules/SoftphoneV2/Softphone.ts rename to packages/ringcentral-integration/modules/Softphone/Softphone.ts index e874fa7af4..c551bd0f09 100644 --- a/packages/ringcentral-integration/modules/SoftphoneV2/Softphone.ts +++ b/packages/ringcentral-integration/modules/Softphone/Softphone.ts @@ -99,9 +99,7 @@ export class Softphone extends RcModuleV2 { @computed(({ callWithJupiterConfig }: Softphone) => [callWithJupiterConfig]) get jupiterAppName() { - return this.callWithJupiterConfig?.name - ? `${this.callWithJupiterConfig?.name} App` - : null; + return this.callWithJupiterConfig?.name ?? null; } // currently we don't have Bt brand uri scheme diff --git a/packages/ringcentral-integration/modules/Softphone/actionTypes.js b/packages/ringcentral-integration/modules/Softphone/actionTypes.js deleted file mode 100644 index 68d6c36a6d..0000000000 --- a/packages/ringcentral-integration/modules/Softphone/actionTypes.js +++ /dev/null @@ -1,8 +0,0 @@ -import { ObjectMap } from '@ringcentral-integration/core/lib/ObjectMap'; - -export const actionTypes = ObjectMap.prefixKeys( - ['startToConnect', 'connectComplete'], - 'softphone', -); - -export default actionTypes; diff --git a/packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.js b/packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.js deleted file mode 100644 index 81f212c7ae..0000000000 --- a/packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.js +++ /dev/null @@ -1,39 +0,0 @@ -import { combineReducers } from 'redux'; -import softphoneStatus from './softphoneStatus'; - -export function getSoftphoneStatusReducer(types) { - return (state = softphoneStatus.idle, { type }) => { - switch (type) { - case types.startToConnect: - return softphoneStatus.connecting; - - case types.connectComplete: - return softphoneStatus.idle; - - default: - return state; - } - }; -} - -export function getConnectingPhoneNumberReducer(types) { - return (state = null, { type, phoneNumber }) => { - switch (type) { - case types.startToConnect: - return phoneNumber; - - case types.connectComplete: - return null; - - default: - return state; - } - }; -} - -export default function getSoftphoneReducer(types) { - return combineReducers({ - softphoneStatus: getSoftphoneStatusReducer(types), - connectingPhoneNumber: getConnectingPhoneNumberReducer(types), - }); -} diff --git a/packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.test.js b/packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.test.js deleted file mode 100644 index 73cb0d1502..0000000000 --- a/packages/ringcentral-integration/modules/Softphone/getSoftphoneReducer.test.js +++ /dev/null @@ -1,84 +0,0 @@ -import { expect } from 'chai'; -import getSoftphoneReducer, { - getSoftphoneStatusReducer, - getConnectingPhoneNumberReducer, -} from './getSoftphoneReducer'; -import softphoneStatus from './softphoneStatus'; -import softphoneActionTypes from './actionTypes'; - -describe('Softphone', () => { - describe('getSoftphoneStatusReducer', () => { - const reducer = getSoftphoneStatusReducer(softphoneActionTypes); - it('should be a function', () => { - expect(getSoftphoneStatusReducer).to.be.a('function'); - }); - it('should have initial state of idle', () => { - expect(reducer(undefined, {})).to.equal(softphoneStatus.idle); - }); - it('should return original state if actionType is not recognized', () => { - const originalState = {}; - expect(reducer(originalState, { type: 'foo' })).to.equal(originalState); - }); - it('should return idle status if actionType is connectComplete', () => { - expect( - reducer('foo', { - type: softphoneActionTypes.connectComplete, - }), - ).to.equal(softphoneStatus.idle); - }); - it('should return connecting status if actionType is startToConnect', () => { - expect( - reducer('foo', { - type: softphoneActionTypes.startToConnect, - }), - ).to.equal(softphoneStatus.connecting); - }); - }); - describe('getConnectingPhoneNumberReducer', () => { - const reducer = getConnectingPhoneNumberReducer(softphoneActionTypes); - it('should be a function', () => { - expect(getConnectingPhoneNumberReducer).to.be.a('function'); - }); - it('should have initial state of null', () => { - expect(reducer(undefined, {})).to.equal(null); - }); - it('should return original state if actionType is not recognized', () => { - const originalState = {}; - expect(reducer(originalState, { type: 'foo' })).to.equal(originalState); - }); - it('should return null if actionType is connectComplete', () => { - expect( - reducer('foo', { - type: softphoneActionTypes.connectComplete, - }), - ).to.equal(null); - }); - it('should return connecting phone number if actionType is startToConnect', () => { - const phoneNumber = '123'; - expect( - reducer('foo', { - type: softphoneActionTypes.startToConnect, - phoneNumber, - }), - ).to.equal(phoneNumber); - }); - }); - describe('getSoftphoneReducer', () => { - it('should be a function', () => { - expect(getSoftphoneReducer).to.be.a('function'); - }); - const reducer = getSoftphoneReducer(softphoneActionTypes); - const softphoneStatusReducer = getSoftphoneStatusReducer( - softphoneActionTypes, - ); - const connectingPhoneNumberReducer = getConnectingPhoneNumberReducer( - softphoneActionTypes, - ); - it('should return combined state', () => { - expect(reducer(undefined, {})).to.deep.equal({ - softphoneStatus: softphoneStatusReducer(undefined, {}), - connectingPhoneNumber: connectingPhoneNumberReducer(undefined, {}), - }); - }); - }); -}); diff --git a/packages/ringcentral-integration/modules/Softphone/index.js b/packages/ringcentral-integration/modules/Softphone/index.js deleted file mode 100644 index 1a5e6b114e..0000000000 --- a/packages/ringcentral-integration/modules/Softphone/index.js +++ /dev/null @@ -1,190 +0,0 @@ -import bowser from 'bowser'; -import sleep from '../../lib/sleep'; -import { Module } from '../../lib/di'; -import RcModule from '../../lib/RcModule'; -import moduleStatuses from '../../enums/moduleStatuses'; -import { actionTypes } from './actionTypes'; -import getSoftphoneReducer from './getSoftphoneReducer'; -import proxify from '../../lib/proxy/proxify'; -import callingModes from '../CallingSettings/callingModes'; -/** - * @class - * @description Softphone module to call softphone - */ -@Module({ - name: 'Softphone', - deps: [ - 'Brand', - { dep: 'ContactMatcher', optional: true }, - { dep: 'SoftphoneOptions', optional: true }, - ], -}) -export default class Softphone extends RcModule { - /** - * @constructor - * @param {Object} params - params object - * @param {Brnad} params.brand - brand module instance - * @param {Bool} params.extensionMode - default false - * @param {Function} param.callHandler - custom call handler, optional - * @param {MontactMatcher} param.contactMatcher - contactMatcher module instance, optional - */ - constructor({ - brand, - extensionMode = false, - callHandler, - contactMatcher, - ...options - }) { - super({ - ...options, - actionTypes, - }); - this._brand = brand; - this._extensionMode = extensionMode; - this._callHandler = callHandler; - this._contactMatcher = contactMatcher; - this._reducer = getSoftphoneReducer(this.actionTypes); - } - - detectPlatform() { - return bowser.parse( - (global.navigator && global.navigator.userAgent) || 'unknown', - ).platform.type; - } - - _onStateChange() { - /* do nothing */ - } - - get spartanProtocol() { - switch (this._brand.code) { - case 'att': - return 'attvr20://'; - case 'bt': - return 'rcbtmobile://'; - case 'telus': - return 'rctelus://'; - default: - return 'rcmobile://'; - } - } - - // currently we only have RingCentral App(rc brand)'s & AT&T universal link - get jupiterUniversalLink() { - switch (this._brand.code) { - case 'att': - return 'https://app.officeathand.att.com/'; - case 'bt': - return 'http://app.cloudwork.bt.com/'; - case 'telus': - return 'https://app.businessconnect.telus.com/'; - - default: - return 'https://app.ringcentral.com/'; - } - } - - // currently we don't have Bt brand uri scheme - get jupiterProtocol() { - switch (this._brand.code) { - case 'att': - return 'officeathand://'; - case 'bt': - return 'com.bt.cloudwork.app://'; - case 'telus': - return 'rctelus://'; - default: - return 'rcapp://'; - } - } - - getMakeCallUri( - phoneNumber: string, - callingMode: string, - ): { command: string, protocol: string, uri: string } { - // spartan - let command = `call?number=${encodeURIComponent(phoneNumber)}`; - let protocol = this.spartanProtocol; - - // jupiter - const isCallWithJupiter = callingMode === callingModes.jupiter; - if (isCallWithJupiter) { - const isRcBrand = this._brand.code === 'rc'; - // jupiter doesn't recognize encoded string for now - command = `r/call?number=${phoneNumber}`; - // rc brand use scheme, partner brand use universal link - protocol = isRcBrand ? this.jupiterProtocol : this.jupiterUniversalLink; - } - return { - command, - protocol, - uri: `${protocol}${command}`, - }; - } - - @proxify - async makeCall(phoneNumber, callingMode) { - this.store.dispatch({ - type: this.actionTypes.startToConnect, - phoneNumber, - }); - - const { protocol, command, uri } = this.getMakeCallUri( - phoneNumber, - callingMode, - ); - - if (this._callHandler) { - this._callHandler({ - callingMode, - protocol, - command, - uri, - phoneNumber, - }); - } else if (this._extensionMode || this.detectPlatform() !== 'desktop') { - /** - * 1. Use window.open in extension background scripts to avoid crashing Browsers - * 2. Use window.open in non-desktop platforms - */ - window.open(uri); - } else if (window.navigator.msLaunchUri) { - // to support ie to start the service - window.navigator.msLaunchUri(uri); - } else if (window.ActiveXObject || 'ActiveXObject' in window) { - // to support ie on Windows < 8 - window.open(uri); - } else { - const frame = document.createElement('iframe'); - frame.style.display = 'none'; - document.body.appendChild(frame); - await sleep(100); - frame.contentWindow.location.href = uri; - await sleep(300); - document.body.removeChild(frame); - } - - if (this._contactMatcher) { - await this._contactMatcher.forceMatchNumber({ - phoneNumber, - }); - } - - this.store.dispatch({ - type: this.actionTypes.connectComplete, - }); - } - - // eslint-disable-next-line class-methods-use-this - get status() { - return moduleStatuses.ready; - } - - get connectingPhoneNumber() { - return this.state.connectingPhoneNumber; - } - - get softphoneStatus() { - return this.state.softphoneStatus; - } -} diff --git a/packages/ringcentral-integration/modules/SoftphoneV2/index.ts b/packages/ringcentral-integration/modules/Softphone/index.ts similarity index 100% rename from packages/ringcentral-integration/modules/SoftphoneV2/index.ts rename to packages/ringcentral-integration/modules/Softphone/index.ts diff --git a/packages/ringcentral-integration/modules/Softphone/softphoneStatus.js b/packages/ringcentral-integration/modules/Softphone/softphoneStatus.js deleted file mode 100644 index 5650ff0156..0000000000 --- a/packages/ringcentral-integration/modules/Softphone/softphoneStatus.js +++ /dev/null @@ -1,8 +0,0 @@ -import { ObjectMap } from '@ringcentral-integration/core/lib/ObjectMap'; - -export const softphoneStatus = ObjectMap.prefixKeys( - ['idle', 'connecting'], - 'softphone', -); - -export default softphoneStatus; diff --git a/packages/ringcentral-integration/modules/SoftphoneV2/softphoneStatus.ts b/packages/ringcentral-integration/modules/Softphone/softphoneStatus.ts similarity index 100% rename from packages/ringcentral-integration/modules/SoftphoneV2/softphoneStatus.ts rename to packages/ringcentral-integration/modules/Softphone/softphoneStatus.ts diff --git a/packages/ringcentral-integration/modules/Theme/Theme.interface.ts b/packages/ringcentral-integration/modules/Theme/Theme.interface.ts new file mode 100644 index 0000000000..d52eaa96ab --- /dev/null +++ b/packages/ringcentral-integration/modules/Theme/Theme.interface.ts @@ -0,0 +1,7 @@ +import { Brand } from '../Brand'; + +export interface ThemeOptions {} +export interface Deps { + brand: Brand; + themeOptions?: ThemeOptions; +} diff --git a/packages/ringcentral-integration/modules/Theme/Theme.ts b/packages/ringcentral-integration/modules/Theme/Theme.ts new file mode 100644 index 0000000000..5ad000745b --- /dev/null +++ b/packages/ringcentral-integration/modules/Theme/Theme.ts @@ -0,0 +1,59 @@ +import { + action, + computed, + RcModuleV2, + state, + storage, + watch, +} from '@ringcentral-integration/core'; + +import { Module } from '../../lib/di'; +import { defaultCssVariable } from './defaultCssVariable'; +import { Deps } from './Theme.interface'; + +@Module({ + name: 'Theme', + deps: ['Brand', { dep: 'ThemeOptions', optional: true }], +}) +export class Theme extends RcModuleV2 { + constructor(deps: Deps) { + super({ + deps, + storageKey: 'Theme', + }); + } + + @storage + @state + themeType: string = ''; + + @action + setThemeType(type: string) { + this.themeType = type; + } + + onInitOnce() { + // only watch config defaultTheme when first time init app. + if (this.themeType === '') { + watch( + this, + () => this._deps.brand.brandConfig.theme?.defaultTheme, + (newValue) => { + this.setThemeType(newValue); + }, + ); + } + } + + get theme() { + return this._deps.brand.brandConfig.theme?.themeMap?.[this.themeType]; + } + + @computed((that: Theme) => [that._deps.brand.brandConfig.theme?.variable]) + get variable() { + return { + ...defaultCssVariable, + ...this._deps.brand.brandConfig.theme?.variable, + }; + } +} diff --git a/packages/ringcentral-integration/modules/Theme/defaultCssVariable.ts b/packages/ringcentral-integration/modules/Theme/defaultCssVariable.ts new file mode 100644 index 0000000000..058662e5a7 --- /dev/null +++ b/packages/ringcentral-integration/modules/Theme/defaultCssVariable.ts @@ -0,0 +1,39 @@ +import { CssModuleVariable } from '../Brand'; + +// TODO: work with designer switch to juno token +export const defaultCssVariable: CssModuleVariable = { + rcBlue: '#066fac', + bigRed: '#dc0202', + darkRed: '#c90213', + tomato: '#f95b5c', + orange: '#ff8800', + leaf: '#5fb95c', + dark: '#333', + night: '#2f2f2f', + ash: '#666666', + coin: '#999999', + smoke: '#c7c7c7', + silver: '#e2e2e2', + egg: '#f9f9f9', + snow: '#ffffff', + rcOrange: '#e07800', + darkergray: '#797979', + darkgray: '#808080', + gray: '#eeeeee', + bggray: '#e0e0e0', + lightergray: '#efefef', + lightgray: '#fcfcfc', + greyLight: '#797979', + missed: '#d8232a', + active: '#23b23d', + primaryColor: '#066fac', + primaryColorHighlight: 'rgba(6, 132, 189, 0.4)', + primaryColorHighlightSolid: 'rgba(173, 210, 227, 1)', + linePanelBackgroundColor: '#f6f6f6', + callBtnColor: '#5fb95c', + extensionBackgroundColor: '#66d17b', + smsBubbleBackgroundColor: '#d5f3fd', + brandFontColor: '#066fac', + brandFontColorHighlight: 'rgba(6, 132, 189, 0.4)', + jupiterBackgroundColor: '#f5f6fb', +}; diff --git a/packages/ringcentral-integration/modules/Theme/index.ts b/packages/ringcentral-integration/modules/Theme/index.ts new file mode 100644 index 0000000000..1a72f437a9 --- /dev/null +++ b/packages/ringcentral-integration/modules/Theme/index.ts @@ -0,0 +1,2 @@ +export * from './Theme.interface'; +export * from './Theme'; diff --git a/packages/ringcentral-integration/package.json b/packages/ringcentral-integration/package.json index c85be16199..df19df694b 100644 --- a/packages/ringcentral-integration/package.json +++ b/packages/ringcentral-integration/package.json @@ -5,7 +5,7 @@ "main": "build/rc-phone.js", "scripts": { "test": "yarn quick-test && yarn test:crius", - "test:crius": "cross-env NODE_ENV=ci yarn jest", + "test:crius": "NODE_ENV=ci yarn run-test", "test-no-cache": "jest --no-cache --verbose", "quick-test": "yarn gulp quickTest", "unit-test": "mocha --compilers js:@ringcentral-integration/babel-settings/lib/register", @@ -106,6 +106,6 @@ "yards": "^0.1.4" }, "ci": { - "ringcentral-js-widgets": "**" + "ringcentral-integration": "**" } } diff --git a/packages/ringcentral-integration/test/spec-lib/checkShouldHideContactUser.test.tsx b/packages/ringcentral-integration/test/spec-lib/checkShouldHideContactUser.test.tsx new file mode 100644 index 0000000000..76260c2a87 --- /dev/null +++ b/packages/ringcentral-integration/test/spec-lib/checkShouldHideContactUser.test.tsx @@ -0,0 +1,43 @@ +import { + autorun, + title, + Scenario, + When, + Then, + Step, + examples, +} from '@ringcentral-integration/test-utils'; +import { checkShouldHideContactUser } from '../../../ringcentral-widgets/lib/checkShouldHideContactUser'; + +@autorun(test) +@title('checkShouldHideContactUser::basic') +export class CheckShouldHideContactUserBasic extends Step { + @examples(` + | contactMatches | shouldHideContactUser | + | null | true | + | [] | true | + | {} | true | + | [{ id: '123', name: 'test1', hidden: true }] | true | + | [{ id: '456', name: 'test2' }] | false | + `) + run() { + return ( + + { + expect(typeof checkShouldHideContactUser).toBe('function'); + }} + /> + { + expect(checkShouldHideContactUser(example.contactMatches)).toBe( + example.shouldHideContactUser, + ); + }} + /> + + ); + } +} diff --git a/packages/ringcentral-integration/test/spec-modules/Softphone.test.tsx b/packages/ringcentral-integration/test/spec-modules/Softphone.test.tsx index 7510bc3e31..c528abd867 100644 --- a/packages/ringcentral-integration/test/spec-modules/Softphone.test.tsx +++ b/packages/ringcentral-integration/test/spec-modules/Softphone.test.tsx @@ -9,7 +9,7 @@ import { examples, } from '@ringcentral-integration/test-utils'; -import { Softphone, softphoneStatus } from '../../modules/SoftphoneV2'; +import { Softphone, softphoneStatus } from '../../modules/Softphone'; import { mockModuleGenerator } from '../lib/mockModule'; const getMockModule = () => diff --git a/packages/ringcentral-widgets-cli/package.json b/packages/ringcentral-widgets-cli/package.json index 9e381dbdbf..fc5e596bf4 100644 --- a/packages/ringcentral-widgets-cli/package.json +++ b/packages/ringcentral-widgets-cli/package.json @@ -18,7 +18,7 @@ "homepage": "https://github.com/ringcentral/ringcentral-js-widgets/tree/master/packages/ringcentral-widgets-cli#readme", "dependencies": { "commander": "^2.19.0", - "ejs": "^2.6.1", + "ejs": "^3.1.6", "inquirer": "^6.2.0" } } diff --git a/packages/ringcentral-widgets-cli/templates/Project/src/containers/AppView/styles.scss b/packages/ringcentral-widgets-cli/templates/Project/src/containers/AppView/styles.scss index dd02458fab..567c7c7669 100644 --- a/packages/ringcentral-widgets-cli/templates/Project/src/containers/AppView/styles.scss +++ b/packages/ringcentral-widgets-cli/templates/Project/src/containers/AppView/styles.scss @@ -17,5 +17,5 @@ input { .root { @include full-size; - background-color: $app-background-color; + background-color: $lightgray; } diff --git a/packages/ringcentral-widgets-demo/dev-server/Phone.js b/packages/ringcentral-widgets-demo/dev-server/Phone.js index 8bef19a0c2..db430d6475 100644 --- a/packages/ringcentral-widgets-demo/dev-server/Phone.js +++ b/packages/ringcentral-widgets-demo/dev-server/Phone.js @@ -63,8 +63,10 @@ import { RegionSettings } from '@ringcentral-integration/commons/modules/RegionS import ringoutStatus from '@ringcentral-integration/commons/modules/Ringout/ringoutStatus'; import { Ringout } from '@ringcentral-integration/commons/modules/RingoutV2'; import { SleepDetector } from '@ringcentral-integration/commons/modules/SleepDetectorV2'; -import softphoneStatus from '@ringcentral-integration/commons/modules/Softphone/softphoneStatus'; -import { Softphone } from '@ringcentral-integration/commons/modules/SoftphoneV2'; +import { + Softphone, + softphoneStatus, +} from '@ringcentral-integration/commons/modules/Softphone'; import { Storage } from '@ringcentral-integration/commons/modules/StorageV2'; import { Subscription } from '@ringcentral-integration/commons/modules/SubscriptionV2'; import { TabManager } from '@ringcentral-integration/commons/modules/TabManager'; diff --git a/packages/ringcentral-widgets-demo/dev-server/brandConfig.ts b/packages/ringcentral-widgets-demo/dev-server/brandConfig.ts index 6f27552fec..df4501ce32 100644 --- a/packages/ringcentral-widgets-demo/dev-server/brandConfig.ts +++ b/packages/ringcentral-widgets-demo/dev-server/brandConfig.ts @@ -16,10 +16,10 @@ export const brandConfig = createBrandConfig({ }, }, rcvTeleconference: 'https://v.ringcentral.com/teleconference/', - spartanProtocol: 'rcmobile://', - allowJupiterUniversalLink: true, meetingUriReg: { rcm: undefined, rcv: undefined, }, + spartanProtocol: 'rcmobile://', + allowJupiterUniversalLink: true, }); diff --git a/packages/ringcentral-widgets-demo/dev-server/containers/AppView/styles.scss b/packages/ringcentral-widgets-demo/dev-server/containers/AppView/styles.scss index 5b14da209f..1a56b8d4a6 100644 --- a/packages/ringcentral-widgets-demo/dev-server/containers/AppView/styles.scss +++ b/packages/ringcentral-widgets-demo/dev-server/containers/AppView/styles.scss @@ -9,5 +9,5 @@ .root { @include full-size; - background-color: $app-background-color; + background-color: $lightgray; } diff --git a/packages/ringcentral-widgets-docs/package.json b/packages/ringcentral-widgets-docs/package.json index 01bf60d682..0ab29866a8 100644 --- a/packages/ringcentral-widgets-docs/package.json +++ b/packages/ringcentral-widgets-docs/package.json @@ -41,7 +41,7 @@ "prop-types": "^15.7.2", "raw-loader": "^0.5.1", "react": "^17.0.2", - "react-docgen": "^2.20.1", + "react-docgen": "^5.4.0", "react-dom": "^17.0.2", "react-router-dom": "^4.1.1", "react-svg-loader": "^3.0.3", diff --git a/packages/ringcentral-widgets-docs/src/app/components/PropTypeDescription/index.js b/packages/ringcentral-widgets-docs/src/app/components/PropTypeDescription/index.js index a03fc2246e..10789756c6 100644 --- a/packages/ringcentral-widgets-docs/src/app/components/PropTypeDescription/index.js +++ b/packages/ringcentral-widgets-docs/src/app/components/PropTypeDescription/index.js @@ -7,6 +7,9 @@ import Markdown from '../Markdown'; import styles from './styles.scss'; function generatePropType(type) { + if (!type) { + return 'unknown'; + } let values; switch (type.name) { case 'func': @@ -35,7 +38,7 @@ function generateDescription(required, description, type) { if (parsed.tags.some((tag) => tag.title === 'ignore')) return null; let signature = ''; - if (type.name === 'func' && parsed.tags.length > 0) { + if (type && type.name === 'func' && parsed.tags.length > 0) { // Remove new lines from tag descriptions to avoid markdown errors. parsed.tags.forEach((tag) => { if (tag.description) { @@ -71,9 +74,14 @@ function generateDescription(required, description, type) { return `${jsDocText}${signature}`; } -function PropTypeDescription(props) { - const { componentInfo, header } = props; - if (!componentInfo.props) { +const PropTypeDescription = (props) => { + const { componentInfo: info, header } = props; + let componentInfo = info; + if (Array.isArray(componentInfo)) { + componentInfo = componentInfo[0]; + } + console.log(componentInfo); + if (!componentInfo || !componentInfo.props) { return null; } let requiredProps = 0; @@ -86,7 +94,7 @@ function PropTypeDescription(props) { const prop = componentInfo.props[key]; const description = generateDescription( prop.required, - prop.description, + prop.description || '', prop.type, ); @@ -125,15 +133,19 @@ function PropTypeDescription(props) {
{requiredPropFootnote}
); -} +}; PropTypeDescription.propTypes = { - componentInfo: PropTypes.object.isRequired, - header: PropTypes.string.isRequired, + componentInfo: PropTypes.oneOfType([ + PropTypes.object, + PropTypes.arrayOf(PropTypes.object), + ]), + header: PropTypes.string, }; PropTypeDescription.defaultProps = { header: '### Properties', + componentInfo: {}, }; export default PropTypeDescription; diff --git a/packages/ringcentral-widgets-docs/src/app/componentsData.json b/packages/ringcentral-widgets-docs/src/app/componentsData.json index b267067b0a..93565bfe0d 100644 --- a/packages/ringcentral-widgets-docs/src/app/componentsData.json +++ b/packages/ringcentral-widgets-docs/src/app/componentsData.json @@ -12032,7 +12032,7 @@ "displayName": "MessageItem", "methods": [ { - "name": "preventEventPropogation", + "name": "preventEventPropagating", "docblock": null, "modifiers": [], "params": [ diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/AlertDisplay/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/AlertDisplay/index.js index 258897f548..75b335249b 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/AlertDisplay/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/AlertDisplay/index.js @@ -8,7 +8,7 @@ import Demo from './Demo'; // eslint-disable-next-line import demoCode from '!raw-loader!./Demo'; // eslint-disable-next-line -import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/AlertDisplay'; +import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/AlertDisplay/AlertDisplay'; const AlertDisplayPage = () => { const info = parse(componentCode); diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/AnimationAlert/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/AnimationAlert/index.js index 879fe927ba..deb5bb3ca9 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/AnimationAlert/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/AnimationAlert/index.js @@ -8,7 +8,7 @@ import Demo from './Demo'; // eslint-disable-next-line import demoCode from '!raw-loader!./Demo'; // eslint-disable-next-line -import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/AnimationAlert'; +import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/AnimationAlert/AnimationAlert.tsx'; const AnimationAlertPage = () => { const info = parse(componentCode); diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/DialButton/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/DialButton/index.js index 42ccc23e9a..aeb726bf0b 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/DialButton/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/DialButton/index.js @@ -8,7 +8,7 @@ import Demo from './Demo'; // eslint-disable-next-line import demoCode from '!raw-loader!./Demo'; // eslint-disable-next-line -import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/DialButton'; +import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/DialButton/DialButton.tsx'; const DialButtonPage = () => { const info = parse(componentCode); diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/EntityModal/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/EntityModal/index.js index 2404e23c10..29d33de834 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/EntityModal/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/EntityModal/index.js @@ -8,7 +8,7 @@ import Demo from './Demo'; // eslint-disable-next-line import demoCode from '!raw-loader!./Demo'; // eslint-disable-next-line -import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/EntityModal'; +import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/EntityModal/EntityModal.js'; const EntityModalPage = () => { const info = parse(componentCode); diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/RolesAndPermissionsAlert/Demo.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/PermissionsAlert/Demo.js similarity index 100% rename from packages/ringcentral-widgets-docs/src/app/pages/Components/RolesAndPermissionsAlert/Demo.js rename to packages/ringcentral-widgets-docs/src/app/pages/Components/PermissionsAlert/Demo.js diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/RolesAndPermissionsAlert/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/PermissionsAlert/index.js similarity index 85% rename from packages/ringcentral-widgets-docs/src/app/pages/Components/RolesAndPermissionsAlert/index.js rename to packages/ringcentral-widgets-docs/src/app/pages/Components/PermissionsAlert/index.js index 32c546dc2b..894a29ebe3 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/RolesAndPermissionsAlert/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/PermissionsAlert/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import { parse } from 'react-docgen'; +import { parse, resolver } from 'react-docgen'; import CodeExample from '../../../components/CodeExample'; import ComponentHeader from '../../../components/ComponentHeader'; import PropTypeDescription from '../../../components/PropTypeDescription'; @@ -11,7 +11,8 @@ import demoCode from '!raw-loader!./Demo'; import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/AlertRenderer/PermissionsAlert'; const PermissionsAlertPage = () => { - const info = parse(componentCode); + const info = parse(componentCode, resolver.findAllComponentDefinitions); + console.log(info); return (
diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/RemoveButton/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/RemoveButton/index.js index 03f9b8208d..a097c89e93 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/RemoveButton/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/RemoveButton/index.js @@ -8,7 +8,7 @@ import Demo from './Demo'; // eslint-disable-next-line import demoCode from '!raw-loader!./Demo'; // eslint-disable-next-line -import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/RemoveButton'; +import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/RemoveButton/RemoveButton.tsx'; const RemoveButtonPage = () => { const info = parse(componentCode); diff --git a/packages/ringcentral-widgets-docs/src/app/pages/Components/SearchInput/index.js b/packages/ringcentral-widgets-docs/src/app/pages/Components/SearchInput/index.js index 716fc1fc1b..03fbff5fb5 100644 --- a/packages/ringcentral-widgets-docs/src/app/pages/Components/SearchInput/index.js +++ b/packages/ringcentral-widgets-docs/src/app/pages/Components/SearchInput/index.js @@ -8,7 +8,7 @@ import Demo from './Demo'; // eslint-disable-next-line import demoCode from '!raw-loader!./Demo'; // eslint-disable-next-line -import { SearchInput as componentCode } from '!raw-loader!@ringcentral-integration/widgets/components/SearchInput'; +import componentCode from '!raw-loader!@ringcentral-integration/widgets/components/SearchInput/SearchInput.tsx'; const SearchInputPage = () => { const info = parse(componentCode); diff --git a/packages/ringcentral-widgets-docs/webpack-dev-server.config.js b/packages/ringcentral-widgets-docs/webpack-dev-server.config.js index 7e0e844563..51be1244a0 100644 --- a/packages/ringcentral-widgets-docs/webpack-dev-server.config.js +++ b/packages/ringcentral-widgets-docs/webpack-dev-server.config.js @@ -10,6 +10,9 @@ const outputPath = path.resolve(__dirname, 'src/www'); const config = { mode: 'development', entry: './src/app/index.js', + node: { + fs: 'empty', + }, devServer: { contentBase: 'src/www', hot: true, diff --git a/packages/ringcentral-widgets-docs/webpack-production.config.js b/packages/ringcentral-widgets-docs/webpack-production.config.js index 63ea6f9962..98d0e26e5b 100644 --- a/packages/ringcentral-widgets-docs/webpack-production.config.js +++ b/packages/ringcentral-widgets-docs/webpack-production.config.js @@ -11,6 +11,9 @@ const outputPath = path.resolve(__dirname, 'gh-pages'); const config = { mode: 'production', entry: './src/app/index.js', + node: { + fs: 'empty', + }, output: { path: outputPath, filename: 'index.js', diff --git a/packages/ringcentral-widgets-test/__test__/interfaces/index.ts b/packages/ringcentral-widgets-test/__test__/interfaces/index.ts index c6e44a1cef..b932868e11 100644 --- a/packages/ringcentral-widgets-test/__test__/interfaces/index.ts +++ b/packages/ringcentral-widgets-test/__test__/interfaces/index.ts @@ -1,6 +1,12 @@ +import { ObjectMapKey } from '../../../core/lib/ObjectMap/ObjectMap' +import { connectionStatus } from '@ringcentral-integration/commons/modules/WebphoneV2/connectionStatus'; + +export type connectionStatusEnum = ObjectMapKey; + export interface Context { phone: any; // TODO: add type + app: any; payload: { // - } + }; } diff --git a/packages/ringcentral-widgets-test/__test__/steps/Router/action/PageNavigation.tsx b/packages/ringcentral-widgets-test/__test__/steps/Router/action/PageNavigation.tsx new file mode 100644 index 0000000000..0ba5782b12 --- /dev/null +++ b/packages/ringcentral-widgets-test/__test__/steps/Router/action/PageNavigation.tsx @@ -0,0 +1,9 @@ +import { StepFunction } from '../../'; + +export const ClickToNavigatePage: StepFunction<{ path: string }> = async ( + { path }, + { phone }, +) => { + const { goTo } = phone.mainViewUI.getUIFunctions(); + goTo(path); +}; diff --git a/packages/ringcentral-widgets-test/__test__/steps/Router/action/index.ts b/packages/ringcentral-widgets-test/__test__/steps/Router/action/index.ts new file mode 100644 index 0000000000..64fb1fa892 --- /dev/null +++ b/packages/ringcentral-widgets-test/__test__/steps/Router/action/index.ts @@ -0,0 +1 @@ +export * from './PageNavigation'; diff --git a/packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckCallButtonEnable.tsx b/packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckCallButtonEnable.tsx new file mode 100644 index 0000000000..d00fbf4584 --- /dev/null +++ b/packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckCallButtonEnable.tsx @@ -0,0 +1,24 @@ +import { StepFunction } from '../..'; +import { ClickToNavigatePage } from '../../Router/action/PageNavigation'; +import { Context } from '../../../interfaces'; + +export const CheckCallButtonEnable: StepFunction<{ + enable: boolean; +}> = async ({ enable }, context: Context) => { + const { phone, app } = context; + const { queryByTestId } = app; + const dialerUIProps = phone.dialerUI.getUIProps(); + ClickToNavigatePage({ path: '/dialer' }, context); + if (enable) { + expect(dialerUIProps.callButtonDisabled).toBeFalsy(); + expect(queryByTestId('callButton').getAttribute('class')).not.toContain( + 'disabled', + ); + } + if (!enable) { + expect(dialerUIProps.callButtonDisabled).toBeTruthy(); + expect(queryByTestId('callButton').getAttribute('class')).toContain( + 'disabled', + ); + } +}; diff --git a/packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckProgressIconVisible.tsx b/packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckProgressIconVisible.tsx new file mode 100644 index 0000000000..edffc72ccc --- /dev/null +++ b/packages/ringcentral-widgets-test/__test__/steps/Webphone/Check/CheckProgressIconVisible.tsx @@ -0,0 +1,11 @@ +import { StepFunction } from '../..'; +import { ClickToNavigatePage } from '../../Router/action/PageNavigation'; + +export const CheckProgressIconVisible: StepFunction<{ + visible: boolean; +}> = async ({ visible }, context) => { + const { queryByRole } = context.app; + visible + ? expect(queryByRole('progressbar')).not.toBeNull() + : expect(queryByRole('progressbar')).toBeNull(); +}; diff --git a/packages/ringcentral-widgets-test/__test__/steps/Webphone/Operate/ChangeConnectionStatus.tsx b/packages/ringcentral-widgets-test/__test__/steps/Webphone/Operate/ChangeConnectionStatus.tsx new file mode 100644 index 0000000000..2a21ce56ff --- /dev/null +++ b/packages/ringcentral-widgets-test/__test__/steps/Webphone/Operate/ChangeConnectionStatus.tsx @@ -0,0 +1,16 @@ +import { connectionStatus } from '@ringcentral-integration/commons/modules/WebphoneV2/connectionStatus'; +import { StepFunction } from '../..'; +import { connectionStatusEnum } from '../../../interfaces'; + +export const ChangeConnectionStatus: StepFunction<{ + status: connectionStatusEnum; +}> = async ({ status }, context) => { + const { phone } = context; + Object.defineProperties(phone.webphone, { + [status]: { value: true }, + connectionStatus: { value: connectionStatus[status] }, + }); + console.log( + `Set webphone connect status as ${status}, and connectionStatus is: ${connectionStatus[status]} `, + ); +}; diff --git a/packages/ringcentral-widgets-test/__test__/steps/Webphone/index.ts b/packages/ringcentral-widgets-test/__test__/steps/Webphone/index.ts new file mode 100644 index 0000000000..384d0b16ff --- /dev/null +++ b/packages/ringcentral-widgets-test/__test__/steps/Webphone/index.ts @@ -0,0 +1,3 @@ +export * from './Check/CheckCallButtonEnable'; +export * from './Check/CheckProgressIconVisible'; +export * from './Operate/ChangeConnectionStatus'; diff --git a/packages/ringcentral-widgets-test/__test__/steps/index.ts b/packages/ringcentral-widgets-test/__test__/steps/index.ts index 661b5be449..0773dad3f8 100644 --- a/packages/ringcentral-widgets-test/__test__/steps/index.ts +++ b/packages/ringcentral-widgets-test/__test__/steps/index.ts @@ -24,6 +24,9 @@ export class Step

extends BaseStep { get phone() { return global.instance.phone; }, + get app() { + return global.instance.app; + }, payload: { // }, diff --git a/packages/ringcentral-widgets-test/package.json b/packages/ringcentral-widgets-test/package.json index 86492180e3..d6484c4306 100644 --- a/packages/ringcentral-widgets-test/package.json +++ b/packages/ringcentral-widgets-test/package.json @@ -12,9 +12,9 @@ }, "scripts": { "test:crius:dev": "jest --config=crius.config.js", - "test:crius": "cross-env NODE_ENV=ci jest --config=crius.config.js", + "test:crius": "NODE_ENV=ci jest --config=crius.config.js", "debug": "node --inspect ./node_modules/.bin/jest -i", - "test": "yarn test:jest && yarn test:crius", + "test": "NODE_ENV=ci yarn run-test", "test:jest": "jest", "test:watch": "yarn test -- --watch", "test:coverage": "yarn test --coverage", @@ -102,6 +102,6 @@ "react-test-renderer": "^17.0.2" }, "ci": { - "ringcentral-js-widgets": "**" + "ringcentral-widgets-test": "**" } } diff --git a/packages/ringcentral-widgets-test/test/unit-test/Softphone.unit.spec.js b/packages/ringcentral-widgets-test/test/unit-test/Softphone.unit.spec.js index 75d0cc5595..8c29641b18 100644 --- a/packages/ringcentral-widgets-test/test/unit-test/Softphone.unit.spec.js +++ b/packages/ringcentral-widgets-test/test/unit-test/Softphone.unit.spec.js @@ -1,7 +1,8 @@ import moduleStatuses from '@ringcentral-integration/commons/enums/moduleStatuses'; -import Softphone from '@ringcentral-integration/commons/modules/Softphone'; +import { mockModuleGenerator } from '@ringcentral-integration/commons/test/lib/mockModule'; +import { Softphone } from '@ringcentral-integration/commons/modules/Softphone'; -describe.each` +describe.skip.each` brandCode | spartanProtocol | jupiterProtocol | jupiterUniversalLink ${'att'} | ${'attvr20://'} | ${'officeathand://'} | ${'https://app.officeathand.att.com/'} ${'bt'} | ${'rcbtmobile://'} | ${'com.bt.cloudwork.app://'} | ${'http://app.cloudwork.bt.com/'} @@ -10,11 +11,13 @@ describe.each` `( 'Softphone Unit Test', ({ brandCode, spartanProtocol, jupiterProtocol, jupiterUniversalLink }) => { - const softphone = new Softphone({ - brand: { - code: brandCode, - }, - }); + const softphone = mockModuleGenerator( + new Softphone({ + brand: { + code: brandCode, + }, + }), + ); describe(`[${brandCode}] spartan protocol`, () => { it(`should return ${spartanProtocol}`, () => { diff --git a/packages/ringcentral-widgets/components/ActionMenu/index.js b/packages/ringcentral-widgets/components/ActionMenu/index.js index 5325b85add..414f317320 100644 --- a/packages/ringcentral-widgets/components/ActionMenu/index.js +++ b/packages/ringcentral-widgets/components/ActionMenu/index.js @@ -41,6 +41,7 @@ export default class ActionMenu extends Component { withAnimation, selectedMatchContactType, showChooseEntityModal, + shouldHideEntityButton, } = this.props; return (

@@ -68,6 +69,7 @@ export default class ActionMenu extends Component { phoneNumber={phoneNumber} disableLinks={disableLinks} disableCallButton={disableCallButton} + shouldHideEntityButton={shouldHideEntityButton} disableClickToDial={disableClickToDial} addLogTitle={addLogTitle} editLogTitle={editLogTitle} @@ -132,6 +134,7 @@ ActionMenu.propTypes = { withAnimation: PropTypes.bool, selectedMatchContactType: PropTypes.string, showChooseEntityModal: PropTypes.bool, + shouldHideEntityButton: PropTypes.bool, }; ActionMenu.defaultProps = { extended: undefined, @@ -171,4 +174,5 @@ ActionMenu.defaultProps = { withAnimation: true, selectedMatchContactType: '', showChooseEntityModal: true, + shouldHideEntityButton: false, }; diff --git a/packages/ringcentral-widgets/components/ActionMenuList/index.js b/packages/ringcentral-widgets/components/ActionMenuList/index.js index faa578b235..baf33fc4c1 100644 --- a/packages/ringcentral-widgets/components/ActionMenuList/index.js +++ b/packages/ringcentral-widgets/components/ActionMenuList/index.js @@ -312,7 +312,7 @@ export default class ActionMenuList extends Component { this.onCloseDeleteModal(); }; - preventEventPropogation = (e) => { + preventEventPropagating = (e) => { if (e.target !== e.currentTarget) { e.stopPropagation(); } @@ -376,7 +376,9 @@ export default class ActionMenuList extends Component { disableClickToSms, selectedMatchContactType, showChooseEntityModal, + shouldHideEntityButton, } = this.props; + const { deleteModalVisible, disableDelete } = this.state; const logButton = onLog ? ( {clickToDialButton} {clickToSmsButton} @@ -601,6 +605,7 @@ ActionMenuList.propTypes = { onFaxDownload: PropTypes.func, selectedMatchContactType: PropTypes.string, showChooseEntityModal: PropTypes.bool, + shouldHideEntityButton: PropTypes.bool, }; ActionMenuList.defaultProps = { className: undefined, @@ -641,4 +646,5 @@ ActionMenuList.defaultProps = { onFaxDownload: undefined, selectedMatchContactType: '', showChooseEntityModal: true, + shouldHideEntityButton: false, }; diff --git a/packages/ringcentral-widgets/components/ActiveCallDialPad/styles.scss b/packages/ringcentral-widgets/components/ActiveCallDialPad/styles.scss index e537719d5e..01ecdf8bb3 100644 --- a/packages/ringcentral-widgets/components/ActiveCallDialPad/styles.scss +++ b/packages/ringcentral-widgets/components/ActiveCallDialPad/styles.scss @@ -27,7 +27,7 @@ $header-height: 40px; background-color: transparent; border: none; font-size:15px; - color: $lightblack; + color: $night; } .input::-ms-clear { display: none; diff --git a/packages/ringcentral-widgets/components/ActiveCallItemV2/styles.scss b/packages/ringcentral-widgets/components/ActiveCallItemV2/styles.scss index 8ab72fb6ce..8eddc89402 100644 --- a/packages/ringcentral-widgets/components/ActiveCallItemV2/styles.scss +++ b/packages/ringcentral-widgets/components/ActiveCallItemV2/styles.scss @@ -220,7 +220,7 @@ $ringout-button-size: 24px; // overwrite .contactDisplay, .contactDisplay * { - color: $lightblack !important; + color: $night !important; max-width: 100%; .selectIcon { diff --git a/packages/ringcentral-widgets/components/ActiveCallPanel/styles.scss b/packages/ringcentral-widgets/components/ActiveCallPanel/styles.scss index 336f9e4737..610202f03e 100644 --- a/packages/ringcentral-widgets/components/ActiveCallPanel/styles.scss +++ b/packages/ringcentral-widgets/components/ActiveCallPanel/styles.scss @@ -38,7 +38,7 @@ $pagePaddingWidth:48px; .userInfo { display: block; text-align: center; - color: $lightblack; + color: $night; padding-bottom: 15px; margin-left: auto; margin-right: auto; diff --git a/packages/ringcentral-widgets/components/CallItem/index.js b/packages/ringcentral-widgets/components/CallItem/index.js index 2fbcb67bbc..bd24536d0a 100644 --- a/packages/ringcentral-widgets/components/CallItem/index.js +++ b/packages/ringcentral-widgets/components/CallItem/index.js @@ -13,6 +13,7 @@ import classnames from 'classnames'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { checkShouldHidePhoneNumber } from '../../lib/checkShouldHidePhoneNumber'; +import { checkShouldHideContactUser } from '../../lib/checkShouldHideContactUser'; import dynamicsFont from '../../assets/DynamicsFont/DynamicsFont.scss'; import FaxInboundIcon from '../../assets/images/FaxInbound.svg'; import FaxOutboundIcon from '../../assets/images/FaxOutbound.svg'; @@ -392,6 +393,8 @@ export default class CallItem extends Component { const contactMatches = this.getContactMatches(); const shouldHideNumber = enableCDC && checkShouldHidePhoneNumber(phoneNumber, contactMatches); + const isContactMatchesHidden = + enableCDC && checkShouldHideContactUser(contactMatches); const fallbackContactName = this.getFallbackContactName(); const ringing = isRinging(this.props.call); const missed = isInbound(this.props.call) && isMissed(this.props.call); @@ -402,12 +405,10 @@ export default class CallItem extends Component { }); const isExtension = !parsedInfo.hasPlus && parsedInfo.number && parsedInfo.number.length <= 6; - const disableClickToSms = - shouldHideNumber || - !( - onClickToSms && - (isExtension ? internalSmsPermission : outboundSmsPermission) - ); + const disableClickToSms = !( + onClickToSms && + (isExtension ? internalSmsPermission : outboundSmsPermission) + ); let durationEl = null; if (typeof duration === 'undefined') { @@ -495,45 +496,44 @@ export default class CallItem extends Component {
{extraButton}
- {shouldHideNumber ? null : ( - this.clickToSms({ countryCode, areaCode }) - : undefined - } - phoneNumber={phoneNumber} - disableLinks={shouldHideNumber || disableLinks} - disableCallButton={disableCallButton} - disableClickToDial={disableClickToDial} - isLogging={isLogging || this.state.isLogging} - isLogged={activityMatches.length > 0} - isCreating={this.state.isCreating} - addLogTitle={i18n.getString('addLog', currentLocale)} - editLogTitle={i18n.getString('editLog', currentLocale)} - textTitle={i18n.getString('text', currentLocale)} - callTitle={i18n.getString('call', currentLocale)} - createEntityTitle={i18n.getString('addEntity', currentLocale)} - viewEntityTitle={i18n.getString('viewDetails', currentLocale)} - externalViewEntity={externalViewEntity && this.externalViewEntity} - externalHasEntity={ - externalHasEntity && externalHasEntity(this.props.call) - } - disableClickToSms={disableClickToSms} - withAnimation={withAnimation} - showChooseEntityModal={showChooseEntityModal} - /> - )} + this.clickToSms({ countryCode, areaCode }) + : undefined + } + phoneNumber={phoneNumber} + disableLinks={disableLinks} + shouldHideEntityButton={isContactMatchesHidden} + disableCallButton={disableCallButton} + disableClickToDial={disableClickToDial} + isLogging={isLogging || this.state.isLogging} + isLogged={activityMatches.length > 0} + isCreating={this.state.isCreating} + addLogTitle={i18n.getString('addLog', currentLocale)} + editLogTitle={i18n.getString('editLog', currentLocale)} + textTitle={i18n.getString('text', currentLocale)} + callTitle={i18n.getString('call', currentLocale)} + createEntityTitle={i18n.getString('addEntity', currentLocale)} + viewEntityTitle={i18n.getString('viewDetails', currentLocale)} + externalViewEntity={externalViewEntity && this.externalViewEntity} + externalHasEntity={ + externalHasEntity && externalHasEntity(this.props.call) + } + disableClickToSms={disableClickToSms} + withAnimation={withAnimation} + showChooseEntityModal={showChooseEntityModal} + /> ); } diff --git a/packages/ringcentral-widgets/components/CallLogCallCtrlComponent/CallLogDialpad/styles.scss b/packages/ringcentral-widgets/components/CallLogCallCtrlComponent/CallLogDialpad/styles.scss index 65254ed2b4..78a52583f4 100644 --- a/packages/ringcentral-widgets/components/CallLogCallCtrlComponent/CallLogDialpad/styles.scss +++ b/packages/ringcentral-widgets/components/CallLogCallCtrlComponent/CallLogDialpad/styles.scss @@ -71,7 +71,7 @@ $dialpad-height-classic: $input-height + $input-margin-bottom-classic + background-color: transparent; border: none; font-size: 15px; - color: $lightblack; + color: $night; } .input::-ms-clear { display: none; diff --git a/packages/ringcentral-widgets/components/CallsPanel/index.js b/packages/ringcentral-widgets/components/CallsPanel/index.js index 47dacabed5..36cf363ddd 100644 --- a/packages/ringcentral-widgets/components/CallsPanel/index.js +++ b/packages/ringcentral-widgets/components/CallsPanel/index.js @@ -99,6 +99,7 @@ export default class CallsPanel extends React.PureComponent { useNewList, currentSiteCode, isMultipleSiteEnabled, + enableCDC, } = this.props; const { contentWidth, contentHeight } = this.state; @@ -139,6 +140,7 @@ export default class CallsPanel extends React.PureComponent { width={contentWidth} height={contentHeight} useNewList={useNewList} + enableCDC={enableCDC} /> ) : ( { + preventEventPropagating = (e) => { if (e.target !== e.currentTarget) { e.stopPropagation(); } @@ -375,16 +375,17 @@ export default class MessageItem extends Component { } if (messageIsFax(conversation)) { const pageCount = parseInt(conversation.faxPageCount, 10); + const nameKey = pageCount === 1 ? 'page' : 'pages'; if (conversation.direction === messageDirection.inbound) { return `${i18n.getString( 'faxReceived', currentLocale, - )}(${pageCount} ${i18n.getString('pages', currentLocale)})`; + )}(${pageCount} ${i18n.getString(nameKey, currentLocale)})`; } return `${i18n.getString( 'faxSent', currentLocale, - )}(${pageCount} ${i18n.getString('pages', currentLocale)})`; + )}(${pageCount} ${i18n.getString(nameKey, currentLocale)})`; } return ''; } @@ -596,90 +597,82 @@ export default class MessageItem extends Component { {extraButton} - {shouldHideNumber && !player ? null : ( - +
-
- {player} -
- {shouldHideNumber ? null : ( - 0} - isCreating={this.state.isCreating} - addLogTitle={i18n.getString('addLog', currentLocale)} - editLogTitle={i18n.getString('editLog', currentLocale)} - callTitle={i18n.getString('call', currentLocale)} - textTitle={i18n.getString('text', currentLocale)} - createEntityTitle={i18n.getString('addEntity', currentLocale)} - viewEntityTitle={i18n.getString('viewDetails', currentLocale)} - stopPropagation={false} - onDelete={ - isVoicemail || isFax ? this.onDeleteMessage : undefined - } - deleteTitle={i18n.getString('delete', currentLocale)} - marked={unreadCounts > 0} - onMark={ - isVoicemail || - (isFax && direction === messageDirection.inbound) - ? this.onMarkMessage - : undefined - } - onUnmark={ - isVoicemail || - (isFax && direction === messageDirection.inbound) - ? this.onUnmarkMessage - : undefined - } - onPreview={isFax ? this.onPreviewFax : undefined} - markTitle={i18n.getString('mark', currentLocale)} - unmarkTitle={i18n.getString('unmark', currentLocale)} - faxAttachment={faxAttachment} - previewTitle={i18n.getString('preview', currentLocale)} - downloadTitle={i18n.getString('download', currentLocale)} - onFaxDownload={onFaxDownload} - showChooseEntityModal={showChooseEntityModal} - /> - )} - - )} + {player} +
+ 0} + isCreating={this.state.isCreating} + addLogTitle={i18n.getString('addLog', currentLocale)} + editLogTitle={i18n.getString('editLog', currentLocale)} + callTitle={i18n.getString('call', currentLocale)} + textTitle={i18n.getString('text', currentLocale)} + createEntityTitle={i18n.getString('addEntity', currentLocale)} + viewEntityTitle={i18n.getString('viewDetails', currentLocale)} + stopPropagation={false} + onDelete={isVoicemail || isFax ? this.onDeleteMessage : undefined} + deleteTitle={i18n.getString('delete', currentLocale)} + marked={unreadCounts > 0} + onMark={ + isVoicemail || (isFax && direction === messageDirection.inbound) + ? this.onMarkMessage + : undefined + } + onUnmark={ + isVoicemail || (isFax && direction === messageDirection.inbound) + ? this.onUnmarkMessage + : undefined + } + onPreview={isFax ? this.onPreviewFax : undefined} + markTitle={i18n.getString('mark', currentLocale)} + unmarkTitle={i18n.getString('unmark', currentLocale)} + faxAttachment={faxAttachment} + previewTitle={i18n.getString('preview', currentLocale)} + downloadTitle={i18n.getString('download', currentLocale)} + onFaxDownload={onFaxDownload} + showChooseEntityModal={showChooseEntityModal} + /> +
); } diff --git a/packages/ringcentral-widgets/components/Panel/styles.scss b/packages/ringcentral-widgets/components/Panel/styles.scss index 1baa7d181a..ba9a50f86d 100644 --- a/packages/ringcentral-widgets/components/Panel/styles.scss +++ b/packages/ringcentral-widgets/components/Panel/styles.scss @@ -3,7 +3,7 @@ .root { @include full-size; - background-color: $panel-background-color; + background-color: $snow; box-sizing: border-box; //padding-top: 14px; padding-bottom: 14px; diff --git a/packages/ringcentral-widgets/components/RecentActivityMessages/styles.scss b/packages/ringcentral-widgets/components/RecentActivityMessages/styles.scss index ee9d4620e0..843f988d07 100644 --- a/packages/ringcentral-widgets/components/RecentActivityMessages/styles.scss +++ b/packages/ringcentral-widgets/components/RecentActivityMessages/styles.scss @@ -28,7 +28,7 @@ float: left; width: 68%; margin-right: 2%; - color: $lightblack; + color: $night; text-align: left; @include text-ellipsis; } diff --git a/packages/ringcentral-widgets/components/SelectList/ListView/ListViewItem/ListViewItem.tsx b/packages/ringcentral-widgets/components/SelectList/ListView/ListViewItem/ListViewItem.tsx index 36e83a7150..115475e80b 100644 --- a/packages/ringcentral-widgets/components/SelectList/ListView/ListViewItem/ListViewItem.tsx +++ b/packages/ringcentral-widgets/components/SelectList/ListView/ListViewItem/ListViewItem.tsx @@ -82,10 +82,16 @@ export const ListViewItem: FunctionComponent = ({ selected={isSelected} > {startAdornment && startAdornment(type)} - {multiple && } + {multiple && ( + + )} diff --git a/packages/ringcentral-widgets/components/SlideMenu/index.js b/packages/ringcentral-widgets/components/SlideMenu/index.js index 6c1e5833f7..21f19596f4 100644 --- a/packages/ringcentral-widgets/components/SlideMenu/index.js +++ b/packages/ringcentral-widgets/components/SlideMenu/index.js @@ -1,33 +1,18 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; -import dynamicsFonts from '../../assets/DynamicsFont/DynamicsFont.scss'; import styles from './styles.scss'; -function ToggleButton({ onClick }) { - return ( -
-
-
- -
-
- ); -} -ToggleButton.propTypes = { - onClick: PropTypes.func, -}; -ToggleButton.defaultProps = { - onClick: undefined, -}; +const ExtendIcon = ({ onClick, extendIconClassName }) => ( +
+
+
+); -function ExtendIcon({ onClick, extendIconClassName }) { - return ( -
-
-
- ); -} +ExtendIcon.propTypes = { + onClick: PropTypes.func.isRequired, + extendIconClassName: PropTypes.string.isRequired, +}; export default class SlideMenu extends Component { constructor(props) { @@ -36,8 +21,9 @@ export default class SlideMenu extends Component { extended: false, }; } - componentWillReceiveProps(nextProps) { - if (nextProps.extended !== this.props.extended) { + UNSAFE_componentWillReceiveProps(nextProps) { + const { extended } = this.props; + if (nextProps.extended !== extended) { this.setState({ extended: nextProps.extended, }); @@ -49,13 +35,16 @@ export default class SlideMenu extends Component { componentWillUnmount() { this._mounted = false; } + onToggle = (e) => { e.stopPropagation(); this.setState((prevState) => ({ extended: !prevState.extended })); - if (this.props.onToggle) { - this.props.onToggle(e); + const { onToggle } = this.props; + if (onToggle) { + onToggle(e); } }; + render() { const { className, @@ -63,9 +52,13 @@ export default class SlideMenu extends Component { maxHeight, children, withAnimation, + extendIconClassName, + extended: propsExtended, } = this.props; - const extended = this.props.extended || this.state.extended; + const { extended: stateExtended } = this.state; + + const extended = propsExtended || stateExtended; const wrapperStyles = { height: extended ? maxHeight : minHeight, @@ -84,9 +77,7 @@ export default class SlideMenu extends Component {
diff --git a/packages/ringcentral-widgets/components/Spinner/styles.scss b/packages/ringcentral-widgets/components/Spinner/styles.scss index 7767e14a8e..f30b969707 100644 --- a/packages/ringcentral-widgets/components/Spinner/styles.scss +++ b/packages/ringcentral-widgets/components/Spinner/styles.scss @@ -28,7 +28,7 @@ box-sizing: border-box; width: 100%; height: 100%; - border-color: $secondary-color; + border-color: $rc-orange; border-style: solid; border-top-color: $primary-color; animation: spin 0.8s infinite ease-in-out; diff --git a/packages/ringcentral-widgets/components/TabContentPanel/styles.scss b/packages/ringcentral-widgets/components/TabContentPanel/styles.scss index d0bdd86d35..6990a69173 100644 --- a/packages/ringcentral-widgets/components/TabContentPanel/styles.scss +++ b/packages/ringcentral-widgets/components/TabContentPanel/styles.scss @@ -12,7 +12,7 @@ $tabBar-height: 35px; .content { @include full-size; box-sizing: border-box; - border-color: $border-color; + border-color: $gray; border-width: 0; border-bottom-width: 1px; border-style: solid; diff --git a/packages/ringcentral-widgets/components/TabNavigationButton/styles.scss b/packages/ringcentral-widgets/components/TabNavigationButton/styles.scss index e3e1e942b7..b3fac4430e 100644 --- a/packages/ringcentral-widgets/components/TabNavigationButton/styles.scss +++ b/packages/ringcentral-widgets/components/TabNavigationButton/styles.scss @@ -9,7 +9,7 @@ box-sizing: border-box; height: 100%; border-style: solid; - border-color: $border-color; + border-color: $gray; vertical-align: top; z-index: 10; } diff --git a/packages/ringcentral-widgets/components/TextInput/styles.scss b/packages/ringcentral-widgets/components/TextInput/styles.scss index 935fc449f2..d1746c51b4 100644 --- a/packages/ringcentral-widgets/components/TextInput/styles.scss +++ b/packages/ringcentral-widgets/components/TextInput/styles.scss @@ -18,7 +18,7 @@ padding: 0px 10px; box-sizing: border-box; @include field-value-font; - color: $lightblack; + color: $night; } .input::-ms-clear { display: none; diff --git a/packages/ringcentral-widgets/components/TransferPanel/styles.scss b/packages/ringcentral-widgets/components/TransferPanel/styles.scss index a8de886f5e..acae799aa9 100644 --- a/packages/ringcentral-widgets/components/TransferPanel/styles.scss +++ b/packages/ringcentral-widgets/components/TransferPanel/styles.scss @@ -56,10 +56,10 @@ $input-height: 43px; circle { opacity: 1; - stroke: $disabled-background-color; + stroke: $smoke; } path { - fill: $disabled-background-color; + fill: $smoke; } } diff --git a/packages/ringcentral-widgets/components/VideoPanel/VideoConfig.tsx b/packages/ringcentral-widgets/components/VideoPanel/VideoConfig.tsx index 7c0a58d43d..5799baad79 100644 --- a/packages/ringcentral-widgets/components/VideoPanel/VideoConfig.tsx +++ b/packages/ringcentral-widgets/components/VideoPanel/VideoConfig.tsx @@ -375,7 +375,7 @@ export const VideoConfig: React.FunctionComponent = ( > { @@ -466,7 +466,7 @@ export const VideoConfig: React.FunctionComponent = ( { e2eeInteractFunc(value); diff --git a/packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.interface.ts b/packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.interface.ts new file mode 100644 index 0000000000..03006cffe4 --- /dev/null +++ b/packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.interface.ts @@ -0,0 +1,7 @@ +import { CssModuleVariable } from '@ringcentral-integration/commons/modules/Brand/Brand.interface'; +import { RcThemeInput } from '@ringcentral/juno'; + +export type ThemeContainerProps = { + theme: RcThemeInput; + variable: CssModuleVariable; +}; diff --git a/packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.tsx b/packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.tsx new file mode 100644 index 0000000000..3a39d88bf5 --- /dev/null +++ b/packages/ringcentral-widgets/containers/ThemeContainer/ThemeContainer.tsx @@ -0,0 +1,82 @@ +import { + createGlobalStyle, + css, + RcThemedStyled, + RcThemeProvider, +} from '@ringcentral/juno'; +import React, { FunctionComponent } from 'react'; + +import { connectModule } from '../../lib/phoneContext'; +import { ThemeContainerProps } from './ThemeContainer.interface'; + +type GlobalVariablesStylesProps = Pick; + +const GlobalVariablesCss: RcThemedStyled = ({ + variable, +}) => { + return css` + :root { + --rc-blue: ${variable.rcBlue}; + --bigRed: ${variable.bigRed}; + --darkRed: ${variable.darkRed}; + --tomato: ${variable.tomato}; + --orange: ${variable.orange}; + --leaf: ${variable.leaf}; + --dark: ${variable.dark}; + --night: ${variable.night}; + --ash: ${variable.ash}; + --coin: ${variable.coin}; + --smoke: ${variable.smoke}; + --silver: ${variable.silver}; + --egg: ${variable.egg}; + --snow: ${variable.snow}; + --rc-orange: ${variable.rcOrange}; + --darkergray: ${variable.darkergray}; + --darkgray: ${variable.darkgray}; + --gray: ${variable.gray}; + --bggray: ${variable.bggray}; + --lightergray: ${variable.lightergray}; + --lightgray: ${variable.lightgray}; + --grey-light: ${variable.greyLight}; + --missed: ${variable.missed}; + --active: ${variable.active}; + --primary-color: ${variable.primaryColor}; + --primary-color-highlight: ${variable.primaryColorHighlight}; + --primary-color-highlight-solid: ${variable.primaryColorHighlightSolid}; + --line-panel-background-color: ${variable.linePanelBackgroundColor}; + --call-btn-color: ${variable.callBtnColor}; + --extension-background-color: ${variable.extensionBackgroundColor}; + --sms-bubble-background-color: ${variable.smsBubbleBackgroundColor}; + --brand-font-color: ${variable.brandFontColor}; + --brand-font-color-highlight: ${variable.brandFontColorHighlight}; + --jupiter-background-color: ${variable.jupiterBackgroundColor}; + ${'' /** project related overwrite */} + --c2d-arrow-color: ${variable.c2dArrowColor}; + --add-meeting-btn-color: ${variable.addMeetingBtnColor}; + --add-meeting-btn-text-color: ${variable.addMeetingBtnTextColor}; + --header-logo-width: ${variable.headerLogoWidth}; + --header-logo-height: ${variable.headerLogoHeight}; + } + `; +}; + +const GlobalVariablesStyles = createGlobalStyle< + GlobalVariablesStylesProps +>`${GlobalVariablesCss}`; + +const ThemeProvider: FunctionComponent = ({ + children, + theme, + variable, +}) => { + return ( + + + {children} + + ); +}; + +export const ThemeContainer = connectModule( + (phone) => phone.themeUI, +)(ThemeProvider); diff --git a/packages/ringcentral-widgets/containers/ThemeContainer/index.ts b/packages/ringcentral-widgets/containers/ThemeContainer/index.ts new file mode 100644 index 0000000000..30d9668f76 --- /dev/null +++ b/packages/ringcentral-widgets/containers/ThemeContainer/index.ts @@ -0,0 +1 @@ +export * from './ThemeContainer'; diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/de-DE.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/de-DE.js index f580f3733e..1c6008cfa7 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/de-DE.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/de-DE.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nEinmal tippen und mit dem Smartphone teilnehmen (nur Audio):\n {smartphones}\n\nOder wählen Sie:\n {dialNumber}\n Zugriffscode/Besprechungs-ID: {pinNumber} ", rcvTeleconference: "\n\nInternationale Nummern verfügbar: {teleconference} ", rcvSipHeader: "\n\nÜber SIP teilnehmen:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP-Kennwort: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP-Kennwort: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Ändern Sie diesen Text nicht =====", password: "\n\nKennwort", passwordPstn: "\n\nEinwahlkennwort:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-AU.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-AU.js index eabb1905ec..9436ee78bc 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-AU.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-AU.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code/Meeting ID: {pinNumber} ", rcvTeleconference: "\n\nInternational numbers available: {teleconference} ", rcvSipHeader: "\n\nJoin by SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Do not modify this text =====", password: "\n\nPassword", passwordPstn: "\n\nDial-in password:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-GB.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-GB.js index eabb1905ec..9436ee78bc 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-GB.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-GB.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code/Meeting ID: {pinNumber} ", rcvTeleconference: "\n\nInternational numbers available: {teleconference} ", rcvSipHeader: "\n\nJoin by SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Do not modify this text =====", password: "\n\nPassword", passwordPstn: "\n\nDial-in password:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-US.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-US.js index c600d94e4c..09437b9c65 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-US.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/en-US.js @@ -16,8 +16,8 @@ export default { '\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} ', rcvTeleconference: '\n\nInternational numbers available: {teleconference} ', rcvSipHeader: '\n\nJoin by SIP:', - rcvSipContentWithPwd: '\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n', - rcvSipContentNoPwd: '\n {meetingId}@rcv.com\n', + rcvSipContentWithPwd: '\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n', + rcvSipContentNoPwd: '\n {meetingId}@sip.rcv.com\n', doNotModify: '===== Do not modify this text =====', password: '\n\nPassword', passwordPstn: '\n\nDial-in password:', diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-419.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-419.js index a4d5651466..a08b29f84f 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-419.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-419.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nPulse una vez para unir el audio solo desde un smartphone:\n {smartphones}\n\nO marque:\n {dialNumber}\n Código de acceso/ID de la reunión: {pinNumber} ", rcvTeleconference: "\n\nNúmeros internacionales disponibles: {teleconference} ", rcvSipHeader: "\n\nÚnase con SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n contraseña de SIP: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n contraseña de SIP: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== No modifique este texto =====", password: "\n\nContraseña", passwordPstn: "\n\nContraseña de marcado:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-ES.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-ES.js index 0a04b34896..e6f0f352bf 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-ES.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/es-ES.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nUn toque para unirse al audio solo desde un smartphone:\n {smartphones}\n\nO marque:\n {dialNumber}\n Código de acceso/ID de reunión: {pinNumber} ", rcvTeleconference: "\n\nNúmeros internacionales disponibles: {teleconference} ", rcvSipHeader: "\n\nÚnase mediante SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n Contraseña de SIP: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n Contraseña de SIP: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== No modifique este texto =====", password: "\n\nContraseña", passwordPstn: "\n\nContraseña de marcación:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-CA.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-CA.js index 7750dbae8f..ddaa5344f0 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-CA.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-CA.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nParticiper à la réunion en un clic sur votre téléphone intelligent (son seulement) :\n {smartphones}\n\nOu composer le :\n {dialNumber}\n Code d’accès/code de réunion : {pinNumber} ", rcvTeleconference: "\n\nNuméros internationaux disponibles : {teleconference} ", rcvSipHeader: "\n\nParticiper à la réunion depuis un appareil SIP :", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n Mot de passe pour l’appareil SIP : {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n Mot de passe pour l’appareil SIP : {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Ne modifiez pas ce texto =====", password: "\n\nMot de passe", passwordPstn: "\n\nMot de passe à composer :", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-FR.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-FR.js index b9ee8d4cf4..24c051360c 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-FR.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/fr-FR.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nAppuyer une seule fois pour rejoindre l’audio uniquement à partir d’un smartphone :\n {smartphones}\n\nOu composer :\n {dialNumber}\n Code d’accès/ID de réunion : {pinNumber} ", rcvTeleconference: "\n\nNuméros internationaux disponibles : {teleconference} ", rcvSipHeader: "\n\nRejoindre par SIP :", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n Mot de passe SIP : {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n Mot de passe SIP : {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Ne pas modifier ce texte =====", password: "\n\nMot de passe", passwordPstn: "\n\nMot de passe à composer :", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/it-IT.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/it-IT.js index 4bd22ae555..ec0713de64 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/it-IT.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/it-IT.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nAccedi con un tocco da smartphone per partecipare solo in modalità audio:\n {smartphones}\n\nO componi:\n {dialNumber}\n Codice di accesso / ID riunione: {pinNumber} ", rcvTeleconference: "\n\nNumeri internazionali disponibili: {teleconference} ", rcvSipHeader: "\n\nPartecipa tramite SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n Password SIP: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n Password SIP: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Non modificare questo testo =====", password: "\n\nPassword", passwordPstn: "\n\nPassword di accesso:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ja-JP.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ja-JP.js index beb9943cf9..c5cf2c2c71 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ja-JP.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ja-JP.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\n1回のタップでスマートフォンから音声のみで参加できます。\n {smartphones}\n\nまたはダイヤルできます。\n {dialNumber}\n アクセスコード/会議ID:{pinNumber} ", rcvTeleconference: "\n\n利用可能な国際電話番号: {teleconference} ", rcvSipHeader: "\n\nSIPで参加できます。", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIPパスワード:{meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIPパスワード:{meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== このテキストを変更しないでください =====", password: "\n\nパスワード", passwordPstn: "\n\nダイヤルインパスワード:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ko-KR.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ko-KR.js index bed31f46fe..9ecd84d7fa 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ko-KR.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/ko-KR.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\n스마트폰에서 오디오로만 참가하려면 다음에서 한 번 탭하세요.\n {smartphones}\n\n또는 전화 걸기:\n {dialNumber}\n 액세스 코드 / 모임 ID: {pinNumber} ", rcvTeleconference: "\n\n사용 가능한 국제 번호: {teleconference} ", rcvSipHeader: "\n\nSIP로 참가:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP 비밀번호: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP 비밀번호: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== 이 텍스트를 수정하지 마세요. =====", password: "\n\n비밀번호", passwordPstn: "\n\n전화 접속 비밀번호:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/nl-NL.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/nl-NL.js index 168c4df634..545c7e1353 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/nl-NL.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/nl-NL.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nTik één keer om deel te nemen met alleen audio vanaf een smartphone:\n {smartphones}\n\nOf kies:\n {dialNumber}\n Toegangscode/meeting-ID: {pinNumber} ", rcvTeleconference: "\n\nInternationale nummers beschikbaar: {teleconference} ", rcvSipHeader: "\n\nDeelnemen middels SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP-wachtwoord: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP-wachtwoord: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Deze tekst niet wijzigen =====", password: "\n\nWachtwoord", passwordPstn: "\n\nInbelwachtwoord:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-BR.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-BR.js index 37497165b3..e35c170451 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-BR.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-BR.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nUm toque para entrar apenas com áudio por um smartphone:\n {smartphones}\n\nOu disque para:\n {dialNumber}\n Código de acesso/ID da reunião: {pinNumber} ", rcvTeleconference: "\n\nNúmeros internacionais disponíveis: {teleconference} ", rcvSipHeader: "\n\nEntrar por SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n Senha do SIP: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n Senha do SIP: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Não modifique este texto =====", password: "\n\nSenha", passwordPstn: "\n\nSenha de discagem:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-PT.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-PT.js index 7065bab125..fb4c201eaa 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-PT.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/pt-PT.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\nUm toque para entrar apenas com áudio a partir de um smartphone:\n {smartphones}\n\nOu marque:\n {dialNumber}\n Código de acesso/ID da reunião: {pinNumber} ", rcvTeleconference: "\n\nNúmeros internacionais disponíveis: {teleconference} ", rcvSipHeader: "\n\nEntre através de SIP:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n Palavra-passe SIP: {meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n Palavra-passe SIP: {meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== Não modificar este texto =====", password: "\n\nPalavra-passe", passwordPstn: "\n\nPalavra-passe de marcação:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-CN.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-CN.js index baa2cf5d27..4984b67444 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-CN.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-CN.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\n在智能手机上一键加入纯音频会议:\n {smartphones}\n\n或拨打:\n {dialNumber}\n 访问码/会议 ID:{pinNumber} ", rcvTeleconference: "\n\n可用的国际号码: {teleconference} ", rcvSipHeader: "\n\n通过会话启动协议加入:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n 会话启动协议密码:{meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n 会话启动协议密码:{meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== 请勿修改此文本 =====", password: "\n\n密码", passwordPstn: "\n\n拨入密码:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-HK.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-HK.js index c1561eb12c..727ad720b2 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-HK.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-HK.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\n點一下即可從智慧型手機加入僅限音訊的會議:\n {smartphones}\n\n或撥打:\n {dialNumber}\n 存取碼 / 會議 ID:{pinNumber} ", rcvTeleconference: "\n\n可用的國際號碼: {teleconference} ", rcvSipHeader: "\n\n以 SIP 加入:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP 密碼:{meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP 密碼:{meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== 不要修改此文字 =====", password: "\n\n密碼", passwordPstn: "\n\n撥入密碼:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-TW.js b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-TW.js index c1561eb12c..727ad720b2 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-TW.js +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/i18n/zh-TW.js @@ -9,8 +9,8 @@ export default { rcvInviteMeetingContentCountryDial: "\n\n點一下即可從智慧型手機加入僅限音訊的會議:\n {smartphones}\n\n或撥打:\n {dialNumber}\n 存取碼 / 會議 ID:{pinNumber} ", rcvTeleconference: "\n\n可用的國際號碼: {teleconference} ", rcvSipHeader: "\n\n以 SIP 加入:", - rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP 密碼:{meetingPasswordPSTN}", - rcvSipContentNoPwd: "\n {meetingId}@rcv.com", + rcvSipContentWithPwd: "\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP 密碼:{meetingPasswordPSTN}", + rcvSipContentNoPwd: "\n {meetingId}@sip.rcv.com", doNotModify: "===== 不要修改此文字 =====", password: "\n\n密碼", passwordPstn: "\n\n撥入密碼:", @@ -27,8 +27,8 @@ export default { // @key: @#@"rcvInviteMeetingContentCountryDial"@#@ @source: @#@"\n\nOne tap to join audio only from a smartphone:\n {smartphones}\n\nOr dial:\n {dialNumber}\n Access Code / Meeting ID: {pinNumber} "@#@ // @key: @#@"rcvTeleconference"@#@ @source: @#@"\n\nInternational numbers available: {teleconference} "@#@ // @key: @#@"rcvSipHeader"@#@ @source: @#@"\n\nJoin by SIP:"@#@ -// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ -// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@rcv.com\n"@#@ +// @key: @#@"rcvSipContentWithPwd"@#@ @source: @#@"\n {meetingId}.{meetingPasswordPSTN}@sip.rcv.com\n SIP password: {meetingPasswordPSTN}\n"@#@ +// @key: @#@"rcvSipContentNoPwd"@#@ @source: @#@"\n {meetingId}@sip.rcv.com\n"@#@ // @key: @#@"doNotModify"@#@ @source: @#@"===== Do not modify this text ====="@#@ // @key: @#@"password"@#@ @source: @#@"\n\nPassword"@#@ // @key: @#@"passwordPstn"@#@ @source: @#@"\n\nDial-in password:"@#@ diff --git a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/index.ts b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/index.ts index 101eece3b4..29fa560570 100644 --- a/packages/ringcentral-widgets/lib/MeetingCalendarHelper/index.ts +++ b/packages/ringcentral-widgets/lib/MeetingCalendarHelper/index.ts @@ -331,7 +331,6 @@ function getBaseRcvTpl( } const shortId = meeting.shortId; - const meetingId = meeting.id; const formattedMsg = formatMessage(meetingContent.join(''), { accountName, @@ -339,8 +338,8 @@ function getBaseRcvTpl( joinUri, passwordTpl, meetingPasswordPSTN, - meetingId, - pinNumber: formatMeetingId(meeting.shortId), + meetingId: shortId, + pinNumber: formatMeetingId(shortId), teleconference, productName, dialNumber: formatDialInNumber(dialInNumber), diff --git a/packages/ringcentral-widgets/lib/checkShouldHideContactUser.ts b/packages/ringcentral-widgets/lib/checkShouldHideContactUser.ts new file mode 100644 index 0000000000..46d37f8312 --- /dev/null +++ b/packages/ringcentral-widgets/lib/checkShouldHideContactUser.ts @@ -0,0 +1,14 @@ +import { filter } from 'ramda'; +import { Entity } from '@ringcentral-integration/commons/interfaces/Entity.interface'; + +export function checkShouldHideContactUser(contactMatches: Entity[]) { + if ( + !contactMatches || + !Array.isArray(contactMatches) || + contactMatches.length === 0 + ) { + return true; + } + const filteredMatches = filter((contact) => !contact.hidden, contactMatches); + return !filteredMatches.length; +} diff --git a/packages/ringcentral-widgets/lib/commonStyles/buttons.scss b/packages/ringcentral-widgets/lib/commonStyles/buttons.scss index 29df53ceb6..c575c32d80 100644 --- a/packages/ringcentral-widgets/lib/commonStyles/buttons.scss +++ b/packages/ringcentral-widgets/lib/commonStyles/buttons.scss @@ -14,6 +14,6 @@ @mixin big-submit-button-disabled { @include big-submit-button; background: #ffffff; - border: solid 1px $disabled-border-color; + border: solid 1px $silver; color: $grey-light!important; } diff --git a/packages/ringcentral-widgets/lib/commonStyles/colors-variable-overwrite.scss b/packages/ringcentral-widgets/lib/commonStyles/colors-variable-overwrite.scss new file mode 100644 index 0000000000..18513117b2 --- /dev/null +++ b/packages/ringcentral-widgets/lib/commonStyles/colors-variable-overwrite.scss @@ -0,0 +1,42 @@ +$rc-blue: var(--rc-blue); +$bigRed: var(--bigRed); +$darkRed: var(--darkRed); +$tomato: var(--tomato); +$orange: var(--orange); +$leaf: var(--leaf); +$dark: var(--dark); +$night: var(--night); +$ash: var(--ash); +$coin: var(--coin); +$smoke: var(--smoke); +$silver: var(--silver); +$egg: var(--egg); +$snow: var(--snow); +$rc-orange: var(--rc-orange); +$darkergray: var(--darkergray); +$darkgray: var(--darkgray); +$gray: var(--gray); +$bggray: var(--bggray); +$lightergray: var(--lightergray); +$lightgray: var(--lightgray); +$grey-light: var(--grey-light); +$missed: var(--missed); +$active: var(--active); +$primary-color: var(--primary-color); +$primary-color-highlight: var(--primary-color-highlight); +$primary-color-highlight-solid: var(--primary-color-highlight-solid); +$line-panel-background-color: var(--line-panel-background-color); +$call-btn-color: var(--call-btn-color); +$extension-background-color: var(--extension-background-color); +$sms-bubble-background-color: var(--sms-bubble-background-color); +$brand-font-color: var(--brand-font-color); +$brand-font-color-highlight: var(--brand-font-color-highlight); +$jupiter-background-color: var(--jupiter-background-color); + +// * should not new variables here anymore +// projects overwrite +$c2d-arrow-color: var(--c2d-arrow-color); +$add-meeting-btn-color: var(--add-meeting-btn-color); +$add-meeting-btn-text-color: var(--add-meeting-btn-text-color); +$header-logo-width: var(--header-logo-width); +$header-logo-height: var(--header-logo-height); diff --git a/packages/ringcentral-widgets/lib/commonStyles/colors.scss b/packages/ringcentral-widgets/lib/commonStyles/colors.scss index 6844df5972..6c7e729293 100644 --- a/packages/ringcentral-widgets/lib/commonStyles/colors.scss +++ b/packages/ringcentral-widgets/lib/commonStyles/colors.scss @@ -1,96 +1,40 @@ @import '~@ringcentral/juno/scss/theming'; -@import 'theme'; -$marine: #0570A1 !default; -$rc-blue: #066FAC !default; -$sea: #389DCA !default; -$water: #9BCEE5 !default; +// overwrite from webpack config +// ringcentral-js-widgets/ringcentral-widgets/lib/getBaseWebpackConfig/getBaseWebpackConfig.ts +@import 'theme'; +$rc-blue: #066fac !default; $bigRed: #dc0202 !default; $darkRed: #c90213 !default; -$rust: #D44E4E !default; -$tomato: #F95B5C !default; -$rouge: #FDCACA !default; - -$brass: #CC9922 !default; -$gold: #FFBF2A !default; -$sunny: #FFE5AA !default; - -$carmel: #D97400 !default; -$orange: #FF8800 !default; -$apricot: #FFCF99 !default; - -$envy: #4C944C !default; -$leaf: #5FB95C !default; -$mint: #BFE3BE !default; - +$tomato: #f95b5c !default; +$orange: #ff8800 !default; +$leaf: #5fb95c !default; $dark: #333 !default; -$night: #2F2F2F !default; +$night: #2f2f2f !default; $ash: #666666 !default; $coin: #999999 !default; -$smoke: #C7C7C7 !default; -$silver: #E2E2E2 !default; -$egg: #F9F9F9 !default; -$snow: #FFFFFF !default; - -$rc-blue-highlight: rgba(6, 132, 189, 0.4) !default; - -$rc-blue-highlight-solid: rgba(173, 210, 227, 1) !default; - +$smoke: #c7c7c7 !default; +$silver: #e2e2e2 !default; +$egg: #f9f9f9 !default; +$snow: #ffffff !default; $rc-orange: #e07800 !default; - $darkergray: #797979 !default; - -$darkgray: #808080 !default; //TODO: replace by darkergray? use in header buttom - +$darkgray: #808080 !default; $gray: #eeeeee !default; $bggray: #e0e0e0 !default; - $lightergray: #efefef !default; - $lightgray: #fcfcfc !default; - - $grey-light: #797979 !default; -$lightblack: $night !default; - -$missed: #D8232A !default; -$active: #23B23D !default; - - -//---- variable for theme ----// +$missed: #d8232a !default; +$active: #23b23d !default; $primary-color: $rc-blue !default; -$primary-color-highlight: $rc-blue-highlight !default; -$primary-color-highlight-solid: $rc-blue-highlight-solid !default; - -$secondary-color: $rc-orange !default; - -$primary-neutral-color: $lightblack !default; - -$secondary-neutral-color: $darkergray !default; - -$border-color: $gray !default; -$disabled-border-color: $silver !default; -$disabled-background-color: $smoke !default; - -$app-background-color: $lightgray !default; - -$line-background-color: $snow !default; - +$primary-color-highlight: rgba(6, 132, 189, 0.4) !default; +$primary-color-highlight-solid: rgba(173, 210, 227, 1) !default; $line-panel-background-color: #f6f6f6 !default; - -$panel-background-color: $snow !default; - -// $dialer-btn-border-color: #8cc6e1; -$dialer-btn-border-color: $primary-color-highlight !default; - -$call-btn-color: #5fb95c !default; -$call-btn-press-color: rgba(76,217,100,0.4) !default; - +$call-btn-color: #5fb95c !default; $extension-background-color: #66d17b !default; $sms-bubble-background-color: #d5f3fd !default; - $brand-font-color: $rc-blue !default; -$brand-font-color-highlight: $rc-blue-highlight !default; - -$jupiter-background-color: #F5F6FB; +$brand-font-color-highlight: rgba(6, 132, 189, 0.4) !default; +$jupiter-background-color: #f5f6fb !default; diff --git a/packages/ringcentral-widgets/lib/commonStyles/fonts.scss b/packages/ringcentral-widgets/lib/commonStyles/fonts.scss index a050ca8dd9..125aaf484c 100644 --- a/packages/ringcentral-widgets/lib/commonStyles/fonts.scss +++ b/packages/ringcentral-widgets/lib/commonStyles/fonts.scss @@ -8,30 +8,30 @@ $tertiary-font-size: 12px; @mixin primary-font { font-family: $font-family; font-size: $primary-font-size; - color: $primary-neutral-color; + color: $night; } @mixin second-primary-font { font-family: $font-family; font-size: $secondary-font-size; - color: $primary-neutral-color; + color: $night; } @mixin secondary-font { font-family: $font-family; font-size: $secondary-font-size; - color: $secondary-neutral-color; + color: $darkergray; } @mixin field-label-font { font-family: $font-family; font-size: $secondary-font-size; - color: $primary-neutral-color; + color: $night; font-weight: bold; } @mixin field-value-font { font-family: $font-family; font-size: $tertiary-font-size; - color: $secondary-neutral-color; + color: $darkergray; } diff --git a/packages/ringcentral-widgets/lib/commonStyles/index.ts b/packages/ringcentral-widgets/lib/commonStyles/index.ts new file mode 100644 index 0000000000..15c73a4500 --- /dev/null +++ b/packages/ringcentral-widgets/lib/commonStyles/index.ts @@ -0,0 +1 @@ +export * from './styles'; diff --git a/packages/ringcentral-widgets/lib/commonStyles/styles/full-size.ts b/packages/ringcentral-widgets/lib/commonStyles/styles/full-size.ts new file mode 100644 index 0000000000..f0b035d597 --- /dev/null +++ b/packages/ringcentral-widgets/lib/commonStyles/styles/full-size.ts @@ -0,0 +1,8 @@ +import { css } from '@ringcentral/juno'; + +export const fullSizeStyle = css` + position: relative; + width: 100%; + height: 100%; + overflow: hidden; +`; diff --git a/packages/ringcentral-widgets/lib/commonStyles/styles/index.ts b/packages/ringcentral-widgets/lib/commonStyles/styles/index.ts new file mode 100644 index 0000000000..6bdb713840 --- /dev/null +++ b/packages/ringcentral-widgets/lib/commonStyles/styles/index.ts @@ -0,0 +1,3 @@ +export * from './full-size'; +export * from './no-select'; +export * from './reset'; diff --git a/packages/ringcentral-widgets/lib/commonStyles/styles/no-select.ts b/packages/ringcentral-widgets/lib/commonStyles/styles/no-select.ts new file mode 100644 index 0000000000..14f94e7c60 --- /dev/null +++ b/packages/ringcentral-widgets/lib/commonStyles/styles/no-select.ts @@ -0,0 +1,6 @@ +import { css } from '@ringcentral/juno'; + +export const noSelectStyle = css` + user-select: none; + user-drag: none; +`; diff --git a/packages/ringcentral-widgets/lib/commonStyles/styles/reset.ts b/packages/ringcentral-widgets/lib/commonStyles/styles/reset.ts new file mode 100644 index 0000000000..c18edb50bf --- /dev/null +++ b/packages/ringcentral-widgets/lib/commonStyles/styles/reset.ts @@ -0,0 +1,9 @@ +import { css } from '@ringcentral/juno'; + +export const resetStyle = css` + margin: 0; + padding: 0; + border: 0; + font: inherit; + line-height: 1; +`; diff --git a/packages/ringcentral-widgets/modules/CallHistoryUI/CallHistoryUI.ts b/packages/ringcentral-widgets/modules/CallHistoryUI/CallHistoryUI.ts index 2e36af218f..5b5d3c8108 100644 --- a/packages/ringcentral-widgets/modules/CallHistoryUI/CallHistoryUI.ts +++ b/packages/ringcentral-widgets/modules/CallHistoryUI/CallHistoryUI.ts @@ -96,6 +96,7 @@ export class CallHistoryUI extends RcUIModuleV2 { ), autoLog: !!(callLogger && callLogger.autoLog), useNewList, + enableCDC: appFeatures.isCDCEnabled, }; } diff --git a/packages/ringcentral-widgets/modules/CallLogSectionV2/CallLogSection.ts b/packages/ringcentral-widgets/modules/CallLogSectionV2/CallLogSection.ts index c90c611dfa..9eab8d8750 100644 --- a/packages/ringcentral-widgets/modules/CallLogSectionV2/CallLogSection.ts +++ b/packages/ringcentral-widgets/modules/CallLogSectionV2/CallLogSection.ts @@ -257,7 +257,7 @@ export class CallLogSection extends RcModuleV2 { if (!result) { throw new Error('Result is empty'); } - await this._handleSuccess(identify, ...args); + this._handleSuccess(identify, { ...args, result }); return result; } catch (e) { await this._handleError(identify, ...args); @@ -348,14 +348,14 @@ export class CallLogSection extends RcModuleV2 { @proxify async viewTask(call: Call) { - await this._deps.callLogTasks.fetchAndUpdateTask(call); this.showLogSection(call.sessionId); + await this._deps.callLogTasks.fetchAndUpdateTask(call); } @proxify async onNewCall(call: Call) { - await this._deps.callLogTasks.fetchAndUpdateTask(call); this.handleLogSection(call.sessionId); + await this._deps.callLogTasks.fetchAndUpdateTask(call); } @computed((that: CallLogSection) => [ diff --git a/packages/ringcentral-widgets/modules/CallLogSectionV2/i18n/en-US.ts b/packages/ringcentral-widgets/modules/CallLogSectionV2/i18n/en-US.ts index 0e507a4da1..17f53afd33 100644 --- a/packages/ringcentral-widgets/modules/CallLogSectionV2/i18n/en-US.ts +++ b/packages/ringcentral-widgets/modules/CallLogSectionV2/i18n/en-US.ts @@ -2,4 +2,5 @@ export default { unknown: 'Unknown', multipleMatches: 'Multiple matches', anonymous: 'Anonymous', + none: 'None', }; diff --git a/packages/ringcentral-widgets/modules/CallsListUI/CallsListUI.ts b/packages/ringcentral-widgets/modules/CallsListUI/CallsListUI.ts index 744c16fedb..82217c0c1f 100644 --- a/packages/ringcentral-widgets/modules/CallsListUI/CallsListUI.ts +++ b/packages/ringcentral-widgets/modules/CallsListUI/CallsListUI.ts @@ -32,7 +32,6 @@ export const FILTER_THRESHOLD: number = 500; 'ContactMatcher', 'ContactSearch', 'RouterInteraction', - 'ContactDetailsUI', 'AppFeatures', { dep: 'DialerUI', optional: true }, { dep: 'DialerUI', optional: true }, @@ -40,10 +39,11 @@ export const FILTER_THRESHOLD: number = 500; { dep: 'Webphone', optional: true }, { dep: 'ComposeText', optional: true }, { dep: 'CallsListUIOptions', optional: true }, + { dep: 'ContactDetailsUI', optional: true }, ], }) -export class CallsListUI extends RcUIModuleV2 { - constructor(deps: Deps) { +export class CallsListUI extends RcUIModuleV2 { + constructor(deps: T) { super({ deps }); } diff --git a/packages/ringcentral-widgets/modules/ContactDetailsUI/ContactDetailsUI.ts b/packages/ringcentral-widgets/modules/ContactDetailsUI/ContactDetailsUI.ts index b327754de3..567023a29c 100644 --- a/packages/ringcentral-widgets/modules/ContactDetailsUI/ContactDetailsUI.ts +++ b/packages/ringcentral-widgets/modules/ContactDetailsUI/ContactDetailsUI.ts @@ -86,6 +86,13 @@ export class ContactDetailsUI extends RcUIModuleV2 { sourceName: contactType, contactId, }); + + // hide hidden phone numbers when cdc is enabled + if (this._deps.appFeatures.isCDCEnabled && contact.phoneNumbers.length) { + contact.phoneNumbers = contact.phoneNumbers.filter( + (phone) => !phone.hidden, + ); + } // ignore result when it is reset during loading if (this.currentContactReadyState !== contactReadyStates.loading) { return; diff --git a/packages/ringcentral-widgets/modules/GenericMeetingUI/index.ts b/packages/ringcentral-widgets/modules/GenericMeetingUI/index.ts index 2de0a6e117..19cacadc36 100644 --- a/packages/ringcentral-widgets/modules/GenericMeetingUI/index.ts +++ b/packages/ringcentral-widgets/modules/GenericMeetingUI/index.ts @@ -122,8 +122,7 @@ export default class GenericMeetingUI extends RcUIModule { Object.keys( DISABLE_E2EE_WHEN_RELATED_OPTION_MATCH, ) as DisableE2eeWhenRelatedOptionMatch[], - ) || - configDisabled); + )); const authUserTypeValue = isOnlyCoworkersJoin ? AUTH_USER_TYPE.SIGNED_IN_CO_WORKERS @@ -186,8 +185,7 @@ export default class GenericMeetingUI extends RcUIModule { defaultTopic: this._genericMeeting.ready ? this._genericMeeting.defaultTopic : '', - isPersonalMeetingDisabled: - (showE2EE && (meeting as RcVMeetingModel).e2ee) || configDisabled, + isPersonalMeetingDisabled: showE2EE && (meeting as RcVMeetingModel).e2ee, /* RCV JBH */ joinBeforeHostLabel: isDelegator ? JBH_LABEL.JOIN_AFTER_HOST diff --git a/packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.interface.ts b/packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.interface.ts new file mode 100644 index 0000000000..f4ad6e524a --- /dev/null +++ b/packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.interface.ts @@ -0,0 +1,6 @@ +import { Theme } from '@ringcentral-integration/commons/modules/Theme'; + +export interface ThemeUIOptions {} +export interface Deps { + theme: Theme; +} diff --git a/packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.ts b/packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.ts new file mode 100644 index 0000000000..c2a30a12c5 --- /dev/null +++ b/packages/ringcentral-widgets/modules/ThemeUI/ThemeUI.ts @@ -0,0 +1,38 @@ +import { Module } from '@ringcentral-integration/commons/lib/di'; +import { proxify } from '@ringcentral-integration/commons/lib/proxy/proxify'; +import { CssModuleVariable } from '@ringcentral-integration/commons/modules/Brand/Brand.interface'; +import { + RcUIModuleV2, + UIFunctions, + UIProps, +} from '@ringcentral-integration/core'; +import { RcThemeInput } from '@ringcentral/juno'; + +import { ThemeContainerProps } from '../../containers/ThemeContainer/ThemeContainer.interface'; +import { Deps } from './ThemeUI.interface'; + +@Module({ + name: 'ThemeUI', + deps: ['Theme'], +}) +export class ThemeUI extends RcUIModuleV2 { + constructor(deps: Deps) { + super({ deps }); + } + + @proxify + async setThemeType(type: string) { + this._deps.theme.setThemeType(type); + } + + getUIProps({ theme }: ThemeContainerProps): UIProps { + return { + theme: this._deps.theme.theme ?? theme, + variable: this._deps.theme.variable, + }; + } + + getUIFunctions(): UIFunctions { + return {}; + } +} diff --git a/packages/ringcentral-widgets/modules/ThemeUI/index.ts b/packages/ringcentral-widgets/modules/ThemeUI/index.ts new file mode 100644 index 0000000000..12e674c56c --- /dev/null +++ b/packages/ringcentral-widgets/modules/ThemeUI/index.ts @@ -0,0 +1 @@ +export * from './ThemeUI'; diff --git a/packages/ringcentral-widgets/modules/VideoUI/index.ts b/packages/ringcentral-widgets/modules/VideoUI/index.ts index 16b7af658b..60bd1ac1e7 100644 --- a/packages/ringcentral-widgets/modules/VideoUI/index.ts +++ b/packages/ringcentral-widgets/modules/VideoUI/index.ts @@ -104,8 +104,7 @@ export default class VideoUI extends RcUIModule { Object.keys( DISABLE_E2EE_WHEN_RELATED_OPTION_MATCH, ) as DisableE2eeWhenRelatedOptionMatch[], - ) || - configDisabled); + )); const authUserTypeValue = isOnlyCoworkersJoin ? AUTH_USER_TYPE.SIGNED_IN_CO_WORKERS @@ -132,12 +131,12 @@ export default class VideoUI extends RcUIModule { this._rcVideo.isInitializing || this._rcVideo.isScheduling, brandName: this._brand.name, configDisabled, - disabled: isAllOptionDisabledp, + disabled: isAllOptionDisabled, hasSettingsChanged: this._rcVideo.hasSettingsChanged, joinBeforeHostLabel: isDelegator ? JBH_LABEL.JOIN_AFTER_HOST : JBH_LABEL.JOIN_AFTER_ME, - isPersonalMeetingDisabled: (showE2EE && meeting.e2ee) || configDisabled, + isPersonalMeetingDisabled: showE2EE && meeting.e2ee, isRequirePasswordDisabled: isE2eeRelatedOptionsDisabled || configDisabled || diff --git a/packages/ringcentral-widgets/package.json b/packages/ringcentral-widgets/package.json index fa5edc3004..df668a5ad9 100644 --- a/packages/ringcentral-widgets/package.json +++ b/packages/ringcentral-widgets/package.json @@ -109,6 +109,6 @@ "ringcentral-client": "^1.0.0-beta.2" }, "ci": { - "ringcentral-js-widgets": "**" + "ringcentral-widgets-test": "**" } } diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index a1de28b20f..3c49122580 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -21,7 +21,7 @@ yarn jest Run the following command to start `jest.retryTimes(3)` by default on CI: ```sh -cross-env NODE_ENV=ci yarn jest +NODE_ENV=ci yarn jest ``` ## Run test with CLI diff --git a/packages/test-utils/scripts/babel-crius.js b/packages/test-utils/scripts/babel-crius.js index 3e6dad74d5..5e50263ae4 100644 --- a/packages/test-utils/scripts/babel-crius.js +++ b/packages/test-utils/scripts/babel-crius.js @@ -1,7 +1,4 @@ module.exports = require('babel-jest').default.createTransformer({ - presets: [['@babel/preset-env'], ['babel-preset-crius']], - plugins: [['@babel/plugin-proposal-decorators', { legacy: true }]], ignore: [/node_modules/], rootMode: 'upward', - test: './test', }); diff --git a/yarn.lock b/yarn.lock index a3778dc18c..f7b5206988 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,12 +35,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.11.4", "@babel/generator@^7.14.5", "@babel/generator@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" - integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== +"@babel/generator@^7.11.4", "@babel/generator@^7.12.11", "@babel/generator@^7.14.5", "@babel/generator@^7.15.4", "@babel/generator@^7.7.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" + integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" jsesc "^2.5.1" source-map "^0.5.0" @@ -123,28 +123,28 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.14.2", "@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== +"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.14.2", "@babel/helper-function-name@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" + integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-get-function-arity" "^7.15.4" + "@babel/template" "^7.15.4" + "@babel/types" "^7.15.4" -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== +"@babel/helper-get-function-arity@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" + integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" -"@babel/helper-hoist-variables@^7.10.4", "@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== +"@babel/helper-hoist-variables@^7.10.4", "@babel/helper-hoist-variables@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" + integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" "@babel/helper-member-expression-to-functions@^7.13.12", "@babel/helper-member-expression-to-functions@^7.14.5": version "7.14.5" @@ -226,17 +226,17 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.12.13", "@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.12.13", "@babel/helper-split-export-declaration@^7.14.5", "@babel/helper-split-export-declaration@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" + integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17", "@babel/helper-validator-option@^7.14.5": version "7.14.5" @@ -285,10 +285,10 @@ resolve "^1.13.1" v8flags "^3.1.1" -"@babel/parser@^7.1.0", "@babel/parser@^7.11.4", "@babel/parser@^7.14.5", "@babel/parser@^7.7.0", "@babel/parser@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.5.tgz#4cd2f346261061b2518873ffecdf1612cb032829" - integrity sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg== +"@babel/parser@^7.1.0", "@babel/parser@^7.11.4", "@babel/parser@^7.14.5", "@babel/parser@^7.15.4", "@babel/parser@^7.7.0", "@babel/parser@^7.7.2": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.6.tgz#043b9aa3c303c0722e5377fef9197f4cf1796549" + integrity sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q== "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.1" @@ -971,43 +971,43 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" - integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" + integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.14.5", "@babel/template@^7.3.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== +"@babel/template@^7.10.4", "@babel/template@^7.14.5", "@babel/template@^7.15.4", "@babel/template@^7.3.3": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" + integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.14.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.5.tgz#c111b0f58afab4fea3d3385a406f692748c59870" - integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.10.4", "@babel/traverse@^7.14.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" + integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-hoist-variables" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.14.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.14.5", "@babel/types@^7.15.4", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" + integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -2784,15 +2784,12 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -ast-types@0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" - integrity sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ== - -ast-types@0.x.x: - version "0.13.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" - integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== +ast-types@0.x.x, ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" astral-regex@^1.0.0: version "1.0.0" @@ -2841,7 +2838,7 @@ async@1.x: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.4, async@^2.5.0, async@^2.6.2: +async@^2.5.0, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -3170,7 +3167,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@6.x, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.6.1, babel-runtime@^6.9.2: +babel-runtime@6.x, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.6.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -3227,11 +3224,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -babylon@~5.8.3: - version "5.8.38" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd" - integrity sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0= - bach@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" @@ -3633,6 +3625,24 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +c8@^7.6.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.9.0.tgz#e63b9a22c8b4adbf6a8c8cb6194ee086b3e13c24" + integrity sha512-aQ7dC8gASnKdBwHUuYuzsdKCEDrKnWr7ZuZUnf4CNAL81oyKloKrs7H7zYvcrmCtIrMToudBSUhq2q+LLBMvgg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.2" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.0.2" + rimraf "^3.0.0" + test-exclude "^6.0.0" + v8-to-istanbul "^8.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.7" + cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -4152,7 +4162,7 @@ commander@2.11.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@^2.19.0, commander@^2.20.0, commander@^2.9.0, commander@~2.20.3: +commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4397,7 +4407,7 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.6.11: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.11: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== @@ -4548,7 +4558,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5355,11 +5365,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - ejs@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" @@ -5864,7 +5869,7 @@ esprima@3.x.x: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -5898,6 +5903,15 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-to-babel@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" + integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== + dependencies: + "@babel/traverse" "^7.1.6" + "@babel/types" "^7.2.0" + c8 "^7.6.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -6371,6 +6385,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + findup-sync@3.0.0, findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -6451,6 +6473,14 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -9382,6 +9412,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -10604,6 +10641,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -11159,7 +11203,7 @@ pretty-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -private@^0.1.8, private@~0.1.5: +private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -11592,18 +11636,21 @@ react-component-managers@^3.1.0: prop-types "^15.6.1" spy-on-component "^1.1.0" -react-docgen@^2.20.1: - version "2.21.0" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-2.21.0.tgz#e8f9caf50e15510096616850771f243fadbb9d7d" - integrity sha512-8xNPTrmvHLGNfqlsCYPdXmSkagP1njI5unP3t8WrjTJ4/5hHuP5nb3XH69CnF67HPV5zTkPoafcRBDGSQO6S6A== +react-docgen@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.0.tgz#2cd7236720ec2769252ef0421f23250b39a153a1" + integrity sha512-JBjVQ9cahmNlfjMGxWUxJg919xBBKAoy3hgDgKERbR+BcF4ANpDuzWAScC7j27hZfd8sJNmMPOLWo9+vB/XJEQ== dependencies: - async "^2.1.4" - babel-runtime "^6.9.2" - babylon "~5.8.3" - commander "^2.9.0" - doctrine "^2.0.0" + "@babel/core" "^7.7.5" + "@babel/generator" "^7.12.11" + "@babel/runtime" "^7.7.6" + ast-types "^0.14.2" + commander "^2.19.0" + doctrine "^3.0.0" + estree-to-babel "^3.1.0" + neo-async "^2.6.1" node-dir "^0.1.10" - recast "^0.12.6" + strip-indent "^3.0.0" react-dom@^17.0.2: version "17.0.2" @@ -11940,17 +11987,6 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" -recast@^0.12.6: - version "0.12.9" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" - integrity sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A== - dependencies: - ast-types "0.10.1" - core-js "^2.4.1" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -13824,10 +13860,10 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== tsutils@^3.17.1: version "3.17.1" @@ -14287,6 +14323,15 @@ v8-to-istanbul@^7.0.0: convert-source-map "^1.6.0" source-map "^0.7.3" +v8-to-istanbul@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" + integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + v8flags@^3.0.1, v8flags@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" @@ -14919,10 +14964,10 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== +yargs-parser@^20.2.2, yargs-parser@^20.2.7: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs@13.2.4: version "13.2.4" @@ -14957,7 +15002,7 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^16.0.3: +yargs@^16.0.3, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==