{"version":3,"sources":["assets/img/podcast.jpg","assets/img/clean-kilo.jpg","assets/img/location-edge.jpg","assets/img/sustainable.png","assets/img/Consumer_Tracker_Q4_2019___Deloitte_UK.png","assets/img/Retail_Trends_2019___Deloitte_UK.png","assets/img/cq5dam_web_1400_350_desktop_jpeg__1280×320_.png","components/VideoPlayer.js","components/DownloadButton.js","scroll.js","components/TopGraph.js","components/ValuesGraph.js","components/HeaderAnimation.js","components/HeaderArea.js","components/DownloadMobile.js","components/PodCast.js","components/ChangingConsumerInteractives.js","index.js"],"names":["module","exports","VideoPlayer","props","renderComponent","bind","style","width","position","paddingBottom","overflow","maxWidth","top","left","bottom","right","height","src","window","YOUTUBE_EMBED_URL","frameBorder","allowFullScreen","this","React","Component","DownloadButton","reactToScroll","setup","onResize","controlpoints","state","in","inPoint","outPoint","addEventListener","setTimeout","removeEventListener","scroll","scrollY","pageYOffset","document","querySelector","setState","getBoundingClientRect","e","isIn","documentElement","clientHeight","ref","node","href","target","x","y","viewBox","opacity","fill","d","inPage","elem","yOffset","anchor","coords","windowHeight","inCurentViewPort","topVisible","bottomVisible","gsap","registerPlugin","MorphSVGPlugin","inputs","qol","title","subtitle","data","dataAxis","dataLabels","dataColors","dataOpacity","keys","axis","axisTicks","ticks","event","coe","fow","TopGraph","changeData","selected","active","select","FV_CALL_ANALYTICS","xPos","scaleLinear","domain","length","range","yPos","id","gradientTransform","offset","stopColor","map","tick","idx","key","x1","x2","y1","y2","stroke","strokeWidth","mask","nullVal","polyString","polyStartString","point","to","duration","morphSVG","shape","ease","points","fontSize","textAnchor","transform","lable","backgroundColor","onClick","rowHeaders","reverse","fills","input","ValuesGraph","setInternals","row","slice","shift","ranks","arr","i","push","r","renderBackgroundLines","attr","label","fontWeight","className","onChange","value","split","DrawSVGPlugin","HeaderAnimation","currentRender","waves","paths","set","pie2","drawSVG","pie1","pie3","pie4","pie5","master","timeline","add","repeat","yoyo","fromTo","one","two","three","four","five","six","edgeTimeline","console","log","play","pause","cx","cy","data-name","strokeMiterlimit","clipPath","mixBlendMode","ScrollToPlugin","HeaderArea","scrollTo","offsetY","DownloadMobile","PodCast","scrolling","frameborder","ChangingConsumerInteractives","initScrollControl","scrollChange","scrollPos","sectionName","dl","hitpoints","querySelectorAll","Array","from","ele","fullHeight","scrollHeight","total","innerHeight","Math","round","dims","getAttribute","background","minHeight","data-download","text","require","alt","backgroundImage","ReactDOM","render","getElementById","FV_PRERENDER","ReactDOMServer","renderToStaticMarkup"],"mappings":"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","file":"static/js/main.b7845a91.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/podcast.76a4a6e9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/clean-kilo.0ef04e4a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/location-edge.2140004d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/sustainable.6e98300e.png\";","module.exports = __webpack_public_path__ + \"static/media/Consumer_Tracker_Q4_2019___Deloitte_UK.aab4bfd4.png\";","module.exports = __webpack_public_path__ + \"static/media/Retail_Trends_2019___Deloitte_UK.69b553a2.png\";","module.exports = __webpack_public_path__ + \"static/media/cq5dam_web_1400_350_desktop_jpeg__1280×320_.3257d926.png\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nclass VideoPlayer extends React.Component { \n\n constructor(props){\n super(props);\n this.renderComponent = this.renderComponent.bind(this);\n }\n componentWillMount(){ }\n \n componentDidMount(){ }\n\n renderComponent(){\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n )\n }\n\n render(){\n return this.renderComponent();\n let ele = document.getElementById('VideoPlayerComponent');\n if(!ele) return null;\n return ReactDOM.createPortal(this.renderComponent(), ele)\n }\n}\n\nVideoPlayer.propTypes = {\n \n}\n\nexport default VideoPlayer;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass DownloadButton extends React.Component { \n\n constructor(props){\n super(props);\n this.reactToScroll = this.reactToScroll.bind(this);\n this.setup = this.setup.bind(this);\n this.onResize = this.onResize.bind(this);\n this.controlpoints = [];\n this.state = {\n in : false,\n inPoint : 0,\n outPoint : 0\n }\n }\n componentWillMount(){ }\n \n componentDidMount(){ \n window.addEventListener('scroll', this.reactToScroll);\n window.addEventListener('resize', this.onResize);\n setTimeout(()=>{\n this.setup();\n },1000)\n\n }\n\n componentWillUnmount(){\n window.removeEventListener('scroll', this.reactToScroll);\n window.removeEventListener('resize', this.onResize);\n }\n \n async onResize(){\n await this.setup();\n this.reactToScroll();\n }\n\n async setup(){\n\n var scroll = window.scrollY || window.pageYOffset;\n let outPoint = document.querySelector(\".fv-footer\");\n this.setState({\n outPoint : (outPoint) ? outPoint.getBoundingClientRect().top+scroll : 0\n })\n \n }\n\n reactToScroll(e){\n var scroll = window.scrollY || window.pageYOffset;\n let isIn = ( (scroll > 100) && ( (scroll + document.documentElement.clientHeight) < this.state.outPoint) );\n this.setState({in : isIn });\n }\n render(){\n return (\n
{this.node=node}}>\n

\n \n\n\n\t\n\t\n\n\n\n \n Download the full report pdf to

find out more

