{"version":3,"sources":["pages/error-page/error-page.js","assets/restricted.svg","error.js","App.js","index.js"],"names":["__webpack_require__","d","__webpack_exports__","StyledErrorPage","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","n","underscore__WEBPACK_IMPORTED_MODULE_1__","_bingads_webui_react_with_default_styles__WEBPACK_IMPORTED_MODULE_2__","_fluentui_react_components__WEBPACK_IMPORTED_MODULE_3__","_fluentui_react_components__WEBPACK_IMPORTED_MODULE_4__","_assets_restricted_svg__WEBPACK_IMPORTED_MODULE_5__","_assets_restricted_svg__WEBPACK_IMPORTED_MODULE_5___default","getStyles","errorPageContainer","display","flexDirection","alignItems","justifyContent","noResultWrapper","marginTop","& .first-row","fontWeight","fontSize","lineHeight","& b","& .second-row","compose","WrappedComponent","withDefaultStyles","_ref","classes","a","createElement","className","src","RestrictedPlaceholder","height","width","module","exports","p","ErrorBoundary","props","_this","Object","classCallCheck","this","_callSuper","state","hasError","resetError","bind","error","info","setState","_this2","react_default","error_page","React","Children","map","children","child","isValidElement","cloneElement","resetErrorBoundary","Component","FallbackSpinner","style","Spinner","size","App","serverContext","DynamicPermissions","EnableLoggingForUnhandledPromiseRejections","PageTrackingId","CurrentCustomer","CurrentAccount","CurrentUser","instrumentation","useMemo","getInstrumentation","instrumentationService","getInstrumentationService","FluentProvider","theme","webLightTheme","i18n_context_dist","Provider","value","staticI18nMock","adlibrary_instrumentation","performance_marker_provider_dist","name","immediateDone","adlibrary_fetch_layer","adlibrary_layout_container","pageConfig","layoutConfigs","default","role","href","_TL_","item","component","Header","PageMenu","id","react","fallback","App_FallbackSpinner","react_router_dist","adlibrary_layout_elements","StyledHomePage","lazy","Promise","all","e","then","APIDocumentPage","StyledAdDetailsPage","StyledAdvertiserAdsPage","router","createBrowserRouter","path","element","src_App","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.a2b5bfa7.chunk.js","sourcesContent":["import React from 'react';\r\nimport { compose } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Image, Text } from '@fluentui/react-components';\r\nimport RestrictedPlaceholder from '../../assets/restricted.svg';\r\n\r\nconst getStyles = () => ({\r\n errorPageContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n noResultWrapper: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: '100px',\r\n '& .first-row': {\r\n marginTop: '24px',\r\n fontWeight: '400',\r\n fontSize: '24px',\r\n lineHeight: '36px',\r\n '& b': {\r\n fontWeight: '600',\r\n },\r\n },\r\n '& .second-row': {\r\n marginTop: '8px',\r\n fontWeight: '400',\r\n fontSize: '16px',\r\n lineHeight: '22px',\r\n },\r\n },\r\n});\r\n\r\nconst ErrorPage = ({ classes }) => (\r\n <div className={classes.errorPageContainer}>\r\n <div className={classes.noResultWrapper}>\r\n <Image src={RestrictedPlaceholder} height=\"200\" width=\"222\" />\r\n <Text className=\"first-row\">Something went wrong. Please refresh the page and try again.</Text>\r\n </div>\r\n </div>\r\n);\r\n\r\nexport const StyledErrorPage = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyles))(ErrorPage);\r\n","module.exports = __webpack_public_path__ + \"static/media/restricted.d19a48b2.svg\";","import React from 'react';\r\nimport { StyledErrorPage } from './pages/error-page/error-page';\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n // Bind the resetError function to this instance\r\n this.resetError = this.resetError.bind(this);\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n // Example \"componentStack\":\r\n // in ComponentThatThrows (created by App)\r\n // in ErrorBoundary (created by App)\r\n // in div (created by App)\r\n // in App\r\n // logErrorToMyService(error, info.componentStack);\r\n }\r\n\r\n resetError() {\r\n this.setState({ hasError: false });\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return <StyledErrorPage resetError={this.resetError} />;\r\n // return this.props.fallback(this.resetError); // Pass resetError function to fallback\r\n }\r\n\r\n return React.Children.map(this.props.children, child => {\r\n // If this child is a react element, clone it and pass the resetError function\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child, { resetErrorBoundary: this.resetError });\r\n }\r\n return child;\r\n });\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;\r\n","import React, { Suspense, useMemo } from 'react';\r\nimport { Outlet } from 'react-router-dom';\r\n\r\nimport { LayoutContainer, Layout, layoutConfigs } from '@bingads-webui/adlibrary-layout-container';\r\nimport { Header, PageMenu, PageFooter } from '@bingads-webui/adlibrary-layout-elements';\r\nimport { getInstrumentation, getInstrumentationService, InstrumentationServiceContext } from '@bingads-webui/adlibrary-instrumentation';\r\nimport { FetchProvider } from '@bingads-webui/adlibrary-fetch-layer';\r\nimport { PerformanceMarkerProvider } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { staticI18nMock } from '@bingads-webui-test/i18n-mock'; // modelI18nMock\r\nimport { FluentProvider, webLightTheme, Spinner } from '@fluentui/react-components';\r\n\r\nimport ErrorBoundary from './error';\r\n\r\nconst FallbackSpinner = () => (\r\n <div style={{\r\n height: '100vh',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <Spinner size=\"extra-large\" />\r\n </div>\r\n);\r\n\r\nfunction App() {\r\n const serverContext = {\r\n DynamicPermissions: {\r\n EnableLoggingForUnhandledPromiseRejections: true,\r\n },\r\n PageTrackingId: 1,\r\n CurrentCustomer: {},\r\n CurrentAccount: {},\r\n CurrentUser: {},\r\n };\r\n\r\n const instrumentation = useMemo(() => getInstrumentation({\r\n serverContext,\r\n }), [serverContext]);\r\n\r\n const instrumentationService = useMemo(() => getInstrumentationService({\r\n instrumentation,\r\n serverContext,\r\n }), [instrumentation, serverContext]);\r\n\r\n return (\r\n <FluentProvider theme={webLightTheme}>\r\n <I18nContext.Provider value={staticI18nMock} >\r\n <InstrumentationServiceContext.Provider value={instrumentationService}>\r\n <PerformanceMarkerProvider\r\n name=\"perf_marker_ad_library\"\r\n instrumentation={instrumentation}\r\n immediateDone\r\n >\r\n <FetchProvider instrumentation={instrumentation}>\r\n <LayoutContainer\r\n pageConfig={layoutConfigs.default}\r\n >\r\n <div className=\"nav-skip\" role=\"navigation\">\r\n <a href=\"#main\">{_TL_('Skip to main content')}</a>\r\n </div>\r\n <Layout item=\"header\" component={Header} />\r\n <Layout item=\"nav\" component={PageMenu} />\r\n <main id=\"main\">\r\n <Layout\r\n item=\"content\"\r\n component={() =>\r\n (\r\n <ErrorBoundary>\r\n <Suspense fallback={<FallbackSpinner />}>\r\n <Outlet />\r\n <PageFooter />\r\n </Suspense>\r\n </ErrorBoundary>\r\n )\r\n }\r\n />\r\n </main>\r\n </LayoutContainer>\r\n </FetchProvider>\r\n </PerformanceMarkerProvider>\r\n </InstrumentationServiceContext.Provider>\r\n </I18nContext.Provider>\r\n </FluentProvider>\r\n );\r\n}\r\n\r\nexport default App;\r\n","/* eslint-disable function-paren-newline */\r\nimport 'bootstrap-webpack';\r\nimport '@bingads-webui/theme-2018/less/core/index.less';\r\nimport React, { lazy } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {\r\n createBrowserRouter,\r\n RouterProvider,\r\n} from 'react-router-dom';\r\nimport './assets/index.css';\r\nimport App from './App';\r\n\r\nconst StyledHomePage = lazy(() => import('./pages/home-page')\r\n .then(module => ({\r\n default: module.StyledHomePage,\r\n })));\r\n\r\nconst APIDocumentPage = lazy(() => import('@bingads-webui-adlibrary/api-document-page')\r\n .then(module => ({\r\n default: module.APIDocumentPage,\r\n })));\r\n\r\nconst StyledAdDetailsPage = lazy(() => import('./pages/ad-details-page')\r\n .then(module => ({\r\n default: module.StyledAdDetailsPage,\r\n })));\r\n\r\nconst StyledAdvertiserAdsPage = lazy(() => import('./pages/advertiser-ads-page')\r\n .then(module => ({\r\n default: module.StyledAdvertiserAdsPage,\r\n })));\r\n\r\nconst router = createBrowserRouter([\r\n {\r\n path: '/',\r\n element: <App />,\r\n children: [\r\n {\r\n path: '/',\r\n element: <StyledHomePage />,\r\n },\r\n {\r\n path: '/api',\r\n element: <APIDocumentPage />,\r\n },\r\n {\r\n path: '/ad/:id',\r\n element: <StyledAdDetailsPage />,\r\n },\r\n {\r\n path: '/advertiser/:id',\r\n element: <StyledAdvertiserAdsPage />,\r\n },\r\n ],\r\n },\r\n]);\r\n\r\nReactDOM.render(\r\n <RouterProvider router={router} />,\r\n document.getElementById('root')\r\n);\r\n"],"sourceRoot":""}