{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"PropTypes\"","webpack:///external \"React\"","webpack:///./node_modules/invariant/browser.js","webpack:///./assets/src/js/reducers/reducer-functions.js","webpack:///./assets/src/js/actions/filter-actions.js","webpack:///./assets/src/js/modules/widen-gallery.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/redux/es/createStore.js","webpack:///./node_modules/redux/es/combineReducers.js","webpack:///./node_modules/redux/es/bindActionCreators.js","webpack:///./node_modules/redux/es/compose.js","webpack:///./node_modules/redux/es/applyMiddleware.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./assets/src/js/client.js","webpack:///external \"ReactDOM\"","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./assets/src/js/middleware/general-middleware.js","webpack:///./assets/src/js/reducers/blog-article-reducers.js","webpack:///./assets/src/js/modules/accessibility/visible-content.js","webpack:///./assets/src/js/reducers/media-gallery-reducers.js","webpack:///./assets/src/js/components/blog-articles/BlogArticlesContainer.jsx","webpack:///./assets/src/js/components/blog-articles/BlogArticles.jsx","webpack:///./assets/src/js/utils/string-utils.js","webpack:///./assets/src/js/components/pagination/Pagination.jsx","webpack:///./assets/src/js/components/pagination/PaginationList.jsx","webpack:///./assets/src/js/utils/browser-history-utils.js","webpack:///./assets/src/js/components/ErrorBoundry.jsx","webpack:///./assets/src/js/components/media-gallery/MediaGalleryContainer.jsx","webpack:///./assets/src/js/actions/modal-actions.js","webpack:///./assets/src/js/components/media-gallery/MediaGallery.jsx","webpack:///./assets/src/js/components/media-gallery-filters/FilterList.jsx","webpack:///./assets/src/js/components/media-gallery-filters/FilterTab.jsx","webpack:///./assets/src/js/modules/widen-gallery-filters.js","webpack:///./assets/src/js/modules/in-page-nav.js","webpack:///./assets/src/js/utils/url-utils.js","webpack:///./assets/src/js/modules/lazyload.js","webpack:///./assets/src/js/components/media-gallery/MediaGalleryList.jsx","webpack:///./assets/src/js/components/media-gallery/MediaGalleryListItem.jsx","webpack:///./assets/src/js/components/media-gallery/MediaGalleryImage.jsx","webpack:///./assets/src/js/components/media-gallery/MediaGalleryVideo.jsx","webpack:///./assets/src/js/components/modal/Modal.jsx","webpack:///./assets/src/js/utils/social-media-sharing.js","webpack:///./assets/src/js/modules/accessibility/tab-order.js","webpack:///./assets/src/js/modules/toggle-content-to-modal.js","webpack:///./assets/src/js/modules/site-modal.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","PropTypes","React","condition","format","a","b","e","f","error","undefined","Error","args","argIndex","replace","framesToPop","filterToggleClick","filterToggle","state","mediaButtonClick","action","event","nativeEvent","stopImmediatePropagation","newFilters","assign","filters","keys","map","filterName","active","buttonClick","closeAllDropdowns","filterClick","newSelectedFilters","selectedFilters","newSelectedFilterArray","filterKey","options","optionItem","option","type","isChecked","concat","filter","removeFilter","clearFilters","clearSecondaryFilters","showAllFilterItems","showMore","isHidden","filterArticleItems","articleItems","newArticleItems","categoryFilter","length","some","item","articleCategories","category","filterProductStyles","productStyles","newProductStyles","productLineFilter","style","productLineName","colorRangeFilter","colorRanges","range","priceFilter","priceRatings","rating","opacityFilter","opacityRatings","energyEfficiencyFilter","energyEfficiencyRatings","choiceFilter","popularChoicesForStyle","isFilterInList","list","split","find","getPager","filterMediaItems","mediaItems","newMediaItems","imagesVideosFilter","slice","productTypeFilter","productType","colorRange","addMediaItems","assetLoadComplete","openModal","newModal","modal","mediaItem","id","assetId","savedItems","savedItem","indexOf","hideGalleryPageContentFromScreenReader","closeModal","reenableGalleryPageContent","totalItems","currentPage","pageSize","totalPages","Math","ceil","startPage","endPage","startIndex","endIndex","min","pages","Array","setPage","newPageOfItems","pageOfItems","newPager","pager","page","mediaLoadOffset","mediaLoadCallback","onMediaLoadComplete","mediaLoadLimit","flattenMetaDataArray","arr","toString","getFirstMetaDataArrayValue","getAssetDescription","desc","getProductType","forEach","toLowerCase","getFilename","filename","substr","lastIndexOf","getUrlForWidth","width","getMediaItemData","onInitLoadComplete","window","requestUrl","galleryWidenQueryParams","request","XMLHttpRequest","url","requestMethod","encodeURIComponent","urlDataParam","additionalHeader","open","setRequestHeader","onload","status","data","JSON","parse","responseText","items","file_properties","format_type","MediaGalleryData","push","imageUrl","external_id","imageAlt","title","description","metadata","fields","sunSetterProducts","columnSize","videoFileName","posterImage","videoUrl","parseImageData","totalCt","parseInt","total_count","itemsLoaded","onerror","console","log","send","init","callback","setMediaLoadCallback","setMediaLoadCompleteCallback","getIdFromAssetUrl","fragment","match","updateAssetUrlDimensions","asset","urlDims","isNaN","height","getDimensionsFromAssetUrl","src","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","constructor","subscriptionShape","shape","trySubscribe","func","isRequired","tryUnsubscribe","notifyNestedSubs","isSubscribed","storeShape","subscribe","dispatch","getState","forwardRef","createProvider","storeKey","_Provider$childContex","subscriptionKey","Provider","_Component","_proto","props","context","_this","this","store","getChildContext","_ref","render","only","children","propTypes","element","childContextTypes","_assertThisInitialized","self","ReferenceError","_extends","target","arguments","source","apply","_objectWithoutPropertiesLoose","excluded","sourceKeys","nullListeners","notify","Subscription","parentSub","onStateChange","unsubscribe","listeners","addNestedSub","listener","Boolean","current","next","clear","splice","hotReloadingVersion","dummyState","noop","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","version","contextTypes","WrappedComponent","stringify","wrappedComponentName","displayName","selectorFactoryOptions","Connect","renderCount","propsMode","setWrappedInstance","initSelector","initSubscription","_ref3","subscription","componentDidMount","selector","run","shouldComponentUpdate","forceUpdate","componentWillReceiveProps","nextProps","componentWillUnmount","getWrappedInstance","wrappedInstance","ref","sourceSelector","makeSelectorStateful","componentDidUpdate","notifyNestedSubsOnComponentDidUpdate","setState","addExtraProps","withExtras","UNSAFE_componentWillReceiveProps","hasOwn","is","x","y","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","arg","factories","result","strictEqual","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","freeSelf","Function","objectProto","nativeObjectToString","symToStringTag","isOwn","tag","unmasked","transform","getPrototypeOf","funcProto","funcToString","objectCtorString","proto","Ctor","ActionTypes","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","index","replaceReducer","nextReducer","outerSubscribe","observer","TypeError","observeState","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","random","substring","join","assertReducerShape","hasChanged","_i","_key","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","_len","funcs","reduce","applyMiddleware","middlewares","createStore","chain","_dispatch","middlewareAPI","middleware","root","global","g","reactIs","REACT_STATICS","contextType","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","symbolObservablePonyfill","observable","freeGlobal","WidenGallery","FilterActions","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","document","getElementById","mediaGalleryStore","mediaGalleryReducers","initialState","logger","crashReporter","ReactDom","createElement","ErrorBoundry","MediaGalleryContainer","blogArticleStore","blogArticleReduceres","ArticleData","articleFilters","noResultsMessage","articlesListLinkText","BlogArticlesContainer","ReactDOM","for","h","k","q","v","w","z","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","originalModule","webpackPolyfill","err","App","hiddenGalleryPageContent","selectors","querySelectorAll","setAttribute","classList","add","modalDiv","querySelector","append","removeAttribute","remove","connect","BlogArticles","optionState","hash","encodeKebabCase","onChangePage","sortOnUrlHash","handleFilterChange","location","className","htmlFor","onChange","aria-selected","article","href","articleLink","onClick","setBlogPageClick","primaryImage","alt","primaryImageAltTag","articleTitle","dangerouslySetInnerHTML","__html","Component","string","capitalizeFirstLetter","str","charAt","toUpperCase","formatInDollars","num","toFixed","isJson","Pagination","initialPage","prevProps","arrayOf","number","PaginationList","localStorage","setItem","checkBlogPageClick","getItem","goBackToPreviousPage","fallbackPage","removeItem","history","back","hasError","info","ModalActions","MediaGallery","LightGalleryUtils","isComplete","isDynamicLoad","lgDiv","getHashItem","hashId","hashItem","onUpdate","detail","onClose","lightGallery","lgData","pushState","pathname","search","lgUid","getAttribute","destroy","counter","download","keyPress","preload","share","speed","addEventListener","dynamic","dynamicEl","itemsAdded","allAssetsLoaded","currentMediaItems","lg","update","setTimeout","ToggleContentToModal","callbacks","onOpen","modalId","toggleSelector","toggleContent","content","modalSelector","defaultSelector","isNewMediaData","secondaryFilters","tabItemClick","mediaOptions","showVideos","role","FilterTabItem","productRatingImagePath","aria-live","FilterSetList","handleMediaClick","handleModalClick","updateModal","bool","FilterSelectionListItem","liClass","labelClass","inputName","checked","image","FilterSelectionList","aria-labelledby","FilterSetListItem","aria-expanded","aria-controls","sort","keyA","keyB","order","FilterSelectBoxItem","filterLists","formatToKebobCase","addItemToList","names","filterType","inputType","filterList","addFilterItemByName","buildFilterObjects","inPageNavDiv","headerDiv","headerContentDiv","anchors","addOffsetDiv","promoBar","initLoadHeaderOffset","inPageNavYPos","offsetTop","updateOffsetHeight","innerWidth","headerFixedOffset","headerOffset","clientHeight","pageYOffset","top","marginTop","offsetHeight","updateAnchorOffset","offset","getAnchorPosition","anchor","div","contains","scrollToPosition","pos","scrollTo","behavior","updateHashAfterDelay","innerHeight","body","anchorName","setAsActive","parentNode","currentActive","param","getParameterByName","btn","urlMatch","preventDefault","detectProduction","results","RegExp","exec","decodeURIComponent","lazyLoadHandler","lazyloadThrottleTimeout","images","clearTimeout","scrollTop","img","dataset","removeEventListener","imageObserver","IntersectionObserver","entries","entry","isIntersecting","srcset","unobserve","rootMargin","threshold","observe","MediaGalleryList","noMatchesErrorMessage","tabIndex","MediaGalleryListItem","data-src","video","MediaGalleryImage","data-props","data-description","data-image-url","aria-label","MediaGalleryVideo","data-video-title","data-video-description","data-video-iframe","data-video-id","aria-hidden","Modal","captionMinimized","modalClickHandler","captionTitlebarClickHandler","handleResize","captionRef","createRef","setModalFocus","bottom","lightGalleryCloseBtn","emailShareBtn","captionTitlebar","focus","setTabFocus","nextElement","prevElement","contentHeight","btnSelector","galleryItemBtn","setCaptionPosition","resetGalleryFocus","PhotoShareUrl","origin","shareLink","modalImg","closeBtnRef","allowFullScreen","getFacebookShareUrl","rel","getFacebookIconUrl","getTwitterShareUrl","getTwitterIconUrl","getPinterestShareUrl","getPinterestIconUrl","getEmailShareUrl","getEmailIconUrl","getAssetSharingHtml","onBlur","nextSelector","shiftKey","keyCode","prevSelector","getSelectorString","prevWinWidth","mobileBrkpt","toggleBtn","SiteModal","onResize","updateContentOnResize","detatchFromModal","close","appendToModal","isOpen","previousElementInFocus","closeSelectors","disableOverlayClick","onDocumentModalKeyUp","contentDiv","altContentDiv","updateHeight","resetFocus","setPreviousElementInFocus","activeElement"],"mappings":"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","file":"client.bundle.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","module.exports = PropTypes;","module.exports = React;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","import {\n hideGalleryPageContentFromScreenReader,\n reenableGalleryPageContent,\n} from '../modules/accessibility/visible-content';\n\n// Reducer Functions\nexport const filterToggleClick = state => ({ filterToggle: !state.filterToggle });\n\nexport const mediaButtonClick = (state, action) => {\n action.event.nativeEvent.stopImmediatePropagation();\n const newFilters = Object.assign({}, state.filters);\n\n Object.keys(newFilters).map((key) => {\n if (typeof newFilters[key] !== 'string') {\n if (newFilters[key].name === action.filterName) {\n if (newFilters[key].active === false) {\n newFilters[key].active = true;\n } else {\n newFilters[key].active = false;\n }\n }\n }\n return false;\n });\n\n return {\n filters: newFilters,\n };\n};\n\nexport const buttonClick = (state, action) => {\n action.event.nativeEvent.stopImmediatePropagation();\n const newFilters = Object.assign({}, state.filters);\n\n Object.keys(newFilters).map((key) => {\n if (typeof newFilters[key] !== 'string') {\n if (newFilters[key].name === action.filterName) {\n if (newFilters[key].active === false) {\n newFilters[key].active = true;\n } else {\n newFilters[key].active = false;\n }\n }\n if (newFilters[key].name !== action.filterName) {\n newFilters[key].active = false;\n }\n }\n return false;\n });\n\n return {\n filters: newFilters,\n };\n};\n\nexport const closeAllDropdowns = (state) => {\n const newFilters = Object.assign({}, state.filters);\n\n Object.keys(newFilters).map((key) => {\n if (typeof newFilters[key] !== 'string') {\n newFilters[key].active = false;\n }\n return false;\n });\n\n return {\n filters: newFilters,\n };\n};\n\nexport const filterClick = (state, action) => {\n const newFilters = Object.assign({}, state.filters);\n const newSelectedFilters = Object.assign({}, state.selectedFilters);\n let newSelectedFilterArray = [];\n\n Object.keys(newFilters).map((filterKey) => {\n if (typeof newFilters[filterKey] !== 'string') {\n newFilters[filterKey].options.map((optionItem) => {\n if (action.option.type === 'radio') {\n if (action.option.name === optionItem.name) {\n optionItem.isChecked = true;\n newSelectedFilters[filterKey] = (action.option.name === 'All' ? [] : [action.option.name]);\n } else {\n optionItem.isChecked = false;\n }\n }\n\n if (action.option.type === 'checkbox') {\n if (action.option.isChecked === false && action.option.name === optionItem.name) {\n optionItem.isChecked = true;\n newSelectedFilterArray = newSelectedFilters[filterKey].concat(action.option.name);\n newSelectedFilters[filterKey] = newSelectedFilterArray;\n } else if (action.option.isChecked === true && action.option.name === optionItem.name) {\n optionItem.isChecked = false;\n newSelectedFilterArray = newSelectedFilters[filterKey].filter(key => key !== action.option.name);\n newSelectedFilters[filterKey] = newSelectedFilterArray;\n } else {\n return false;\n }\n }\n return false;\n });\n }\n return false;\n });\n\n return {\n filters: newFilters,\n selectedFilters: newSelectedFilters,\n };\n};\n\nexport const removeFilter = (state, action) => {\n const newFilters = Object.assign({}, state.filters);\n const newSelectedFilters = Object.assign({}, state.selectedFilters);\n let newSelectedFilterArray = [];\n\n Object.keys(newFilters).map((filterKey) => {\n if (typeof newFilters[filterKey] !== 'string') {\n newFilters[filterKey].options.map((optionItem) => {\n if (action.filterName === optionItem.name) {\n optionItem.isChecked = false;\n newSelectedFilterArray = newSelectedFilters[filterKey].filter(key => key !== action.filterName);\n newSelectedFilters[filterKey] = newSelectedFilterArray;\n }\n return false;\n });\n }\n return false;\n });\n\n return {\n filters: newFilters,\n selectedFilters: newSelectedFilters,\n };\n};\n\nexport const clearFilters = (state) => {\n const newFilters = Object.assign({}, state.filters);\n const newSelectedFilters = Object.assign({}, state.selectedFilters);\n\n Object.keys(newFilters).map((filterKey) => {\n if (typeof newFilters[filterKey] !== 'string') {\n newFilters[filterKey].options.map((optionItem) => {\n if (optionItem.type === 'radio' && optionItem.value === 'All') {\n optionItem.isChecked = true;\n } else {\n optionItem.isChecked = false;\n }\n return false;\n });\n }\n return false;\n });\n\n Object.keys(newSelectedFilters).map((filterKey) => {\n newSelectedFilters[filterKey] = [];\n return false;\n });\n\n return {\n filters: newFilters,\n selectedFilters: newSelectedFilters,\n };\n};\n\nexport const clearSecondaryFilters = (state) => {\n // Do not want clearFilters to remove filter for Images/Videos\n const newFilters = Object.assign({}, state.filters);\n const newSelectedFilters = Object.assign({}, state.selectedFilters);\n\n Object.keys(newFilters).map((filterKey) => {\n if (typeof newFilters[filterKey] !== 'string') {\n if (newFilters[filterKey].name === 'Images Or Videos') {\n return false;\n }\n newFilters[filterKey].options.map((optionItem) => {\n if (optionItem.type === 'radio' && optionItem.value === 'All') {\n optionItem.isChecked = true;\n } else {\n optionItem.isChecked = false;\n }\n return false;\n });\n }\n return false;\n });\n\n Object.keys(newSelectedFilters).map((filterKey) => {\n if (newFilters[filterKey].name !== 'Images Or Videos') {\n newSelectedFilters[filterKey] = [];\n }\n return false;\n });\n\n return {\n filters: newFilters,\n selectedFilters: newSelectedFilters,\n };\n};\n\nexport const showAllFilterItems = (state, action) => {\n const newFilters = Object.assign({}, state.filters);\n const newSelectedFilters = Object.assign({}, state.selectedFilters);\n\n Object.keys(newFilters).map((filterKey) => {\n if (newFilters[filterKey].name === action.filterName) {\n // Hide 'Show More' button\n newFilters[filterKey].showMore = false;\n // Show all options\n newFilters[filterKey].options.map((optionItem) => {\n optionItem.isHidden = false;\n return false;\n });\n }\n return false;\n });\n\n return {\n filters: newFilters,\n selectedFilters: newSelectedFilters,\n };\n};\n\nexport const filterArticleItems = (articleItems, state) => {\n const newArticleItems = articleItems.filter(item => (\n (state.selectedFilters.categoryFilter.length === 0 || state.selectedFilters.categoryFilter.some(filter => item.articleCategories.some(category => category.name === filter)))\n ));\n\n return {\n filters: state.filters,\n selectedFilters: state.selectedFilters,\n articleItems: newArticleItems,\n };\n};\n\nexport const filterProductStyles = (productStyles, state) => {\n const newProductStyles = productStyles.filter(style => (\n (state.selectedFilters.productLineFilter.length === 0 || state.selectedFilters.productLineFilter.some(filter => style.productLineName === filter)) &&\n (state.selectedFilters.colorRangeFilter.length === 0 || state.selectedFilters.colorRangeFilter.some(filter => style.colorRanges.some(range => range.name === filter))) &&\n (state.selectedFilters.priceFilter.length === 0 || state.selectedFilters.priceFilter.some(filter => style.priceRatings.some(rating => rating.name === filter))) &&\n (state.selectedFilters.opacityFilter.length === 0 || state.selectedFilters.opacityFilter.some(filter => style.opacityRatings.some(rating => rating.name === filter))) &&\n (state.selectedFilters.energyEfficiencyFilter.length === 0 || state.selectedFilters.energyEfficiencyFilter.some(filter => style.energyEfficiencyRatings.some(rating => rating.name === filter))) &&\n (state.selectedFilters.choiceFilter.length === 0 || state.selectedFilters.choiceFilter.some(filter => style.popularChoicesForStyle.some(rating => rating.name === filter)))\n ));\n\n return {\n filters: state.filters,\n selectedFilters: state.selectedFilters,\n productStyles: newProductStyles,\n };\n};\n\nconst isFilterInList = (filter, list) => {\n const arr = list.split(',');\n if (arr.find(item => item === filter)) {\n return true;\n }\n return false;\n};\n\nexport const filterMediaItems = (mediaItems, state) => {\n const newMediaItems = mediaItems.filter(item => (\n (state.selectedFilters.imagesVideosFilter.length === 0 || state.selectedFilters.imagesVideosFilter.some(filter => item.type === filter.slice(0, -1))) &&\n (state.selectedFilters.productTypeFilter.length === 0 || state.selectedFilters.productTypeFilter.some(filter => isFilterInList(filter, item.productType))) &&\n (state.selectedFilters.productLineFilter.length === 0 || state.selectedFilters.productLineFilter.some(filter => isFilterInList(filter, item.productLineName))) &&\n (state.selectedFilters.colorRangeFilter.length === 0 || state.selectedFilters.colorRangeFilter.some(filter => isFilterInList(filter, item.colorRange)))\n ));\n\n return {\n filters: state.filters,\n selectedFilters: state.selectedFilters,\n mediaItems: newMediaItems,\n };\n};\n\nexport const addMediaItems = (state) => {\n // Do not want clearFilters to remove filter for Images/Videos\n const newFilters = Object.assign({}, state.filters);\n const newSelectedFilters = Object.assign({}, state.selectedFilters);\n\n Object.keys(newFilters).map((filterKey) => {\n if (typeof newFilters[filterKey] !== 'string') {\n if (newFilters[filterKey].name === 'Images Or Videos') {\n return false;\n }\n newFilters[filterKey].options.map((optionItem) => {\n if (optionItem.type === 'radio' && optionItem.value === 'All') {\n optionItem.isChecked = true;\n } else {\n optionItem.isChecked = false;\n }\n return false;\n });\n }\n return false;\n });\n\n Object.keys(newSelectedFilters).map((filterKey) => {\n if (newFilters[filterKey].name !== 'Images Or Videos') {\n newSelectedFilters[filterKey] = [];\n }\n return false;\n });\n\n return {\n filters: newFilters,\n selectedFilters: newSelectedFilters,\n };\n};\n\nexport const assetLoadComplete = action => (\n { assetLoadComplete: action.event }\n);\n\nexport const openModal = (state, action) => {\n // Check if action.item is undefined...\n if (!action.item) {\n return false;\n }\n const newMediaItems = [].concat(state.mediaItems);\n const newModal = Object.assign({}, state.modal);\n newMediaItems.map((mediaItem) => {\n if (mediaItem.id === action.item.id) {\n mediaItem.active = true;\n newModal.active = true;\n newModal.item = action.item;\n }\n return false;\n });\n let assetId = '';\n if (action.savedItems) {\n const savedItem = action.savedItems.find(item => item['photo-url'].indexOf(action.item.id) !== -1);\n if (savedItem) {\n assetId = savedItem['photo-id'];\n }\n }\n // Hide page beneath modal\n hideGalleryPageContentFromScreenReader();\n return {\n mediaItems: newMediaItems,\n modal: newModal,\n assetId,\n };\n};\n\nexport const closeModal = (state) => {\n // console.log(action);\n // Show page beneath modal\n reenableGalleryPageContent();\n const newMediaItems = [].concat(state.mediaItems);\n const newModal = Object.assign({}, state.modal);\n\n newMediaItems.map((mediaItem) => {\n // if (mediaItem.id === action.item.id) {\n mediaItem.active = false;\n newModal.active = false;\n // newModal.item = state.initialState.modal.item;\n // }\n return mediaItem;\n });\n\n return {\n mediaItems: newMediaItems,\n modal: newModal,\n };\n};\n\nexport const getPager = (totalItems, currentPage, pageSize) => {\n /* eslint-disable no-param-reassign */\n // default to first page\n currentPage = currentPage || 1;\n\n // default page size is 10\n pageSize = pageSize || 12;\n /* eslint-enable no-param-reassign */\n\n // calculate total pages\n const totalPages = Math.ceil(totalItems / pageSize);\n\n let startPage;\n let endPage;\n\n if (totalPages > 5) {\n // more than 10 total pages so calculate start and end pages\n if (currentPage <= 3) {\n startPage = 1;\n endPage = 5;\n } else if (currentPage + 2 >= totalPages) {\n startPage = totalPages - 4;\n endPage = totalPages;\n } else {\n startPage = currentPage - 3;\n endPage = currentPage + 2;\n }\n } else {\n // less than 10 total pages so show all\n startPage = 1;\n endPage = totalPages;\n }\n\n // calculate start and end item indexes\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = Math.min((startIndex + pageSize) - 1, totalItems - 1);\n\n // create an array of pages to ng-repeat in the pager control\n const pages = [...Array((endPage + 1) - startPage).keys()].map(i => startPage + i);\n\n // return object with all pager properties required by the view\n return {\n totalItems,\n currentPage,\n pageSize,\n totalPages,\n startPage,\n endPage,\n startIndex,\n endIndex,\n pages,\n };\n};\n\nexport const setPage = (state, action) => {\n const newPageOfItems = [].concat(state.pageOfItems);\n const newPager = Object.assign({}, state.pager);\n\n if (action.page < 1 || action.page > state.pager.totalPages) {\n return {\n pageOfItems: newPageOfItems,\n pager: newPager,\n };\n }\n\n // get new pager object for specified page\n const pager = getPager(state.mediaItems.length, action.page, state.pageSize);\n\n // get new page of mediaItems from mediaItems array\n const pageOfItems = state.mediaItems.slice(pager.startIndex, pager.endIndex + 1);\n\n // update state\n return {\n pageOfItems,\n pager,\n };\n};\n","// Filter Actions\nexport const filterToggleClick = () => ({\n type: 'FILTER_TOGGLE_CLICK',\n});\n\nexport const mediaButtonClick = (event, filterName) => ({\n type: 'MEDIA_BUTTON_CLICK',\n event,\n filterName,\n});\n\nexport const buttonClick = (event, filterName) => ({\n type: 'FILTER_BUTTON_CLICK',\n event,\n filterName,\n});\n\nexport const closeAllDropdowns = () => ({\n type: 'CLOSE_ALL_DROPDOWNS',\n});\n\nexport const filterClick = option => ({\n type: 'SELECT_FILTER',\n option,\n});\n\nexport const removeFilter = filterName => ({\n type: 'REMOVE_FILTER',\n filterName,\n});\n\nexport const clearFilters = () => ({\n type: 'CLEAR_FILTERS',\n});\n\nexport const clearSecondaryFilters = () => ({\n type: 'CLEAR_SECONDARY_FILTERS',\n});\n\nexport const showAllFilterItems = (event, filterName) => ({\n type: 'SHOW_ALL_FILTER_ITEMS',\n event,\n filterName,\n});\n\nexport const addMediaItems = () => ({\n type: 'ADD_MEDIA_ITEMS',\n});\n\nexport const assetLoadComplete = event => ({\n type: 'ASSET_LOAD_COMPLETE',\n event,\n});\n","/* eslint-disable no-console, no-restricted-globals */\nimport getWidenGalleryFilterData from './widen-gallery-filters';\n\nlet mediaLoadOffset = 0;\nlet mediaLoadCallback;\nlet onMediaLoadComplete;\nlet mediaLoadLimit = 25; // Only load 25 initially to build out gallery, then switch to max allowed (100)\n\nconst setMediaLoadCallback = (callback) => {\n mediaLoadCallback = callback;\n};\n\nconst setMediaLoadCompleteCallback = (callback) => {\n onMediaLoadComplete = callback;\n};\n\nconst getDimensionsFromAssetUrl = (url) => {\n // Returns object w/ width/height or null... should be at position 6 in array\n const a = url.split('/');\n if (a[6] !== undefined) {\n if (a[6].indexOf('px') !== -1 && !isNaN(parseInt(a[6], 10))) {\n const b = a[6].split('x');\n return {\n width: parseInt(b[0], 10),\n height: parseInt(b[1], 10),\n };\n }\n }\n return null;\n};\n\nconst updateAssetUrlDimensions = (asset) => {\n const urlDims = getDimensionsFromAssetUrl(asset.src);\n if (urlDims !== null) {\n return asset.src\n .replace(`${urlDims.width}x`, `${asset.width}x`)\n .replace(`${urlDims.height}px`, `${asset.height}px`);\n }\n return asset.src;\n};\n\nconst getIdFromAssetUrl = (url) => {\n const fragment = url.match(/springswindowfashions\\/(.*?)\\//);\n if (fragment !== null) {\n return fragment[1];\n }\n return url;\n};\n\nconst flattenMetaDataArray = arr => (\n arr.toString(',')\n);\n\nconst getFirstMetaDataArrayValue = (arr) => {\n if (arr.length === 0) {\n return '';\n }\n return arr[0];\n};\n\nconst getAssetDescription = (arr) => {\n const desc = getFirstMetaDataArrayValue(arr);\n if (desc !== '') {\n return desc;\n }\n return 'A outdoor scene featuring products by SunSetter.';\n};\n\nconst getProductType = (arr) => {\n let name = 'Awnings';\n arr.forEach((item) => {\n if (item.toLowerCase().indexOf('easyshade') !== -1) {\n name = 'EasyShades';\n }\n });\n return name;\n};\n\nconst getFilename = (filename) => {\n const name = filename;\n if (name.indexOf('.') !== -1) {\n return name.substr(0, name.lastIndexOf('.'));\n }\n return name;\n};\n\nconst getUrlForWidth = (filename, id, width) => {\n const name = getFilename(filename).replace(/\\s/g, '%20');\n return `https://embed.widencdn.net/img/springswindowfashions/${id}/${width}px/${name}.jpg`;\n};\n\nconst parseImageData = (data) => {\n // console.log(data.items);\n data.items.forEach((item) => {\n // console.log(`${item.external_id} / ${flattenMetaDataArray(item.metadata.fields.sunSetterProducts)}`);\n if (item.file_properties.format_type === 'image') {\n window.MediaGalleryData.mediaItems.push({\n imageUrl: getUrlForWidth(item.filename, item.external_id, 1024),\n imageAlt: '',\n filename: getFilename(item.filename),\n title: item.id,\n id: item.external_id,\n type: 'Image',\n description: getAssetDescription(item.metadata.fields.description),\n productLineName: flattenMetaDataArray(item.metadata.fields.sunSetterProducts),\n productType: getProductType(item.metadata.fields.sunSetterProducts),\n colorRange: flattenMetaDataArray(item.metadata.fields.colorRange),\n columnSize: 'col-xs-12 col-sm-4',\n active: false,\n });\n } else if (item.file_properties.format_type === 'video') {\n const videoFileName = item.filename.replace(/\\s/gi, '%20');\n const posterImage = `https://embed.widencdn.net/poster/640/springswindowfashions/${item.external_id}/${videoFileName}`;\n window.MediaGalleryData.mediaItems.push({\n videoUrl: `https://embed.widencdn.net/video/springswindowfashions/${item.external_id}/${videoFileName}`,\n posterImage,\n id: item.external_id,\n type: 'Video',\n title: getFirstMetaDataArrayValue(item.metadata.fields.description),\n description: '',\n productLineName: '',\n productType: '',\n colorRange: '',\n columnSize: 'col-xs-12 col-sm-4',\n active: false,\n });\n }\n });\n // console.log(window.MediaGalleryData.mediaItems);\n};\n\nconst getMediaItemData = (onInitLoadComplete) => {\n const { requestUrl, galleryWidenQueryParams } = window;\n const request = new XMLHttpRequest();\n let url = requestUrl;\n let requestMethod = 'POST';\n if (window.requestMethod) {\n requestMethod = window.requestMethod; /* eslint-disable-line prefer-destructuring */\n }\n const urlDataParam = `?query=${galleryWidenQueryParams}&limit=${mediaLoadLimit}&offset=${mediaLoadOffset}&expand=file_properties,metadata`;\n url = `${requestUrl}?data=${encodeURIComponent(urlDataParam)}`;\n if (window.additionalHeader) {\n url = `${requestUrl}${galleryWidenQueryParams}&limit=${mediaLoadLimit}&offset=${mediaLoadOffset}&expand=file_properties,metadata`;\n }\n request.open(requestMethod, url, true);\n request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n if (window.additionalHeader) {\n request.setRequestHeader(window.additionalHeader.name, window.additionalHeader.value);\n }\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const data = JSON.parse(request.responseText);\n parseImageData(data);\n const totalCt = parseInt(data.total_count, 10);\n const itemsLoaded = window.MediaGalleryData.mediaItems.length;\n // Run first time only\n if (onInitLoadComplete !== undefined) {\n onInitLoadComplete();\n }\n // Run everytime\n if (mediaLoadCallback !== undefined) {\n mediaLoadCallback();\n }\n // Run last time/on complete\n if (itemsLoaded === totalCt && onMediaLoadComplete !== undefined) {\n window.MediaGalleryData.filters = getWidenGalleryFilterData(window.MediaGalleryData.mediaItems);\n onMediaLoadComplete();\n }\n // Load additional content\n if (itemsLoaded < totalCt) {\n mediaLoadOffset += mediaLoadLimit;\n mediaLoadLimit = 100;\n getMediaItemData();\n }\n }\n };\n request.onerror = () => {\n console.log(request);\n };\n request.send();\n};\n\nconst init = (callback) => {\n window.MediaGalleryData.filters = getWidenGalleryFilterData(window.MediaGalleryData.mediaItems);\n getMediaItemData(callback);\n};\n\nexport {\n init,\n setMediaLoadCallback,\n setMediaLoadCompleteCallback,\n getMediaItemData,\n getIdFromAssetUrl,\n updateAssetUrlDimensions,\n};\n/* eslint-enable no-console, no-restricted-globals */\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Use UNSAFE_ event name where supported\n var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillReceiveProps' : 'componentWillReceiveProps';\n\n Provider.prototype[eventName] = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n }; // Note: this is renamed below to the UNSAFE_ version in React >=16.3.0\n\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n\n if (prefixUnsafeLifecycleMethods) {\n // Use UNSAFE_ event name where supported\n Connect.prototype.UNSAFE_componentWillReceiveProps = Connect.prototype.componentWillReceiveProps;\n delete Connect.prototype.componentWillReceiveProps;\n }\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n // Use UNSAFE_ event name where supported\n var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\n Connect.prototype[eventName] = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import React from 'react';\nimport ReactDom from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware, compose } from 'redux';\nimport { logger, crashReporter } from './middleware/general-middleware';\nimport blogArticleReduceres from './reducers/blog-article-reducers';\nimport mediaGalleryReducers from './reducers/media-gallery-reducers';\nimport BlogArticlesContainer from './components/blog-articles/BlogArticlesContainer';\nimport ErrorBoundry from './components/ErrorBoundry';\nimport MediaGalleryContainer from './components/media-gallery/MediaGalleryContainer';\nimport * as WidenGallery from './modules/widen-gallery';\nimport * as FilterActions from './actions/filter-actions';\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; /* eslint-disable-line no-underscore-dangle */\n\nif (document.getElementById('media-gallery-root')) {\n WidenGallery.init(() => {\n const mediaGalleryStore = createStore(\n mediaGalleryReducers, {\n initialState: {\n mediaItems: window.MediaGalleryData.mediaItems,\n modal: {\n active: false,\n item: window.MediaGalleryData.mediaItems[0],\n },\n },\n filters: window.MediaGalleryData.filters,\n mediaItems: window.MediaGalleryData.mediaItems,\n selectedFilters: {\n imagesVideosFilter: [],\n productTypeFilter: [],\n productLineFilter: [],\n colorRangeFilter: [],\n },\n filterToggle: false,\n modal: {\n active: false,\n item: window.MediaGalleryData.mediaItems[0],\n },\n assetLoadComplete: false,\n },\n composeEnhancers(applyMiddleware(logger, crashReporter)),\n );\n\n WidenGallery.setMediaLoadCallback(() => {\n mediaGalleryStore.dispatch(FilterActions.addMediaItems());\n });\n\n WidenGallery.setMediaLoadCompleteCallback(() => {\n mediaGalleryStore.dispatch(FilterActions.assetLoadComplete(true));\n });\n\n ReactDom.render(\n React.createElement(ErrorBoundry, null, React.createElement(Provider, {\n store: mediaGalleryStore,\n }, React.createElement(MediaGalleryContainer))),\n document.getElementById('media-gallery-root'),\n );\n });\n}\n\nif (document.getElementById('blog-article-root')) {\n const blogArticleStore = createStore(\n blogArticleReduceres, {\n initialState: {\n articleItems: window.ArticleData.articleItems,\n },\n filters: window.ArticleData.articleFilters,\n articleItems: window.ArticleData.articleItems,\n noResultsMessage: window.ArticleData.noResultsMessage,\n articlesListLinkText: window.ArticleData.articlesListLinkText,\n selectedFilters: {\n categoryFilter: [],\n },\n filterToggle: false,\n },\n composeEnhancers(applyMiddleware(logger, crashReporter)),\n );\n\n ReactDom.render(\n React.createElement(ErrorBoundry, null, React.createElement(Provider, {\n store: blogArticleStore,\n }, React.createElement(BlogArticlesContainer))),\n document.getElementById('blog-article-root'),\n );\n}\n","module.exports = ReactDOM;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* eslint-disable no-unused-vars */\n// General Middleware Functions\nconst logger = store => next => (action) => {\n // console.log('dispatching', action);\n const result = next(action);\n // console.log('next state', store.getState());\n return result;\n};\n\nconst crashReporter = store => next => (action) => {\n try {\n return next(action);\n } catch (err) {\n // console.error('Caught an exception!', err);\n // console.log(store.getState());\n throw err;\n }\n};\n\nexport {\n logger,\n crashReporter,\n};\n/* eslint-enable no-unused-vars */\n","// Media Gallery Reducer\nimport * as App from './reducer-functions';\n\nconst blogArticleReducer = (state = window.ArticleData, action) => {\n switch (action.type) {\n case 'FILTER_TOGGLE_CLICK':\n return Object.assign({}, state, App.filterToggleClick(state));\n case 'FILTER_BUTTON_CLICK':\n return Object.assign({}, state, App.buttonClick(state, action));\n case 'CLOSE_ALL_DROPDOWNS':\n return Object.assign({}, state, App.closeAllDropdowns(state, action));\n case 'SELECT_FILTER':\n return Object.assign({}, state, App.filterArticleItems(state.initialState.articleItems, App.filterClick(state, action)));\n\n case 'REMOVE_FILTER':\n return Object.assign({}, state, App.filterArticleItems(state.initialState.articleItems, App.removeFilter(state, action)));\n case 'CLEAR_FILTERS':\n return Object.assign({}, state, App.filterArticleItems(state.initialState.articleItems, App.clearFilters(state)));\n\n default:\n return state;\n }\n};\n\nexport default blogArticleReducer;\n","const hiddenGalleryPageContent = '.be-ix-link-block, header, footer, #main-content, .skip-to-main-content, .usabilla_live_button_container';\n\nconst hideGalleryPageContentFromScreenReader = () => {\n const selectors = document.querySelectorAll(hiddenGalleryPageContent);\n [].map.call(selectors, (item) => {\n item.setAttribute('aria-hidden', 'true');\n item.classList.add('hidden');\n });\n const modalDiv = document.querySelector('.gallery-modal-container');\n const modalWrapper = document.querySelector('body');\n modalWrapper.append(modalDiv);\n};\n\nconst reenableGalleryPageContent = () => {\n const selectors = document.querySelectorAll(hiddenGalleryPageContent);\n [].map.call(selectors, (item) => {\n item.removeAttribute('aria-hidden');\n item.classList.remove('hidden');\n });\n const modalDiv = document.querySelector('.gallery-modal-container');\n const modalWrapper = document.querySelector('.media-gallery-container');\n modalWrapper.append(modalDiv);\n};\n\nexport {\n hideGalleryPageContentFromScreenReader,\n reenableGalleryPageContent,\n};\n","// Media Gallery Reducer\nimport * as App from './reducer-functions';\n\nconst mediaGalleryReducer = (state = window.MediaGalleryData, action) => {\n switch (action.type) {\n case 'FILTER_TOGGLE_CLICK':\n return Object.assign({}, state, App.filterToggleClick(state));\n\n case 'MEDIA_BUTTON_CLICK':\n return Object.assign({}, state, App.mediaButtonClick(state, action));\n\n case 'FILTER_BUTTON_CLICK':\n return Object.assign({}, state, App.buttonClick(state, action));\n\n case 'CLOSE_ALL_DROPDOWNS':\n return Object.assign({}, state, App.closeAllDropdowns(state, action));\n\n case 'SELECT_FILTER':\n return Object.assign({}, state, App.filterMediaItems(state.initialState.mediaItems, App.filterClick(state, action)));\n\n case 'REMOVE_FILTER':\n return Object.assign({}, state, App.filterMediaItems(state.initialState.mediaItems, App.removeFilter(state, action)));\n\n case 'CLEAR_FILTERS':\n return Object.assign({}, state, App.filterMediaItems(state.initialState.mediaItems, App.clearFilters(state)));\n\n case 'CLEAR_SECONDARY_FILTERS':\n return Object.assign({}, state, App.filterMediaItems(state.initialState.mediaItems, App.clearSecondaryFilters(state)));\n\n case 'SHOW_ALL_FILTER_ITEMS':\n return Object.assign({}, state, App.showAllFilterItems(state, action));\n\n case 'OPEN_MODAL':\n return Object.assign({}, state, App.openModal(state, action));\n\n case 'CLOSE_MODAL':\n return Object.assign({}, state, App.closeModal(state, action));\n\n case 'ADD_MEDIA_ITEMS':\n return Object.assign({}, state, App.filterMediaItems(state.initialState.mediaItems, App.addMediaItems(state)));\n\n case 'ASSET_LOAD_COMPLETE':\n return Object.assign({}, state, App.assetLoadComplete(action));\n\n default:\n return state;\n }\n};\n\nexport default mediaGalleryReducer;\n","import { connect } from 'react-redux';\nimport * as FilterActions from '../../actions/filter-actions';\nimport BlogArticles from './BlogArticles';\n\nconst mapStateToProps = state => ({\n filters: state.filters,\n articleItems: state.articleItems,\n noResultsMessage: state.noResultsMessage,\n articlesListLinkText: state.articlesListLinkText,\n selectedFilters: state.selectedFilters,\n filterToggle: state.filterToggle,\n});\n\nconst mapDispatchToProps = dispatch => ({\n filterClick: (event, filter, option) => dispatch(FilterActions.filterClick(event, filter, option)),\n clearFilters: () => dispatch(FilterActions.clearFilters()),\n});\n\nconst BlogArticlesContainer = connect(mapStateToProps, mapDispatchToProps)(BlogArticles);\n\nexport default BlogArticlesContainer;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { encodeKebabCase } from '../../utils/string-utils';\nimport Pagination from '../pagination/Pagination';\nimport { setBlogPageClick } from '../../utils/browser-history-utils';\n\nclass BlogArticles extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n pageOfItems: [],\n optionState: 'All',\n };\n\n const { filters } = this.props;\n const { categoryFilter } = filters;\n const { options } = categoryFilter;\n\n Object.keys(options).map((filterKey) => {\n options[filterKey].hash = encodeKebabCase(options[filterKey].name);\n return false;\n });\n\n this.onChangePage = this.onChangePage.bind(this);\n this.sortOnUrlHash = this.sortOnUrlHash.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n }\n\n componentDidMount() {\n this.sortOnUrlHash();\n }\n\n onChangePage(pageOfItems) {\n this.setState({ pageOfItems });\n }\n\n sortOnUrlHash() {\n const {\n clearFilters,\n filterClick,\n filters,\n } = this.props;\n const { categoryFilter } = filters;\n const { options } = categoryFilter;\n\n if (window.location.hash !== '') {\n Object.keys(options).map((filterKey) => {\n if (options[filterKey].hash === window.location.hash.substr(1)) {\n this.setState({ optionState: options[filterKey].name });\n clearFilters();\n filterClick(options[filterKey]);\n }\n return false;\n });\n }\n }\n\n handleFilterChange(event) {\n const {\n clearFilters,\n filterClick,\n filters,\n } = this.props;\n const { categoryFilter } = filters;\n const { options } = categoryFilter;\n\n this.setState({ optionState: event.target.value });\n\n let match = false;\n Object.keys(options).map((filterKey) => {\n if (options[filterKey].name === event.target.value) {\n clearFilters();\n filterClick(options[filterKey]);\n match = true;\n }\n return false;\n });\n if (!match) {\n clearFilters();\n }\n }\n\n render() {\n const {\n filters,\n articleItems,\n } = this.props;\n\n const {\n optionState,\n } = this.state;\n\n return (\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n );\n }\n}\n\nBlogArticles.propTypes = {\n articleItems: PropTypes.string,\n noResultsMessage: PropTypes.string,\n articlesListLinkText: PropTypes.string,\n filterClick: PropTypes.func.isRequired,\n clearFilters: PropTypes.func.isRequired,\n filters: PropTypes.shape(PropTypes.object),\n};\n\nexport default BlogArticles;\n","const encodeKebabCase = (str) => {\n if (!str) {\n return '';\n }\n return str.toLowerCase().replace(/\\s/g, '-');\n};\n\nconst formatInDollars = num => (\n `$${num.toFixed(2).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}`\n);\n\nconst capitalizeFirstLetter = str => (\n str.charAt(0).toUpperCase() + str.slice(1)\n);\n\nconst isJson = (str) => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n};\n\nexport {\n capitalizeFirstLetter,\n encodeKebabCase,\n formatInDollars,\n isJson,\n};\n","// Pagination\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport PaginationList from './PaginationList';\nimport { getPager } from '../../reducers/reducer-functions';\n\nclass Pagination extends Component {\n constructor(props) {\n super(props);\n\n this.defaultProps = {\n initialPage: 1,\n pageSize: 12,\n };\n\n this.state = {\n pager: {},\n };\n\n this.setPage = this.setPage.bind(this);\n }\n\n componentDidMount() {\n // set page if items array isn't empty\n if (this.props.items && this.props.items.length) {\n this.setPage(this.props.initialPage);\n }\n }\n\n componentDidUpdate(prevProps) {\n // reset page if items array has changed\n if (this.props.items !== prevProps.items) {\n this.setPage(this.props.initialPage);\n }\n }\n\n setPage(page) {\n const { items, pageSize } = this.props;\n\n if (page < 1 || page > this.state.pager.totalPages) {\n return;\n }\n\n // get new pager object for specified page\n const pager = getPager(items.length, page, pageSize);\n\n // get new page of mediaItems from mediaItems array\n const pageOfItems = items.slice(pager.startIndex, pager.endIndex + 1);\n\n // update state\n this.setState({ pager });\n\n this.props.onChangePage(pageOfItems);\n }\n\n render() {\n if (!this.state.pager.pages || this.state.pager.pages.length <= 1) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nPagination.propTypes = {\n items: PropTypes.arrayOf(PropTypes.object),\n onChangePage: PropTypes.func.isRequired,\n initialPage: PropTypes.number,\n pageSize: PropTypes.number,\n};\n\nexport default Pagination;\n","// PaginationList\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PaginationList = props => (\n
\n
\n
\n
\n
    \n
  • \n \n
  • \n
  • \n \n
  • \n {props.pager.pages.map(page => (\n
  • \n \n
  • \n ))}\n
  • \n \n
  • \n
  • \n \n
  • \n