\n \n \n
\n )\n }\n}\n\nDownloadButton.propTypes = {\n \n}\n\nexport default DownloadButton;","\n\n//returns true when the user scrolls the element onto the page or is beneath\nexport const inPage = (elem, yOffset, anchor)=>{\n if(!elem) return false;\n let coords = elem.getBoundingClientRect();\n let windowHeight = document.documentElement.clientHeight;\n let target;\n switch(anchor){\n case 'top':\n target = 0;\n break;\n case 'bottom':\n target = windowHeight;\n break;\n default:\n target = (windowHeight / 2);\n break;\n }\n \n \n yOffset = yOffset || 0;\n return (coords.top - yOffset) < 0 + target;\n}\n\n\n//returns true when element is visible in the user viewport\nexport const inCurentViewPort = (elem, yOffset)=>{\n if(!elem) return false;\n let coords = elem.getBoundingClientRect();\n let windowHeight = document.documentElement.clientHeight;\n \n yOffset = yOffset || 0;\n\n // top elem edge is visible?\n let topVisible = (coords.top - yOffset) > 0 && coords.top < windowHeight;\n\n // bottom elem edge is visible?\n let bottomVisible = coords.bottom < windowHeight && coords.bottom > 0;\n \n\n let response = (topVisible || bottomVisible);\n return response;\n}\n\n\n//returns true the element is within the parent\nexport const inElementViewPort = (elem, parent)=>{\n\n\tif(!elem || parent) return false;\n\n\tlet elemRect = elem.getBoundingClientRect();\n\tlet parentRect = parent.getBoundingClientRect();\n\tvar overlap = !(elemRect.right < parentRect.left || \n elemRect.left > parentRect.right || \n elemRect.bottom < parentRect.top || \n elemRect.top > parentRect.bottom)\n\n \n // let coords = elem.getBoundingClientRect();\n // let windowHeight = document.documentElement.clientHeight;\n \n // yOffset = yOffset || 0;\n\n // // top elem edge is visible?\n // let topVisible = (coords.top - yOffset) > 0 && coords.top < windowHeight;\n\n // // bottom elem edge is visible?\n // let bottomVisible = coords.bottom < windowHeight && coords.bottom > 0;\n \n\n // let response = (topVisible || bottomVisible);\n return true;\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { scaleLinear } from 'd3-scale';\nimport gsap from 'gsap';\nimport MorphSVGPlugin from 'gsap/MorphSVGPlugin';\nimport { inPage } from '../scroll';\n\ngsap.registerPlugin(MorphSVGPlugin);\n\n\nconst inputs = {\n qol : {\n title : \"Quality of life\",\n subtitle : \"Life expectancy vs obesity\",\n data : [\n [79.8,80.2,80.4,80.5,80.5,81.0,81.2,81.5,81.6,81.7,82.2,82.4,82.7,82.7,82.8,83.0,82.7,82.9,82.9,82.9,82.9],\n [74.9,75.4,75.7,75.8,76.1,76.6,76.9,77.2,77.4,77.6,78.1,78.4,78.8,79.0,79.0,79.3,79.1,79.2,79.2,79.2,79.2],\n [null, null, null, null, null, null, null, null, 39411, 48829, 63457, 89657, 136566, 173803, 192795, 242118, 290747, 349279, 408630, null, null],\n [null, null, null, null, null, null, null, null, 27791, 32080, 39524, 52517, 75190, 92828, 99579, 123423, 149490, 175401, 208290, null, null]\n ],\n dataAxis : [0,0,1,1],\n dataLabels : [\n \"Female – life expectancy (years)\",\n \"Male – life expectancy (years)\",\n \"Female – obesity (numbers)\",\n \"Male – obesity (numbers)\"\n ],\n dataColors : [\"#012169\", \"#00A3E0\", \"#6FC2B4\", \"#DDEFE8\"],\n dataOpacity : [0.8, 0.8, 0.8, 0.8],\n keys : [\n \"Life expectancy (years)\",\n \"Obesity numbers\"\n ],\n axis : [\n [72.5, 85],\n [0, 500000]\n ],\n axisTicks : [\n ['72.5', '75.0', '77.5', '80.0', '82.5', '85.0'],\n ['0', '100k', '200k', '300k', '400k', '500k']\n ],\n ticks : [\"'99\", \"'00\", \"'01\",\"'02\",\"'03\",\"'04\",\"'05\",\"'06\",\"'07\",\"'08\",\"'09\",\"'10\",\"'11\",\"'12\",\"'13\",\"'14\",\"'15\",\"'16\",\"'17\",\"'18\",\"'19\"],\n event : \"quality-of-life\"\n },\n coe : {\n title : \"The cost of education\",\n subtitle : \"Education vs debt\",\n data : [\n [26.0,26.5,27.4,28.5,28.5,29.7,31.1,32.6,34.0,34.9,35.8,36.9,38.0,38.4,39.2],\n [15.4,14.6,14.1,13.5,13.7,12.6,11.6,11.0,10.0,9.6,9.0,8.8,8.3,8.0,8.0],\n [null,null,null,null,null,null,null,null,7900,9210,10440,10960,11910,12790,null]\n ],\n dataAxis : [0,0,1],\n dataLabels : [\n \"% with NVQ4+ – aged 16-64\",\n \"% with no qualifications (NVQ) – aged 16-64\",\n \"Student loan – average value (£)\"\n ],\n dataColors : [\"#046A38\", \"#86bc24\", \"#43B02A\"],\n dataOpacity : [0.6, 0.4, 0.8],\n keys : [\n \"NVQ – aged 16-64 (%)\",\n \"Student loan – average value (£)\"\n ],\n axis : [\n [0, 50],\n [7000, 14000]\n ],\n axisTicks : [\n ['0', '10', '20', '30', '40', '50'],\n ['7.0k', '8.4k', '9.8k', '11.2k', '12.6k', '14.0k']\n ],\n ticks : [\"'04\",\"'05\",\"'06\",\"'07\",\"'08\",\"'09\",\"'10\",\"'11\",\"'12\",\"'13\",\"'14\",\"'15\",\"'16\",\"'17\",\"'18\",],\n event : \"education-vs-debt\"\n },\n fow : {\n title : \"The future of work\",\n subtitle : \"Employment vs zero hours contracts\",\n data : [\n [72.5, 72.6, 72.7, 72.8, 72.9, 72.9, 72.8, 72.7, 72.6, 70.9, 70.4, 70.3, 71.0, 71.6, 72.9, 73.7, 74.4, 75.0, 75.6],\n [225000,176000,156000,124000,108000,119000,147000,166000,143000,189000,168000,190000,252000,585000,699000,804000,907000,902000,844000]\n ],\n dataAxis : [0,1],\n dataLabels : [\n \"Employment – population % (aged 16-64)\",\n \"Number of employees on a zero-hours contract\"\n ],\n dataColors : [\"#046A38\", \"#6FC2B4\"],\n dataOpacity : [0.8, 0.8],\n keys : [\n \"Employment – population (% 16 to 64)\",\n \"Number of employees on a zero-hours contract\"\n ],\n axis : [\n [70,75],\n [0, 1000000]\n ],\n axisTicks : [\n ['70', '71', '72', '73', '74', '75'],\n ['0', '200k', '400k', '600k', '800k', '1m']\n ],\n ticks : [\"'00\",\"'01\",\"'02\",\"'03\",\"'04\",\"'05\",\"'06\",\"'07\",\"'08\",\"'09\",\"'10\",\"'11\",\"'12\",\"'13\",\"'14\",\"'15\",\"'16\",\"'17\",\"'18\",],\n event : \"employment-vs-zero-hours\"\n }\n}\n\n\n\nclass TopGraph extends React.Component { \n\n constructor(props){\n super(props);\n this.renderComponent = this.renderComponent.bind(this);\n this.changeData = this.changeData.bind(this);\n this.reactToScroll = this.reactToScroll.bind(this);\n this.width=600;\n this.height=400;\n this.state = {\n selected : '',\n title : \"\",\n subtitle : \"\",\n data : [],\n dataAxis : [],\n dataLabels : [],\n dataColors : [],\n dataOpacity : [],\n keys : [],\n axis : [\n [0,0],\n [0, 0]\n ],\n axisTicks : [\n [],\n []\n ],\n ticks : [],\n event : \"\",\n active :false\n }\n }\n componentWillMount(){ \n window.addEventListener('scroll', this.reactToScroll)\n }\n \n componentWillUnmount(){\n window.addEventListener('scroll', this.reactToScroll)\n }\n reactToScroll(){\n if(!this.state.active){\n if(inPage(this.node)){\n this.setState({\n selected : 'qol',\n ...inputs.qol,\n active : true\n });\n \n }\n }\n }\n componentDidMount(){ \n\n \n\n // setInterval(()=>{\n // let items = ['fow', 'coe', 'qol'];\n // var rand = items[Math.floor(Math.random() * items.length)];\n // this.setState({\n // selected : rand,\n // ...inputs[rand]\n // });\n // }, 2000)\n }\n\n changeData(select){\n this.setState({\n selected : select,\n ...inputs[select]\n });\n if(window.FV_CALL_ANALYTICS){\n window.FV_CALL_ANALYTICS('landscape-graph', 'click', inputs[select].title)\n }\n \n }\n\n\n\n renderComponent(){\n \n let xPos = scaleLinear().domain([0,this.state.ticks.length-1]).range([50, this.width-50]);\n let yPos = scaleLinear().domain([0,5]).range([this.height-50, 50]);\n \n const renderTicks = ()=>{\n return this.state.ticks.map((tick, idx)=>{\n return \n })\n }\n\n const renderTickLabels = ()=>{\n return this.state.ticks.map((tick, idx)=>{\n return {tick}\n })\n }\n\n\n\n const renderYticks = ()=>{\n return this.state.axisTicks[0].map((tick, idx)=>{\n return \n })\n }\n\n const renderY1Labels = ()=>{\n return this.state.axisTicks[0].map((tick, idx)=>{\n return {tick}\n })\n }\n const renderY2Labels = ()=>{\n return this.state.axisTicks[1].map((tick, idx)=>{\n return {tick}\n })\n }\n\n const renderY1Legend = ()=>{\n return {this.state.keys[0]}\n }\n const renderY2Legend = ()=>{\n return {this.state.keys[1]}\n }\n\n const renderKey = ()=>{\n return this.state.dataLabels.map((lable, idx)=>{\n return (\n
\n \n {lable}\n \n
\n )\n })\n }\n\n const renderPaths = ()=>{\n return this.state.data.map((d, idx)=>{\n // console.log('xPos', xPos(idx));\n let fill = this.state.dataColors[idx];\n let opacity = this.state.dataOpacity[idx];\n let domain = this.state.axis[this.state.dataAxis[idx]];\n // console.log('domain', domain);\n let yPos = scaleLinear().domain(domain).range([this.height-50, 50]);\n let nullVal = this.height;\n let polyString = `${50},${nullVal} `;\n let polyStartString = `${50},${nullVal} `;\n let lastPointNull = false;\n d.map((point, idx)=>{\n if(point===null){\n polyString+=`${xPos(idx)},${nullVal} `\n } else {\n if(d[idx-1]===null){\n polyString+=`${xPos(idx)},${nullVal} `\n }\n polyString+=`${xPos(idx)},${yPos(point)} `\n if(d[idx+1]===null){\n polyString+=`${xPos(idx)},${nullVal} `\n }\n }\n if(d[idx-1]===null){\n polyStartString+=`${xPos(idx)},${nullVal} `\n }\n polyStartString+=`${xPos(idx)},${nullVal} `;\n if(d[idx+1]===null){\n polyStartString+=`${xPos(idx)},${nullVal} `\n }\n\n })\n \n polyString+=`${this.width-50},${nullVal} `;\n \n return {\n if(!node) return null;\n gsap.to(node, { duration : 1, morphSVG : {\n shape : polyString,\n }, ease : 'power4.out' })\n }} points={polyStartString} fill={fill} >\n \n })\n }\n return (\n
this.node=node}>\n
{this.state.title}{(this.state.title)?':':''} {this.state.subtitle}
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {renderTicks()}\n {renderYticks()}\n \n \n {renderPaths()}\n \n {renderTickLabels()}\n {renderY1Labels()}\n {renderY2Labels()}\n {renderY1Legend()}\n {renderY2Legend()}\n \n \n \n
\n\n
\n {renderKey()}\n
\n
\n \n \n \n
\n\n
Select a dataset
\n \n
\n )\n }\n\n render(){\n return this.renderComponent();\n let ele = document.getElementById('TopGraph');\n if(!ele) return null;\n return ReactDOM.createPortal(this.renderComponent(), ele)\n }\n}\n\nTopGraph.propTypes = {\n \n}\n\nexport default TopGraph;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { scaleLinear } from 'd3-scale';\nimport gsap from 'gsap';\nimport MorphSVGPlugin from 'gsap/MorphSVGPlugin';\nimport { inPage } from '../scroll';\n\n\ngsap.registerPlugin(MorphSVGPlugin);\n\nconst rowHeaders = ['Generation Z', 'Millennials', 'Generation X', 'Baby boomers', 'Pre-boomers'].reverse();\nconst fills=['#86BC25', '#43B02A', \"#0097A9\", \"#0076A8\", \"#00A3E0\"]\nconst input = [\n [\"Honesty\",16,3,1,1,1 ],\n [\"Protecting the family\",3,1,2,2,2 ],\n [\"Freedom\",7,2,4,4,3 ],\n [\"Stable personal relationships\",13,6,5,3,4 ],\n [\"Authenticity\",2,7,3,5,5 ],\n [\"Learning\",5,4,7,8,6 ],\n [\"Knowledge\",1,11,6,6,7 ],\n [\"Enjoying life\",4,5,11,9,8 ],\n [\"Self-reliance\",11,12,8,12,9 ],\n [\"Working hard\",6,13,9,14,10 ],\n [\"Open-mindedness\",15,18,10,7,11 ],\n [\"Friendship\",8,9,16,15,12 ],\n [\"Helpfulness\",20,16,12,11,13 ],\n [\"Equality\",10,10,13,20,14 ],\n [\"Self-esteem\",17,15,15,13,15 ],\n [\"Material Security\",12,17,17,17,16 ],\n [\"Preserving the environment\",24,22,14,10,17 ],\n [\"Social tolerance\",9,14,20,18,18 ],\n [\"Curiosity\",25,21,18,16,19 ],\n [\"Perseverance\",21,20,19,19,20 ],\n [\"Having fun\",14,8,23,30,21 ],\n // [\"Enduring love\",31,23,27,22,22 ],\n // [\"Thrift\",23,29,24,23,23 ],\n // [\"Duty\",38,31,22,21,24 ],\n // [\"Health and fitness\",19,27,26,26,25 ],\n // [\"Simplicity\",36,26,25,27,26 ],\n // [\"Respecting ancestors\",34,33,21,24,27 ],\n // [\"Fulfilling work\",18,19,30,34,28 ],\n // [\"Leisure\",28,28,29,29,29 ],\n // [\"Creativity\",32,25,31,33,30 ],\n // [\"Being in tune with nature\",49,39,28,25,31 ],\n // [\"Romance\",27,30,37,31,32 ],\n // [\"Modesty\",33,34,33,28,33 ],\n // [\"Internationalism\",40,37,36,32,34 ],\n // [\"Excitement\",22,24,38,43,35 ],\n // [\"Social responsibility\",44,38,34,36,36 ],\n // [\"Sex\",35,35,32,42,37 ],\n // [\"Individuality\",30,40,35,40,38 ],\n // [\"Beauty\",42,41,43,35,39 ],\n // [\"Pleasure\",37,36,39,45,40 ],\n // [\"Tradition\",51,46,41,37,41 ],\n // [\"Spirituality\",43,43,42,38,42 ],\n // [\"Being youthful\",46,42,40,39,43 ],\n // [\"Ambition\",26,32,46,51,44 ],\n // [\"Retribution\",47,48,44,44,45 ],\n // [\"Being enterprising\",41,45,45,47,46 ],\n // [\"Patriotism\",55,51,48,41,47 ],\n // [\"Adventure\",29,44,47,52,48 ],\n // [\"Faith\",45,52,51,46,49 ],\n // [\"Looking good\",50,49,49,50,50 ],\n // [\"Wealth\",39,47,53,53,51 ],\n // [\"Traditional gender roles\",56,56,50,49,52 ],\n // [\"Cultural purity\",57,54,52,48,53 ],\n // [\"Self-interest\",48,50,54,54,54 ],\n // [\"Status\",53,53,56,56,55 ],\n // [\"Social Recognition\",54,55,55,55,56 ],\n // [\"Power\",52,57,57,57,57 ],\n // [\"None of these\",58,58,58,58,58 ]\n ]\n\nconst ticks = [\n '#1', ''\n]\nclass ValuesGraph extends React.Component { \n\n constructor(props){\n super(props);\n this.renderComponent = this.renderComponent.bind(this);\n this.setInternals = this.setInternals.bind(this);\n this.reactToScroll = this.reactToScroll.bind(this);\n this.state = {\n selected : \"\",\n data : [],\n active : false\n }\n this.width = 300;\n this.height = 400;\n }\n componentWillMount(){ }\n \n componentDidMount(){ \n\n // this.setInternals(input[0])\n\n }\n componentWillMount(){ \n window.addEventListener('scroll', this.reactToScroll)\n }\n \n componentWillUnmount(){\n window.addEventListener('scroll', this.reactToScroll)\n }\n reactToScroll(){\n if(!this.state.active){\n if(inPage(this.node)){\n this.setInternals(input[0])\n this.setState({\n active : true\n });\n \n }\n }\n }\n setInternals(row){\n if(window.FV_CALL_ANALYTICS){\n window.FV_CALL_ANALYTICS('values-graph', 'click', row[0])\n }\n \n let d = row.slice();\n this.setState({\n selected : d.shift(),\n data : d.reverse()\n })\n }\n\n re\n\n renderComponent(){\n\n let xPos = scaleLinear().domain([0,5]).range([10, this.width-20]);\n let yPos = scaleLinear().domain([31,1]).range([this.height, 15]);\n let ranks = [1, 10, 20, 30, 40, 50 ];\n const renderValues = ()=>{\n return input.map((row)=>{\n return
  • {this.setInternals(row)}} \n className={(this.state.selected===row[0])?'valueSelect active' : 'valueSelect'}\n >{row[0]}
  • \n })\n }\n\n const renderSelectValues = ()=>{\n return input.map((row)=>{\n return \n })\n }\n \n \n const renderLines = ()=>{\n return (\n {ranks.map((r)=>{\n return \n })}\n )\n }\n\n const renderBackgroundLines = ()=>{\n let arr = [];\n for(var i=1; i < 31; i++){ arr.push(i) };\n\n return (\n {arr.map((r)=>{\n return \n })}\n )\n }\n const renderRanks = ()=>{\n return (\n {ranks.map((r)=>{\n return #{r}\n })}\n \n )\n }\n\n const renderBars = ()=>{\n \n return (\n \n {this.state.data.map((r,idx)=>{\n let height = this.height- yPos(r);\n let y = yPos(r);\n return {\n if(!node) return null;\n \n gsap.to(node, { duration : 1, attr : {height : this.height- yPos(r), y : yPos(r)} })\n }}>\n })}\n \n )\n }\n\n const renderBarTitles = ()=>{\n return rowHeaders.map((label, idx)=>{\n return {label}\n })\n }\n\n \n \n return (\n \n
    this.node=node}>\n
    \n \n
    Generation ranking for: {this.state.selected} 
    \n
    Select Value
    \n
    \n
    \n \n\n
    \n \n \n \n \n \n \n \n \n \n \n \n {renderBackgroundLines()}\n \n {renderBars()}\n \n \n Most important\n Less important\n {renderLines()}\n \n {renderRanks()}\n\n \n {renderBarTitles()}\n \n \n\n \n
    \n
    \n
      \n {renderValues()}\n
    \n
    \n
    \n \n \n
    \n
    \n \n

    Select values to see how important they are to different generations

    \n \n \n
    \n )\n }\n render(){\n return this.renderComponent();\n let ele = document.getElementById('ValuesGraph');\n if(!ele) return null;\n return ReactDOM.createPortal(this.renderComponent(), ele)\n }\n}\n\nValuesGraph.propTypes = {\n \n}\n\nexport default ValuesGraph;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport gsap from 'gsap';\nimport { MorphSVGPlugin } from 'gsap/MorphSVGPlugin';\nimport {DrawSVGPlugin } from 'gsap/DrawSVGPlugin';\nimport {inCurentViewPort} from './../scroll';\n\n\ngsap.registerPlugin(MorphSVGPlugin, DrawSVGPlugin);\n\nclass HeaderAnimation extends React.Component { \n\n constructor(props){\n super(props);\n this.renderComponent = this.renderComponent.bind(this);\n this.reactToScroll = this.reactToScroll.bind(this);\n this.currentRender = [];\n this.waves = {};\n this.paths = {\n \"six\" : [\n \"M17.21,175C69,220.5,58.24,143.5,106,143.5c22.94,0,49.82,66,79,66s40.65-69,66-69,22,75,80,34.45Z\",\n \"M17.21,175c48.26,0,32.27,61.12,80,61.12,22.94,0,63.59-66.61,92.77-66.61s38,66.61,63.37,66.61S275.06,119,331,175Z\",\n ],\n \"five\" : [\n \"M17.21,175C113,226.5,168.23,129.5,209,129.5c51.57,0,81.37,45.45,122,45.45Z\",\n \"M17.21,175c120.25-120.25,144.89,47.7,185.66,47.7,51.57,0,87.5-47.7,128.13-47.7Z\"\n ],\n \"four\" : [\n \"M17.21,175C33.28,173.59,32.3,162.5,41,162.5c11,0,16.85,28,36,28,10.91,0,12.08,9.11,21.42,9.11S115.71,213.5,128,213.5s17-22,28-22c16,0,24.07-10.49,37.4-10.49,5.34,0,13.87-9.51,20.09-9.51,13.32,0,12.72,15,26.51,15,17.71,0,6.8-22,40-22,16.35,0,14.26,7.05,28.85,7.05s11.89,3.13,22.15,3.4Z\",\n \"M17.21,175c16.07-1.36,12.86-11.32,21.56-11.32,31.37,0,19.63,44.29,38.77,44.29,10.91,0,11.54-8.31,20.88-8.31s17.71,5.1,30,5.1,20.68,3.43,31.68,3.43c16,0,20-27.13,33.3-27.13,5.34,0,13.87,4,20.09,4,13.32,0,13.79,14.45,27.58,14.45,17.71,0,7.86,4.28,41.06,4.28,16.35,0,12.13-32.19,26.72-32.19s11.89,3.13,22.15,3.4Z\"\n ],\n \"three\" : [\n \"M17.21,175C60.82,131.35,60,208.5,107,209.5,143.59,210.28,173.09,96,212.33,96,254.7,96,260.16,256.41,331,175Z\",\n \"M17.21,175C60,207.5,27,148.81,106,148.5c36.41-.14,66.76,55.76,106.33,56C254.7,204.76,270,91.5,331,175Z\"\n ],\n \"two\" : [\n \"M17.21,175c9.15,0,9.15,13.55,22.79,13.55s14.21-74,29-74,12.73,36.78,24,36c29-2,24.16,15.37,37.52,15.37,3.46,0,18.26-6.37,29.48-6.37s10-24,18-24c12.79,0,7,29,17,29,16.77,0,11.64-13,22-13s6.92,4,14,4c11.68,0,12.34-31,21-31s2.73,21,17,21,16.63-7,28-7c11.13,0,23.26,36.45,34,36.45Z\",\n \"M17.21,175c9.15,0,10-34.11,23.63-34.11s10.51,16.1,25.29,16.1,20.92-37.73,32.21-37.73,18.82,46.66,32.18,46.66c3.46,0,5.7-7.87,16.92-7.87s9.05-43.78,17-43.78c12.8,0,13,50.84,23,50.84,16.77,0,11.91-13.1,22.27-13.1s11.36-35.33,18.44-35.33c11.68,0,14.13,48.7,22.79,48.7s3.5-13.21,17.77-13.21,17.43-19.46,28.79-19.46c11.13,0,22.73,42.29,33.47,42.29Z\"\n ],\n \"one\" : [\n \"M17.21,175c9.73,0,8.34-3.11,14.94-3.11,3.65,0-.15,12.66,10.85,12.66,15.22,0,13.29,5,20,5s3.84-26,16-26c9.73,0,6.4,8.34,13,8.34,3.65,0,4,13.66,12,13.66,15.22,0,17.29-24,24-24s2.84,27,15,27c9.73,0,5.4-22,12-22,3.65,0,11.17,14,13,14,15.22,0,13.29-17,20-17s1.84,17,14,17c9.73,0,9.4,8,16,8,3.65,0,6-29,14-29,15.22,0,13.29,10,20,10s2.84,29,15,29c9.73,0,6.67-26.66,13.27-26.66,3.65,0,7.9-10.34,9.73-10.34,15.22,0,16.29,24,23,24S318.84,175,331,175Z\",\n \"M17.21,175c9.73,0,8.34-3.11,14.94-3.11,3.65,0,6.3-20.27,8.14-20.27,15.22,0,15.92,51.55,22.63,51.55s4.89-47.27,17-47.27c9.73,0,5.43,16,12,16,3.65,0,9.21-29.23,11-29.23,15.23,0,15.93,67.24,22.63,67.24s4.89-54,17.06-54c9.73,0,5.43,16,12,16,3.65,0,9.21-29.23,11-29.23,15.22,0,15.93,67.24,22.63,67.24s4.89-54,17.06-54c9.73,0,5.42,16,12,16,3.65,0,9.22-29.23,11.05-29.23,15.22,0,15.92,60.51,22.63,60.51s4.89-42.79,17.05-42.79c9.73,0,5.43,11.51,12,11.51,3.65,0,9.21-20.27,11-20.27,15.23,0,15.93,47.07,22.64,47.07S318.84,175,331,175Z\"\n ]\n }\n }\n componentWillMount(){ }\n \n componentDidMount(){\n\n gsap.set(this.pie2, { duration : 2, drawSVG : \"0% 15%\" });\n gsap.set(this.pie1, { duration : 2, drawSVG : \"15% 34%\" });\n gsap.set(this.pie3, { duration : 2, drawSVG : \"75% 78%\" });\n gsap.set(this.pie4, { duration : 2, drawSVG : \"78% 85%\" });\n gsap.set(this.pie5, { duration : 2, drawSVG : \"84% 100%\" });\n\n this.master = gsap.timeline();\n\n this.master.add(gsap.timeline({repeat : -1, yoyo : true}).fromTo( this.waves.one, { morphSVG : this.paths.one[0] }, { duration : 3, morphSVG : this.paths.one[1], ease : 'in' }))\n this.master.add(gsap.timeline({repeat : -1, yoyo : true}).fromTo( this.waves.two, { morphSVG : this.paths.two[0] }, { duration : 2, morphSVG : this.paths.two[1], ease : 'out' }))\n this.master.add(gsap.timeline({repeat : -1, yoyo : true}).fromTo( this.waves.three, { morphSVG : this.paths.three[0] }, { duration : 5, morphSVG : this.paths.three[1], ease : 'out' }))\n this.master.add(gsap.timeline({repeat : -1, yoyo : true}).fromTo( this.waves.four, { morphSVG : this.paths.four[0] }, { duration : 3, morphSVG : this.paths.four[1], ease : 'out' }))\n this.master.add(gsap.timeline({repeat : -1, yoyo : true}).fromTo( this.waves.five, { morphSVG : this.paths.five[0] }, { duration : 10, morphSVG : this.paths.five[1], ease : 'out' }))\n this.master.add(gsap.timeline({repeat : -1, yoyo : true}).fromTo( this.waves.six, { morphSVG : this.paths.six[0] }, { duration : 7, morphSVG : this.paths.six[1], ease : 'out' }))\n \n \n \n \n \n let spinDuration = 1;\n let edgeTimeline = gsap.timeline({repeat : -1});\n edgeTimeline.add(\n gsap.to(this.pie2, { duration : spinDuration , drawSVG : \"0% 13%\" })\n , 0 )\n edgeTimeline.add(\n gsap.to(this.pie1, { duration : spinDuration , drawSVG : \"13% 37%\" })\n , 0 )\n edgeTimeline.add(\n gsap.to(this.pie3, { duration : spinDuration , drawSVG : \"60% 65%\" })\n , 0 )\n edgeTimeline.add(\n gsap.to(this.pie4, { duration : spinDuration , drawSVG : \"65% 82%\" })\n , 0 )\n edgeTimeline.add(\n gsap.to(this.pie5, { duration : spinDuration , drawSVG : \"82% 100%\" })\n , 0 )\n\n edgeTimeline.add(\n gsap.to(this.pie2, { duration : spinDuration , drawSVG : \"0% 20%\" })\n , 3 )\n edgeTimeline.add(\n gsap.to(this.pie1, { duration : spinDuration , drawSVG : \"20% 37%\" })\n , 3 )\n edgeTimeline.add(\n gsap.to(this.pie3, { duration : spinDuration , drawSVG : \"80% 82%\" })\n , 3 )\n edgeTimeline.add(\n gsap.to(this.pie4, { duration : spinDuration , drawSVG : \"82% 95%\" })\n , 3 )\n edgeTimeline.add(\n gsap.to(this.pie5, { duration : spinDuration , drawSVG : \"95% 100%\" })\n , 3 )\n\n edgeTimeline.add(\n gsap.to(this.pie2, { duration : spinDuration , drawSVG : \"0% 7%\" })\n , 6 )\n edgeTimeline.add(\n gsap.to(this.pie1, { duration : spinDuration , drawSVG : \"7% 32%\" })\n , 6 )\n edgeTimeline.add(\n gsap.to(this.pie3, { duration : spinDuration , drawSVG : \"75% 77%\" })\n , 6 )\n edgeTimeline.add(\n gsap.to(this.pie4, { duration : spinDuration , drawSVG : \"77% 85%\" })\n , 6 )\n edgeTimeline.add(\n gsap.to(this.pie5, { duration : spinDuration , drawSVG : \"85% 100%\" })\n , 6 )\n\n\n edgeTimeline.add(\n gsap.to(this.pie2, { duration : spinDuration , drawSVG :\"0% 15%\"})\n , 9 )\n edgeTimeline.add(\n gsap.to(this.pie1, { duration : spinDuration , drawSVG : \"15% 34%\" })\n , 9 )\n edgeTimeline.add(\n gsap.to(this.pie3, { duration : spinDuration , drawSVG : \"75% 78%\"})\n , 9 )\n edgeTimeline.add(\n gsap.to(this.pie4, { duration : spinDuration , drawSVG : \"78% 85%\" })\n , 9 )\n edgeTimeline.add(\n gsap.to(this.pie5, { duration : spinDuration , drawSVG : \"84% 100%\" })\n , 9 )\n\n\n this.edgeTimeline =edgeTimeline;\n // this.master.add(edgeTimeline);\n \n // edgeTimeline.add(\n // gsap.to(this.pie2, { duration : 2, drawSVG : \"0% 15%\" })\n // , 3 )\n // edgeTimeline.add(\n // gsap.to(this.pie1, { duration : 2, drawSVG : \"15% 30%\" })\n // , 3 )\n // edgeTimeline.add(\n // gsap.to(this.pie3, { duration : 2, drawSVG : \"70% 75%\" })\n // , 3 )\n // edgeTimeline.add(\n // gsap.to(this.pie4, { duration : 2, drawSVG : \"65% 70%\" })\n // , 3 )\n // edgeTimeline.add(\n // gsap.to(this.pie5, { duration : 2, drawSVG : \"75% 100%\" })\n // , 3 )\n // gsap.set(this.pie2, { duration : 2, drawSVG : \"0% 15%\" });\n // gsap.set(this.pie1, { duration : 2, drawSVG : \"15% 34%\" });\n // gsap.set(this.pie3, { duration : 2, drawSVG : \"75% 78%\" });\n // gsap.set(this.pie4, { duration : 2, drawSVG : \"78% 85%\" });\n // gsap.set(this.pie5, { duration : 2, drawSVG : \"84% 100%\" });\n \n \n // .set(this.waves.one, { attr : { d : this.paths.one[0], ease : 'none' } })\n // .to(this.waves.one, { duration : 2, attr : { d : this.paths.one[1], ease : 'none' } })\n // .to(this.waves.one, { duration : 2, attr : { d : this.paths.one[0], ease : 'none' } })\n\n\n // gsap.timeline({repeat : -1})\n // .set(this.waves.two, { attr : { d : this.paths.two[0], ease : 'none' } })\n // .to(this.waves.two, { duration : 2, attr : { d : this.paths.two[1], ease : 'none' } })\n // .to(this.waves.two, { duration : 2, attr : { d : this.paths.two[0], ease : 'none' } })\n window.addEventListener('scroll', this.reactToScroll);\n }\n componentWillUnmount(){\n window.removeEventListener('scroll', this.reactToScroll);\n }\n\n reactToScroll(){\n if(this.node){\n console.log('head', inCurentViewPort(this.node));\n \n if(inCurentViewPort(this.node)){\n this.master.play();\n this.edgeTimeline.play();\n } else {\n this.master.pause();\n this.edgeTimeline.pause();\n }\n } \n } \n renderComponent(){\n return (\n
    {this.node=node}}>\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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n {this.pie1=node}} id=\"pie-path\" cx=\"175\" cy=\"175\" r=\"138\" fill=\"none\" stroke=\"#008ddf\" strokeMiterlimit=\"10\" strokeWidth=\"40\"/>\n {this.pie2=node}} id=\"pie-path\" cx=\"175\" cy=\"175\" r=\"138\" fill=\"none\" stroke=\"#82b9e7\" strokeMiterlimit=\"10\" strokeWidth=\"40\"/>\n {this.pie3=node}} id=\"pie-path\" cx=\"175\" cy=\"175\" r=\"138\" fill=\"none\" stroke=\"#96460a\" strokeMiterlimit=\"10\" strokeWidth=\"40\"/>\n {this.pie4=node}} id=\"pie-path\" cx=\"175\" cy=\"175\" r=\"138\" fill=\"none\" stroke=\"#db8400\" strokeMiterlimit=\"10\" strokeWidth=\"40\"/>\n {this.pie5=node}} id=\"pie-path\" cx=\"175\" cy=\"175\" r=\"138\" fill=\"none\" stroke=\"#f6d300\" strokeMiterlimit=\"10\" strokeWidth=\"40\"/>\n \n \n \n this.waves.six=node} d={this.paths.six[0]} fill=\"#0066b1\" />\n \n \n this.waves.five=node} d={this.paths.five[0]} fill=\"#008acf\" />\n \n \n this.waves.four=node} d={this.paths.four[0]} fill=\"#63baea\" />\n \n \n this.waves.three=node} d={this.paths.three[0]} fill=\"#ac4617\" />\n \n \n this.waves.two=node} d={this.paths.two[0]} fill=\"#f18500\" />\n \n \n this.waves.one=node} d={this.paths.one[0]} fill=\"#ffd400\" />\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 \n \n */}\n \n \n \n\n\n\n\n \n
    \n )\n }\n\n render(){\n // let ele = document.getElementById('HeaderAnimation');\n // if(!ele) return null;\n // return ReactDOM.createPortal(this.renderComponent(), ele)\n return this.renderComponent();\n }\n}\n\nHeaderAnimation.propTypes = {\n \n}\n\nexport default HeaderAnimation;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HeaderAnimation from './HeaderAnimation';\nimport gsap from 'gsap';\nimport ScrollToPlugin from 'gsap/ScrollToPlugin';\n\ngsap.registerPlugin(ScrollToPlugin);\n\nclass HeaderArea extends React.Component { \n\n constructor(props){\n super(props);\n }\n componentWillMount(){ }\n \n componentDidMount(){ }\n \n render(){\n return (\n
    \n \n
    \n
    \n

    Shifting sands: The changing consumer landscape

    \n

    The consumer is changing,
    but perhaps not how you think.

    \n
    \n
    \n \n
    \n
    {\n gsap.to(window, { duration : 0.5, scrollTo : {\n y : \".fv-main-content\",\n offsetY : 90\n }, ease : 'out' })\n }}>\n \n \n \n \n
    \n
    \n \n
    \n )\n }\n}\n\nHeaderArea.propTypes = {\n \n}\n\nexport default HeaderArea;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass DownloadMobile extends React.Component { \n\n constructor(props){\n super(props);\n this.reactToScroll = this.reactToScroll.bind(this);\n this.setup = this.setup.bind(this);\n this.onResize = this.onResize.bind(this);\n this.controlpoints = [];\n this.state = {\n in : false,\n inPoint : 0,\n outPoint : 0\n }\n }\n componentWillMount(){ }\n \n componentDidMount(){ \n window.addEventListener('scroll', this.reactToScroll);\n window.addEventListener('resize', this.onResize);\n setTimeout(()=>{\n this.setup();\n },1000)\n\n }\n\n componentWillUnmount(){\n window.removeEventListener('scroll', this.reactToScroll);\n window.removeEventListener('resize', this.onResize);\n }\n \n async onResize(){\n await this.setup();\n this.reactToScroll();\n }\n\n async setup(){\n\n var scroll = window.scrollY || window.pageYOffset;\n let outPoint = document.querySelector(\".fv-footer\");\n this.setState({\n outPoint : (outPoint) ? outPoint.getBoundingClientRect().top+scroll : 0\n })\n \n }\n\n reactToScroll(e){\n var scroll = window.scrollY || window.pageYOffset;\n let isIn = ( (scroll > 100) && ( (scroll + document.documentElement.clientHeight) < this.state.outPoint) );\n this.setState({in : isIn });\n }\n render(){\n return (\n\n \n\n\n\t\n\t\n\n\nDownload the full report pdf to find out more\n \n\n \n \n \n )\n }\n}\n\nDownloadMobile.propTypes = {\n \n}\n\nexport default DownloadMobile;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass PodCast extends React.Component { \n\n constructor(props){\n super(props);\n }\n componentWillMount(){ }\n \n componentDidMount(){ }\n\n render(){\n return (\n
    \n
    \n \n \n {/*
    \n

    Listen and subscribe to The Green Room by Deloitte podcast

    \n \n
    */}\n
    \n \n
    \n )\n }\n}\n\nPodCast.propTypes = {\n \n}\n\nexport default PodCast;","import React from 'react';\nimport PropTypes from 'prop-types';\n// import MainSection from './MainSection';\nimport gsap from 'gsap';\n// import HeaderAnimation from './HeaderAnimation';\nimport VideoPlayer from './VideoPlayer';\nimport DownloadButton from './DownloadButton';\n// import FooterContentLinks from './FooterContentLinks';\nimport TopGraph from './TopGraph';\nimport ValuesGraph from './ValuesGraph';\nimport HeaderArea from './HeaderArea';\nimport ScrollToPlugin from 'gsap/ScrollToPlugin';\nimport DownloadMobile from './DownloadMobile';\n\nimport PodCast from './PodCast';\n\n\ngsap.registerPlugin(ScrollToPlugin);\n\nclass ChangingConsumerInteractives extends React.Component { \n\n constructor(props){\n super(props);\n this.initScrollControl = this.initScrollControl.bind(this);\n this.scrollChange = this.scrollChange.bind(this);\n this.state = {\n scrollPos : 0,\n sectionName : 'none'\n }\n }\n componentWillMount(){ }\n \n componentDidMount(){ \n\n this.initScrollControl();\n this.dl.setup()\n \n gsap.to('.fv-init-inner', { duration : 0.3, opacity : 1 })\n\n // document.querySelector('.down-arrow').addEventListener('click', (e)=>{\n // console.log(e.target);\n // gsap.to(window, { duration : 0.5, scrollTo : {\n // y : \".fv-main-content\",\n // offsetY : 120\n // }, ease : 'out' })\n // })\n // this.timeline = new gsap.timeline();\n \n }\n\n initScrollControl(){\n let hitpoints = document.querySelectorAll('[data-trigger]');\n // console.log(hitpoints);\n Array.from(hitpoints).map((ele)=>{\n // console.log(ele.getBoundingClientRect());\n })\n window.addEventListener(\"scroll\", this.scrollChange);\n }\n\n componentWillUnmount(){\n window.removeEventListener(\"scroll\", this.scrollChange);\n }\n\n scrollChange(){\n let fullHeight = document.documentElement.scrollHeight;\n var scroll = window.scrollY || window.pageYOffset;\n let viewport = window.innerHeight;\n let total = fullHeight - viewport;\n let percentage = Math.round((scroll / total)*100);\n\n\n let hitpoints = document.querySelectorAll('[data-trigger]');\n let Markers = []\n Array.from(hitpoints).map((ele)=>{\n let dims = ele.getBoundingClientRect();\n console.log(ele,dims.top + scroll );\n console.log(ele.getAttribute('data-trigger'));\n\n })\n\n \n\n\n }\n\n\n render(){\n return (\n
    \n \n \n \n {/* */}\n \n \n \n
    \n
    \n\n \n \n\n
    \n
    \n

    \n How often do you stream a movie and order a takeaway via an app for a night in? Or unpack your subscription recipe box while your personal assistant device serves up music based on your listening habits? The way we purchase and consume things has changed dramatically in the last 10 years, with COVID-19 accelerating the pace of change in some areas but provoking a return to old habits in others. One thing remains consistent, as the consumer landscape continues to shift we are responding in ways that look to make our lives easier and more fulfilling. \n

    \n \n \n
    \n\n
    \n \n

    What is the current landscape?

    \n

    People in the UK are living longer but have more health concerns, according to our research. They’re better educated but experiencing higher debt levels. More people are in work, but not necessarily better off when the cost of living has increased and disposable income decreased. COVID-19 has impacted consumer spending and mobility and has created uncertainty over jobs and employment prospects. All this adds up to major changes in buying behaviour.

    \n

    Even in these uncertain economic times consumer behaviour is shifting to embrace sustainability, and how old you are and how much you earn makes all the difference. Cutting down on single-use plastics was embraced by over two-thirds of respondents, making it the most popular method of supporting sustainability.

    \n

    Consumer confidence edged upward but remained lower than the same period last year. Our latest Consumer Tracker showed that sentiment improved for job security, job opportunities and career progression, and children’s education as hospitality reopened during the summer and the academic year resumed. However, whilst sentiment on the state of the economy improved quarter-on-quarter, the combination of new local lockdown measures, a year-end Brexit transition deadline, and ongoing financial impact of the COVID-19 pandemic saw year-on-year confidence fall.

    \n

    How do UK consumers compare to those in China, India or the US? Are they more worried about their health or finances? And which consumers are returning to shopping in stores the fastest? Our global research will help answers these and other questions.

    \n
    \n \n \n
    \n\n {/*
    \n
    \n \n Changing Consumer Landscape\n Sustainable Consumer\n Consumer Tracker, UK\n Global State of Consumer Tracker\n Watch our video on The Changing Consumer\n \n
    \n
    \n \n */}\n\n
    \n \n
    \n
    \n\n \n \n\n
    \n \n
    \n
    \n \n
    \n
    \n \n {/*

    Our report tells us that people in the UK are living longer but have more health concerns. They’re better educated but experiencing higher debt levels. More people are in work, but not necessarily better off when the cost of living has increased and disposable income decreased. All this adds up to major changes in buying behaviour.

    */}\n
    \n \n\n

    What does a changing consumer landscape mean for businesses?

    \n

    More people with increased buying power and access to more choice has resulted in consumers making better informed decisions before they purchase a product or service. If you’re not already looking to consumer data to inform your business strategy – now’s the time.

    \n

    As consumers, we want to feel that every brand we interact with has given us an individual experience, which aligns to our own values. As a consumer business, how can you meet that expectation if you don’t know why and how your customer demands have changed?

    \n\n
    \n
    \n \n

    Is technology the driving force behind consumer buying behaviour?

    \n

    Technology is certainly a massive factor. Next, or same day delivery is a common, if not expected, offering from online retailers. Social media stars have become the new ‘word of mouth’.

    \n
    \n \n
    \n

    But as the landscape changes people are becoming cynical and untrusting of ‘paid influencers’ and we are seeing a shift towards brands that are seen to have integrity, who are more authentic and that talk openly about their values and the provenance of the products they sell.

    \n

    Although many consumer businesses have been fast to develop their online offering, our consumer tracker indicates that while online sales for grocery shopping continue to grow, the majority of sales still happen in large supermarkets.

    \n\n\n
    \n
    \n \n

    How can understanding the changing consumer landscape help businesses meet demands without affecting margins?

    \n

    Using consumer data in smarter ways can help save money and get your product or service to the right people, at the right time. It’s increasingly important to understand the demographics and behaviours of your audience. For instance, do you know if your customers are mainly homeowners? Are they parents? Are they graduates with student loan debt? Or are they saving for a wedding or major life milestone? Our report shows how different factors are impacting people’s spending habits.

    \n

    By understanding in more detail why your consumers spend the way they do, you can help eliminate waste, improve forecasts and reduce uncertainty in an ever changing world. \n

    \n \n\n

    \n \n \n
    \n
    \n
    \n \"\"\n \n

    Are we buying less because we care more? Can consumerism ever be truly sustainable? Listen to our latest podcast from The Green Room featuring our Consumer Insights Director, Ben Perkins in conversation with Choose Love’s Philli Boyle to hear their take on some of the biggest questions around conscious consumption.

    \n \n
    \n
    \n\n\n

    How consumer behaviour is embracing sustainability

    \n

    Following on from this insight our latest research into the changing landscape of consumer buying behaviour reveals the growing influence of sustainability. Consumer trends in 2020 reveal that sustainability is a key consideration for a variety of consumer segments when making their purchase decisions. Explore the insights.

    \n \n

    \n
    \n
    \n \"\"\n

    Read about The Clean Kilo to find out how we helped a supermarket attract consumers who care about sustainability and prefer to shop in person.

    \n
    \n
    \n \"\"\n

    If you’re struggling to understand where your customers are, check out Location Edge, our tool to help consumer businesses with geo-spatial insight.

    \n
    \n \n
    \n\n\n \n
    \n
    \n
    \n \"\"\n \n

    Are we buying less because we care more? Can consumerism ever be truly sustainable? Listen to our latest podcast from The Green Room featuring our Consumer Insights Director, Ben Perkins in conversation with Choose Love’s Philli Boyle to hear their take on some of the biggest questions around conscious consumption.

    \n \n
    \n
    \n\n \n\n

    \n \n

    Want to know more?

    \n

    If you’d like to discuss how we can help you navigate the changing consumer landscape, please get in touch with our consumer expert, Ben Perkins, and keep an eye out for the next instalment of our UK consumer insights.

    \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
    \n
    \n \n
    \n
    \n
    \n {this.dl = node}}>\n
    \n \n\n \n
    \n )\n }\n}\n\nChangingConsumerInteractives.propTypes = {\n \n}\n\nexport default ChangingConsumerInteractives;","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactDOMServer from 'react-dom/server';\n\n\n// import * as serviceWorker from './serviceWorker';\nimport ChangingConsumerInteractives from './components/ChangingConsumerInteractives';\n\nReactDOM.render(, document.getElementById('fv-changing-consumer-interactives'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\n// serviceWorker.unregister();\n\nif(window.FV_PRERENDER){\n console.log(ReactDOMServer.renderToStaticMarkup())\n}"],"sourceRoot":""}