{"version":3,"sources":["webpack:///./src/redux/bike/selectors.js","webpack:///./src/hooks/dataLayer/events.js","webpack:///./src/hooks/useDataLayer.js","webpack:///./src/hooks/dataLayer/resolver.js","webpack:///./src/redux/configurator/selectors.js","webpack:///./src/components/Button/Button.js","webpack:///./src/components/_utility/Link/Link.js","webpack:///./src/assets/icons/close.svg","webpack:///./src/redux/garage/selectors.js","webpack:///./src/helpers/goals.js","webpack:///./src/hooks/useLabel.js","webpack:///./src/redux/garage/actions.js","webpack:///./src/config/sortOptions.config.js","webpack:///./src/assets/icons/plus.svg","webpack:///./src/components/_form/Radio/Radio.styled.js","webpack:///./src/components/_form/Radio/Radio.js","webpack:///./src/redux/tagging/actions.js","webpack:///./src/hooks/useBikeTotal.js","webpack:///./src/components/_utility/RichText/RichText.js","webpack:///./src/redux/tagging/selectors.js","webpack:///./src/constants/accessories.js"],"names":["bikeModelSelector","createSelector","state","bike","model","bikeColoursSelector","resolve","colours","bikeColourIdSelector","configuration","colour","colourId","bikeColourSelector","selectedColourId","find","id","isDefault","getBikeAccessories","app","data","labels","hero","heroTitle","heroImage","title","image","accessories","getPackAccessories","pack","packAccessories","getAllBikeAccessories","helpers","bikeSummaryAccessoriesSelector","filter","accessory","quantity","getPendingAccessories","pendingAccessories","getConflictingAccessories","configurator","items","bikeAccessories","allAccessories","getPendingConflictingAccessories","conflictingAccessories","getRequiresAccessories","emptyResponse","requiresAll","requiresSingle","Array","isArray","length","pendingAccessory","allBikeAccessories","allBikeAccessoryIds","map","mapToAccessories","accessoryIdArray","accessoryId","bikeAccessory","bikeHasRequiresSingle","some","includes","getConflictChoice","conflictChoice","getRequiresSingleChoice","requiresSingleChoice","getAccessoryPendingRemoval","accessoryPendingRemoval","accessoryPendingRemovalId","bikePackAccessories","linkedAccessories","getPack","selected","getPendingPack","pending","pendingPack","getPendingPackConflicts","previewed","previewedPack","getPackPendingRemoval","pendingRemoval","packPendingRemoval","getPackAndAccessoriesTotal","reduce","getAccessoriesTotal","isLocked","price","getPreviewedPack","getPackSelectedAccessories","selectedAccessories","getPackTotal","currentPack","prevTotal","getPackFittingTimeTotal","packSelectedAccessories","fittingTime","getPackSelectedTotal","getPreviewedPackTotal","pendingAccessoriesIds","getSelectedWarrantyPack","warrantyPack","getSelectedServicePack","servicePack","configuratorFilter","configuratorStarted","configuratorColour","configuratorPacks","configuratorAccessories","configuratorSummary","configuratorFullScreen","configuratorFlip","configuratorColourSelected","configuratorAccessoryFilter","configuratorAccessorySearch","configuratorAccessoryInfo","configuratorAccessorySelected","configuratorAccessoryRemoved","configuratorPackInfo","configuratorPackSelected","configuratorPackRemoved","configuratorExtraSelected","configuratorExtraRemoved","configuratorOfferInfo","configuratorExtraInfo","configuratorSaveAttempt","configuratorSaveCancel","configuratorSaveComplete","configuratorAbandonAttempt","configuratorAbandonSave","configuratorAbandonConfirm","configuratorSave","configuratorUnsaved","configuratorSaveIntent","configuratorResetAttempt","configuratorResetConfirm","configuratorResetCancel","configuratorShareAttempt","configuratorShareConfirm","configuratorShareCancel","configuratorPriceInfo","configuratorFinanceInfo","configuratorTestRide","configuratorFinance","configuratorPrint","configuratorAccessoryConflict","configuratorFilter1","configuratorFilter2","configuratorFilter3","configuratorFilter4","configuratorFilter5","configuratorFilter6","configuratorGarageAttempt","configuratorGarageCancel","configuratorGarageLoad","configuratorGarageFindDealer","configuratorGarageBuyNow","configuratorTrayFinance","configuratorSumFinance","configuratorSumPrim","configuratorSumSec","configuratorSendDealerOpen","configuratorSendDealerSuccess","getDirections","saveQuoteCancel","saveQuoteComplete","configuratorCalPrim","configuratorCalSec","useDataLayer","bikeTotal","bikeModel","bikeColour","categories","selectedCategory","accessoriesQuery","accessoryPack","resolver","useBikeTotal","useSelector","accessoryCategoriesSelector","accessoryCategorySelector","getAccessoriesQuery","countryMarket","getLanguageCode","configuratorBikeName","stripHtmlTags","name","configuratorBikeID","configuratorBikeYear","year","configuratorBikeColour","configuratorColourPrice","roundPrecisionDecimal","configuratorColourActions","configuratorAccessoryActions","configuratorAccessoryCategory","configuratorAccessoryCategoryCount","configuratorAccessoryID","configuratorAccessoryItems","configuratorAccessoryName","configuratorAccessoryPrice","configuratorPackActions","configuratorPackID","configuratorPackName","configuratorPackPrice","configuratorStartPrice","configuratorFinalPrice","configuratorTotalActions","configuratorValue","configuratorGenre","genre","configuratorEngineRange","configuratorPriceRange","configuratorLicenceType","configuratorSurfaceType","configuratorProductCode","productCode","configuratorExtraName","configuratorExtraPrice","offerPresent","offerSummaryContent","offerName","ctaText","dispatch","useDispatch","interactions","getInteractions","interactionVariableMappings","configuratorExtrasActions","incrementEvents","eventName","overrides","eventDataVariables","events","dataLayerObj","prevDataLayerObj","dataLayerVariable","interaction","needsIncrement","incrementInteractions","currentCount","newCount","event","isGa","document","querySelector","window","gtag","dataLayer","push","currentStepSelector","step","openModalSelector","openModals","modalPropsSelector","Object","values","isOpen","modalName","modalProps","disclaimerTypeSelector","disclaimer","type","disclaimerType","disclaimerOpenSelector","open","disclaimerOpen","accessoryItemsSelector","accessoryExtrasSelector","extras","accessoryCategoryIdSelector","category","categoryId","getAccessoriesByCategory","sort","selectedCategoryId","VIEW_ALL_OPTION_ID","FEATURED_OPTION_ID","isFeatured","a","b","selectedSortOption","sortOptions","sortOption","sortFunction","previewAccessorySelector","previewedAccessory","completedStepsSelector","completedSteps","getBikeFlipped","flipped","getBikeZoomed","zoom","getScrollYPosition","scrollYPosition","getScrollXPosition","scrollXPosition","query","getAccessorySort","getPacks","packs","parts","getPrintActions","printActions","buttonStyles","css","theme","colors","buttons","white","fonts","dinDemi","large","fluid","wide","primary","minBp","small","Button","styled","button","LinkButton","Link","forwardRef","ref","to","children","props","bold","basepath","basepathSelector","styles","xmlns","width","height","viewBox","d","getConfigurations","garage","configurations","getLoadedConfiguration","loadedConfiguration","getSaving","saving","fetchGoal","eventId","undefined","request","method","body","JSON","stringify","headers","mode","useLabel","labelsSelector","labelName","fallback","setConfigurations","payload","SET_CONFIGURATIONS","setLoadedConfiguration","SET_LOADED_CONFIGURATION","removeConfiguration","REMOVE_CONFIGURATION","clearLoadedConfiguration","CLEAR_LOADED_CONFIGURATION","setSaving","SET_SAVING","label","resultA","resultB","showOn","resultAName","toLowerCase","resultBName","Wrap","div","Label","isWhite","Input","input","Check","Radio","htmlFor","INCREMENT_INTERACTIONS","resetTagging","RESET_TAGGING","pendingPackConflicts","selectedPack","packTotal","previewedPackTotal","pendingConflictingAccessories","selectedWarrantyPack","selectedServicePack","total","Number","conflictingAccessoriesTotal","pendingPackConflictsTotal","RichText","forceLineHeight","tagging"],"mappings":"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IA,EAAUnB,MAE5E,OAAOgE,GAAiBA,EAAcO,SAClCP,EAAcQ,MACdQ,EACG9D,QAAO,SAAAC,GAAS,OAAKiE,EAAsBrC,SAAS5B,EAAUnB,OAC9DqE,QAAO,SAACS,EAAW3D,GAAZ,OAA0B2D,EAAY3D,EAAUqD,QAAO,MAI5Da,EAA0BnG,aACrC,SAAAC,GAAK,OAAIA,EAAMC,KAAKM,cAAc4F,gBAClC,SAAAA,GAAY,OAAIA,KAGLC,EAAyBrG,aACpC,SAAAC,GAAK,OAAIA,EAAMC,KAAKM,cAAc8F,eAClC,SAAAA,GAAW,OAAIA,M,ijHC3RJC,EAAqB,CAChC,oBACA,0BACA,yBACA,0BACA,2BAGWC,EAAsB,CACjC,gBACA,uBACA,qBACA,uBACA,yBACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAqB,CAChC,gBACA,uBACA,qBACA,uBACA,yBACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAoB,CAC/B,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAsB,CACjC,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,6BACA,+BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAyB,CACpC,gBACA,uBACA,qBACA,uBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAmB,CAC9B,gBACA,uBACA,qBACA,uBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA6B,CACxC,gBACA,uBACA,qBACA,uBACA,yBACA,0BACA,4BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA8B,CACzC,gBACA,uBACA,qBACA,uBACA,gCACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA8B,CACzC,gBACA,uBACA,qBACA,uBACA,qCACA,2BACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA4B,CACvC,gBACA,uBACA,qBACA,uBACA,4BACA,gCACA,0BACA,6BACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAgC,CAC3C,gBACA,uBACA,qBACA,uBACA,4BACA,gCACA,0BACA,6BACA,6BACA,+BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA+B,CAC1C,gBACA,uBACA,qBACA,uBACA,4BACA,gCACA,0BACA,6BACA,6BACA,+BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAuB,CAClC,gBACA,uBACA,qBACA,uBACA,uBACA,qBACA,wBACA,0BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,uBACA,qBACA,wBACA,0BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,uBACA,qBACA,wBACA,0BACA,yBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA4B,CACvC,gBACA,uBACA,qBACA,uBACA,yBACA,yBACA,oBACA,oBACA,0BACA,wBACA,yBACA,4BACA,2BACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,yBACA,yBACA,oBACA,oBACA,0BACA,wBACA,yBACA,2BACA,4BACA,eACA,aAGWC,EAAwB,CACnC,gBACA,uBACA,qBACA,uBACA,yBACA,yBACA,oBACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAwB,CACnC,gBACA,uBACA,qBACA,uBACA,yBACA,yBACA,oBACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAyB,CACpC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA6B,CACxC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA6B,CACxC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAmB,CAC9B,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAsB,CACjC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAyB,CACpC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAwB,CACnC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAuB,CAClC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAsB,CACjC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAoB,CAC/B,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAgC,CAC3C,gBACA,uBACA,qBACA,uBACA,6BACA,gCACA,yBACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,EAAsB,CAAC,sBACvBC,EAAsB,CAAC,sBACvBC,EAAsB,CAAC,sBACvBC,GAAsB,CAAC,sBACvBC,GAAsB,CAAC,sBACvBC,GAAsB,CAAC,sBAEvBC,GAA4B,CACvC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,GAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,GAAyB,CACpC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,GAA+B,CAC1C,gBACA,uBACA,qBACA,0BAGWC,GAA2B,CACtC,gBACA,uBACA,qBACA,uBACA,yBACA,eAGWC,GAA0B,CACrC,gBACA,uBACA,qBACA,uBACA,yBACA,eAGWC,GAAyB,CACpC,gBACA,uBACA,qBACA,uBACA,yBACA,eAGWC,GAAsB,CACjC,gBACA,uBACA,qBACA,uBACA,yBACA,eAGWC,GAAqB,CAChC,gBACA,uBACA,qBACA,uBACA,yBACA,eAGWC,GAA6B,CACxC,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,6BACA,+BACA,uBACA,qBACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,GAAgC,CAC3C,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,6BACA,+BACA,uBACA,qBACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,0BACA,wBACA,yBACA,eACA,aAGWC,GAAgB,CAC3B,gBACA,uBACA,qBACA,uBACA,yBACA,oBACA,0BACA,iBACA,UACA,cAGWC,GAAkB,CAC7B,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,6BACA,+BACA,uBACA,qBACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,2BAGWC,GAAoB,CAC/B,gBACA,uBACA,qBACA,uBACA,yBACA,4BACA,6BACA,+BACA,uBACA,qBACA,0BACA,yBACA,yBACA,oBACA,2BACA,oBACA,2BAGWC,GAAsB,CACjC,gBACA,uBACA,qBACA,uBACA,4BACA,+BACA,0BACA,yBACA,yBACA,o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","file":"1e4f5fe0c7d9f0e40b16.js","sourcesContent":["import { createSelector } from 'reselect';\nimport { resolve } from 'src/helpers/utilities';\nimport { getAccessoriesTotal } from 'helpers/accessories';\nimport * as helpers from './helpers';\n\nexport const bikeModelSelector = createSelector(\n state => state.bike.model,\n bike => bike\n);\n\nexport const bikeColoursSelector = createSelector(\n state => resolve(state, 'bike.model.colours', []),\n colours => colours\n);\n\nexport const bikeColourIdSelector = createSelector(\n state => state.bike.configuration.colour,\n colourId => colourId\n);\n\nexport const bikeColourSelector = createSelector(\n bikeColoursSelector,\n bikeColourIdSelector,\n (colours, selectedColourId) =>\n colours.find(colour => colour.id === selectedColourId) || colours.find(colour => colour.isDefault)\n);\n\nexport const labelsSelector = createSelector(\n state => state.app.data.labels,\n labels => labels\n);\n\nexport const heroSelector = createSelector(\n state => state.app.data.hero.heroTitle,\n state => state.app.data.hero.heroImage,\n (title, image) => ({ title, image })\n);\n\nexport const getBikeAccessories = createSelector(\n state => state.bike.configuration.accessories,\n accessories => accessories\n);\n\nexport const getPackAccessories = createSelector(\n state => state.bike.configuration.pack.accessories,\n packAccessories => packAccessories\n);\n\nexport const getAllBikeAccessories = createSelector(\n getBikeAccessories,\n getPackAccessories,\n (accessories, packAccessories) => helpers.removeDuplicateAccessories([...accessories, ...packAccessories])\n);\n\nexport const bikeSummaryAccessoriesSelector = createSelector(\n state => state.bike.configuration.accessories,\n accessories => accessories.filter(accessory => !accessory.pack || accessory.quantity > 1)\n);\n\nexport const bikeConfigurationSelector = createSelector(\n state => state.bike.configuration,\n configuration => configuration\n);\n\nexport const getPendingAccessories = createSelector(\n state => state.bike.configuration.pendingAccessories,\n pendingAccessories => pendingAccessories\n);\n\nexport const getConflictingAccessories = createSelector(\n state => state.bike.configuration.pendingAccessories,\n state => state.bike.configuration.accessories,\n state => state.bike.configuration.pack.accessories,\n state => state.configurator.accessories.items,\n (pendingAccessories, bikeAccessories, packAccessories, allAccessories) =>\n helpers.getConflictingAccessories(pendingAccessories, bikeAccessories, packAccessories, allAccessories)\n);\n\nexport const getPendingConflictingAccessories = createSelector(\n getConflictingAccessories,\n state => state.bike.configuration.pendingAccessories,\n (conflictingAccessories, pendingAccessories) =>\n helpers.getPendingConflictingAccessories(conflictingAccessories, pendingAccessories)\n);\n\nexport const getRequiresAccessories = createSelector(\n state => state.bike.configuration.pendingAccessories,\n state => state.configurator.accessories.items,\n state => state.bike.configuration.accessories,\n getPackAccessories,\n (pendingAccessories, allAccessories, bikeAccessories, packAccessories) => {\n const emptyResponse = {\n requiresAll: [],\n requiresSingle: [],\n };\n\n if (!Array.isArray(pendingAccessories) || !pendingAccessories.length) {\n return emptyResponse;\n }\n\n const pendingAccessory = pendingAccessories[0];\n const { requiresAll, requiresSingle } = pendingAccessory;\n if (!requiresAll.length && !requiresSingle.length) {\n return emptyResponse;\n }\n\n const allBikeAccessories = [...bikeAccessories, ...packAccessories];\n const allBikeAccessoryIds = allBikeAccessories.map(accessory => accessory.id);\n\n const mapToAccessories = accessoryIdArray =>\n accessoryIdArray\n .map(accessoryId => allAccessories.find(accessory => accessory.id === accessoryId))\n .filter(accessory => accessory && !allBikeAccessories.find(bikeAccessory => bikeAccessory.id === accessory.id));\n\n const bikeHasRequiresSingle = requiresSingle.some(accessoryId => allBikeAccessoryIds.includes(accessoryId));\n\n return {\n requiresAll: mapToAccessories(requiresAll),\n requiresSingle: bikeHasRequiresSingle ? [] : mapToAccessories(requiresSingle),\n };\n }\n);\n\nexport const getConflictChoice = createSelector(\n state => state.bike.configuration.conflictChoice,\n conflictChoice => conflictChoice\n);\n\nexport const getRequiresSingleChoice = createSelector(\n state => state.bike.configuration.requiresSingleChoice,\n state => state.configurator.accessories.items,\n (requiresSingleChoice, accessories) => accessories.find(accessory => accessory.id === requiresSingleChoice)\n);\n\nexport const getAccessoryPendingRemoval = createSelector(\n state => state.bike.configuration.accessoryPendingRemoval,\n state => state.configurator.accessories.items,\n state => state.bike.configuration.accessories,\n state => state.bike.configuration.pack.accessories,\n (accessoryPendingRemovalId, allAccessories, bikeAccessories, bikePackAccessories) => {\n const accessoryPendingRemoval = allAccessories.find(accessory => accessory.id === accessoryPendingRemovalId);\n\n if (!accessoryPendingRemoval) {\n return null;\n }\n\n return {\n ...accessoryPendingRemoval,\n linkedAccessories: [...bikeAccessories, ...bikePackAccessories].filter(\n accessory =>\n accessory.requiresSingle.includes(accessoryPendingRemovalId) ||\n accessory.requiresAll.includes(accessoryPendingRemovalId) ||\n accessoryPendingRemoval.requiresSingle.includes(accessory.id) ||\n accessoryPendingRemoval.requiresAll.includes(accessory.id)\n ),\n };\n }\n);\n\nexport const getPack = createSelector(\n state => state.bike.configuration.pack.selected,\n pack => pack\n);\n\nexport const getPendingPack = createSelector(\n state => state.bike.configuration.pack.pending,\n pendingPack => pendingPack\n);\n\nexport const getPreviewedPackConflicts = createSelector(\n state => state.bike.configuration.pack.previewed,\n state => state.bike.accessories,\n (previewedPack, bikeAccessories) =>\n previewedPack ? helpers.getPackAccessoryConflicts(previewedPack, bikeAccessories) : []\n);\n\nexport const getPendingPackConflicts = createSelector(\n state => state.bike.configuration.pack.pending,\n state => state.bike.configuration.accessories,\n (pendingPack, bikeAccessories) =>\n pendingPack && bikeAccessories.length ? helpers.getPackAccessoryConflicts(pendingPack, bikeAccessories) : []\n);\n\nexport const getPackPendingRemoval = createSelector(\n state => state.bike.configuration.pack.pendingRemoval,\n packPendingRemoval => packPendingRemoval\n);\n\nexport const getPackAndAccessoriesTotal = createSelector(\n state => state.bike.configuration.accessories,\n state => state.bike.configuration.pack.selected,\n state => state.bike.configuration.pack.accessories,\n (accessories, pack, packAccessories) => {\n const accessoriesTotal = accessories.reduce(getAccessoriesTotal, 0);\n const packTotal = pack && pack.isLocked ? pack.price : packAccessories.reduce(getAccessoriesTotal, 0);\n\n return accessoriesTotal + packTotal;\n }\n);\n\nexport const getPreviewedPack = createSelector(\n state => state.bike.configuration.pack.previewed,\n previewedPack => previewedPack\n);\n\nexport const getPackSelectedAccessories = createSelector(\n state => state.bike.configuration.pack.selectedAccessories,\n selectedAccessories => selectedAccessories\n);\n\nexport const getPackTotal = createSelector(\n getPack,\n getPreviewedPack,\n getPackAccessories,\n (pack, previewedPack, packAccessories) => {\n const currentPack = pack || previewedPack;\n\n if (!currentPack) {\n return 0;\n }\n\n return currentPack && currentPack.isLocked\n ? currentPack.price\n : packAccessories.reduce((prevTotal, accessory) => prevTotal + accessory.price, 0);\n }\n);\n\nexport const getPackFittingTimeTotal = createSelector(\n getPack,\n getPreviewedPack,\n getPackSelectedAccessories,\n (pack, previewedPack, packSelectedAccessories) => {\n const currentPack = pack || previewedPack;\n\n if (!currentPack) {\n return 0;\n }\n\n return currentPack && currentPack.isLocked\n ? currentPack.fittingTime\n : packSelectedAccessories.reduce((prevTotal, accessory) => prevTotal + accessory.fittingTime, 0);\n }\n);\n\nexport const getPackSelectedTotal = createSelector(\n getPack,\n getPreviewedPack,\n getPackSelectedAccessories,\n (pack, previewedPack, packSelectedAccessories) => {\n const currentPack = pack || previewedPack;\n\n if (!currentPack) {\n return 0;\n }\n\n return currentPack && currentPack.isLocked\n ? currentPack.price\n : packSelectedAccessories.reduce((prevTotal, accessory) => prevTotal + accessory.price, 0);\n }\n);\n\nexport const getPreviewedPackTotal = createSelector(\n getPreviewedPack,\n getPackSelectedAccessories,\n getPendingConflictingAccessories,\n (previewedPack, packSelectedAccessories, pendingAccessories) => {\n const pendingAccessoriesIds = pendingAccessories.map(accessory => accessory.id);\n\n return previewedPack && previewedPack.isLocked\n ? previewedPack.price\n : packSelectedAccessories\n .filter(accessory => !pendingAccessoriesIds.includes(accessory.id))\n .reduce((prevTotal, accessory) => prevTotal + accessory.price, 0);\n }\n);\n\nexport const getSelectedWarrantyPack = createSelector(\n state => state.bike.configuration.warrantyPack,\n warrantyPack => warrantyPack\n);\n\nexport const getSelectedServicePack = createSelector(\n state => state.bike.configuration.servicePack,\n servicePack => servicePack\n);\n","export const configuratorFilter = [\n 'configuratorGenre',\n 'configuratorEngineRange',\n 'configuratorPriceRange',\n 'configuratorLicenceType',\n 'configuratorSurfaceType',\n];\n\nexport const configuratorStarted = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorStartPrice',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorColour = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorPacks = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessories = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSummary = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorFullScreen = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorFlip = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorColourSelected = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourPrice',\n 'configuratorColourActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessoryFilter = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorAccessoryCategory',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessorySearch = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorAccessoryCategoryCount',\n 'configuratorTotalActions',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessoryInfo = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorAccessoryName',\n 'configuratorAccessoryCategory',\n 'configuratorAccessoryID',\n 'configuratorAccessoryPrice',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessorySelected = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorAccessoryName',\n 'configuratorAccessoryCategory',\n 'configuratorAccessoryID',\n 'configuratorAccessoryPrice',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessoryRemoved = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorAccessoryName',\n 'configuratorAccessoryCategory',\n 'configuratorAccessoryID',\n 'configuratorAccessoryPrice',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorPackInfo = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackPrice',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorPackSelected = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackPrice',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorPackRemoved = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackPrice',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorExtraSelected = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'configuratorExtrasActions',\n 'configuratorTotalActions',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorExtraRemoved = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'configuratorTotalActions',\n 'configuratorExtrasActions',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorOfferInfo = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorExtraInfo = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSaveAttempt = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSaveCancel = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSaveComplete = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAbandonAttempt = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAbandonSave = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAbandonConfirm = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSave = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorUnsaved = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSaveIntent = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorResetAttempt = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorResetConfirm = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorResetCancel = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorShareAttempt = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorShareConfirm = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorShareCancel = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorPriceInfo = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorFinanceInfo = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorTestRide = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorFinance = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorPrint = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorAccessoryConflict = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryCategory',\n 'configuratorStartPrice',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorFilter1 = ['configuratorFilter'];\nexport const configuratorFilter2 = ['configuratorFilter'];\nexport const configuratorFilter3 = ['configuratorFilter'];\nexport const configuratorFilter4 = ['configuratorFilter'];\nexport const configuratorFilter5 = ['configuratorFilter'];\nexport const configuratorFilter6 = ['configuratorFilter'];\n\nexport const configuratorGarageAttempt = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorGarageCancel = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorGarageLoad = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorGarageFindDealer = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorFinalPrice',\n];\n\nexport const configuratorGarageBuyNow = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'productCode',\n];\n\nexport const configuratorTrayFinance = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'productCode',\n];\n\nexport const configuratorSumFinance = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'productCode',\n];\n\nexport const configuratorSumPrim = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'productCode',\n];\n\nexport const configuratorSumSec = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'productCode',\n];\n\nexport const configuratorSendDealerOpen = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const configuratorSendDealerSuccess = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n];\n\nexport const getDirections = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorFinalPrice',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'financeProduct',\n 'tradeIn',\n 'dealerName',\n];\n\nexport const saveQuoteCancel = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n];\n\nexport const saveQuoteComplete = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorBikeColour',\n 'configuratorColourActions',\n 'configuratorAccessoryItems',\n 'configuratorAccessoryActions',\n 'configuratorPackName',\n 'configuratorPackID',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n];\n\nexport const configuratorCalPrim = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n 'financeProduct',\n 'ctaText',\n];\n\nexport const configuratorCalSec = [\n 'countryMarket',\n 'configuratorBikeName',\n 'configuratorBikeID',\n 'configuratorBikeYear',\n 'configuratorColourActions',\n 'configuratorAccessoryActions',\n 'configuratorPackActions',\n 'configuratorStartPrice',\n 'configuratorFinalPrice',\n 'configuratorValue',\n 'configuratorTotalActions',\n 'configuratorGenre',\n 'configuratorProductCode',\n 'configuratorExtraName',\n 'configuratorExtraPrice',\n 'offerPresent',\n 'offerName',\n 'financeProduct',\n 'ctaText',\n];\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getInteractions } from 'src/redux/tagging/selectors';\nimport { incrementInteractions } from 'src/redux/tagging/actions';\nimport * as events from './dataLayer/events';\nimport useResolver from './dataLayer/resolver';\n\nconst useDataLayer = () => {\n const resolver = useResolver();\n const dispatch = useDispatch();\n const interactions = useSelector(getInteractions);\n\n const interactionVariableMappings = {\n configuratorTotalActions: 'total',\n configuratorColourActions: 'colours',\n configuratorAccessoryActions: 'accessories',\n configuratorPackActions: 'packs',\n configuratorExtrasActions: 'extras',\n };\n\n const incrementEvents = {\n configuratorAccessorySelected: ['configuratorAccessoryActions', 'configuratorTotalActions'],\n configuratorAccessoryRemoved: ['configuratorAccessoryActions', 'configuratorTotalActions'],\n configuratorColourSelected: ['configuratorColourActions', 'configuratorTotalActions'],\n configuratorPackSelected: ['configuratorPackActions', 'configuratorTotalActions'],\n configuratorPackRemoved: ['configuratorTotalActions'],\n configuratorAccessoryConflict: ['configuratorAccessoryActions', 'configuratorTotalActions'],\n configuratorExtraSelected: ['configuratorExtrasActions', 'configuratorTotalActions'],\n configuratorExtraRemoved: ['configuratorExtrasActions', 'configuratorTotalActions'],\n };\n\n return (eventName, overrides = {}) => {\n const eventDataVariables = events[eventName]; // eslint-disable-line\n\n const dataLayerObj = eventDataVariables.reduce(\n (prevDataLayerObj, dataLayerVariable) => {\n const interaction = interactionVariableMappings[dataLayerVariable];\n const needsIncrement = incrementEvents[eventName] && interaction;\n\n if (needsIncrement) {\n dispatch(incrementInteractions(interaction));\n }\n\n const currentCount = interactions[interaction];\n const newCount = needsIncrement ? currentCount + 1 : currentCount;\n\n return {\n ...prevDataLayerObj,\n [dataLayerVariable]: interaction ? newCount : resolver[dataLayerVariable] && resolver[dataLayerVariable](),\n ...overrides,\n };\n },\n {\n event: eventName,\n }\n );\n\n const isGa = !!document.querySelector('script[id=\"ga\"]');\n\n if (isGa) {\n if (!window?.gtag) {\n return;\n }\n\n window.gtag('event', `${dataLayerObj.event}`, dataLayerObj);\n } else {\n if (!window.dataLayer) {\n return;\n }\n\n window.dataLayer.push(dataLayerObj);\n }\n };\n};\n\nexport default useDataLayer;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n bikeModelSelector,\n bikeColourSelector,\n getAllBikeAccessories,\n getPack,\n getSelectedServicePack,\n getSelectedWarrantyPack,\n} from 'src/redux/bike/selectors';\nimport { getLanguageCode, roundPrecisionDecimal, stripHtmlTags } from 'helpers/utilities';\nimport {\n accessoryCategorySelector,\n accessoryCategoriesSelector,\n getAccessoriesQuery,\n} from 'src/redux/configurator/selectors';\nimport useBikeTotal from '../useBikeTotal';\n\nexport default () => {\n const bikeTotal = useBikeTotal();\n\n const bikeModel = useSelector(bikeModelSelector);\n const bikeColour = useSelector(bikeColourSelector);\n const categories = useSelector(accessoryCategoriesSelector);\n const selectedCategory = useSelector(accessoryCategorySelector);\n const accessories = useSelector(getAllBikeAccessories);\n const accessoriesQuery = useSelector(getAccessoriesQuery);\n const accessoryPack = useSelector(getPack);\n const servicePack = useSelector(getSelectedServicePack);\n const warrantyPack = useSelector(getSelectedWarrantyPack);\n\n return {\n countryMarket: () => getLanguageCode(),\n configuratorBikeName: () => bikeModel && stripHtmlTags(bikeModel.name),\n configuratorBikeID: () => bikeModel && bikeModel.id,\n configuratorBikeYear: () => bikeModel && bikeModel.year,\n configuratorBikeColour: () => bikeColour && bikeColour.name,\n configuratorColourPrice: () => bikeColour && roundPrecisionDecimal(bikeColour.price - bikeModel.price),\n configuratorColourActions: () => '',\n configuratorAccessoryActions: () => '',\n configuratorAccessoryCategory: () => (selectedCategory ? selectedCategory.name : ''),\n configuratorAccessoryCategoryCount: () => categories.length,\n configuratorAccessoryID: () => '',\n configuratorAccessoryItems: () => accessories.length,\n configuratorAccessoryName: () => '',\n configuratorAccessoryPrice: () => '',\n configuratorAccessorySearch: () => accessoriesQuery,\n configuratorPackActions: () => '',\n configuratorPackID: () => accessoryPack?.id,\n configuratorPackName: () => accessoryPack?.name,\n configuratorPackPrice: () => accessoryPack?.price,\n configuratorStartPrice: () => bikeModel && bikeModel.price,\n configuratorFinalPrice: () => bikeTotal,\n configuratorTotalActions: () => '',\n configuratorValue: () => bikeModel && roundPrecisionDecimal(bikeTotal - bikeModel.price),\n configuratorGenre: () => (bikeModel && bikeModel.genre) || '',\n configuratorEngineRange: () => '',\n configuratorPriceRange: () => '',\n configuratorLicenceType: () => '',\n configuratorSurfaceType: () => '',\n configuratorProductCode: () => bikeModel && bikeModel.productCode,\n configuratorFilter: () => '',\n configuratorExtraName: () => warrantyPack?.title || servicePack?.title,\n configuratorExtraPrice: () => warrantyPack?.price || servicePack?.price,\n offerPresent: () => !!bikeModel?.offerSummaryContent?.title,\n offerName: () => bikeModel?.offerSummaryContent?.title,\n ctaText: () => '',\n };\n};\n","import { createSelector } from 'reselect';\nimport { VIEW_ALL_OPTION_ID, FEATURED_OPTION_ID } from 'src/constants/accessories';\nimport sortOptions from 'src/config/sortOptions.config';\n\nexport const currentStepSelector = createSelector(\n state => state.configurator.step,\n step => step\n);\n\nexport const openModalSelector = createSelector(\n state => state.configurator.openModals,\n openModals => openModals\n);\n\nexport const isModalOpenSelector = createSelector(\n state => state.configurator.openModals,\n openModals => Object.values(openModals).some(isOpen => isOpen)\n);\n\nexport const modalPropsSelector = modalName =>\n createSelector(\n state => state.configurator.modalProps[modalName],\n modalProps => modalProps\n );\n\nexport const disclaimerTypeSelector = createSelector(\n state => state.configurator.disclaimer.type,\n disclaimerType => disclaimerType\n);\n\nexport const disclaimerOpenSelector = createSelector(\n state => state.configurator.disclaimer.open,\n disclaimerOpen => disclaimerOpen\n);\n\nexport const accessoryCategoriesSelector = createSelector(\n state => state.configurator.accessories.categories,\n categories => categories\n);\n\nexport const accessoryItemsSelector = createSelector(\n state => state.configurator.accessories.items,\n items => items\n);\n\nexport const accessoryExtrasSelector = createSelector(\n state => state.configurator.accessories.extras,\n extras => extras\n);\n\nexport const accessoryCategoryIdSelector = createSelector(\n state => state.configurator.accessories.category,\n selectedCategory => selectedCategory\n);\n\nexport const accessoryCategorySelector = createSelector(\n accessoryCategoryIdSelector,\n accessoryCategoriesSelector,\n (categoryId, categories) => categories.find(category => category.id === categoryId)\n);\n\nexport const getAccessoriesByCategory = createSelector(\n state => state.configurator.accessories.category,\n state => state.configurator.accessories.items,\n state => state.configurator.accessories.sort,\n (selectedCategoryId, accessories, sort) =>\n selectedCategoryId\n ? accessories\n .filter(\n accessory =>\n selectedCategoryId === VIEW_ALL_OPTION_ID ||\n accessory.categoryId === selectedCategoryId ||\n (selectedCategoryId === FEATURED_OPTION_ID && accessory.isFeatured)\n )\n .sort((a, b) => {\n const selectedSortOption = sortOptions.find(sortOption => sortOption.id === sort);\n\n return selectedSortOption ? selectedSortOption.sortFunction(a, b) : 0;\n })\n : []\n);\n\nexport const previewAccessorySelector = createSelector(\n state => state.configurator.accessories.previewedAccessory,\n previewedAccessory => previewedAccessory\n);\n\nexport const completedStepsSelector = createSelector(\n state => state.configurator.completedSteps,\n completedSteps => completedSteps\n);\n\nexport const getBikeFlipped = createSelector(\n state => state.configurator.flipped,\n flipped => flipped\n);\n\nexport const getBikeZoomed = createSelector(\n state => state.configurator.zoom,\n zoom => zoom\n);\n\nexport const getScrollYPosition = createSelector(\n state => state.configurator.scrollYPosition,\n scrollYPosition => scrollYPosition\n);\n\nexport const getScrollXPosition = createSelector(\n state => state.configurator.scrollXPosition,\n scrollXPosition => scrollXPosition\n);\n\nexport const getAccessoriesQuery = createSelector(\n state => state.configurator.accessories.query,\n query => query\n);\n\nexport const getAccessorySort = createSelector(\n state => state.configurator.accessories.sort,\n sort => sort\n);\n\nexport const getPacks = createSelector(\n state => state.configurator.packs.items,\n state => state.configurator.accessories.items,\n (packs, accessories) =>\n packs.map(pack => ({\n ...pack,\n parts: pack.parts.map(accessoryId => accessories.find(accessory => accessory.id === accessoryId)),\n }))\n);\n\nexport const getPrintActions = createSelector(\n state => state.configurator.printActions,\n printActions => printActions\n);\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { lighten, darken } from 'polished';\nimport Link from 'components/_utility/Link/Link';\nimport { minBp } from 'src/lib/theme';\n\nexport const buttonStyles = css`\n background-color: ${({ theme }) => theme.colors.buttons.default};\n color: ${({ theme }) => theme.colors.buttons.white};\n padding: 2px 30px 0;\n font-family: ${({ theme }) => theme.fonts.dinDemi};\n font-size: 15px;\n font-weight: 500;\n text-transform: uppercase;\n text-decoration: none;\n border: 0;\n height: 40px;\n transition: background-color 0.1s ease-in-out;\n justify-content: center;\n display: flex;\n align-items: center;\n line-height: 1;\n cursor: pointer;\n\n ${({ large }) =>\n large\n ? `\n height: 48px;\n `\n : ``}\n\n ${({ fluid }) =>\n fluid\n ? `\n width: 100%;\n `\n : ``}\n\n ${({ wide }) =>\n wide\n ? `\n width: 280px;\n `\n : ``}\n\n &:focus {\n background-color: #000;\n }\n\n &:hover:not(:disabled) {\n background: #505050;\n }\n\n &:disabled {\n cursor: default;\n background: #f4f4f4;\n color: #63656a;\n pointer-events: none;\n }\n\n ${({ primary, theme }) =>\n primary\n ? `\n background-color: ${theme.colors.buttons.primary};\n\n &:focus {\n // outline-offset: -0.125rem;\n background: #8F111F;\n }\n\n &:hover:not(:disabled) {\n background: #8F111F;\n }\n `\n : ``}\n\n @media ${minBp('tablet')} {\n font-size: 17px;\n }\n\n ${({ small }) =>\n small\n ? `\n font-size: 12px;\n height: 29px;\n\n @media ${minBp('tablet')} {\n font-size: 12px;\n }\n\n @media ${minBp('tabletLarge')} {\n font-size: 17px;\n height: 40px;\n }\n `\n : ``}\n`;\n\nconst Button = styled.button`\n ${buttonStyles};\n`;\n\nexport const LinkButton = styled(Link)`\n ${buttonStyles};\n display: inline-flex;\n`;\n\nexport default Button;\n","import React, { forwardRef } from 'react';\nimport { Link as ReachLink } from '@reach/router';\nimport { useSelector } from 'react-redux';\nimport { basepathSelector } from 'src/redux/app/selectors';\n\nconst Link = forwardRef(({ to, children, bold, ...props }, ref) => {\n const basepath = useSelector(basepathSelector);\n\n return (\n \n {children}\n \n );\n});\n\nexport default Link;\n","import React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => );","import { createSelector } from 'reselect';\n\nexport const getConfigurations = createSelector(\n state => state.garage.configurations,\n configurations => configurations\n);\n\nexport const getLoadedConfiguration = createSelector(\n state => state.garage.loadedConfiguration,\n loadedConfiguration => loadedConfiguration\n);\n\nexport const getSaving = createSelector(\n state => state.garage.saving,\n saving => saving\n);\n","import request from './request';\n\nconst fetchGoal = async eventId => {\n if (eventId === undefined) return;\n\n try {\n await request(`/api/v2/tracker/goal`, {\n method: 'POST',\n body: JSON.stringify({\n eventId,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n mode: 'cors',\n });\n } catch (ex) { } // eslint-disable-line\n};\n\nexport default fetchGoal;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { labelsSelector } from 'src/redux/app/selectors';\n\nconst useLabel = () => {\n const labels = useSelector(labelsSelector);\n\n const getLabel = (labelName, fallback) => labels[labelName] || fallback || labelName;\n\n return getLabel;\n};\n\nexport default useLabel;\n","import {\n SET_CONFIGURATIONS,\n SET_LOADED_CONFIGURATION,\n REMOVE_CONFIGURATION,\n CLEAR_LOADED_CONFIGURATION,\n SET_SAVING,\n} from './types';\n\nexport const setConfigurations = payload => ({\n type: SET_CONFIGURATIONS,\n payload,\n});\n\nexport const setLoadedConfiguration = payload => ({\n type: SET_LOADED_CONFIGURATION,\n payload,\n});\n\nexport const removeConfiguration = payload => ({\n type: REMOVE_CONFIGURATION,\n payload,\n});\n\nexport const clearLoadedConfiguration = () => ({\n type: CLEAR_LOADED_CONFIGURATION,\n});\n\nexport const setSaving = payload => ({\n type: SET_SAVING,\n payload,\n});\n","const sortOptions = [\n {\n id: 'featured',\n label: 'featuredLabel',\n sortFunction: (resultA, resultB) => 0,\n showOn: ['accessories'],\n },\n {\n id: 'price-asc',\n label: 'priceAscendingLabel',\n sortFunction: (resultA, resultB) => resultA.price - resultB.price,\n showOn: ['accessories'],\n },\n {\n id: 'price-desc',\n label: 'priceDescendingLabel',\n sortFunction: (resultA, resultB) => resultB.price - resultA.price,\n showOn: ['accessories'],\n },\n {\n id: 'name-asc',\n label: 'nameAscendingLabel',\n sortFunction: (resultA, resultB) => {\n const resultAName = resultA.name.toLowerCase();\n const resultBName = resultB.name.toLowerCase();\n\n if (resultAName > resultBName) {\n return 1;\n }\n\n if (resultBName > resultAName) {\n return -1;\n }\n\n return 0;\n },\n showOn: ['accessories'],\n },\n {\n id: 'name-desc',\n label: 'nameDescendingLabel',\n sortFunction: (resultA, resultB) => {\n const resultAName = resultA.name.toLowerCase();\n const resultBName = resultB.name.toLowerCase();\n\n if (resultAName > resultBName) {\n return -1;\n }\n\n if (resultBName > resultAName) {\n return 1;\n }\n\n return 0;\n },\n showOn: ['accessories'],\n },\n];\n\nexport default sortOptions;\n","import React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => );","import styled from 'styled-components';\nimport { minBp } from 'src/lib/theme';\n\nexport const Wrap = styled.div`\n display: flex;\n padding: 18px 0;\n border-bottom: 1px solid #e0e0e0;\n position: relative;\n\n @media ${minBp('tabletLarge')} {\n display: inline-flex;\n align-items: center;\n margin: 2px 0;\n padding: 0;\n border: 0;\n\n &:not(:last-of-type) {\n margin-right: 15px;\n }\n }\n\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n flex-direction: row-reverse;\n }\n`;\n\nexport const Label = styled.label`\n color: #000;\n display: block;\n position: relative;\n padding-left: 24px;\n font-weight: 300;\n font-size: 14px;\n z-index: 9;\n cursor: pointer;\n\n @media ${minBp('tabletLarge')} {\n padding-top: 2px;\n margin: 2px 0;\n }\n\n ${({ isWhite }) =>\n isWhite &&\n `\n @media ${minBp('tabletLarge')} {\n color: #fff;\n }\n `}\n`;\n\nexport const Input = styled.input`\n position: absolute;\n visibility: hidden;\n`;\n\nexport const Check = styled.div`\n display: block;\n position: absolute;\n border: 1px solid #000;\n border-radius: 50%;\n height: 15px;\n width: 15px;\n z-index: 5;\n transition: border 0.25s linear;\n\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n top: 5px;\n }\n\n &:before {\n display: block;\n position: absolute;\n content: '';\n border-radius: 100%;\n height: 9px;\n width: 9px;\n top: 2px;\n left: 2px;\n margin: auto;\n }\n\n ${Input}:checked ~ & {\n background-color: #fff;\n\n &:before {\n background-color: #000;\n }\n }\n\n ${({ isWhite }) =>\n isWhite &&\n `\n @media ${minBp('tabletLarge')} {\n border: 1px solid #fff;\n }\n \n ${Input}:checked ~ & {\n background-color: #000;\n\n &:before {\n background-color: #fff;\n }\n }\n `}\n`;\n","import React from 'react';\nimport Label from 'components/_utility/Label';\nimport { Wrap, Input, Check, Label as RadioLabel } from './Radio.styled';\n\nconst Radio = ({ id, label, isWhite, ...props }) => (\n \n \n \n \n \n \n);\n\nexport default Radio;\n","import { INCREMENT_INTERACTIONS, RESET_TAGGING } from './types';\n\nexport const incrementInteractions = payload => ({\n type: INCREMENT_INTERACTIONS,\n payload,\n});\n\nexport const resetTagging = () => ({\n type: RESET_TAGGING,\n});\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n bikeColourSelector,\n getPendingAccessories,\n getConflictingAccessories,\n getConflictChoice,\n getPendingPack,\n getPendingPackConflicts,\n getPack,\n getRequiresSingleChoice,\n getRequiresAccessories,\n getPreviewedPack,\n getPackTotal,\n getBikeAccessories,\n getPreviewedPackTotal,\n getPackPendingRemoval,\n getPendingConflictingAccessories,\n getSelectedWarrantyPack,\n getSelectedServicePack,\n} from 'src/redux/bike/selectors';\n\nconst useBikeTotal = () => {\n const colour = useSelector(bikeColourSelector);\n const accessories = useSelector(getBikeAccessories);\n const pendingAccessories = useSelector(getPendingAccessories);\n const conflictingAccessories = useSelector(getConflictingAccessories);\n const conflictChoice = useSelector(getConflictChoice);\n const pendingPack = useSelector(getPendingPack);\n const pendingPackConflicts = useSelector(getPendingPackConflicts);\n const selectedPack = useSelector(getPack);\n const previewedPack = useSelector(getPreviewedPack);\n const { requiresAll, requiresSingle } = useSelector(getRequiresAccessories);\n const requiresSingleChoice = useSelector(getRequiresSingleChoice);\n const packTotal = useSelector(getPackTotal);\n const previewedPackTotal = useSelector(getPreviewedPackTotal);\n const pendingAccessory = pendingAccessories[0];\n const packPendingRemoval = useSelector(getPackPendingRemoval);\n const pendingConflictingAccessories = useSelector(getPendingConflictingAccessories);\n const selectedWarrantyPack = useSelector(getSelectedWarrantyPack);\n const selectedServicePack = useSelector(getSelectedServicePack);\n\n let total = (colour && colour.price) || 0;\n\n total += accessories.reduce((prevTotal, accessory) => prevTotal + accessory.price * (accessory.quantity || 1), 0);\n\n if (selectedServicePack) {\n total += Number(selectedServicePack.price);\n }\n\n if (selectedWarrantyPack) {\n total += Number(selectedWarrantyPack.price);\n }\n\n if (pendingAccessories.length && !packPendingRemoval) {\n if (conflictingAccessories.length) {\n const conflictingAccessoriesTotal = conflictingAccessories.reduce(\n (prevTotal, accessory) => prevTotal + accessory.price * (accessory.quantity || 1),\n 0\n );\n\n total -= conflictingAccessoriesTotal;\n\n if (conflictChoice === 'existing') {\n total += conflictingAccessoriesTotal;\n }\n\n if (conflictChoice === 'new') {\n total += pendingConflictingAccessories.reduce(\n (prevTotal, accessory) => prevTotal + accessory.price * (accessory.quantity || 1),\n 0\n );\n }\n } else {\n if (requiresSingle.length || requiresAll.length) {\n total += pendingAccessory.price;\n }\n\n if (requiresSingle.length && requiresSingleChoice) {\n total += requiresSingleChoice.price;\n }\n\n if (requiresAll.length) {\n total += requiresAll.reduce((prevTotal, accessory) => prevTotal + accessory.price, 0);\n }\n }\n }\n\n if (pendingPack && pendingPack.isLocked) {\n const pendingPackConflictsTotal = pendingPackConflicts.reduce(\n (prevTotal, accessory) => prevTotal + accessory.price * (accessory.quantity || 1),\n 0\n );\n\n total -= pendingPackConflictsTotal;\n\n if (conflictChoice === 'pack') {\n total += pendingPack.price;\n }\n\n if (conflictChoice === 'accessories') {\n total += pendingPackConflictsTotal;\n }\n }\n\n if (packPendingRemoval) {\n if (conflictChoice === 'pack') {\n total += packTotal;\n }\n\n if (conflictChoice === 'accessory') {\n total += pendingAccessories.reduce((prevTotal, accessory) => prevTotal + accessory.price, 0);\n }\n }\n\n if (selectedPack && !packPendingRemoval) {\n total += packTotal;\n }\n\n if (previewedPack && !selectedPack && !pendingPack) {\n total += previewedPackTotal;\n }\n\n return total;\n};\n\nexport default useBikeTotal;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst RichText = styled.div`\n line-height: ${({ forceLineHeight }) => (forceLineHeight ? '1.375' : 'inherit')};\n\n ul:not([class*='-sc-']):not([class*='styled__']) {\n padding-left: 1rem;\n list-style: inherit;\n\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { \n list-style: disc;\n }\n\n li:not([class*='-sc-']):not([class*='styled__']) {\n @media (min-width: 1px) {\n font-size: inherit;\n line-height: inherit;\n padding-left: 0;\n }\n\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { \n padding: 1px 0;\n }\n\n &:before {\n content: '';\n }\n }\n }\n`;\n\nexport default RichText;\n","import { createSelector } from 'reselect';\n\nexport const getInteractions = createSelector(\n state => state.tagging.interactions,\n interactions => interactions\n);\n","export const VIEW_ALL_OPTION_ID = 'view-all';\n\nexport const FEATURED_OPTION_ID = 'featured';\n"],"sourceRoot":""}