\n
\n
\n
\n
\n);\n\nPaginationList.propTypes = {\n setPage: PropTypes.func.isRequired,\n pager: PropTypes.shape({\n totalItems: PropTypes.number,\n currentPage: PropTypes.number,\n pageSize: PropTypes.number,\n totalPages: PropTypes.number,\n startPage: PropTypes.number,\n endPage: PropTypes.number,\n startIndex: PropTypes.number,\n endIndex: PropTypes.number,\n pages: PropTypes.number,\n }),\n};\n\nexport default PaginationList;\n","/* eslint-disable no-console */\nconst lsObjName = 'swfBlogClick';\n\nconst setBlogPageClick = () => {\n window.localStorage.setItem(lsObjName, true);\n};\n\nconst checkBlogPageClick = () => (\n window.localStorage.getItem(lsObjName)\n);\n\nconst goBackToPreviousPage = (fallbackPage) => {\n if (window.localStorage.getItem(lsObjName)) {\n window.localStorage.removeItem(lsObjName);\n window.history.back();\n } else {\n window.location = fallbackPage;\n }\n};\n\nexport {\n setBlogPageClick,\n checkBlogPageClick,\n goBackToPreviousPage,\n};\n/* eslint-enable no-console */\n","// Error Boundry Component\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ErrorBoundry extends Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false,\n error: '',\n };\n }\n\n componentDidCatch(error, info) {\n // You can also log the error to an error reporting service\n /* eslint-disable no-console */\n console.log(error, info);\n /* eslint-enable no-console */\n // Display fallback UI\n this.setState({\n hasError: true,\n error,\n });\n }\n\n render() {\n const {\n hasError,\n error,\n } = this.state;\n if (hasError) {\n // You can render any custom fallback UI\n return (\n
\n
\n
\n

