diff --git a/package.json b/package.json
index 6e868ca..619d582 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"@emotion/styled": "^11.14.1",
"@mui/icons-material": "^9.0.0",
"@mui/material": "^9.0.0",
+ "@mui/x-date-pickers": "^9.0.2",
"@react-pdf/renderer": "^3.1.11",
"@sentry/react": "^8.32.0",
"@sentry/webpack-plugin": "^2.22.4",
@@ -43,6 +44,7 @@
"file-saver": "^2.0.2",
"final-form": "^4.20.7",
"font-awesome": "^4.7.0",
+ "formik": "^2.4.9",
"history": "^4.7.2",
"html-webpack-plugin": "^5.5.0",
"i18n-react": "^0.6.4",
@@ -58,7 +60,7 @@
"mini-css-extract-plugin": "^2.6.0",
"moment": "^2.22.2",
"moment-timezone": "^0.5.21",
- "openstack-uicore-foundation": "4.2.27",
+ "openstack-uicore-foundation": "5.0.9",
"path-browserify": "^1.0.1",
"process": "^0.11.10",
"prop-types": "^15.7.2",
diff --git a/src/app.js b/src/app.js
index efd66a2..a200874 100644
--- a/src/app.js
+++ b/src/app.js
@@ -23,7 +23,7 @@ import LogInCallbackRoute from './routes/login-callback-route'
import DefaultRoute from "./routes/default-route";
import SummitLayout from './layouts/summit-layout';
import LandingLayout from './layouts/landing-layout';
-import {AjaxLoader} from "openstack-uicore-foundation/lib/components";
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
import {resetLoading} from "openstack-uicore-foundation/lib/utils/actions";
import {doLogout, onUserAuth, getUserInfo} from 'openstack-uicore-foundation/lib/security/actions';
import {initLogOut, doLoginBasicLogin, getIdToken} from 'openstack-uicore-foundation/lib/security/methods';
@@ -41,8 +41,7 @@ import URI from "urijs";
import { putOnLocalStorage }
from "openstack-uicore-foundation/lib/utils/methods";
import {BACK_URL} from "./utils/constants";
-import * as Sentry from "@sentry/react";
-import {SentryFallbackFunction} from './components/SentryErrorComponent';
+import SentryErrorBoundary from "./components/SentryErrorBoundary";
// here is set by default user lang as en
let language = localStorage.getItem("PREFERRED_LANGUAGE");
@@ -144,29 +143,8 @@ const App = ({isLoggedUser, onUserAuth, doLogout, getUserInfo, loading, ...props
profile_pic = jwt.payload.picture;
}
- if (window.SENTRY_DSN && window.SENTRY_DSN !== "" && sentryInitialized === false) {
- console.log("app init sentry ...")
- // Initialize Sentry
- Sentry.init({
- dsn: window.SENTRY_DSN,
- integrations: [
- Sentry.browserTracingIntegration(),
- Sentry.replayIntegration(),
- ],
- // Set tracesSampleRate to 1.0 to capture 100%
- // of transactions for performance monitoring.
- tracesSampleRate: window.SENTRY_TRACE_SAMPLE_RATE,
- // Set 'tracePropagationTargets' to control for which URLs distributed tracing should be enabled
- tracePropagationTargets: ["localhost"],
- // Session Replay
- replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.
- replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.
- });
- setSentryInitialized(true);
- }
-
return (
-
+
@@ -209,7 +187,7 @@ const App = ({isLoggedUser, onUserAuth, doLogout, getUserInfo, loading, ...props
-
+
);
}
diff --git a/src/components/SentryErrorBoundary.js b/src/components/SentryErrorBoundary.js
new file mode 100644
index 0000000..60d7f59
--- /dev/null
+++ b/src/components/SentryErrorBoundary.js
@@ -0,0 +1,37 @@
+import React, { Component } from "react";
+import { SentryFallbackFunction } from "./SentryErrorComponent";
+
+class SentryErrorBoundary extends Component {
+ constructor(props) {
+ super(props);
+ this.state = { ErrorBoundary: null };
+ }
+
+ componentDidMount() {
+ if (window.SENTRY_DSN && window.SENTRY_DSN !== "") {
+ import("../sentry-init").then(({ initSentry }) => {
+ const Sentry = initSentry();
+ this.setState({ ErrorBoundary: Sentry.ErrorBoundary });
+ });
+ }
+ }
+
+ render() {
+ const { ErrorBoundary } = this.state;
+ const { children, componentName } = this.props;
+
+ if (ErrorBoundary) {
+ return (
+
+ {children}
+
+ );
+ }
+
+ return children;
+ }
+}
+
+export default SentryErrorBoundary;
\ No newline at end of file
diff --git a/src/components/affiliationstable/AffiliationsTable.js b/src/components/affiliationstable/AffiliationsTable.js
index f30454e..d5a6153 100644
--- a/src/components/affiliationstable/AffiliationsTable.js
+++ b/src/components/affiliationstable/AffiliationsTable.js
@@ -1,7 +1,8 @@
import React from 'react';
import { connect } from 'react-redux';
import AffiliationsActionsTableCell from './AffiliationsActionsTableCell';
-import { OrganizationInput, DateTimePicker } from 'openstack-uicore-foundation/lib/components'
+import DateTimePicker from 'openstack-uicore-foundation/lib/components/inputs/datetimepicker';
+import OrganizationInput from 'openstack-uicore-foundation/lib/components/inputs/organization-input';
import { epochToMoment, formatEpoch } from 'openstack-uicore-foundation/lib//utils/methods'
import { addAffiliation, saveAffiliation, deleteAffiliation } from "../../actions/member-actions"
import T from "i18n-react/dist/i18n-react";
diff --git a/src/components/clock.js b/src/components/clock.js
index 48ab5bb..4fe6251 100644
--- a/src/components/clock.js
+++ b/src/components/clock.js
@@ -12,7 +12,7 @@
**/
import React from 'react';
-import { Clock } from "openstack-uicore-foundation/lib/components";
+import Clock from "openstack-uicore-foundation/lib/components/clock";
import { updateClock } from '../actions/clock-actions';
import { connect } from 'react-redux';
diff --git a/src/components/inputs/questions-input.js b/src/components/inputs/questions-input.js
index 2e334d0..6222516 100644
--- a/src/components/inputs/questions-input.js
+++ b/src/components/inputs/questions-input.js
@@ -13,7 +13,11 @@
import React from 'react';
import 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'
-import {Input, Dropdown, RadioList, CheckboxList, RawHTML} from 'openstack-uicore-foundation/lib/components'
+import Input from 'openstack-uicore-foundation/lib/components/inputs/text-input';
+import Dropdown from 'openstack-uicore-foundation/lib/components/inputs/dropdown';
+import RadioList from 'openstack-uicore-foundation/lib/components/inputs/radio-list';
+import CheckboxList from 'openstack-uicore-foundation/lib/components/inputs/checkbox-list';
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html';
import {EXTRA_QUESTION_MAX_LENGTH} from "../../utils/constants";
export default class QuestionsInput extends React.Component {
diff --git a/src/components/presentation-review-form.js b/src/components/presentation-review-form.js
index 213f0f9..f8c3d15 100644
--- a/src/components/presentation-review-form.js
+++ b/src/components/presentation-review-form.js
@@ -14,7 +14,7 @@
import React from 'react'
import 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'
import SubmitButtons from "./presentation-submit-buttons";
-import { RawHTML } from 'openstack-uicore-foundation/lib/components'
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html'
import T from "i18n-react/dist/i18n-react";
import {getMarketingValue} from "./marketing-setting";
diff --git a/src/components/presentation-speakers-form.js b/src/components/presentation-speakers-form.js
index cbbacec..ec6507a 100644
--- a/src/components/presentation-speakers-form.js
+++ b/src/components/presentation-speakers-form.js
@@ -14,7 +14,8 @@
import React from 'react'
import 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'
import SubmitButtons from "./presentation-submit-buttons";
-import { Exclusive, Dropdown } from 'openstack-uicore-foundation/lib/components'
+import Exclusive from 'openstack-uicore-foundation/lib/components/exclusive-wrapper';
+import Dropdown from 'openstack-uicore-foundation/lib/components/inputs/dropdown';
import T from "i18n-react/dist/i18n-react";
import CPFSpeakerInput from './inputs/speaker-input'
import Swal from "sweetalert2";
diff --git a/src/components/presentation-summary-form.js b/src/components/presentation-summary-form.js
index b01193d..3b5a40d 100644
--- a/src/components/presentation-summary-form.js
+++ b/src/components/presentation-summary-form.js
@@ -14,7 +14,13 @@
import React, {useState, useEffect} from 'react'
import T from 'i18n-react/dist/i18n-react'
import 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'
-import {Dropdown, Input, RadioList, RawHTML, TextArea, TextEditor, Exclusive} from 'openstack-uicore-foundation/lib/components'
+import Dropdown from 'openstack-uicore-foundation/lib/components/inputs/dropdown';
+import Input from 'openstack-uicore-foundation/lib/components/inputs/text-input';
+import RadioList from 'openstack-uicore-foundation/lib/components/inputs/radio-list';
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html';
+import TextArea from 'openstack-uicore-foundation/lib/components/inputs/textarea-input';
+import TextEditor from 'openstack-uicore-foundation/lib/components/inputs/editor-input';
+import Exclusive from 'openstack-uicore-foundation/lib/components/exclusive-wrapper';
import SubmitButtons from './presentation-submit-buttons'
import {scrollToError, validate} from '../utils/methods'
import QuestionsInput from '../components/inputs/questions-input'
diff --git a/src/components/presentation-uploads-form.js b/src/components/presentation-uploads-form.js
index 56a1f6a..a9ac66a 100644
--- a/src/components/presentation-uploads-form.js
+++ b/src/components/presentation-uploads-form.js
@@ -13,7 +13,8 @@
import React from 'react'
import 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'
-import {RawHTML, UploadInputV2} from 'openstack-uicore-foundation/lib/components'
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html';
+import UploadInputV2 from 'openstack-uicore-foundation/lib/components/inputs/upload-input-v2';
import {findElementPos} from 'openstack-uicore-foundation/lib/utils/methods'
import SubmitButtons from './presentation-submit-buttons'
import {scrollToError} from '../utils/methods'
diff --git a/src/components/speaker-form.js b/src/components/speaker-form.js
index 4a69794..a54ecd1 100644
--- a/src/components/speaker-form.js
+++ b/src/components/speaker-form.js
@@ -17,7 +17,15 @@ import 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'
import {findElementPos} from 'openstack-uicore-foundation/lib/utils/methods'
import AffiliationsTable from './affiliationstable'
import PresentationLinks from "./inputs/presentation-links";
-import { Input, TextEditor, UploadInput, Exclusive, CountryInput, LanguageInput, CheckboxList, FreeMultiTextInput, RegistrationCompanyInput } from 'openstack-uicore-foundation/lib/components'
+import Input from 'openstack-uicore-foundation/lib/components/inputs/text-input';
+import TextEditor from 'openstack-uicore-foundation/lib/components/inputs/editor-input';
+import UploadInput from 'openstack-uicore-foundation/lib/components/inputs/upload-input';
+import Exclusive from 'openstack-uicore-foundation/lib/components/exclusive-wrapper';
+import CountryInput from 'openstack-uicore-foundation/lib/components/inputs/country-input';
+import LanguageInput from 'openstack-uicore-foundation/lib/components/inputs/language-input';
+import CheckboxList from 'openstack-uicore-foundation/lib/components/inputs/checkbox-list';
+import FreeMultiTextInput from 'openstack-uicore-foundation/lib/components/inputs/free-multi-text-input';
+import RegistrationCompanyInput from 'openstack-uicore-foundation/lib/components/inputs/registration-company-input';
import {validate, scrollToError} from "../utils/methods";
diff --git a/src/layouts/all-plans-layout.js b/src/layouts/all-plans-layout.js
index 97aa78b..e4dcf16 100644
--- a/src/layouts/all-plans-layout.js
+++ b/src/layouts/all-plans-layout.js
@@ -11,18 +11,29 @@
* limitations under the License.
**/
-import React from 'react'
-import {connect} from 'react-redux';
-import {Switch, Route, Redirect} from 'react-router-dom';
-import {getAllFromSummit} from '../actions/base-actions';
-import AllSelectionPlansPage from "../pages/all-selection-plans-page";
+import React, { Suspense } from 'react'
+import { connect } from 'react-redux';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
+import { getAllFromSummit } from '../actions/base-actions';
import NavMenu from "../components/nav-menu";
-import SelectionPlanLayout from "./selection-plan-layout";
-import ProfilePage from "../pages/profile-page";
-import SelectionProcessPage from "../pages/selection-process-page";
-import TracksGuidePage from "../pages/tracks-guide-page";
-const AllPlansLayout = ({summit, location, match, speaker, member}) => {
+const SelectionPlanLayout = React.lazy(() => import("./selection-plan-layout"));
+
+const AllSelectionPlansPage = React.lazy(() =>
+ import("../pages/all-selection-plans-page")
+);
+const ProfilePage = React.lazy(() =>
+ import("../pages/profile-page")
+);
+const SelectionProcessPage = React.lazy(() =>
+ import("../pages/selection-process-page")
+);
+const TracksGuidePage = React.lazy(() =>
+ import("../pages/tracks-guide-page")
+);
+
+const AllPlansLayout = ({ summit, location, match, speaker, member }) => {
const loggedUser = (speaker && speaker.id) ? speaker : member;
const getActiveMenu = () => {
if (location.pathname.includes('presentations')) {
@@ -40,18 +51,20 @@ const AllPlansLayout = ({summit, location, match, speaker, member}) => {
-
+
-
-
-
-
- } />
- } />
- ()}/>
-
+ }>
+
+
+
+
+ } />
+ } />
+ ()} />
+
+
@@ -60,11 +73,11 @@ const AllPlansLayout = ({summit, location, match, speaker, member}) => {
}
-const mapStateToProps = ({baseState, loggedUserState}) => ({
+const mapStateToProps = ({ baseState, loggedUserState }) => ({
member: loggedUserState.member,
speaker: baseState.speaker,
summit: baseState.summit,
loading: baseState.loading
})
-export default connect(mapStateToProps, {getAllFromSummit})(AllPlansLayout);
+export default connect(mapStateToProps, { getAllFromSummit })(AllPlansLayout);
diff --git a/src/layouts/landing-layout.js b/src/layouts/landing-layout.js
index 21711e1..f9b8f97 100644
--- a/src/layouts/landing-layout.js
+++ b/src/layouts/landing-layout.js
@@ -11,29 +11,33 @@
* limitations under the License.
**/
-import React from 'react'
-import {Switch, Route, Redirect} from 'react-router-dom';
-import LandingPage from "../pages/landing-page";
+import React, { Suspense } from 'react'
+import { Switch, Route, Redirect } from 'react-router-dom';
import URI from "urijs";
-import {BACK_URL} from "../utils/constants";
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
+import { BACK_URL } from "../utils/constants";
-const LandingLayout = ({match, ...parentProps}) => {
+const LandingPage = React.lazy(() =>
+ import("../pages/landing-page")
+);
+
+const LandingLayout = ({ match, ...parentProps }) => {
const summitSlug = match.params.summit_slug;
let url = URI(window.location.href);
let currentBackUrl = null
- if(url.hasQuery(BACK_URL))
- currentBackUrl = url.query(true)[BACK_URL];
+ if (url.hasQuery(BACK_URL))
+ currentBackUrl = url.query(true)[BACK_URL];
- if(currentBackUrl){
- return (
-
{
- return
- }} />
- )
+ if (currentBackUrl) {
+ return (
+ {
+ return
+ }} />
+ )
}
return (
- <>
+ }>
{
render={props => ()}
/>
- >
+
);
}
diff --git a/src/layouts/presentation-layout.js b/src/layouts/presentation-layout.js
index 5973b40..c53d01e 100644
--- a/src/layouts/presentation-layout.js
+++ b/src/layouts/presentation-layout.js
@@ -11,98 +11,110 @@
* limitations under the License.
**/
-import React from 'react'
+import React, { Suspense } from "react";
import { connect } from 'react-redux';
import { Switch, Route, Redirect } from 'react-router-dom';
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
import { getPresentation, resetPresentation } from '../actions/presentation-actions'
-import EditPresentationPage from '../pages/edit-presentation-page'
-import PreviewPresentationPage from '../pages/preview-presentation-page'
-import ThankYouPresentationPage from '../pages/thankyou-presentation-page'
-import EditSpeakerPage from '../pages/edit-speaker-page'
import Presentation from '../model/presentation'
+const EditPresentationPage = React.lazy(() =>
+ import("../pages/edit-presentation-page")
+);
+const PreviewPresentationPage = React.lazy(() =>
+ import("../pages/preview-presentation-page")
+);
+const ThankYouPresentationPage = React.lazy(() =>
+ import("../pages/thankyou-presentation-page")
+);
+const EditSpeakerPage = React.lazy(() =>
+ import("../pages/edit-speaker-page")
+);
+
class PresentationLayout extends React.Component {
- constructor(props){
- super(props);
- this.presentation = new Presentation(
- props.entity,
- props.summit,
- props.selectionPlan,
- props.loggedSpeaker,
- props.tagGroups
- );
+ constructor(props) {
+ super(props);
+ this.presentation = new Presentation(
+ props.entity,
+ props.summit,
+ props.selectionPlan,
+ props.loggedSpeaker,
+ props.tagGroups
+ );
+ }
+
+ componentDidMount() {
+ let { presentation_id } = this.props.match.params;
+ if (!presentation_id) {
+ this.props.resetPresentation();
+ return;
}
+ this.props.getPresentation(presentation_id);
+ }
+
+ componentWillReceiveProps(newProps) {
+ let oldId = this.props.match.params.presentation_id;
+ let newId = newProps.match.params.presentation_id;
- componentDidMount() {
- let {presentation_id} = this.props.match.params;
- if (!presentation_id) {
- this.props.resetPresentation();
- return;
- }
- this.props.getPresentation(presentation_id);
+ if (newId && oldId !== newId) {
+ this.props.getPresentation(newId);
}
- componentWillReceiveProps(newProps) {
- let oldId = this.props.match.params.presentation_id;
- let newId = newProps.match.params.presentation_id;
+ this.presentation.updatePresentation(newProps.entity, newProps.track);
+ }
+
+ render() {
+ let { match, entity, speaker, history, loading, location, selectionPlan, selectionPlansSettings } = this.props;
+ let isNew = !match.params.presentation_id;
- if (newId && oldId !== newId) {
- this.props.getPresentation(newId);
- }
+ if (loading || (!isNew && !entity.id)) return null;
- this.presentation.updatePresentation(newProps.entity, newProps.track);
+ if (!isNew && match.params.presentation_id == entity.id && !this.presentation.canEdit() && !location.pathname.endsWith('preview')) {
+ return ();
}
- render(){
- let { match, entity, speaker, history, loading, location, selectionPlan, selectionPlansSettings } = this.props;
- let isNew = !match.params.presentation_id;
-
- if (loading || (!isNew && !entity.id)) return null;
-
- if (!isNew && match.params.presentation_id == entity.id && !this.presentation.canEdit() && !location.pathname.endsWith('preview') ) {
- return();
- }
-
- if (!speaker) {
- history.push(`/app/${summit.slug}/all-plans/profile`);
- }
-
- const selectionPlanSettings = selectionPlansSettings && selectionPlansSettings.hasOwnProperty(selectionPlan?.id) ? (selectionPlansSettings[selectionPlan?.id] || {}): {};
- const defaultStep = selectionPlanSettings?.CFP_PRESENTATION_EDITION_DEFAULT_TAB ? selectionPlanSettings?.CFP_PRESENTATION_EDITION_DEFAULT_TAB : 'summary';
-
- return(
-
- }/>
- }/>
- }/>
- }/>
- ()
- }/>
- ()}/>
-
- );
+ if (!speaker) {
+ history.push(`/app/${summit.slug}/all-plans/profile`);
}
+ const selectionPlanSettings = selectionPlansSettings && selectionPlansSettings.hasOwnProperty(selectionPlan?.id) ? (selectionPlansSettings[selectionPlan?.id] || {}) : {};
+ const defaultStep = selectionPlanSettings?.CFP_PRESENTATION_EDITION_DEFAULT_TAB ? selectionPlanSettings?.CFP_PRESENTATION_EDITION_DEFAULT_TAB : 'summary';
+
+ return (
+ }>
+
+ } />
+ } />
+ } />
+ } />
+ ()
+ } />
+ ()} />
+
+
+ );
+ }
+
}
const mapStateToProps = ({ baseState, presentationState }) => ({
- speaker: baseState.speaker,
- summit: baseState.summit,
- loading: baseState.loading,
- tagGroups: baseState.tagGroups,
- selectionPlansSettings: baseState.selectionPlansSettings,
- loggedSpeaker: baseState.speaker,
- ...presentationState
+ speaker: baseState.speaker,
+ summit: baseState.summit,
+ loading: baseState.loading,
+ tagGroups: baseState.tagGroups,
+ selectionPlansSettings: baseState.selectionPlansSettings,
+ loggedSpeaker: baseState.speaker,
+ ...presentationState
})
export default connect(
- mapStateToProps,
- {
- getPresentation,
- resetPresentation
- }
+ mapStateToProps,
+ {
+ getPresentation,
+ resetPresentation
+ }
)(PresentationLayout)
diff --git a/src/layouts/primary-layout.js b/src/layouts/primary-layout.js
index 1cb083a..4ec8a74 100644
--- a/src/layouts/primary-layout.js
+++ b/src/layouts/primary-layout.js
@@ -11,36 +11,38 @@
* limitations under the License.
**/
-import React from 'react'
-import {connect} from 'react-redux';
-import {Switch, Route, Redirect} from 'react-router-dom';
-import PresentationLayout from './presentation-layout'
+import React, { Suspense } from "react";
+import { connect } from 'react-redux';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
-const PrimaryLayout = ({summit, speaker, member, selectionPlanId, match}) => {
+const PresentationLayout = React.lazy(() => import("./presentation-layout"));
+
+const PrimaryLayout = ({ summit, speaker, member, selectionPlanId, match }) => {
const loggedUser = (speaker && speaker.id) ? speaker : member;
const selectionPlan = summit.selection_plans.find(sp => sp.id === selectionPlanId);
if (!loggedUser || !selectionPlanId || !selectionPlan) return null;
return (
- <>
+ }>
}
+ render={(props) => }
/>
}
+ render={(props) => }
/>
- ()}/>
+ ()} />
- >
+
);
}
-const mapStateToProps = ({loggedUserState, baseState}) => ({
+const mapStateToProps = ({ loggedUserState, baseState }) => ({
member: loggedUserState.member,
speaker: baseState.speaker,
summit: baseState.summit,
diff --git a/src/layouts/selection-plan-layout.js b/src/layouts/selection-plan-layout.js
index f3ebb2c..da37d51 100644
--- a/src/layouts/selection-plan-layout.js
+++ b/src/layouts/selection-plan-layout.js
@@ -11,18 +11,24 @@
* limitations under the License.
**/
-import React, {useEffect} from 'react'
-import {connect} from 'react-redux';
-import {Switch, Route, Redirect} from 'react-router-dom';
-import {getAllowedSelectionPlan, getSelectionPlanSettings} from '../actions/base-actions';
-import PrimaryLayout from "./primary-layout";
-import AllSelectionPlansPage from "../pages/all-selection-plans-page";
-import ProfilePage from "../pages/profile-page";
-import SelectionProcessPage from "../pages/selection-process-page";
-import TracksGuidePage from "../pages/tracks-guide-page";
+import React, { useEffect, Suspense } from 'react'
+import { connect } from 'react-redux';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
+import { getAllowedSelectionPlan, getSelectionPlanSettings } from '../actions/base-actions';
import history from '../history'
-const SelectionPlanLayout = ({summit, match, ...props}) => {
+const EditPresentationPage = React.lazy(() =>
+ import("../pages/edit-presentation-page")
+);
+
+const PrimaryLayout = React.lazy(() => import("./primary-layout"));
+const AllSelectionPlansPage = React.lazy(() => import("../pages/all-selection-plans-page"));
+const ProfilePage = React.lazy(() => import("../pages/profile-page"));
+const SelectionProcessPage = React.lazy(() => import("../pages/selection-process-page"));
+const TracksGuidePage = React.lazy(() => import("../pages/tracks-guide-page"));
+
+const SelectionPlanLayout = ({ summit, match, ...props }) => {
const selectionPlanId = parseInt(match.params?.selection_plan_id);
useEffect(() => {
@@ -38,19 +44,21 @@ const SelectionPlanLayout = ({summit, match, ...props}) => {
}, [selectionPlanId]);
return (
-
- } />
- } />
- } />
- } />
- } />
- ()} />
-
+ }>
+
+ } />
+ } />
+ } />
+ } />
+ } />
+ ()} />
+
+
);
}
-const mapStateToProps = ({baseState}) => ({
+const mapStateToProps = ({ baseState }) => ({
summit: baseState.summit
})
-export default connect(mapStateToProps, {getAllowedSelectionPlan, getSelectionPlanSettings})(SelectionPlanLayout);
\ No newline at end of file
+export default connect(mapStateToProps, { getAllowedSelectionPlan, getSelectionPlanSettings })(SelectionPlanLayout);
\ No newline at end of file
diff --git a/src/layouts/summit-layout.js b/src/layouts/summit-layout.js
index f665623..b6b2987 100644
--- a/src/layouts/summit-layout.js
+++ b/src/layouts/summit-layout.js
@@ -11,17 +11,19 @@
* limitations under the License.
**/
-import React, {useEffect, useState} from 'react'
-import {connect} from 'react-redux';
-import {Switch, Route, Redirect} from 'react-router-dom';
-import {getAllFromSummit, getTagGroups, getAllowedSelectionPlans} from '../actions/base-actions';
-import AllPlansLayout from "./all-plans-layout";
-import PlanSelectionPage from "../pages/plan-selection-page";
-import ProfilePage from "../pages/profile-page";
+import React, { useEffect, useState, Suspense } from 'react'
+import { connect } from 'react-redux';
+import { Switch, Route, Redirect } from 'react-router-dom';
+import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
+import { getAllFromSummit, getTagGroups, getAllowedSelectionPlans } from '../actions/base-actions';
import ClockComponent from '../components/clock';
-import {getLandingSelectionPlanId} from "../utils/methods";
+import { getLandingSelectionPlanId } from "../utils/methods";
-const SummitLayout = ({summit, loading, match, speaker, location, baseLoaded, ...props}) => {
+const AllPlansLayout = React.lazy(() => import("./all-plans-layout"));
+const PlanSelectionPage = React.lazy(() => import("../pages/plan-selection-page"));
+const ProfilePage = React.lazy(() => import("../pages/profile-page"));
+
+const SummitLayout = ({ summit, loading, match, speaker, location, baseLoaded, ...props }) => {
const urlSummitSlug = match.params.summit_slug;
const summitSlug = summit?.slug;
const [dataLoaded, setDataLoaded] = useState(false);
@@ -42,32 +44,34 @@ const SummitLayout = ({summit, loading, match, speaker, location, baseLoaded, ..
const spLanding = getLandingSelectionPlanId();
return (
-
+
);
}
return (
<>
-
-
-
-
-
+ }>
+
+
+
+ ()}
- />
- ()}
- />
- ()}/>
-
+ render={props => ()}
+ />
+ ()}
+ />
+ ()} />
+
+
>
);
}
-const mapStateToProps = ({baseState}) => ({
+const mapStateToProps = ({ baseState }) => ({
speaker: baseState.speaker,
summit: baseState.summit,
loading: baseState.loading,
diff --git a/src/pages/landing-page.js b/src/pages/landing-page.js
index 13cb5a1..991a8d4 100644
--- a/src/pages/landing-page.js
+++ b/src/pages/landing-page.js
@@ -16,7 +16,7 @@ import '../styles/landing-page.less';
import T from "i18n-react/dist/i18n-react";
import SelectionProcessPage from "./selection-process-page";
import TracksGuidePage from "./tracks-guide-page";
-import { Exclusive } from 'openstack-uicore-foundation/lib/components'
+import Exclusive from 'openstack-uicore-foundation/lib/components/exclusive-wrapper';
import { getAllFromSummit, getSelectionPlanSettings } from '../actions/base-actions';
import { connect } from 'react-redux'
import {getCurrentSelectionPlanId} from "../utils/methods";
diff --git a/src/pages/plan-selection-page.js b/src/pages/plan-selection-page.js
index b139bac..2d8a9ad 100644
--- a/src/pages/plan-selection-page.js
+++ b/src/pages/plan-selection-page.js
@@ -12,7 +12,7 @@
**/
import React from "react";
-import {Dropdown} from 'openstack-uicore-foundation/lib/components'
+import Dropdown from 'openstack-uicore-foundation/lib/components/inputs/dropdown';
import history from "../history";
import {connect} from "react-redux";
import T from "i18n-react";
diff --git a/src/pages/preview-presentation-page.js b/src/pages/preview-presentation-page.js
index 0925000..d9df753 100644
--- a/src/pages/preview-presentation-page.js
+++ b/src/pages/preview-presentation-page.js
@@ -14,7 +14,7 @@
import React from 'react';
import { connect } from 'react-redux';
import T from 'i18n-react/dist/i18n-react';
-import { RawHTML } from 'openstack-uicore-foundation/lib/components'
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html';
import { loadEventCategory } from "../actions/base-actions";
import {getSubmissionsPath} from "../utils/methods";
diff --git a/src/pages/selection-process-page.js b/src/pages/selection-process-page.js
index aa3cf98..174eaec 100644
--- a/src/pages/selection-process-page.js
+++ b/src/pages/selection-process-page.js
@@ -13,7 +13,7 @@
import React from 'react';
import T from 'i18n-react/dist/i18n-react';
-import { RawHTML } from 'openstack-uicore-foundation/lib/components'
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html';
export default class SelectionProcessPage extends React.Component {
diff --git a/src/pages/summit-selection-page.js b/src/pages/summit-selection-page.js
index ce5ae03..a5a8c15 100644
--- a/src/pages/summit-selection-page.js
+++ b/src/pages/summit-selection-page.js
@@ -12,7 +12,7 @@
**/
import React from "react";
-import {Dropdown} from 'openstack-uicore-foundation/lib/components'
+import Dropdown from 'openstack-uicore-foundation/lib/components/inputs/dropdown';
import history from "../history";
import {connect} from "react-redux";
import {
diff --git a/src/pages/thankyou-presentation-page.js b/src/pages/thankyou-presentation-page.js
index e502130..340d4a9 100644
--- a/src/pages/thankyou-presentation-page.js
+++ b/src/pages/thankyou-presentation-page.js
@@ -14,7 +14,7 @@
import React from 'react';
import { connect } from 'react-redux';
import T from 'i18n-react/dist/i18n-react';
-import { Exclusive } from 'openstack-uicore-foundation/lib/components'
+import Exclusive from 'openstack-uicore-foundation/lib/components/exclusive-wrapper';
import {getSubmissionsPath} from "../utils/methods";
import '../styles/thankyou-presentation-page.less';
diff --git a/src/pages/tracks-guide-page.js b/src/pages/tracks-guide-page.js
index 1fa04b8..e450a73 100644
--- a/src/pages/tracks-guide-page.js
+++ b/src/pages/tracks-guide-page.js
@@ -13,7 +13,7 @@
import React from 'react';
import T from 'i18n-react/dist/i18n-react';
-import {RawHTML} from 'openstack-uicore-foundation/lib/components'
+import RawHTML from 'openstack-uicore-foundation/lib/components/raw-html';
import {connect} from "react-redux";
const TracksGuidePage = ({summit}) => {
diff --git a/src/sentry-init.js b/src/sentry-init.js
new file mode 100644
index 0000000..311bc60
--- /dev/null
+++ b/src/sentry-init.js
@@ -0,0 +1,18 @@
+import * as Sentry from "@sentry/react";
+
+export const initSentry = () => {
+ Sentry.init({
+ dsn: window.SENTRY_DSN,
+ integrations: [
+ Sentry.browserTracingIntegration(),
+ Sentry.browserProfilingIntegration(),
+ Sentry.replayIntegration()
+ ],
+ tracesSampleRate: window.SENTRY_TRACE_SAMPLE_RATE,
+ tracePropagationTargets: [window.SENTRY_TRACE_PROPAGATION_TARGETS],
+ profilesSampleRate: 1.0,
+ replaysSessionSampleRate: 0.1,
+ replaysOnErrorSampleRate: 1.0
+ });
+ return Sentry;
+};
\ No newline at end of file
diff --git a/webpack.prod.js b/webpack.prod.js
index 94088c5..33bd63d 100644
--- a/webpack.prod.js
+++ b/webpack.prod.js
@@ -1,31 +1,40 @@
-const TerserJSPlugin = require('terser-webpack-plugin');
-const MiniCssExtractPlugin = require("mini-css-extract-plugin");
-const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
-const {merge} = require('webpack-merge');
-const common = require('./webpack.common.js');
-const path = require('path');
+const TerserJSPlugin = require("terser-webpack-plugin");
+const MiniCssExtractPlugin = require("mini-css-extract-plugin");
+const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
+const { merge } = require("webpack-merge");
+const common = require("./webpack.common.js");
+const path = require("path");
module.exports = merge(common, {
- mode: 'production',
- devtool: 'source-map',
- output: {
- filename: '[name]_[contenthash].js',
- path: path.resolve(__dirname, 'dist'),
- publicPath: '/',
- pathinfo: false
- },
- optimization: {
- minimizer: [
- new TerserJSPlugin({terserOptions: {compress: {inline: false}}}),
- new CssMinimizerPlugin()
- ],
- splitChunks: {
- chunks: 'all'
+ mode: "production",
+ output: {
+ filename: "[name]_[contenthash].js",
+ chunkFilename: "[name]_[contenthash].js",
+ path: path.resolve(__dirname, "dist"),
+ publicPath: "/",
+ pathinfo: false
+ },
+ optimization: {
+ minimize: true,
+ minimizer: [
+ new TerserJSPlugin({
+ parallel: true,
+ terserOptions: {
+ mangle: {
+ reserved: ["Lock", "SuperTokensLock", "GET_TOKEN_SILENTLY_LOCK_KEY"]
+ },
+ compress: { inline: false }
}
- },
- plugins: [
- new MiniCssExtractPlugin({
- filename: '[name].[contenthash].css',
- }),
- ]
+ }),
+ new CssMinimizerPlugin()
+ ],
+ splitChunks: {
+ chunks: "all"
+ }
+ },
+ plugins: [
+ new MiniCssExtractPlugin({
+ filename: "[name].[contenthash].css",
+ }),
+ ]
});
diff --git a/yarn.lock b/yarn.lock
index 8890da2..73e8ec6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -830,7 +830,7 @@
"@babel/plugin-transform-react-jsx-development" "^7.27.1"
"@babel/plugin-transform-react-pure-annotations" "^7.27.1"
-"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.29.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.28.6", "@babel/runtime@^7.29.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.29.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e"
integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==
@@ -1176,7 +1176,7 @@
dependencies:
"@babel/runtime" "^7.29.2"
-"@mui/utils@^9.0.0":
+"@mui/utils@9.0.0", "@mui/utils@^9.0.0":
version "9.0.0"
resolved "https://registry.npmjs.org/@mui/utils/-/utils-9.0.0.tgz#25b563ccbf537feba5f89c37a00cb8e6eea45ad0"
integrity sha512-bQcqyg/gjULUqTuyUjSAFr6LQGLvtkNtDbJerAtoUn9kGZ0hg5QJiN1PLHMLbeFpe3te1831uq7GFl2ITokGdg==
@@ -1188,6 +1188,29 @@
prop-types "^15.8.1"
react-is "^19.2.4"
+"@mui/x-date-pickers@^9.0.2":
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-9.0.2.tgz#ac601e4655ce3017185d652f9f91a2914bb6e63a"
+ integrity sha512-rnyc2wFPnprTS5i8Lq9aX2Rlx+ZRvNZERTd7sPMErf/8HnMCYzxwErITbd+TuImlvo2vaLF1gNynqT8AJMusYw==
+ dependencies:
+ "@babel/runtime" "^7.28.6"
+ "@mui/utils" "9.0.0"
+ "@mui/x-internals" "^9.0.0"
+ "@types/react-transition-group" "^4.4.12"
+ clsx "^2.1.1"
+ prop-types "^15.8.1"
+ react-transition-group "^4.4.5"
+
+"@mui/x-internals@^9.0.0":
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-9.0.0.tgz#8851a058e09b719690b4f398319805239e923855"
+ integrity sha512-E/4rdg69JjhyybpPGypCjAKSKLLnSdCFM+O6P/nkUg47+qt3uftxQEhjQO53rcn6ahHl6du/uNZ9BLgeY6kYxQ==
+ dependencies:
+ "@babel/runtime" "^7.28.6"
+ "@mui/utils" "9.0.0"
+ reselect "^5.1.1"
+ use-sync-external-store "^1.6.0"
+
"@parcel/watcher-android-arm64@2.5.6":
version "2.5.6"
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz#5f32e0dba356f4ac9a11068d2a5c134ca3ba6564"
@@ -1747,6 +1770,13 @@
resolved "https://registry.yarnpkg.com/@types/googlemaps/-/googlemaps-3.43.3.tgz#70cf962154a160fe78bcd69d6ccc296dd9175b1f"
integrity sha512-ZWNoz/O8MPEpiajvj7QiqCY8tTLFNqNZ/a+s+zTV58wFVNAvvqV4bdGfnsjTb5Cs4V6wEsLrX8XRhmnyYJ2Tdg==
+"@types/hoist-non-react-statics@^3.3.1":
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz#306e3a3a73828522efa1341159da4846e7573a6c"
+ integrity sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==
+ dependencies:
+ hoist-non-react-statics "^3.3.0"
+
"@types/html-minifier-terser@^6.0.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
@@ -2106,9 +2136,9 @@
integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==
"@xmldom/xmldom@^0.8.3":
- version "0.8.12"
- resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.12.tgz#cf488a5435fa06c7374ad1449c69cea0f823624b"
- integrity sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==
+ version "0.8.13"
+ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.13.tgz#00d1dd940b218dff2e49309d410d8bb212159225"
+ integrity sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -3237,6 +3267,11 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.4.3:
dependencies:
ms "^2.1.3"
+deepmerge@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
+ integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
+
default-gateway@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
@@ -4000,6 +4035,20 @@ formidable@^1.2.2:
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168"
integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==
+formik@^2.4.9:
+ version "2.4.9"
+ resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.9.tgz#7e5b81e9c9e215d0ce2ac8fed808cf7fba0cd204"
+ integrity sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==
+ dependencies:
+ "@types/hoist-non-react-statics" "^3.3.1"
+ deepmerge "^2.1.1"
+ hoist-non-react-statics "^3.3.0"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ react-fast-compare "^2.0.1"
+ tiny-warning "^1.0.2"
+ tslib "^2.0.0"
+
forwarded@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
@@ -4869,6 +4918,11 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+lodash-es@^4.17.21:
+ version "4.18.1"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.18.1.tgz#b962eeb80d9d983a900bf342961fb7418ca10b1d"
+ integrity sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==
+
lodash-es@^4.2.1:
version "4.17.23"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.23.tgz#58c4360fd1b5d33afc6c0bbd3d1149349b1138e0"
@@ -5355,10 +5409,10 @@ open@^8.0.9:
is-docker "^2.1.1"
is-wsl "^2.2.0"
-openstack-uicore-foundation@4.2.27:
- version "4.2.27"
- resolved "https://registry.npmjs.org/openstack-uicore-foundation/-/openstack-uicore-foundation-4.2.27.tgz#2a4ef839a643c09217dcf7280d9b32298edd7f2c"
- integrity sha512-KAuCi+zXtwauazt/f/Azxs/RX+YWpe9DmKx01e/Nn5TYa0/c3F7xNq2gOMS2NvvSTAVLUQ6MTknN/98jDlqB7g==
+openstack-uicore-foundation@5.0.9:
+ version "5.0.9"
+ resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.9.tgz#07adad71dae95383e3e707cb63f1b30837f48608"
+ integrity sha512-Gk6QkQaY76a/u5Pzx1cPetX/NJ73AAda5n0YEVRX78sb4y1GknAKZNY8IdlF6QERR6yKAs4GNuuEzAEs/DcZfw==
p-limit@^2.2.0:
version "2.3.0"
@@ -6079,6 +6133,11 @@ react-dropzone@^4.2.13:
attr-accept "^1.1.3"
prop-types "^15.5.7"
+react-fast-compare@^2.0.1:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
+ integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
+
react-final-form@^6.5.9:
version "6.5.9"
resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-6.5.9.tgz#644797d4c122801b37b58a76c87761547411190b"
@@ -6433,6 +6492,11 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+reselect@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e"
+ integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==
+
resolve-cwd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
@@ -7090,7 +7154,7 @@ tiny-invariant@^1.0.2:
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
-tiny-warning@^1.0.0:
+tiny-warning@^1.0.0, tiny-warning@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
@@ -7128,7 +7192,7 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-tslib@^2.0.3, tslib@^2.8.0:
+tslib@^2.0.0, tslib@^2.0.3, tslib@^2.8.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -7270,6 +7334,11 @@ url-toolkit@^2.2.1:
resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607"
integrity sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==
+use-sync-external-store@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d"
+ integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==
+
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"