{"version":3,"sources":["webpack:///./js/react/CustomContainerBuilder.js","webpack:///./js/i18n/CustomDetector.js","webpack:///./js/i18n/index.js","webpack:///./js/react/CustomDomFactory.jsx","webpack:///./js/react/registrations.js","webpack:///./js/react/index.js","webpack:///./js/react/shared/HabitatContext.jsx"],"names":["CustomContainerBuilder","ContainerBuilder","componentImportFunc","componentName","document","querySelectorAll","concat","this","registerAsync","as","CustomDetector","name","lookup","getElementById","value","getAttribute","lngDetector","LngDetector","addDetector","i18n","use","Backend","init","backend","backends","LocalStorageBackend","XHR","backendOptions","prefix","versions","store","window","sessionStorage","allowMultiLoading","loadPath","lngs","namespaces","load","debug","defaultNS","detection","order","fallbackLng","interpolation","escapeValue","keySeparator","ns","history","createHistory","basename","location","pathname","CustomDomFactory","module","props","arguments","length","undefined","target","habitatProps","_objectSpread","proxy","root","react_default","a","createElement","HabitatContext","habitat","dist_es","Router","React","render","unmountComponentAtNode","registrations","component","Promise","all","__webpack_require__","e","then","bind","MyApp","_this","react_classCallCheck","react_possibleConstructorReturn","react_getPrototypeOf","call","containerBuilder","factory","forEach","registration","registerIfPresent","setContainer","build","Bootstrapper","__webpack_exports__","createContext","HabitatProvider","_ref","children","react__WEBPACK_IMPORTED_MODULE_1___default","Provider","propTypes","PropTypes","node","isRequired","object","defaultProps","useHabitat","useContext","withHabitat","WrappedComponent","WithHabitat","_ref2","otherProps","_extends","Consumer","displayName","getDisplayName"],"mappings":"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","file":"app-c24baac27612d58b5730.js","sourcesContent":["import { ContainerBuilder } from 'react-habitat';\r\n\r\nclass CustomContainerBuilder extends ContainerBuilder {\r\n /** Register component if it is present in html. */\r\n registerIfPresent(componentImportFunc, componentName) {\r\n const components = document.querySelectorAll(`[data-component=\"${componentName}\"]`);\r\n\r\n if (!components) {\r\n return;\r\n }\r\n\r\n this.registerAsync(componentImportFunc).as(componentName);\r\n }\r\n}\r\n\r\nexport default CustomContainerBuilder;\r\n","export default {\r\n name: 'customDetector',\r\n\r\n lookup() {\r\n return (\r\n document.getElementById('hdnCulture').value ||\r\n document.getElementById('hdnCulture').getAttribute('value')\r\n );\r\n },\r\n};\r\n","import i18n from 'i18next';\r\nimport Backend from 'i18next-chained-backend';\r\nimport LngDetector from 'i18next-browser-languagedetector';\r\nimport LocalStorageBackend from 'i18next-localstorage-backend';\r\nimport XHR from 'i18next-xhr-backend';\r\nimport CustomDetector from './CustomDetector';\r\n\r\nconst lngDetector = new LngDetector();\r\nlngDetector.addDetector(CustomDetector);\r\n\r\ni18n\r\n .use(Backend)\r\n .use(lngDetector)\r\n .init({\r\n backend: {\r\n backends: [LocalStorageBackend, XHR],\r\n backendOptions: [\r\n {\r\n prefix: 'i18next_res_',\r\n versions: {},\r\n store: window.sessionStorage,\r\n },\r\n {\r\n allowMultiLoading: false,\r\n loadPath: (lngs, namespaces) =>\r\n `/api/i18n/getlocalisationmodel/${lngs[0]}/${namespaces[0]}`,\r\n },\r\n ],\r\n },\r\n load: 'currentOnly',\r\n debug: false,\r\n defaultNS: 'custom',\r\n detection: {\r\n order: ['customDetector'],\r\n },\r\n fallbackLng: false,\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n keySeparator: '',\r\n ns: ['custom'],\r\n });\r\n\r\nexport default i18n;\r\n","import { createBrowserHistory as createHistory } from 'history';\r\nimport React from 'react';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\nimport { I18nextProvider } from 'react-i18next';\r\nimport { Router } from 'react-router-dom';\r\n\r\nimport { HabitatProvider } from '@react/shared/HabitatContext';\r\n\r\nimport i18n from '../i18n';\r\n\r\nconst history = createHistory({\r\n basename: window.location.pathname,\r\n});\r\n\r\nclass CustomDomFactory {\r\n inject(module, props = {}, target) {\r\n if (target) {\r\n const habitatProps = { ...props };\r\n\r\n // Remove reference to proxy dom element.\r\n delete habitatProps.proxy;\r\n\r\n const root = (\r\n \r\n \r\n {React.createElement(module, props)}\r\n \r\n \r\n );\r\n\r\n render(root, target);\r\n }\r\n }\r\n\r\n dispose(target) {\r\n if (target) {\r\n unmountComponentAtNode(target);\r\n }\r\n }\r\n}\r\n\r\nexport default CustomDomFactory;\r\n","/** React components to be registered with react-habitat. */\r\nexport default [\r\n {\r\n name: 'high-output',\r\n component: () => import(/* webpackChunkName: \"high-output-component\" */ './components/high-output/high-output'),\r\n },\r\n {\r\n name: 'product-reviews',\r\n component: () => import(/* webpackChunkName: \"product-reviews\" */ './components/product-reviews/ProductReviews'),\r\n },\r\n {\r\n name: 'jss-product-reviews',\r\n component: () => import(/* webpackChunkName: \"jss-product-reviews\" */ './components/product-reviews/JSSProductReviews'),\r\n },\r\n {\r\n name: 'promo-product-listing',\r\n component: () =>\r\n import(/* webpackChunkName: \"promo-product-listing\" */ './components/product-listing/roots/PromotionListingRoot'),\r\n },\r\n {\r\n name: 'trades-product-listing',\r\n component: () =>\r\n import(/* webpackChunkName: \"trades-product-listing\" */ './components/product-listing/roots/TradesListingRoot'),\r\n },\r\n {\r\n name: 'product-listing',\r\n component: () => import(/* webpackChunkName: \"product-listing\" */ './components/product-listing/roots/ProductListingRoot'),\r\n },\r\n {\r\n name: 'product-range',\r\n component: () => import(/* webpackChunkName: \"product-range\" */ './components/product-listing/roots/ProductRangeRoot'),\r\n },\r\n {\r\n name: 'product-search-results',\r\n component: () =>\r\n import(/* webpackChunkName: \"product-search-results\" */ './components/product-listing/roots/ProductSearchResultsRoot'),\r\n },\r\n {\r\n name: 'trade-cards',\r\n component: () => import(/* webpackChunkName: \"trade-cards\" */ './components/trades/TradeCardsRoot'),\r\n },\r\n {\r\n name: 'whats-new-product-list',\r\n component: () =>\r\n import(/* webpackChunkName: \"whats-new-product-list\" */ './components/product-listing/roots/WhatsNewProductListingRoot'),\r\n },\r\n {\r\n name: 'store-locator',\r\n component: () => import(/* webpackChunkName: \"store-locator\" */ './components/store-locator/StoreLocatorRoot'),\r\n },\r\n {\r\n name: 'high-output-standalone-graphs',\r\n component: () => import(/* webpackChunkName: \"high-output-standalone-graphs\" */ './components/high-output/compare/compare'),\r\n },\r\n {\r\n name: 'preferences',\r\n component: () => import(/* webpackChunkName: \"preferences\" */ './components/preferences/PreferencesRoot'),\r\n },\r\n {\r\n name: 'packout-gallery',\r\n component: () => import(/* webpackChunkName: \"packout-galleries\" */ './packout-gallery/PackoutGallery'),\r\n },\r\n {\r\n name: 'mx-360',\r\n component: () => import(/* webpackChunkName: \"mx-360\" */ './components/mx360/Mx360'),\r\n },\r\n {\r\n name: 'mx-calculator',\r\n component: () => import(/* webpackChunkName: \"mx-calculator\" */ './components/mx-calculator/CalculatorRoot'),\r\n },\r\n {\r\n name: 'product-pin-banner',\r\n component: () => import(/* webpackChunkName: \"product-pin-banner\" */ './components/product-pin-banner/ProductPinBanner'),\r\n },\r\n {\r\n name: 'video-library',\r\n component: () => import(/* webpackChunkName: \"video-library\" */ './components/video-library/VideoLibraryRoot'),\r\n },\r\n {\r\n name: 'dc-tabbed-tools',\r\n component: () => import(/* webpackChunkName: \"dc-tabbed-tools\" */ './components/tabbed-tools/TabbedToolsRoot'),\r\n },\r\n];\r\n","import { Bootstrapper } from 'react-habitat';\r\n\r\nimport CustomContainerBuilder from '@react/CustomContainerBuilder';\r\nimport CustomDomFactory from '@react/CustomDomFactory';\r\nimport registrations from '@react/registrations';\r\n\r\nclass MyApp extends Bootstrapper {\r\n constructor() {\r\n super();\r\n\r\n // Create container builder instance.\r\n const containerBuilder = new CustomContainerBuilder();\r\n\r\n // Set a custom factory to handle any context providers.\r\n containerBuilder.factory = new CustomDomFactory();\r\n\r\n // Register components - async allows for code splitting.\r\n registrations.forEach(registration => {\r\n containerBuilder.registerIfPresent(registration.component, registration.name);\r\n });\r\n\r\n // Finally, set the container.\r\n this.setContainer(containerBuilder.build());\r\n }\r\n}\r\n\r\n// Always export a 'new' instance so it immediately evokes\r\nexport default new MyApp();\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\n\r\nconst HabitatContext = React.createContext({});\r\n\r\n/** Provide the habitat props to child components. */\r\nconst HabitatProvider = ({ children, habitat }) => (\r\n {children}\r\n);\r\n\r\nHabitatProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n habitat: PropTypes.object,\r\n};\r\n\r\nHabitatProvider.defaultProps = {\r\n habitat: {},\r\n};\r\n\r\n/** Hook to inject habitat data. */\r\nexport const useHabitat = () => {\r\n const contextValue = useContext(HabitatContext);\r\n return contextValue;\r\n};\r\n\r\n/**\r\n * HOC to inject habitat data.\r\n * @description https://reactjs.org/docs/higher-order-components.html\r\n */\r\nconst withHabitat = (WrappedComponent) => {\r\n const WithHabitat = ({ ...otherProps }) => (\r\n \r\n {habitatProps => }\r\n \r\n );\r\n\r\n WithHabitat.displayName = `WithHabitat(${getDisplayName(WrappedComponent)})`;\r\n\r\n return WithHabitat;\r\n};\r\n\r\n/** Get the display name for the component. */\r\nfunction getDisplayName(WrappedComponent) {\r\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n}\r\n\r\nexport { HabitatProvider, withHabitat };\r\n"],"sourceRoot":""}