Something went wrong.

\n { error.toString() }\n
\n
\n
\n );\n }\n return this.props.children;\n }\n}\n\nErrorBoundry.propTypes = {\n children: PropTypes.func.isRequired,\n};\n\nexport default ErrorBoundry;\n","// Media Gallery Container\nimport { connect } from 'react-redux';\nimport * as FilterActions from '../../actions/filter-actions';\nimport * as ModalActions from '../../actions/modal-actions';\nimport MediaGallery from './MediaGallery';\n\nconst mapStateToProps = state => ({\n filters: state.filters,\n mediaItems: state.mediaItems,\n assetId: state.assetId,\n assetLoadComplete: state.assetLoadComplete,\n selectedFilters: state.selectedFilters,\n modal: state.modal,\n filterToggle: state.filterToggle,\n});\n\nconst mapDispatchToProps = dispatch => ({\n buttonClick: (event, filterName) => dispatch(FilterActions.mediaButtonClick(event, filterName)),\n closeAllDropdowns: () => dispatch(FilterActions.closeAllDropdowns()),\n filterClick: option => dispatch(FilterActions.filterClick(option)),\n removeFilter: filterName => dispatch(FilterActions.removeFilter(filterName)),\n clearFilters: () => dispatch(FilterActions.clearSecondaryFilters()),\n openModal: (item) => {\n dispatch(ModalActions.openModal(item));\n },\n closeModal: item => dispatch(ModalActions.closeModal(item)),\n filterToggleClick: () => dispatch(FilterActions.filterToggleClick()),\n showAllFilterItems: (event, filterName) => dispatch(FilterActions.showAllFilterItems(event, filterName)),\n});\n\nconst MediaGalleryContainer = connect(mapStateToProps, mapDispatchToProps)(MediaGallery);\n\nexport default MediaGalleryContainer;\n","// Modal Actions\nexport const openModal = (item, savedItems) => ({\n type: 'OPEN_MODAL',\n item,\n savedItems,\n});\n\nexport const closeModal = item => ({\n type: 'CLOSE_MODAL',\n item,\n});\n","/* eslint-disable no-console, no-unused-vars */\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { FilterSetList } from '../media-gallery-filters/FilterList';\nimport { FilterTabItem } from '../media-gallery-filters/FilterTab';\nimport { getIdFromAssetUrl } from '../../modules/widen-gallery';\nimport InPageNav from '../../modules/in-page-nav';\nimport Lazyload from '../../modules/lazyload';\nimport MediaGalleryList from './MediaGalleryList';\nimport Modal from '../modal/Modal';\nimport ToggleContentToModal from '../../modules/toggle-content-to-modal';\n\nclass LightGalleryUtils {\n constructor(options) {\n this.closeModal = options.closeModal;\n this.isComplete = options.isComplete;\n this.mediaItems = options.mediaItems;\n this.modal = options.modal;\n this.openModal = options.openModal;\n this.isDynamicLoad = false;\n this.lgDiv = document.getElementById('media-gallery-list');\n\n this.getHashItem = () => {\n // Check for id in url hash\n // If hash exists load modal w/ image\n // data associated w/ that hash value\n const { location } = window;\n const { hash } = location;\n const hashId = hash.substr(1, hash.length);\n // console.log(hashId);\n let hashItem;\n if (hashId !== '' && hashId !== 'media-gallery-list') {\n hashItem = this.mediaItems.filter(item => item.type === 'Image').find(item => item.imageUrl.indexOf(hashId) !== -1);\n }\n return hashItem;\n };\n\n this.onUpdate = (event) => {\n // console.log(`LightGalleryUtils, onUpdate: ${event.detail.index}, mediaItems length: ${this.mediaItems.length}`);\n const item = this.mediaItems[event.detail.index];\n // console.log(item);\n this.openModal(item);\n // Add hash\n const { imageUrl } = item;\n const id = getIdFromAssetUrl(imageUrl);\n window.location.hash = id;\n };\n\n this.onClose = () => {\n // console.log(`LightGalleryUtils, onClose, mediaItems length: ${this.mediaItems.length}`);\n const { history, lightGallery, lgData } = window;\n const { item } = this.modal;\n // Remove hash\n history.pushState('', document.title, window.location.pathname + window.location.search);\n this.closeModal(item);\n if (this.isDynamicLoad) {\n this.isDynamicLoad = false; // Reset var so doesn't run again\n // Reload plugin and attach events to gallery\n const lgUid = lgData[this.lgDiv.getAttribute('lg-uid')];\n if (lgUid) {\n lgUid.destroy(true);\n }\n lightGallery(this.lgDiv, {\n counter: false,\n download: false,\n keyPress: false,\n preload: 3,\n selector: '.gallery-item-image',\n share: false,\n speed: 250,\n });\n }\n };\n }\n\n update(options) {\n const { lightGallery, lgData } = window;\n this.isComplete = options.isComplete;\n this.mediaItems = options.mediaItems;\n this.lgDiv = document.getElementById('media-gallery-list');\n if (!this.lgDiv.getAttribute('data-events-added')) {\n this.lgDiv.addEventListener('onAfterSlide', this.onUpdate);\n this.lgDiv.addEventListener('onCloseAfter', this.onClose);\n this.lgDiv.setAttribute('data-events-added', 'true');\n }\n if (this.isComplete) {\n const hashItem = this.getHashItem();\n // Initialize w/ hashed item loaded\n if (hashItem) {\n this.isDynamicLoad = true;\n lightGallery(this.lgDiv, {\n counter: false,\n download: false,\n dynamic: true,\n dynamicEl: [{\n src: hashItem.imageUrl,\n }],\n keyPress: false,\n share: false,\n });\n this.openModal(hashItem);\n // Initialize gallery\n } else {\n // Reload plugin and attach events to gallery\n const lgUid = lgData[this.lgDiv.getAttribute('lg-uid')];\n if (lgUid) {\n lgUid.destroy(true);\n }\n lightGallery(this.lgDiv, {\n counter: false,\n download: false,\n keyPress: false,\n preload: 3,\n selector: '.gallery-item-image',\n share: false,\n speed: 250,\n });\n }\n }\n }\n}\n\nclass MediaGallery extends Component {\n constructor(props) {\n super(props);\n this.itemsAdded = 0;\n this.allAssetsLoaded = false;\n this.currentMediaItems = [];\n this.lg = new LightGalleryUtils(props);\n }\n\n componentDidUpdate() {\n const {\n assetLoadComplete,\n filterClick,\n filters,\n mediaItems,\n } = this.props;\n if (assetLoadComplete && !this.allAssetsLoaded) {\n // Only runs once, on complete\n this.allAssetsLoaded = true;\n Lazyload();\n this.lg.update({\n isComplete: true,\n mediaItems,\n });\n // Set default media (Images/Video), if one is checked\n const mediaOptions = filters.imagesVideosFilter.options;\n filterClick(mediaOptions[0]);\n // this.updateFilterGroupProperties();\n // Button for toggling filter content\n // Needs to run AFTER content has been added to DOM\n setTimeout(() => {\n const filterToggle = new ToggleContentToModal({\n callbacks: {\n onOpen: () => {\n filters.colorRangeFilter.active = true;\n filters.productTypeFilter.active = true;\n filters.productLineFilter.active = true;\n },\n onClose: () => {\n filters.colorRangeFilter.active = true;\n filters.productTypeFilter.active = true;\n filters.productLineFilter.active = true;\n },\n },\n modalId: 'filter-and-sort-modal',\n toggleSelector: '.btn-filter-sort',\n toggleContent: [\n {\n content: '.product-filter-group',\n modalSelector: '#filter-and-sort-modal .product-filter-wrapper',\n defaultSelector: '.filtered-content-grid .product-filter-wrapper',\n },\n ],\n });\n }, 100);\n InPageNav();\n }\n if (assetLoadComplete) {\n if (this.isNewMediaData()) {\n Lazyload();\n this.lg.update({\n isComplete: true,\n mediaItems,\n });\n }\n // Update currentMediaItems array\n this.currentMediaItems = mediaItems;\n }\n }\n\n isNewMediaData() {\n const { mediaItems } = this.props;\n // console.log(`mediaItems: ${mediaItems.length}, currentMediaItems: ${this.currentMediaItems.length}`);\n // console.log(mediaItems[0]);\n if (mediaItems.length !== this.currentMediaItems.length) {\n return true;\n }\n // Run through array and compare position by position\n for (let i = 0; i < mediaItems.length; i++) { /* eslint-disable-line no-plusplus */\n if (mediaItems[i].id !== this.currentMediaItems[i].id) {\n return true;\n }\n }\n return false;\n }\n\n render() {\n const {\n filters,\n buttonClick,\n filterClick,\n clearFilters,\n showAllFilterItems,\n modal,\n mediaItems,\n openModal,\n closeModal,\n assetId,\n assetLoadComplete,\n } = this.props;\n\n const secondaryFilters = Object.assign({}, {\n productTypeFilter: filters.productTypeFilter,\n productLineFilter: filters.productLineFilter,\n colorRangeFilter: filters.colorRangeFilter,\n });\n\n const tabItemClick = (option) => {\n const mediaOptions = filters.imagesVideosFilter.options;\n Object.keys(mediaOptions).map((filterKey) => {\n if (mediaOptions[filterKey].name === option.name) {\n filterClick(mediaOptions[filterKey]);\n clearFilters();\n }\n return false;\n });\n };\n\n let showVideos = false;\n if (filters.imagesVideosFilter.options.length > 0) {\n if (!filters.imagesVideosFilter.options[0].isChecked) {\n showVideos = true;\n }\n }\n\n return (\n
\n {filters.imagesVideosFilter.options.length > 1\n && (\n
\n
\n
\n
\n
    \n {filters.imagesVideosFilter.options.map(option => (\n \n ))}\n
\n
\n
\n
\n
\n )\n }\n
\n
\n
\n \n
\n
\n
\n
\n
\n {!showVideos // Show videos\n && (\n
\n Gallery updated, {mediaItems.length} items shown\n Skip filters and go to gallery\n
\n
\n

Filter Gallery

\n \n
\n \n
\n
\n )\n }\n
\n
\n {!assetLoadComplete\n && (\n
\n
\n
\n
\n
\n )\n }\n \n \n
\n
\n
\n
\n
\n );\n }\n}\n\nMediaGallery.propTypes = {\n openModal: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n buttonClick: PropTypes.func.isRequired,\n filterClick: PropTypes.func.isRequired,\n clearFilters: PropTypes.func.isRequired,\n showAllFilterItems: PropTypes.func.isRequired,\n filters: PropTypes.shape(PropTypes.object),\n modal: PropTypes.shape(PropTypes.object),\n mediaItems: PropTypes.arrayOf(PropTypes.object),\n assetId: PropTypes.string.isRequired,\n assetLoadComplete: PropTypes.bool.isRequired,\n};\n\nexport default MediaGallery;\n/* eslint-enable no-console, no-unused-vars */\n","// FilterList\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst FilterSelectionListItem = ({ filterClick, option }) => {\n const id = option.name.toLowerCase().replace(/[\\s]+/g, '-').replace(/-&/g, '');\n let liClass = 'filter-option';\n let labelClass = 'checkbox-label';\n if (option.inputName.indexOf('color-option') !== -1) {\n liClass = 'filter-color';\n labelClass = `checkbox-label sr-only ${option.name.toLowerCase().replace(/[\\s]+/g, '-').replace(/-&/g, '')}`;\n }\n return (\n
  • \n filterClick(option)} checked={(option.isChecked === true ? 'checked' : '')} />\n \n
  • \n );\n};\n\nFilterSelectionListItem.propTypes = {\n filterClick: PropTypes.func.isRequired,\n option: PropTypes.shape({\n id: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n inputName: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n image: PropTypes.string.isRequired,\n isHidden: PropTypes.bool.isRequired,\n isChecked: PropTypes.bool.isRequired,\n }),\n};\n\nconst FilterSelectionList = props => (\n
      \n {props.filter.options.map(option => (\n \n ))}\n {props.filter.showMore\n && (\n
    • \n )\n }\n
    \n);\n\nFilterSelectionList.propTypes = {\n showAllFilterItems: PropTypes.func.isRequired,\n filter: PropTypes.shape({\n name: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n showMore: PropTypes.bool.isRequired,\n options: PropTypes.arrayOf(PropTypes.object),\n }),\n option: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n};\n\nconst FilterSetListItem = props => (\n
    \n props.buttonClick(event, props.filter.name)}\n >\n {props.filter.name}\n \n \n \n
    \n);\n\nFilterSetListItem.propTypes = {\n buttonClick: PropTypes.func.isRequired,\n filter: PropTypes.shape({\n name: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n }),\n};\n\nconst FilterSetList = props => (\n
    \n {Object.keys(props.filters).filter(key => typeof props.filters[key] !== 'string').sort((keyA, keyB) => props.filters[keyA].order - props.filters[keyB].order).map(key => (\n \n ))}\n
    \n);\n\nFilterSetList.propTypes = {\n filters: PropTypes.shape(PropTypes.object),\n filter: PropTypes.shape({\n order: PropTypes.number.isRequired,\n }),\n};\n\nexport {\n FilterSetList,\n FilterSetListItem,\n FilterSelectionList,\n FilterSelectionListItem,\n};\n","// FilterList\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst FilterTabItem = ({ filterClick, option }) => (\n
  • \n \n
  • \n);\n\nFilterTabItem.propTypes = {\n filterClick: PropTypes.func.isRequired,\n option: PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n isChecked: PropTypes.bool.isRequired,\n }),\n};\n\nconst FilterSelectBoxItem = ({ option }) => (\n \n);\n\nFilterSelectBoxItem.propTypes = {\n option: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n};\n\nexport {\n FilterTabItem,\n FilterSelectBoxItem,\n};\n","/* eslint-disable no-console, no-confusing-arrow */\nconst filterLists = {\n productTypeFilter: [],\n productLineFilter: [],\n colorRangeFilter: [],\n imagesVideosFilter: [],\n};\n\nconst formatToKebobCase = str => (\n str.toLowerCase().replace(/\\s/gi, '-').replace(/&/gi, 'and')\n);\n\nconst filters = {\n imagesVideosFilter: {\n name: 'Images Or Videos',\n order: 1,\n active: false,\n options: [],\n },\n productTypeFilter: {\n name: 'Product',\n order: 2,\n active: true,\n options: [],\n },\n productLineFilter: {\n name: 'Model',\n order: 2,\n active: true,\n options: [],\n },\n colorRangeFilter: {\n name: 'Color',\n order: 5,\n active: true,\n options: [],\n },\n};\n\nconst addFilterItemByName = (name, filterType, inputType) => (\n {\n type: inputType,\n id: `${formatToKebobCase(filterType)}-option-${formatToKebobCase(name)}`,\n name,\n inputName: `${formatToKebobCase(filterType)}-option-${formatToKebobCase(name)}`,\n value: name,\n image: '',\n isChecked: false,\n }\n);\n\nconst addItemToList = (names, filterType, list, inputType) => {\n const filterList = filterLists[list];\n // \"names\" is a comma separated string, there could be more than one option/name\n const arr = names.split(',');\n arr.forEach((name) => {\n if (filterList.indexOf(name) === -1 && name !== '') {\n filterList.push(name);\n filters[list].options.push(addFilterItemByName(name, filterType, inputType));\n }\n });\n};\n\nconst buildFilterObjects = (data) => {\n data.forEach((item) => {\n addItemToList(item.productType, 'Product Type', 'productTypeFilter', 'checkbox');\n addItemToList(item.productLineName, 'Product', 'productLineFilter', 'checkbox');\n addItemToList(item.colorRange, 'Color', 'colorRangeFilter', 'checkbox');\n addItemToList(item.type, 'Images Videos', 'imagesVideosFilter', 'radio');\n });\n // Hardcode plurals\n filters.imagesVideosFilter.options.forEach((item) => {\n if (item.name === 'Image') {\n item.name = 'Images';\n }\n if (item.name === 'Video') {\n item.name = 'Videos';\n }\n });\n};\n\nconst getWidenGalleryFilterData = (data) => {\n buildFilterObjects(data);\n filters.productTypeFilter.options.sort((a, b) => (a.name > b.name) ? 1 : -1);\n filters.productLineFilter.options.sort((a, b) => (a.name > b.name) ? 1 : -1);\n filters.colorRangeFilter.options.sort((a, b) => (a.name > b.name) ? 1 : -1);\n filters.imagesVideosFilter.options.sort((a, b) => (a.name > b.name) ? 1 : -1);\n return filters;\n};\n\nexport default getWidenGalleryFilterData;\n/* eslint-enable no-console, no-confusing-arrow */\n","import { getParameterByName } from '../utils/url-utils';\n\nconst inPageNav = () => {\n const inPageNavDiv = document.querySelector('.in-page-nav');\n if (inPageNavDiv === null) return;\n // Fixed navbar behavior\n const headerDiv = document.querySelector('.header');\n const headerContentDiv = document.querySelector('.primary-nav-wrapper');\n const anchors = document.querySelectorAll('.page-anchor');\n const mobileBrkpt = 768;\n let addOffsetDiv = document.querySelector('main');\n const promoBar = document.querySelector('.promo-bar');\n if (promoBar) {\n addOffsetDiv = promoBar;\n }\n let initLoadHeaderOffset = 24;\n if (headerDiv === null || inPageNavDiv === null) {\n return;\n }\n const inPageNavYPos = inPageNavDiv.offsetTop;\n\n const updateOffsetHeight = () => {\n if (window.innerWidth <= mobileBrkpt) {\n return;\n }\n let headerFixedOffset = 0;\n const headerOffset = headerContentDiv.clientHeight;\n const addFixedAtY = inPageNavYPos;\n // console.log(`${addFixedAtY}/${window.pageYOffset}`);\n if (addFixedAtY <= window.pageYOffset) {\n headerFixedOffset = 0;\n inPageNavDiv.classList.add('is-fixed');\n inPageNavDiv.style.top = `${headerOffset + headerFixedOffset}px`;\n addOffsetDiv.style.marginTop = `${inPageNavDiv.offsetHeight}px`;\n } else {\n inPageNavDiv.classList.remove('is-fixed');\n inPageNavDiv.removeAttribute('style');\n addOffsetDiv.removeAttribute('style');\n }\n };\n\n // Scrolling & Anchors\n const updateAnchorOffset = () => {\n let offset = 0;\n if (headerDiv) {\n offset = `${(((headerContentDiv.clientHeight + inPageNavDiv.clientHeight) - initLoadHeaderOffset) * -1)}px`;\n }\n for (let i = 0; i < anchors.length; i++) { /* eslint-disable-line no-plusplus */\n anchors[i].style.top = offset;\n }\n // Reset to 0 after applying on load\n if (initLoadHeaderOffset !== 0) {\n initLoadHeaderOffset = 0;\n }\n };\n\n const getAnchorPosition = (anchor) => {\n const div = document.querySelector(`a[data-anchor-name=\"${anchor}\"]`);\n if (div) {\n if (!inPageNavDiv.classList.contains('is-fixed')) {\n return div.offsetTop - 60;\n }\n return div.offsetTop;\n }\n return 0;\n };\n\n const scrollToPosition = (pos) => {\n window.scrollTo({\n top: pos,\n behavior: 'smooth',\n });\n };\n\n const updateHashAfterDelay = (anchor) => { /* eslint-disable-line no-unused-vars */\n setTimeout(() => {\n // window.location.hash = anchor;\n // currentAnchor = anchor;\n }, 250);\n };\n\n window.addEventListener('resize', () => {\n updateAnchorOffset();\n });\n\n window.addEventListener('scroll', () => {\n updateOffsetHeight();\n if (window.innerWidth <= mobileBrkpt) {\n return;\n }\n if (window.innerHeight + window.pageYOffset >= document.body.offsetHeight && anchors.length > 0) {\n const anchorName = anchors[anchors.length - 1].getAttribute('data-anchor-name');\n let setAsActive = inPageNavDiv.querySelector(`[href*=\"#${anchorName}\"]`);\n if (setAsActive === null) {\n return;\n }\n setAsActive = setAsActive.parentNode;\n // If nav item is already active, return\n if (setAsActive.classList.contains('active')) {\n return;\n }\n // Remove active state\n const currentActive = inPageNavDiv.querySelector('.active');\n if (currentActive) {\n currentActive.classList.remove('active');\n }\n // Set new active and update hash\n setAsActive.classList.add('active');\n updateHashAfterDelay(anchorName);\n return;\n }\n window.updateAnchorOffset(); // Weird scope issue, so added reference to window\n for (let i = anchors.length - 1; i >= 0; i--) { /* eslint-disable-line no-plusplus */\n if (anchors[i].offsetTop <= window.pageYOffset) {\n const anchorName = anchors[i].getAttribute('data-anchor-name');\n let setAsActive = inPageNavDiv.querySelector(`[href*=\"#${anchorName}\"]`);\n if (setAsActive === null) {\n return;\n }\n setAsActive = setAsActive.parentNode;\n // If nav item is already active, return\n if (setAsActive.classList.contains('active')) {\n return;\n }\n // Remove active state\n const currentActive = inPageNavDiv.querySelector('.active');\n if (currentActive) {\n currentActive.classList.remove('active');\n }\n // Set new active and update hash\n setAsActive.classList.add('active');\n updateHashAfterDelay(anchorName);\n return;\n }\n }\n });\n\n // Load\n updateOffsetHeight();\n updateAnchorOffset();\n window.updateAnchorOffset = updateAnchorOffset;\n // Check to see if url is hashed and if hash matches page anchor\n const param = getParameterByName('section');\n if (param !== '') {\n const anchor = param;\n const pos = getAnchorPosition(anchor);\n scrollToPosition(pos);\n if (pos !== 0) {\n updateHashAfterDelay(anchor);\n }\n }\n // Event handlers\n [].map.call(document.querySelectorAll('a, .in-page-nav-item button'), btn => (\n btn.addEventListener('click', (event) => {\n let anchor = btn.getAttribute('href');\n if (anchor) {\n const url = window.location.href;\n const urlMatch = anchor.substring(0, anchor.indexOf('#')) === url.substring(0, url.indexOf('#'));\n if (anchor.indexOf('#') === 0 || (anchor.indexOf('#') !== -1 && urlMatch)) {\n event.preventDefault();\n anchor = anchor.substr(anchor.indexOf('#') + 1);\n const pos = getAnchorPosition(anchor);\n scrollToPosition(pos);\n if (pos !== 0) {\n updateHashAfterDelay(anchor);\n }\n }\n }\n })\n ));\n};\n\nexport default inPageNav;\n","/* eslint-disable no-console, no-useless-escape */\nconst getParameterByName = (name, url) => {\n let location = url;\n if (!location) {\n location = window.location.href;\n }\n const regex = new RegExp(`[?&]${name.replace(/[\\[\\]]/g, '\\\\$&')}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(location);\n if (!results) {\n return '';\n }\n if (!results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n\nconst detectProduction = () => {\n if (\n window.location.href.indexOf('www.sunsetter.com') !== -1 ||\n window.location.href.indexOf('https://sunsetter.com') !== -1 ||\n window.location.href.indexOf('http://sunsetter.com') !== -1\n ) {\n return true;\n }\n return false;\n};\n\nexport {\n detectProduction,\n getParameterByName,\n};\n/* eslint-enable no-console, no-useless-escape */\n","/* eslint-disable no-console */\n// Lazy Load imagesVideosFilter\nconst lazyLoadHandler = () => {\n let lazyloadThrottleTimeout;\n const images = document.querySelectorAll('.lazy');\n\n if (lazyloadThrottleTimeout) {\n clearTimeout(lazyloadThrottleTimeout);\n }\n\n lazyloadThrottleTimeout = setTimeout(() => {\n const scrollTop = window.pageYOffset;\n Array.prototype.forEach.call(images, (img) => {\n if (img.offsetTop < (window.innerHeight + scrollTop)) {\n // IE11 Fix\n if (img.dataset.src) {\n img.src = img.dataset.src;\n } else {\n // Check to see if parent has class of object-fit, and ignore if so\n const classNames = img.parentNode.classList;\n if (classNames.toString().indexOf('object-fit') === -1) {\n img.src = img.getAttribute('data-src-ie11');\n }\n }\n img.classList.remove('lazy');\n img.classList.add('image-loaded');\n }\n });\n\n if (images.length === 0) {\n document.removeEventListener('scroll', lazyLoadHandler);\n window.removeEventListener('resize', lazyLoadHandler);\n window.removeEventListener('orientationChange', lazyLoadHandler);\n }\n }, 20);\n};\n\nconst lazyload = () => {\n if ('IntersectionObserver' in window) {\n const images = document.querySelectorAll('.lazy');\n\n const options = {\n rootMargin: '100px',\n threshold: [0],\n };\n\n const imageObserver = new IntersectionObserver((entries) => {\n Array.prototype.forEach.call(entries, (entry) => {\n if (entry.isIntersecting) {\n const image = entry.target;\n let srcset = image.dataset.src;\n if (!srcset) {\n srcset = image.getAttribute('data-srcset');\n }\n if (srcset !== null) {\n image.srcset = srcset;\n image.classList.remove('lazy');\n image.classList.add('image-loaded');\n imageObserver.unobserve(image);\n }\n }\n });\n }, options);\n\n images.forEach((image) => {\n imageObserver.observe(image);\n });\n } else {\n lazyLoadHandler();\n document.addEventListener('scroll', lazyLoadHandler);\n window.addEventListener('resize', lazyLoadHandler);\n window.addEventListener('orientationChange', lazyLoadHandler);\n }\n};\n\nexport default lazyload;\n/* eslint-enable no-console */\n","/* eslint-disable react/no-danger, jsx-a11y/no-noninteractive-tabindex */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport MediaGalleryListItem from './MediaGalleryListItem';\n\nconst MediaGalleryList = props => (\n
    \n {props.items.length === 0\n && (\n
    \n

    \n

    \n )\n }\n \n
    \n);\n\nMediaGalleryList.propTypes = {\n handleMediaClick: PropTypes.func,\n items: PropTypes.arrayOf(PropTypes.object),\n item: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }),\n};\n\nexport default MediaGalleryList;\n/* eslint-enable react/no-danger, jsx-a11y/no-noninteractive-tabindex */\n","// MediaGalleryListItem\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport MediaGalleryImage from './MediaGalleryImage';\nimport MediaGalleryVideo from './MediaGalleryVideo';\n\nconst MediaGalleryListItem = props => (\n (props.item.type === 'Video')\n ? (\n
    \n \n
    \n ) : (\n
    \n \n
    \n )\n);\n\nMediaGalleryListItem.propTypes = {\n handleMediaClick: PropTypes.func.isRequired,\n item: PropTypes.shape({\n id: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n type: PropTypes.string.isRequired,\n columnSize: PropTypes.string.isRequired,\n videoUrl: PropTypes.string,\n }),\n};\n\nexport default MediaGalleryListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst formatThumbnailUrl = url => (\n (url.indexOf('1024px') !== -1) ? url.replace(/1024px/, '360px') : url\n);\n\nconst MediaGalleryImage = ({ image, handleMediaClick }) => (\n
    \n \n
    \n);\n\nMediaGalleryImage.propTypes = {\n handleMediaClick: PropTypes.func.isRequired,\n image: PropTypes.shape({\n id: PropTypes.number.isRequired,\n type: PropTypes.string,\n title: PropTypes.string,\n description: PropTypes.string,\n imageUrl: PropTypes.string,\n active: PropTypes.bool,\n productLineName: PropTypes.string,\n productType: PropTypes.string,\n colorRange: PropTypes.string,\n }),\n};\n\nexport default MediaGalleryImage;\n","// MediaGalleryVideo\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst MediaGalleryVideo = ({ video, handleMediaClick }) => (\n
    \n \n
    \n);\n\nMediaGalleryVideo.propTypes = {\n handleMediaClick: PropTypes.func.isRequired,\n video: PropTypes.shape({\n id: PropTypes.number.isRequired,\n type: PropTypes.string,\n title: PropTypes.string,\n description: PropTypes.string,\n videoUrl: PropTypes.string,\n posterImage: PropTypes.string,\n active: PropTypes.bool,\n productLineName: PropTypes.string,\n }),\n};\n\nexport default MediaGalleryVideo;\n","/* eslint-disable react/no-danger, no-console, jsx-a11y/no-noninteractive-tabindex */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { getIdFromAssetUrl } from '../../modules/widen-gallery';\nimport {\n getEmailIconUrl,\n getEmailShareUrl,\n getFacebookIconUrl,\n getFacebookShareUrl,\n getPinterestIconUrl,\n getPinterestShareUrl,\n getTwitterIconUrl,\n getTwitterShareUrl,\n} from '../../utils/social-media-sharing';\nimport { setTabFocus } from '../../modules/accessibility/tab-order';\n\nclass Modal extends Component {\n constructor(props) {\n super(props);\n this.state = {\n captionMinimized: false,\n };\n // Add handlers\n this.modalClickHandler = this.modalClickHandler.bind(this);\n this.captionTitlebarClickHandler = this.captionTitlebarClickHandler.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.captionRef = React.createRef();\n }\n\n componentDidMount() {\n document.addEventListener('click', this.modalClickHandler);\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate() {\n this.handleResize();\n this.setModalFocus();\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.modalClickHandler);\n window.removeEventListener('resize', this.handleResize);\n }\n\n setCaptionPosition() {\n const { captionMinimized } = this.state;\n if (!captionMinimized && this.captionRef.current !== null) {\n this.captionRef.current.style.bottom = `-${this.captionRef.current.offsetHeight - 36}px`;\n } else {\n this.captionRef.current.removeAttribute('style');\n }\n }\n\n setModalFocus() {\n const { active } = this.props.modal;\n const modalDiv = this.captionRef.current;\n if (active && modalDiv !== null) {\n // Set focus to lightgallery modal first\n const lightGalleryCloseBtn = document.querySelector('.lg-close.lg-icon');\n const emailShareBtn = document.getElementById('share-em');\n const captionTitlebar = document.querySelector('.caption-titlebar');\n if (lightGalleryCloseBtn) {\n captionTitlebar.focus();\n setTabFocus({\n element: emailShareBtn,\n nextElement: lightGalleryCloseBtn,\n });\n setTabFocus({\n element: lightGalleryCloseBtn,\n prevElement: emailShareBtn,\n });\n } else {\n // Video mdoal only\n modalDiv.focus();\n }\n }\n }\n\n handleResize() {\n const { captionMinimized } = this.state;\n const { active, item } = this.props.modal;\n const modalDiv = this.captionRef.current;\n if (captionMinimized && modalDiv !== null) {\n modalDiv.removeAttribute('style');\n // Somehow inheriting height from video modal?\n modalDiv.querySelector('.caption-inner').removeAttribute('style');\n modalDiv.style.bottom = `-${modalDiv.offsetHeight - 36}px`;\n }\n if (active && item.type === 'Video' && modalDiv !== null) {\n const contentHeight = modalDiv.querySelector('.modal-content').offsetHeight;\n modalDiv.removeAttribute('style');\n modalDiv.querySelector('.modal-panel').style.height = `${contentHeight + 30}px`;\n }\n }\n\n formatThumbnailUrl() {\n const { imageUrl } = this.props.modal.item;\n return (imageUrl.indexOf('1024px') !== -1) ? imageUrl.replace(/1024px/, '360px') : imageUrl;\n }\n\n resetGalleryFocus() {\n const { item } = this.props.modal;\n if (!item.id) {\n return;\n }\n const btnSelector = `#${item.type.toLowerCase()}-${item.id} button`;\n const galleryItemBtn = document.querySelector(btnSelector);\n if (galleryItemBtn) {\n galleryItemBtn.focus();\n }\n }\n\n captionTitlebarClickHandler() {\n const { captionMinimized } = this.state;\n this.setState(() => ({\n captionMinimized: !captionMinimized,\n }));\n this.setCaptionPosition();\n }\n\n modalClickHandler(event) {\n const { item } = this.props.modal;\n const { handleModalClick } = this.props;\n if (event.target.classList.contains('modal') && event.target.classList.contains('modal-visible')) {\n handleModalClick(item);\n this.resetGalleryFocus();\n } else if (event.target.classList.contains('close-btn') || event.target.classList.contains('modal-overlay') || event.target.classList.contains('lg-close')) {\n handleModalClick(item);\n this.resetGalleryFocus();\n }\n }\n\n render() {\n const { active, item } = this.props.modal;\n const { captionMinimized } = this.state;\n const { location, PhotoShareUrl } = window;\n const { origin } = location;\n let shareLink = '';\n if (item) {\n if (item.type === 'Image') {\n // Set sharelink html\n shareLink = encodeURIComponent(`${origin}${PhotoShareUrl}#${getIdFromAssetUrl(item.imageUrl)}`);\n // Update alt tag in lightgallery modal image\n const modalImg = document.querySelector('.lg-current .lg-object.lg-image');\n if (modalImg) {\n modalImg.setAttribute('alt', item.description);\n }\n }\n }\n return (\n
    \n {(item !== '' && item !== undefined && active)\n ? (\n
    \n {item.type === 'Video'\n ? (\n
    \n
    \n
    \n