{"version":3,"file":"index.es.min.js","sources":["../../../node_modules/preact-custom-element/dist/preact-custom-element.esm.js","../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../packages/discovery/commons/icons/pause-icon/PauseIcon.tsx","../../../packages/discovery/commons/icons/play-icon/PlayIcon.tsx","../../../node_modules/preact/compat/dist/compat.module.js","../../../node_modules/@nespresso-design-system/components/dist/chunks/index.bddf5ebb.js","../../../node_modules/@nespresso-design-system/components/dist/chunks/make-refs.cb0b9b76.js","../../../node_modules/@nespresso-design-system/components/dist/chunks/index.7e655f23.js","../../../node_modules/@nespresso-design-system/components/dist/chunks/common.162593b8.js","../../../node_modules/@nespresso-design-system/components/dist/react/Button.js","../../../packages/discovery/commons/expandable-button/ExpandableButton.tsx","../../../packages/discovery/commons/video/Video.tsx","../../../packages/components/src/constants.mjs","../../../packages/helpers/src/viewport.helpers.ts","../../../packages/discovery/commons/background/Background.tsx","../../../packages/helpers/src/context.tsx","../../../packages/helpers/src/events.helpers.ts","../../../packages/helpers/src/utils.ts","../../../packages/helpers/src/gtmEvents.js","../../../packages/helpers/src/viewPortEvent.ts","../../../packages/helpers/src/hooks/useImpressionTracker.ts","../../../packages/discovery/commons/section-header/SectionHeader.tsx","../../../packages/discovery/components/hero-home/HeroHome.tsx","../../../packages/discovery/components/hero-home/index.ts","../../../packages/discovery/asWebComponent.ts"],"sourcesContent":["import{h as t,hydrate as e,render as n,cloneElement as o}from\"preact\";function r(){return(r=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}var i=[\"context\",\"children\"];function a(t){this.getChildContext=function(){return t.context};var e=t.children,n=function(t,e){if(null==t)return{};var n,o,r={},i=Object.keys(t);for(o=0;o<i.length;o++)e.indexOf(n=i[o])>=0||(r[n]=t[n]);return r}(t,i);return o(e,n)}function s(){var o=new CustomEvent(\"_preact\",{detail:{},bubbles:!0,cancelable:!0});this.dispatchEvent(o),this._vdom=t(a,r({},this._props,{context:o.detail.context}),function e(n,o){if(3===n.nodeType)return n.data;if(1!==n.nodeType)return null;var r=[],i={},a=0,s=n.attributes,l=n.childNodes;for(a=s.length;a--;)\"slot\"!==s[a].name&&(i[s[a].name]=s[a].value,i[c(s[a].name)]=s[a].value);for(a=l.length;a--;){var u=e(l[a],null),d=l[a].slot;d?i[d]=t(p,{name:d},u):r[a]=u}var h=o?t(p,null,r):r;return t(o||n.nodeName.toLowerCase(),i,h)}(this,this._vdomComponent)),(this.hasAttribute(\"hydrate\")?e:n)(this._vdom,this._root)}function c(t){return t.replace(/-(\\w)/g,function(t,e){return e?e.toUpperCase():\"\"})}function l(t,e,r){if(this._vdom){var i={};i[t]=r=null==r?void 0:r,i[c(t)]=r,this._vdom=o(this._vdom,i),n(this._vdom,this._root)}}function u(){n(this._vdom=null,this._root)}function p(e,n){var o=this;return t(\"slot\",r({},e,{ref:function(t){t?(o.ref=t,o._listener||(o._listener=function(t){t.stopPropagation(),t.detail.context=n},t.addEventListener(\"_preact\",o._listener))):o.ref.removeEventListener(\"_preact\",o._listener)}}))}export default function(t,e,n,o){function r(){var e=Reflect.construct(HTMLElement,[],r);return e._vdomComponent=t,e._root=o&&o.shadow?e.attachShadow({mode:o.mode||\"open\"}):e,e}return(r.prototype=Object.create(HTMLElement.prototype)).constructor=r,r.prototype.connectedCallback=s,r.prototype.attributeChangedCallback=l,r.prototype.disconnectedCallback=u,n=n||t.observedAttributes||Object.keys(t.propTypes||{}),r.observedAttributes=n,n.forEach(function(t){Object.defineProperty(r.prototype,t,{get:function(){return this._vdom.props[t]},set:function(e){this._vdom?this.attributeChangedCallback(t,null,e):(this._props||(this._props={}),this._props[t]=e,this.connectedCallback());var n=typeof e;null!=e&&\"string\"!==n&&\"boolean\"!==n&&\"number\"!==n||this.setAttribute(t,e)}})}),customElements.define(e||t.tagName||t.displayName||t.name,r)}\n//# sourceMappingURL=preact-custom-element.esm.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),_=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(_=\"px;\"),i=i+l+\":\"+a+_}}return e+'=\"'+i+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(t)+'\"'}function _(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=_(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,_ as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import styles from './PauseIcon.module.scss'\n\nexport const PauseIcon = ({ fillRect }: { fillRect: string }) => {\n return (\n <span className={styles.pauseIcon}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill={fillRect}>\n <path d=\"M5 2h5v20H5V2ZM14 2h5v20h-5V2Z\"></path>\n </svg>\n </span>\n )\n}\n","import styles from './PlayIcon.module.scss'\n\nexport const PlayIcon = ({\n fillRect,\n size = 96\n}: {\n fillRect: string\n size?: number\n}) => {\n return (\n <span className={styles.playIcon} style={{ height: size, width: size }}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill={fillRect}>\n <path\n fillRule=\"evenodd\"\n d=\"M4.5 1.5v21L21 12 4.5 1.5Z\"\n clipRule=\"evenodd\"></path>\n </svg>\n </span>\n )\n}\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as c,createRef as l,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useCallback as a,useContext as s,useDebugValue as h,useEffect as v,useId as d,useImperativeHandle as p,useLayoutEffect as m,useMemo as y,useReducer as _,useRef as b,useState as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){this.props=n,this.context=t}function x(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(C.prototype=new n).isPureReactComponent=!0,C.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var R=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),R&&R(n)};var w=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=w,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var I=function(n,t){return null==n?null:r(r(n).map(t))},N={map:I,forEach:I,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},M=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);M(n,t,e,r)};var T=e.unmount;function A(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return A(n,t,e)})),n}function D(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return D(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function L(){this.__u=0,this.t=null,this.__b=null}function O(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function F(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function U(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),T&&T(n)},(L.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=O(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=D(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=A(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var V=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2]}};function W(n){return this.getChildContext=function(){return n.context},n.children}function P(n){var e=this,r=n.i;e.componentWillUnmount=function(){o(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],contains:function(){return!0},appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),o(t(W,{context:e.context},n.__v),e.l)}function j(n,e){var r=t(P,{__v:n,i:e});return r.containerInfo=e,r}(U.prototype=new n).__a=function(n){var t=this,e=O(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),V(t,n,r)):u()};e?e(o):o()}},U.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},U.prototype.componentDidUpdate=U.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){V(n,e,t)})};var z=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Z=/[A-Z0-9]/g,Y=\"undefined\"!=typeof document,$=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function q(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function G(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var J=e.event;function K(){}function Q(){return this.cancelBubble}function X(){return this.defaultPrevented}e.event=function(n){return J&&(n=J(n)),n.persist=K,n.isPropagationStopped=Q,n.isDefaultPrevented=X,n.nativeEvent=n};var nn,tn={enumerable:!1,configurable:!0,get:function(){return this.class}},en=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var c=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==c||Y&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var l=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===c?c=\"\":\"translate\"===l&&\"no\"===c?c=!1:\"o\"===l[0]&&\"n\"===l[1]?\"ondoubleclick\"===l?i=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||$(t.type)?\"onfocus\"===l?i=\"onfocusin\":\"onblur\"===l?i=\"onfocusout\":H.test(i)&&(i=l):l=i=\"oninput\":o&&B.test(i)?i=i.replace(Z,\"-$&\").toLowerCase():null===c&&(c=void 0),\"oninput\"===l&&u[i=l]&&(i=\"oninputCapture\"),u[i]=c}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",tn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=z,en&&en(n)};var rn=e.__r;e.__r=function(n){rn&&rn(n),nn=n.__c};var un=e.diffed;e.diffed=function(n){un&&un(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),nn=null};var on={ReactCurrentDispatcher:{current:{readContext:function(n){return nn.__n[n.__c].props.value},useCallback:a,useContext:s,useDebugValue:h,useDeferredValue:bn,useEffect:v,useId:d,useImperativeHandle:p,useInsertionEffect:gn,useLayoutEffect:m,useMemo:y,useReducer:_,useRef:b,useState:S,useSyncExternalStore:Cn,useTransition:Sn}}},cn=\"18.3.1\";function ln(n){return t.bind(null,n)}function fn(n){return!!n&&n.$$typeof===z}function an(n){return fn(n)&&n.type===u}function sn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function hn(n){return fn(n)?f.apply(null,arguments):n}function vn(n){return!!n.__k&&(o(null,n),!0)}function dn(n){return n&&(n.base||1===n.nodeType&&n)||null}var pn=function(n,t){return n(t)},mn=function(n,t){return n(t)},yn=u;function _n(n){n()}function bn(n){return n}function Sn(){return[!1,_n]}var gn=m,En=fn;function Cn(n,t){var e=t(),r=S({h:{__:e,v:t}}),u=r[0].h,o=r[1];return m(function(){u.__=e,u.v=t,xn(u)&&o({h:u})},[n,e,t]),v(function(){return xn(u)&&o({h:u}),n(function(){xn(u)&&o({h:u})})},[n]),e}function xn(n){var t,e,r=n.v,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}var Rn={useState:S,useId:d,useReducer:_,useEffect:v,useLayoutEffect:m,useInsertionEffect:gn,useTransition:Sn,useDeferredValue:bn,useSyncExternalStore:Cn,startTransition:_n,useRef:b,useImperativeHandle:p,useMemo:y,useCallback:a,useContext:s,useDebugValue:h,version:\"18.3.1\",Children:N,render:q,hydrate:G,unmountComponentAtNode:vn,createPortal:j,createElement:t,createContext:c,createFactory:ln,cloneElement:hn,createRef:l,Fragment:u,isValidElement:fn,isElement:En,isFragment:an,isMemo:sn,findDOMNode:dn,Component:n,PureComponent:C,memo:x,forwardRef:k,flushSync:mn,unstable_batchedUpdates:pn,StrictMode:yn,Suspense:L,SuspenseList:U,lazy:F,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:on};export{N as Children,C as PureComponent,yn as StrictMode,L as Suspense,U as SuspenseList,on as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,hn as cloneElement,ln as createFactory,j as createPortal,Rn as default,dn as findDOMNode,mn as flushSync,k as forwardRef,G as hydrate,En as isElement,an as isFragment,sn as isMemo,fn as isValidElement,F as lazy,x as memo,q as render,_n as startTransition,vn as unmountComponentAtNode,pn as unstable_batchedUpdates,bn as useDeferredValue,gn as useInsertionEffect,Cn as useSyncExternalStore,Sn as useTransition,cn as version};\n//# sourceMappingURL=compat.module.js.map\n","function a(n) {\n return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, \"default\") ? n.default : n;\n}\nvar f = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n(function(n) {\n (function() {\n var i = {}.hasOwnProperty;\n function s() {\n for (var t = \"\", r = 0; r < arguments.length; r++) {\n var e = arguments[r];\n e && (t = o(t, u(e)));\n }\n return t;\n }\n function u(t) {\n if (typeof t == \"string\" || typeof t == \"number\")\n return t;\n if (typeof t != \"object\")\n return \"\";\n if (Array.isArray(t))\n return s.apply(null, t);\n if (t.toString !== Object.prototype.toString && !t.toString.toString().includes(\"[native code]\"))\n return t.toString();\n var r = \"\";\n for (var e in t)\n i.call(t, e) && t[e] && (r = o(r, e));\n return r;\n }\n function o(t, r) {\n return r ? t ? t + \" \" + r : t + r : t;\n }\n n.exports ? (s.default = s, n.exports = s) : window.classNames = s;\n })();\n})(f);\nvar c = f.exports;\nconst p = /* @__PURE__ */ a(c);\nexport {\n p as c,\n a as g\n};\n//# sourceMappingURL=index.bddf5ebb.js.map\n","import { useRef as s, useImperativeHandle as f } from \"react\";\nconst c = (n, o) => {\n const r = {};\n for (const e of o)\n r[e] = s(null);\n return f(n, () => {\n const e = {};\n for (const t of o)\n e[t] = r[t].current;\n return e;\n }), r;\n};\nexport {\n c as m\n};\n//# sourceMappingURL=make-refs.cb0b9b76.js.map\n","import \"../assets/index12.css\";\nimport { jsx as n } from \"react/jsx-runtime\";\nimport { forwardRef as f } from \"react\";\nimport { c as u } from \"./index.bddf5ebb.js\";\nimport { m as d } from \"./make-refs.cb0b9b76.js\";\nfunction _(s) {\n return !Number.isNaN(s) && !Number.isNaN(Number.parseFloat(s));\n}\nconst z = \"_mask_pcelr_87\", c = {\n mask: z,\n \"size-16\": \"_size-16_pcelr_100\",\n \"size-32\": \"_size-32_pcelr_106\"\n}, N = \"/shared_res/agility/next-components/assets/icons\", k = 24, I = f(\n ({ className: s, icon: e, method: l = \"mask\", style: a, ...r }, p) => {\n const { $el: t } = d(p, [\"$el\"]), [i] = e.split(\"/\"), o = _(i) ? Number(i) : k, m = `${N}/${e}.svg`;\n return l === \"mask\" ? /* @__PURE__ */ n(\n \"span\",\n {\n \"aria-hidden\": \"true\",\n className: u(c.mask, c[`size-${o}`], s),\n \"data-icon\": e,\n ref: t,\n style: {\n maskImage: `url(${m})`,\n ...a\n },\n ...r\n }\n ) : (\n // biome-ignore lint/a11y/useAltText: ok\n /* @__PURE__ */ n(\n \"img\",\n {\n alt: `Icon: ${e}`,\n \"aria-hidden\": \"true\",\n className: s,\n \"data-icon\": e,\n height: o,\n loading: \"lazy\",\n ref: t,\n src: m,\n style: a,\n ...r\n }\n )\n );\n }\n);\nexport {\n I,\n _ as i\n};\n//# sourceMappingURL=index.7e655f23.js.map\n","import \"../assets/common8.css\";\nimport { c } from \"./index.bddf5ebb.js\";\nconst i = \"_button_1qujt_87\", d = \"_primary_1qujt_120\", r = \"_secondary_1qujt_134\", e = \"_dark_1qujt_148\", g = \"_outline_1qujt_163\", m = \"_ghost_1qujt_178\", j = \"_leading_1qujt_191\", q = \"_large_1qujt_195\", p = \"_medium_1qujt_204\", y = \"_small_1qujt_213\", b = \"_loading_1qujt_227\", h = \"_loadingIcon_1qujt_228\", k = \"_spin_1qujt_1\", t = {\n button: i,\n primary: d,\n secondary: r,\n dark: e,\n outline: g,\n ghost: m,\n leading: j,\n large: q,\n medium: p,\n small: y,\n loading: b,\n loadingIcon: h,\n spin: k\n}, x = ({\n className: a,\n contrast: n,\n icon: l,\n iconPosition: _,\n isLoading: u,\n size: o,\n variant: s\n}) => c(t.button, a, {\n [t.loading]: u,\n [t[n]]: !!n && n !== \"light\",\n [t[_]]: !!l && _ !== \"trailing\",\n [t[o]]: !!o,\n [t[s]]: !!s\n});\nexport {\n x as c,\n t as s\n};\n//# sourceMappingURL=common.162593b8.js.map\n","import { jsxs as N, Fragment as j, jsx as t } from \"react/jsx-runtime\";\nimport { I as n } from \"../chunks/index.7e655f23.js\";\nimport { m as R } from \"../chunks/make-refs.cb0b9b76.js\";\nimport { forwardRef as $, useState as k, useEffect as w } from \"react\";\nimport { c as C, s as E } from \"../chunks/common.162593b8.js\";\nconst z = $(\n ({\n a11yLabel: l,\n a11yTitle: m,\n className: c,\n contrast: i = \"light\",\n disabled: f,\n icon: e,\n iconPosition: d = \"trailing\",\n isDecorative: p = !1,\n isLoading: o = !1,\n label: u,\n size: b = \"large\",\n variant: g = \"primary\",\n ...h\n }, y) => {\n const [s, x] = k(o), { $el: B } = R(y, [\"$el\"]);\n w(() => {\n x(o);\n }, [o]);\n const I = C({\n className: c,\n contrast: i,\n icon: e,\n iconPosition: d,\n isLoading: s,\n size: b,\n variant: g\n }), a = {\n \"aria-label\": l,\n className: I,\n title: m,\n ref: B,\n ...h\n }, r = s ? /* @__PURE__ */ t(n, { icon: \"24/symbol/status-loading\", className: E.loadingIcon }) : /* @__PURE__ */ N(j, { children: [\n u,\n e && /* @__PURE__ */ t(n, { icon: e })\n ] });\n return p ? /* @__PURE__ */ t(\"span\", { ...a, children: r }) : a.href ? /* @__PURE__ */ t(\"a\", { ...a, children: r }) : /* @__PURE__ */ t(\n \"button\",\n {\n type: \"button\",\n ...a,\n \"aria-busy\": s,\n disabled: s || f,\n children: r\n }\n );\n }\n);\nexport {\n z as Button\n};\n//# sourceMappingURL=Button.js.map\n","import { Icon } from '@nespresso-design-system/components'\nimport styles from './ExpandableButton.module.scss'\n\n// TODO: This component should ideally be inside DS repo, and not as a standalone component in here.\n\nconst ExpandableButton = ({\n icon = '24/symbol/chevron-right',\n href = '',\n label = '',\n variant = 'light',\n iconPosition = 'trailing',\n onClick\n}) => {\n return (\n <a\n onClick={onClick}\n href={href}\n className={`${styles.expandableButton} ${styles['expandableButton__variant--' + variant]} ${styles['expandableButton__icon--' + iconPosition]}`}>\n {iconPosition === 'leading' ? <ButtonText label={label} /> : null}\n\n <div className={styles.expandableButtonIcon}>\n <Icon icon={icon} method=\"mask\" />\n </div>\n\n {iconPosition === 'trailing' ? <ButtonText label={label} /> : null}\n </a>\n )\n}\n\nconst ButtonText = ({ label }) => {\n return <div className={styles.expandableButtonText}>{label}</div>\n}\n\nexport default ExpandableButton\n","import { PauseIcon } from '@commons/icons/pause-icon/PauseIcon'\nimport { PlayIcon } from '@commons/icons/play-icon/PlayIcon'\nimport { ButtonIcon, ButtonRefs } from '@nespresso-design-system/components'\nimport { useRef, useState, useEffect } from 'preact/hooks'\nimport './Video.scss'\nimport ExpandableButton from '@commons/expandable-button/ExpandableButton'\nconst reducedMotion = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n).matches\n\ntype VideoProps = {\n url: string\n auto_play?: boolean\n hasModal?: boolean\n onVideoClick?: () => void\n className?: string\n}\n\nconst Video = ({\n url,\n button = null,\n auto_play = false,\n hasModal = false,\n onVideoClick,\n className = ''\n}: VideoProps) => {\n const [isPlaying, setIsPlaying] = useState(auto_play && !reducedMotion)\n const videoRef = useRef(null)\n const ctaRef = useRef<ButtonRefs>(null)\n\n if (!url) {\n return null\n }\n\n const togglePlayPause = () => {\n const videoElement = videoRef.current\n\n if (isPlaying) {\n videoElement.pause()\n } else {\n videoElement.play()\n }\n\n setIsPlaying(!isPlaying)\n }\n\n useEffect(() => {\n const videoElement = videoRef.current\n if (reducedMotion) {\n videoElement.pause()\n }\n }, [reducedMotion])\n\n return (\n <div className={`video-container ${className}`}>\n <video ref={videoRef} playsInline autoPlay={auto_play} muted loop>\n <source src={url} type=\"video/mp4\"></source>\n </video>\n\n {!hasModal ? (\n <button\n id=\"autoplay-toggle\"\n className=\"video-play-button\"\n aria-pressed={isPlaying}\n aria-label=\"play/pause\"\n onClick={togglePlayPause}>\n <span>\n {isPlaying ? (\n <PauseIcon fillRect=\"white\" />\n ) : (\n <PlayIcon fillRect=\"white\" size={24} />\n )}\n </span>\n </button>\n ) : (\n <span className=\"video-open-button\">\n <ExpandableButton\n onClick={onVideoClick}\n ref={ctaRef}\n {...button}\n />\n </span>\n )}\n </div>\n )\n}\n\nexport default Video\n","export const MAX_WIDTH_CONTAINER = 1160\n\nexport const BREAKPOINT_XL = 1920\nexport const BREAKPOINT_TABLET = 1024\nexport const BREAKPOINT_L = 996\nexport const BREAKPOINT_M = 768\nexport const BREAKPOINT_S = 750\nexport const BREAKPOINT_XS = 375\n\nexport const CTA_PRIMARY = 'primary'\nexport const CTA_PRIMARY_TRANSPARENT = 'primary_transparent'\nexport const CTA_SUBTLE = 'subtle'\nexport const CTA_LINK = 'link'\nexport const CTA_LINK_UNDERLINE = 'link-underline'\nexport const CTA_LINK_GOLD = 'link-gold'\nexport const CTA_LINK_ADD_TO_CART_SMALL = 'AddToCart_small'\nexport const CTA_LINK_ADD_TO_CART_LARGE = 'AddToCart_large'\n\nexport const EVENT_TAB_CHANGE = 'EVENT_TAB_CHANGE'\n\nexport const EVENT_VIDEO = 'WEB_COMPONENT_VIDEO'\nexport const EVENT_POPIN_OPEN = 'WEB_COMPONENT_POPIN_OPEN'\nexport const EVENT_POPIN_OPENED = 'WEB_COMPONENT_POPIN_OPENED'\nexport const EVENT_POPIN_CLOSE = 'WEB_COMPONENT_POPIN_CLOSE'\nexport const EVENT_POPIN_CLOSED = 'WEB_COMPONENT_POPIN_CLOSED'\nexport const EVENT_POPIN_CLOSE_CLICK = 'WEB_COMPONENT_POPIN_CLOSE_CLICK'\nexport const EVENT_POPIN_KEY_DOWN = 'keydown'\nexport const EVENT_POPIN_FORM_TOGGLE_TITLE =\n 'WEB_COMPONENT_POPIN_FORM_TOGGLE_TITLE'\nexport const EVENT_CTA_CLICK = 'WEB_COMPONENT_CTA_CLICK'\nexport const EVENT_HERO_REORDER_OPEN = 'WEB_COMPONENT_HERO_REORDER_OPEN'\nexport const EVENT_HERO_REORDER_CLOSE = 'WEB_COMPONENT_HERO_REORDER_CLOSE'\nexport const EVENT_QUICKVIEW_OPEN = 'WEB_COMPONENT_QUICKVIEW_OPEN'\nexport const EVENT_QS_OPEN = 'WEB_COMPONENT_QS_OPEN'\nexport const EVENT_QS_OPENED = 'WEB_COMPONENT_QS_OPENED'\nexport const EVENT_QS_CLOSE = 'WEB_COMPONENT_QS_CLOSE'\nexport const EVENT_QS_CLOSED = 'WEB_COMPONENT_QS_CLOSED'\nexport const EVENT_QS_CLOSE_CLICK = 'WEB_COMPONENT_QS_CLOSE_CLICK'\nexport const EVENT_QS_KEY_DOWN = 'keydown'\nexport const EVENT_ADD_TO_CART = 'WEB_COMPONENT_ADD_TO_CART'\nexport const EVENT_CART_UPDATED = 'WEB_COMPONENT_CART_UPDATED'\nexport const EVENT_VIDEO_TOGGLE = 'WEB_COMPONENT_VIDEO_TOGGLE'\nexport const VIDEO_ON_HOVER = 'VIDEO_ON_HOVER'\nexport const VIDEO_ON_OUT = 'VIDEO_ON_OUT'\nexport const EVENT_DETAIL_OPEN = 'WEB_COMPONENT_DETAIL_OPEN'\nexport const EVENT_SLIDER_READY = 'WEB_COMPONENT_SLIDER_READY'\nexport const EVENT_SLIDE_CHANGE = 'WEB_COMPONENT_SLIDE_CHANGE'\nexport const EVENT_OVERLAY_OPEN = 'WEB_COMPONENT_OVERLAY_OPEN'\nexport const EVENT_OVERLAY_CLOSE = 'WEB_COMPONENT_OVERLAY_CLOSE'\nexport const EVENT_OVERLAY_CLICKED = 'WEB_COMPONENT_OVERLAY_CLICKED'\nexport const EVENT_OPEN_PRODUCT_AR_CLICKED = 'OPEN_PRODUCT_AR_CLICKED'\nexport const EVENT_SORT_BY_CHANGE = 'WEB_COMPONENT_SORT_BY_CHANGE'\n\nexport const EVENT_BUBBLE_SELECTED = 'EVENT_BUBBLE_SELECTED'\nexport const EVENT_RECO_TOOL_OPTION_CLICKED = 'EVENT_RECO_TOOL_OPTION_CLICKED'\nexport const WEB_COMPONENT_PROJECTS_LOADED = 'WEB_COMPONENT_PROJECTS_LOADED'\nexport const WEB_COMPONENT_ANCHOR_LOADED = 'WEB_COMPONENT_ANCHOR_LOADED'\n\nexport const EVENT_SWIPED_UP = 'swiped-up'\nexport const EVENT_SWIPED_DOWN = 'swiped-down'\nexport const EVENT_SWIPED_LEFT = 'swiped-left'\nexport const EVENT_SWIPED_RIGHT = 'swiped-right'\n\nexport const EVENT_HEADER_POSITION_CHANGED = 'EVENT_HEADER_POSITION_CHANGED'\n\nexport const keys = { ESC: 'Escape' }\n\nexport const ADD_TO_CART_MODIFIER_MINI = 'mini'\nexport const ADD_TO_CART_MODIFIER_DEFAULT = ADD_TO_CART_MODIFIER_MINI\n\nexport const COFFEE_ORIGINAL = 'original'\nexport const COFFEE_VERTUO = 'vertuo'\nexport const COFFEE_PRO = 'pro'\nexport const COFFEE_OL = 'OL'\nexport const COFFEE_VL = 'VL'\nexport const INTENSITY_MAX_OL = 14\nexport const INTENSITY_MAX_VL = 12\nexport const DEFAULT_BUBBLE_ICON = ''\n\nexport const NUMBER_PRODUCTS_SLIDER = 8\nexport const NUMBER_FEATURES_PDP = 8\n\nexport const ALIGNMENT = ['center', 'left', 'right']\nexport const POSITION = ['top', 'right', 'bottom', 'left']\nexport const TRANSLATION_ADD_TO_CART = 'Add to cart'\nexport const TRANSLATION_UPDATE_BASKET = 'Update basket'\n\nexport const TIME_INSTANT = 1\nexport const TIME_FAST = 300\nexport const TIME_MEDIUM = 600\nexport const TIME_SLOW = 1200\n\nexport const APP_APPLE_LINK = {\n default: 'https://apps.apple.com/us/app/nespresso/id342879434',\n us: 'https://apps.apple.com/us/app/nespresso-new/id1609639566',\n uk: 'https://apps.apple.com/gb/app/nespresso-new/id1609639566'\n}\nexport const APP_ANDROID_LINK =\n 'https://play.google.com/store/apps/details?id=com.nespresso.activities'\nexport const APP_HUAWEI_LINK = 'https://appgallery.huawei.com/app/C102571517'\n\nexport const SRC_PAGE_PLP = 'plp'\nexport const SRC_PAGE_PDP = 'pdp'\n\nexport const PLP_TYPE_COFFEE = 'coffee'\nexport const PLP_TYPE_MACHINE = 'machine'\nexport const PLP_TYPE_ACCESSORY = 'accessory'\nexport const CALLEO_API_DOMAIN = 'https://www.contact.nespresso.com/'\n\n// SCSS RELATED\n// Todo : should be shared by JS and SCSS\nexport const BROWSER_CONTEXT = 16 // 1rem = 16px\nexport const COLOR_WHITE_1000 = '#FFFFFF' // Do not change for #FFF shortcut, it will break slider-natural gradients !\n\nexport const CONTRAST_DARK = 'dark'\nexport const CONTRAST_LIGHT = 'light'\n\nexport const B2B_CONTACT_FORM_POPIN_ID = 'b2b-contact-form-popin-id'\nexport const B2B_CONTACT_FORM_POPIN_SRC_SKU_MAIN_INFO = 'sku-main-info'\n\nexport const B2B_CONTACT_FORM_POPIN_SRC_SKU_MAIN_INFO_AUTO =\n 'sku-main-info-auto'\n\nexport const ASPECT_RATIO_16_9 = '16/9'\nexport const ASPECT_RATIO_1_1 = '1/1'\n\nexport const NESPRESSO_PRODUCTION_DOMAIN = 'https://www.nespresso.com'\nexport const NESPRESSO_ROLLOUT_DOMAIN = 'https://nc2-env-rollout.nespresso.com'\n\nexport const EVENT_QUIZ_ON_GO_BACK = 'WEB_COMPONENT_EVENT_QUIZ_ON_GO_BACK'\nexport const EVENT_QUIZ_SUBMIT = 'WEB_COMPONENT_EVENT_QUIZ_SUBMIT'\n","import {\n BREAKPOINT_M,\n BREAKPOINT_TABLET\n} from '@content/components/src/constants'\n\nconst viewport = () => {\n const lt = (ref: number) => {\n return window.innerWidth < ref\n }\n\n return {\n get is() {\n const { innerWidth: vw, devicePixelRatio } = window\n return {\n mobile: vw < BREAKPOINT_M,\n mobile_tablet: vw < BREAKPOINT_TABLET,\n tablet: vw >= BREAKPOINT_M && vw < BREAKPOINT_TABLET,\n desktop: vw >= BREAKPOINT_TABLET && devicePixelRatio <= 1,\n retina: vw >= BREAKPOINT_TABLET && devicePixelRatio > 1\n }\n },\n lt\n }\n}\n\nconst helper = viewport()\n\nexport default helper\n","import Video from '@commons/video/Video'\nimport viewportHelper from '@content/helpers/src/viewport.helpers.ts'\nimport styles from './Background.module.scss'\nimport { BackgroundProps } from './types'\n\nconst Background = ({\n retina,\n desktop,\n mobile,\n video,\n overlay,\n rounded = false\n}: BackgroundProps) => {\n const overlayColorMap = {\n full: styles.backgroundOverlayBlack,\n 'gradient-left': styles.backgroundOverlayBlackGradientLeft,\n 'gradient-left-corner': styles.backgroundOverlayBlackGradientLeft,\n 'gradient-center': styles.backgroundOverlayBlack,\n 'gradient-bottom': styles.backgroundOverlayBlackGradientBottom\n }\n\n const overlayClass = `${overlay ? `${styles.backgroundOverlay} ${overlayColorMap[overlay]}` : ''} `\n const roundedClass = rounded ? styles.rounded : ''\n\n const getBackgroundType = () => {\n if (viewportHelper.is.desktop) {\n return desktop\n } else if (viewportHelper.is.retina) {\n return retina\n }\n\n return mobile\n }\n\n if (video?.desktop || video?.mobile) {\n if (viewportHelper.is.mobile) {\n return (\n <Video\n className={overlayClass}\n url={video.mobile}\n {...video}></Video>\n )\n } else {\n return (\n <Video\n className={overlayClass}\n url={video.desktop}\n {...video}></Video>\n )\n }\n }\n\n return (\n <div\n style={{ backgroundImage: `url(${getBackgroundType()})` }}\n className={`${styles.backgroundWrapper} ${roundedClass} ${overlayClass}`}></div>\n )\n}\n\nexport default Background\n","import preact, { createContext } from 'preact'\nimport { useContext } from 'preact/hooks'\n\nconst PbPropsContext = createContext<any | undefined>(undefined)\n\nexport const usePbProps = <T extends unknown>() => {\n const context = useContext(PbPropsContext)\n if (!context) {\n throw new Error('Invalid PbPropsProvider')\n }\n return context as T\n}\n\nexport const PbPropsProvider: preact.FunctionalComponent<{ value: any }> = ({\n value,\n children\n}) => (\n <PbPropsContext.Provider value={value}>{children}</PbPropsContext.Provider>\n)\n","import type { AddEventListenerOptions } from 'dom'\n\nexport type EventListener = {\n element: HTMLElement\n type: string\n listener: (e: Event) => void\n options?: boolean | AddEventListenerOptions\n}\n/**\n * @deprecated\n * Use \"\\@content/helpers/src/event-queue\", this implementation has race conditions\n */\nconst add = (eventListeners: EventListener[] = []) => {\n eventListeners.forEach(eventListener => {\n if (!eventListener || !eventListener.element) {\n return\n }\n return eventListener.element.addEventListener(\n eventListener.type,\n eventListener.listener,\n eventListener.options\n )\n })\n}\n/**\n * @deprecated\n * Use \"\\@content/helpers/src/event-queue\", this implementation has race conditions\n */\nconst remove = (eventListeners: EventListener[] = []) => {\n eventListeners.forEach(eventListener => {\n if (!eventListener || !eventListener.element) {\n return\n }\n eventListener.element.removeEventListener(\n eventListener.type,\n eventListener.listener\n )\n })\n}\n\nconst busNamespace = 'pageBuilder'\n/**\n * @deprecated\n * Use \"\\@content/helpers/src/event-queue\", this implementation has race conditions\n */\nexport const emitCustomEvent = (eventName: string, data: unknown) => {\n const customEvent = new CustomEvent(`${busNamespace}.${eventName}`, {\n detail: data,\n bubbles: true,\n cancelable: true,\n composed: false\n })\n\n window.dispatchEvent(customEvent)\n}\n/**\n * @deprecated\n * Use \"\\@content/helpers/src/event-queue\", this implementation has race conditions\n */\nexport default { add, emitCustomEvent, remove }\n","export { waitForSelector } from './waitForSelector'\n\nexport const constants = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n ESC: 27,\n SPACE: 32,\n ENTER: 13,\n TAB: 9\n}\n\nexport function capitalize(s = '') {\n return s[0].toUpperCase() + s.slice(1)\n}\n\nexport const convertToCamelCase = (str: string): string => {\n const arr = str.match(/[a-z]+|\\d+/gi)\n if (!arr) {\n return str\n }\n return arr\n .map((m, i) => {\n let low = m.toLowerCase()\n if (i !== 0) {\n low = low\n .split('')\n .map((s, k) => (k === 0 ? s.toUpperCase() : s))\n .join('')\n }\n return low\n })\n .join('')\n}\n\nexport function slug(s = '') {\n return s\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/[^\\w-]+/g, '') // Remove all non-word chars\n .replace(/--+/g, '-') // Replace multiple - with single -\n}\n\nexport function pxToEm(target: number, stripedInnerFontSize = 1) {\n return target / 14 / stripedInnerFontSize + 'em'\n}\n\nexport function percent(target: number) {\n return target + '%'\n}\n\nexport function parseHTML(str: string) {\n const tmp = document.implementation.createHTMLDocument('')\n tmp.body.innerHTML = str\n return tmp.body.childNodes\n}\n\nexport function stripHTML(str: string) {\n const tmp = document.implementation.createHTMLDocument('')\n tmp.body.innerHTML = str\n return (tmp.body.textContent ?? '').replace(RegExp('[\\\\s|\\'|\"]', 'g'), '')\n}\n\nexport function makeId(length: number) {\n var result = ''\n var characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n var charactersLength = characters.length\n for (var i = 0; i < length; i++) {\n result += characters.charAt(\n Math.floor(Math.random() * charactersLength)\n )\n }\n return result\n}\n\nexport function removeEmptyValues(obj: { [key: string]: any }): {\n [key: string]: any\n} {\n for (let key in obj) {\n if (obj[key] === null || obj[key] === undefined || obj[key] === '') {\n delete obj[key]\n }\n }\n\n return obj\n}\n\nexport function makeHash(str: string) {\n var hash = 0,\n i,\n chr\n if (!str) {\n return hash\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0 // Convert to 32bit integer\n }\n return 'id-' + hash\n}\n\nexport function getHashLink(link: string) {\n let linkHash = link\n let linkNoHash = link\n if (link.indexOf('#') !== -1) {\n linkNoHash = link.replace('#', '')\n } else {\n linkHash = '#' + link\n }\n\n return { linkNoHash, linkHash }\n}\n\nexport function lazyLoad(\n node: Element,\n attribute: string,\n value: any,\n url: string\n) {\n const CLASSNAME_OUT_OF_SCREEN = 'lazy-load'\n const CLASSNAME_IN_SCREEN = 'lazy-loaded'\n const CLASSNAME_ON_ERROR = 'lazy-loaded-error'\n\n const isOldIOS = () => {\n var agent = window.navigator.userAgent,\n start = agent.indexOf('OS ')\n if (\n (agent.indexOf('iPhone') > -1 || agent.indexOf('iPad') > -1) &&\n start > -1\n ) {\n return (\n window.Number(agent.substr(start + 3, 3).replace('_', '.')) < 14\n )\n }\n return false\n }\n\n const inViewPort = (attribute: string, value: any) => {\n node.setAttribute(attribute, value)\n\n const cb = () => node.classList.add(CLASSNAME_IN_SCREEN)\n\n if (url) {\n const img = new Image()\n img.src = url\n img.onload = cb\n img.onerror = () => {\n cb()\n node.classList.add(CLASSNAME_ON_ERROR)\n throw new Error(`Image ${url} cannot be loaded`)\n }\n\n return\n }\n\n cb()\n }\n\n if (/Trident\\/|MSIE/.test(window.navigator.userAgent) || isOldIOS()) {\n inViewPort(attribute, value)\n } else {\n if ('IntersectionObserver' in window) {\n node.classList.add(CLASSNAME_OUT_OF_SCREEN)\n let lazyBackgroundObserver = new IntersectionObserver(function (\n entries\n ) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n inViewPort(attribute, value)\n lazyBackgroundObserver.unobserve(entry.target)\n }\n })\n })\n lazyBackgroundObserver.observe(node)\n } else {\n inViewPort(attribute, value)\n }\n }\n}\n\nexport function lazyLoadCallback(node: Element, cb: () => void) {\n const isOldIOS = () => {\n var agent = window.navigator.userAgent,\n start = agent.indexOf('OS ')\n if (\n (agent.indexOf('iPhone') > -1 || agent.indexOf('iPad') > -1) &&\n start > -1\n ) {\n return (\n window.Number(agent.substr(start + 3, 3).replace('_', '.')) < 14\n )\n }\n return false\n }\n\n if (/Trident\\/|MSIE/.test(window.navigator.userAgent) || isOldIOS()) {\n cb()\n } else {\n if ('IntersectionObserver' in window) {\n let lazyBackgroundObserver = new IntersectionObserver(\n function (entries) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n cb()\n lazyBackgroundObserver.unobserve(entry.target)\n }\n })\n },\n { rootMargin: '150% 0px' }\n )\n lazyBackgroundObserver.observe(node)\n }\n }\n}\n\n// Debounce\nexport function debounce<T>(func: () => void, time = 100) {\n let timer: number\n return function (event: T) {\n if (timer) {\n window.clearTimeout(timer)\n }\n timer = window.setTimeout(func, time, event)\n }\n}\n\n// isIE - to check for internet explorer\nexport function isIE() {\n let ua = window.navigator.userAgent,\n isIE = /MSIE|Trident/.test(ua)\n\n return isIE\n}\n\n// Load external script\nexport const loadExternalScript = ({\n src,\n callback = null,\n async = false,\n defer = false,\n module = false,\n id = ''\n}: {\n src: string\n callback: null | GlobalEventHandlers['onload'] // eslint-disable-line no-undef\n module: boolean\n defer: boolean\n async: boolean\n id: string\n}) => {\n const script = document.createElement('script')\n script.type = module ? 'module' : 'text/javascript'\n script.src = src\n id ? (script.id = id) : false // add id attribute only if passed\n if (typeof callback === 'function') {\n script.onload = callback\n }\n script.async = async\n script.defer = defer\n document.body.appendChild(script)\n}\n\n// Load external css\nexport const loadExternalCss = ({ src }: { src: string }) => {\n const script = document.createElement('link')\n script.rel = 'stylesheet'\n script.href = src\n document.body.appendChild(script)\n}\n// Lazy load vendor script\nexport const lazyLoadVendorScript = (handler, el) => {\n const observer = new IntersectionObserver(handler)\n observer.observe(el)\n}\n\n/**\n * Replaces variable inside a given string\n * Each variable have to be enclosed between stChr and enChr\n * The values have to be contained in the vars object, they key must match\n * example :\n * txt : 'See {resultsLength} Results'\n * vars : {resultsLength:'30'}\n * stChr : '{'\n * enChr : '}'\n *\n * will return : 'See 30 Results'\n *\n * @param {string} txt\n * @param {object} vars\n * @param {string} stChr\n * @param {string} enChr\n */\nexport function interpolate(\n txt: string,\n vars: Record<string, null | undefined | string>,\n stChr: string,\n enChr: string\n) {\n let curIdx = 0\n\n while (txt) {\n const stIdx = txt.indexOf(stChr, curIdx)\n if (stIdx === -1) {\n break\n }\n const enIdx = txt.indexOf(enChr, stIdx + 1)\n if (enIdx === -1) {\n break\n }\n const hashId = txt.substring(stIdx + stChr.length, enIdx)\n if (vars[hashId] != null) {\n txt =\n txt.substr(0, stIdx) +\n vars[hashId] +\n txt.substr(enIdx + enChr.length)\n curIdx = stIdx\n } else {\n curIdx = enIdx\n }\n }\n return txt\n}\n\n/**\n * Find in container element, add height to equal size of element\n * @param container css path where my element is contain e.g. `.c-container`\n * @param el css path of elements to equalized\n */\nexport const equalHeight = (\n containerSelector: string,\n el: string,\n elementScope: HTMLElement\n) => {\n const container = elementScope.querySelector<HTMLElement>(containerSelector)\n if (!container) {\n return\n }\n\n const items = container.querySelectorAll<HTMLElement>(el)\n let max = -1\n\n for (let i = 0; i < [...items].length; i++) {\n const item = [...items][i]\n let h = item.offsetHeight\n max = h > max ? h : max\n }\n\n if (max <= 0) {\n return\n }\n\n for (let i = 0; i < [...items].length; i++) {\n const item = [...items][i]\n item.style.height = `${max}px`\n }\n}\n\nexport const stringifyCurlyQuote = (data: {}) =>\n JSON.stringify(data).replace(\"'\", '’')\n\nexport const stringifyForAttribute = (data = {}) => {\n return escapeHtml(JSON.stringify(data))\n}\n\n/**\n * This function is included instead of sanitizeString because for\n * inserting HTML into innerHTML we need to make sure all HTML\n * entities are escaped.\n */\nexport const escapeHtml = (text: string) => {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n } as { [s: string]: string }\n\n return text.replace(/[&<>\"']/g, m => map[m])\n}\n\n/**\n * Because setting attributes escapes more than the characters above and then preact also\n * escapes text we need a more complete way of unescaping all html entities (not just the ones\n * above)\n */\nconst domParser = new DOMParser()\nexport const unescapeHtml = (text: string) => {\n return domParser.parseFromString(text, 'text/html').body.textContent\n}\n\nexport const sanitizeString = (data: {}) => {\n if (!data) {\n return ''\n }\n\n return data.toString().replace(/\"/g, '"').replace(/'/g, ''')\n}\n\nexport const stripTags = (s: string) => {\n return (s || '').replace(/(<([^>]+)>)/gi, '')\n}\n\nexport const setAttributes = (element: Element, attrs: Record<string, any>) => {\n for (let key in attrs) {\n element.setAttribute(key, attrs[key])\n }\n return element\n}\n\nexport const getMetaContent = (metaName: string) => {\n const metaTag = document.querySelector(`meta[name=${metaName}]`)\n if (!metaTag) {\n return ''\n }\n return metaTag.getAttribute('content')\n}\n\nexport const isObjectEmpty = (obj: {}) => {\n return Object.keys(obj).length === 0\n}\n\nexport function getPBProps<T>(data: string): T {\n try {\n return data ? (JSON.parse(data) as T) : ({} as T)\n } catch (error) {\n console.error('Invalid \"data\" attribute', error)\n return {} as T\n }\n}\n","import { getProduct } from '@content/helpers/src/catalog'\nimport { emitCustomEvent } from './events.helpers'\nimport { removeEmptyValues } from './utils'\n\nconst raisedByPB = 'page builder'\nconst raisedByWC = 'Web component'\n\n/**\n *\n * helper method for 'customEvent' GTM event\n * @param {*} args (event, eventRaisedBy, eventCategory, eventAction, eventLabel, nonInteraction)\n */\n\nexport const customEvent = args => {\n window.gtmDataObject = window.gtmDataObject || []\n var eventData\n if (args.event_GA4 === undefined || args.event_GA4 === false) {\n eventData = {\n event: 'customEvent',\n eventRaisedBy: raisedByWC,\n eventCategory: 'User Engagement',\n eventAction: 'Click',\n eventLabel: '',\n nonInteraction: 0,\n ...args\n }\n } else {\n eventData = {\n event_raised_by: raisedByPB,\n ...args\n }\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('customEvent', eventData)\n}\n\n/**\n * Helper method for tracking component interactions, compatible with GA4.\n *\n * @param {String} creative : component raising the event, e.g. 'before_coffees_list', 'before_machines_list', 'before_accessories_list'\n * @param {String} actionType : description of the interaction, e.g 'pdp quick view'\n * @param {String} internationalId : long SKU, e.g. 'erp.pt.b2c/prod/7243.30'\n * @param {String} internationalName : international name of the product, e.g. 'Vertuo Carafe Pour-Over Style Mild'\n * @param {String} productType : type of product, i.e. 'capsule', 'machine', 'accessory'\n * @param {String} range : product range, e.g. 'ispirazione italiana'\n * @param {String} technology : technology, i.e. 'original', 'vertuo'\n * @param {Number} price : price, e.g. .51\n * @param {String} eventAction : description of the action, e.g. 'PDP Quick View'\n *\n * Initally created for PDP Quick View tracking:\n * https://dsu-confluence.nestle.biz/display/DIANA/BEFORE+-+PDP+Quick+View\n * Will probably be rolled out across all components, update this comment accordingly.\n */\nexport const trackComponentInteraction = ({\n creative = '',\n actionType = '',\n internationalId = '',\n internationalName = '',\n productType = '',\n technology = '',\n category = '',\n rawPrice = '',\n eventAction = ''\n}) => {\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'page_builder_component_interaction',\n event_raised_by: raisedByPB,\n component_name: creative,\n action_type: actionType,\n item_id_event: internationalId,\n item_name_event: internationalName,\n item_category_event: productType,\n item_technology_event: technology,\n item_range_event: category,\n item_price_event: rawPrice,\n eventCategory: 'User Engagement',\n eventAction: eventAction,\n eventLabel: `${productType} - ${technology} - ${internationalName}`\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('page_builder_component_interaction', eventData)\n}\n\n/**\n *\n * helper method for 'impression' GTM event\n * @param {*} args (event, eventRaisedBy, eventAction, ecommerce)\n */\nexport const impression = args => {\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'impression',\n eventRaisedBy: raisedByPB,\n eventAction: 'Promo Impression',\n ecommerce: {},\n ...args\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('impression', eventData)\n}\n\n/**\n *\n * Push 'view_promotion' event for GA 4\n * @param {*} args (event, event_raised_by, ecommerce: {promotion_id, promotion_name, creative_slot, creative_name})\n */\nexport const viewPromotion = args => {\n const event = 'view_promotion'\n const eventData = {\n event,\n event_raised_by: raisedByPB,\n ecommerce: {}\n }\n if (Object.keys(args).length) {\n const {\n id = undefined,\n creative = undefined,\n name = undefined,\n position = undefined\n } = args\n let ecommerceData = {\n promotion_id: id,\n promotion_name: name,\n creative_slot: position,\n creative_name: creative\n }\n ecommerceData = removeEmptyValues(ecommerceData)\n eventData.ecommerce = ecommerceData\n }\n window.gtmDataObject ??= []\n window.gtmDataObject.push(eventData)\n emitCustomEvent(event, eventData)\n}\n\n/**\n *\n * helper method for 'promoClick' GTM event\n * @param {*} args (event, eventRaisedBy, eventCategory, eventAction, ecommerce, cta_name)\n */\nexport const promoClick = args => {\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'promoClick',\n eventRaisedBy: raisedByPB,\n ecommerce: {},\n ...args,\n cta_name: args?.cta_name ?? '(not set)'\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('promoClick', eventData)\n}\n\n/**\n *\n * Push 'select_promotion' event for GA 4\n * @param {*} args (event, event_raised_by, cta_name, ecommerce: {promotion_id, promotion_name, creative_slot, creative_name})\n */\nexport const selectPromotion = args => {\n const event = 'select_promotion'\n const eventData = {\n event: 'select_promotion',\n cta_name: args?.cta_name ?? '(not set)',\n event_raised_by: raisedByPB,\n ecommerce: {}\n }\n if (Object.keys(args).length) {\n const {\n id = undefined,\n creative = undefined,\n name = undefined,\n position = undefined\n } = args\n let ecommerceData = {\n promotion_id: id,\n promotion_name: name,\n creative_slot: position,\n creative_name: creative\n }\n ecommerceData = removeEmptyValues(ecommerceData)\n eventData.ecommerce = ecommerceData\n }\n window.gtmDataObject ??= []\n window.gtmDataObject.push(eventData)\n emitCustomEvent(event, eventData)\n}\n\nexport const interactionClick = (nameComponent, ctaName) => {\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'page_builder_component_interaction',\n event_raised_by: raisedByPB,\n eventCategory: 'User Engagement',\n eventAction: 'Click CTA',\n eventLabel: `Page Builder - ${nameComponent} - ${ctaName}`,\n component_name: nameComponent,\n action_type: 'web component click',\n cta_name: ctaName\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('page_builder_component_interaction', eventData)\n}\n\nexport const componentInteraction = (component_name, action_type, cta_name) => {\n const event = 'page_builder_component_interaction'\n const eventData = {\n event,\n event_raised_by: raisedByPB,\n component_name: component_name,\n action_type: action_type,\n cta_name: cta_name\n }\n\n window.gtmDataObject ??= []\n window.gtmDataObject.push(eventData)\n emitCustomEvent(event, eventData)\n}\n\nexport const getProductInfo = async (sku, data) => {\n let product = data\n if (!product) {\n product = await getProduct(sku)\n }\n return product\n}\n\nexport const getProductPayload = (data, actionField = {}) => {\n const {\n internationalName,\n internationalId,\n category,\n unitPrice,\n legacyId,\n name,\n technologies,\n bundled,\n inStock,\n type\n } = data\n\n const technology = technologies.map(item => item.split('/').pop()).join('|')\n const isDiscovery = category.toLowerCase().includes('discovery')\n\n return [\n // Array consists of one product details for PDP Product Detail View\n {\n ...actionField,\n name: internationalName, // '[[International Product Name]]' NIE, Contract\n id: internationalId, // '[[International Product ID]]'\n price: unitPrice, // '[[Product Price]'\n // dimension43: '[[true/false]]', // '[[true/false]]' // Signifies if this product is part of a standing order or not\n dimension44: isDiscovery.toString(), // '[[true/false]]', // Signifies if this product is part of a discovery offer\n dimension53: legacyId, // '[[Product Local market ID]]', // Local market id for product\n dimension54: name, // '[[Product Local market Name]]', // Local market name for product\n dimension55: category, // '[[Product Range]]', // Range of the product, eg: Barista Creations for Ice (Nessoft Category)\n dimension56: technology, // '[[Product Technology]]', //Product technology according to Nespresso categorization (original, vertuo, pro)\n dimension57: bundled ? 'bundle' : 'single', // '[[Product Type]]', //If the product is single or bundle\n dimension192: inStock ? 'in stock' : 'out of stock', // '[in stock]', // \"in stock\" or \"out of stock\"\n category: type, // '[[Product Category]]', //Product category according to Nespresso categorization (Nessoft type): capsule, accessory, machine\n brand: 'Nespresso' // Static value set to Nespresso\n }\n ]\n}\n\nexport const trackDetailView = async (sku, data) => {\n // https://dsu-confluence.nestle.biz/display/DIANA/HQ+PB+Tracking+-+Product+Detail+View\n if (window.pbTrackDetailViewPDP || !sku || !window.napi) {\n return\n }\n\n const productInfo = await getProductInfo(sku, data)\n const productPayload = getProductPayload(productInfo)\n const currency = productInfo.currency\n\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'detailView',\n currencyCode: currency,\n eventRaisedBy: raisedByPB,\n ecommerce: {\n detail: {\n actionField: {},\n products: productPayload\n }\n }\n }\n window.gtmDataObject.push(eventData)\n // Track only once per page\n window.pbTrackDetailViewPDP = true\n emitCustomEvent('detailView', eventData)\n}\n\nexport const trackAddToCartImpression = (product, isStickyBar) => {\n // https://dsu-confluence.nestle.biz/pages/viewpage.action?spaceKey=DIANA&title=PDP+-+Sticky+Add+To+Cart+Custom+Event\n\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'page_builder_component_interaction',\n event_raised_by: raisedByPB,\n component_name: 'before_sku_main_info',\n action_type: isStickyBar\n ? 'sticky add to cart impression'\n : 'standard add to cart impression',\n //product info\n item_id_event: product.internationalId,\n item_name_event: product.internationalName,\n item_category_event: product.type,\n item_price_event: product.price_per_capsule?.split(' ')[0],\n item_market_id_event: product.legacyId,\n item_market_name_event: product.name,\n item_range_event: product.category_name,\n item_technology_event:\n product.technology?.[0]?.split('/').slice(-1) ?? '',\n item_type_event: product.bundled ? 'bundle' : 'single'\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('page_builder_component_interaction', eventData)\n}\n\nexport const productImpression = async (position, list, sku, data) => {\n // https://dsu-confluence.nestle.biz/pages/viewpage.action?pageId=225612781\n // don't track already tracked products\n window.gtmDataObject = window.gtmDataObject || []\n const hasDetailView = window.gtmDataObject.find(\n item => item.event === 'detailView'\n )\n const alreadyTracked = !!hasDetailView?.ecommerce?.detail?.products.find(\n p => sku.includes(p.id)\n )\n if (alreadyTracked) {\n return\n }\n\n const productInfo = await getProductInfo(sku, data)\n const productPayload = getProductPayload(productInfo, {\n list: list,\n position: position\n })\n const currency = productInfo.currency\n const eventData = {\n event: 'impression',\n eventAction: 'Product Impression',\n currencyCode: currency,\n eventRaisedBy: raisedByPB,\n ecommerce: {\n impressions: productPayload\n }\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('impression', eventData)\n}\n\nexport const productClick = async (position, list, sku, data) => {\n // https://dsu-confluence.nestle.biz/pages/viewpage.action?pageId=225612781\n\n if (typeof list !== 'string') return\n\n const productInfo = await getProductInfo(sku, data)\n const productPayload = getProductPayload(productInfo, {\n position: position\n })\n const currency = productInfo.currency\n\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = {\n event: 'productClick',\n eventAction: 'Product Click',\n currencyCode: currency,\n eventRaisedBy: raisedByPB,\n ecommerce: {\n click: {\n actionField: {\n list: list\n },\n products: productPayload\n }\n }\n }\n window.gtmDataObject.push(eventData)\n emitCustomEvent('productClick', eventData)\n}\n\nexport function filterTrackingFromPlpFilters(filtersSelected) {\n const grouped = groupSelectedFilters(filtersSelected)\n const groupKeys = Object.keys(grouped)\n const typesFiltersSelected = groupKeys.join('|').substring(0, 99)\n const valuesFiltersSelected = groupKeys\n .map(key => grouped[key].values.join(','))\n .join('|')\n .substring(0, 99)\n\n return [typesFiltersSelected, valuesFiltersSelected]\n}\n\nexport const filterActionEvent = (\n actionType,\n filterType,\n filterValues,\n clickLocation,\n dataType\n) => {\n // https://dsu-confluence.nestle.biz/display/DIANA/PLP+-+Filter+Revamp\n window.gtmDataObject = window.gtmDataObject || []\n const eventData = getExplicitFilterEventData(\n actionType,\n filterType,\n filterValues,\n clickLocation\n )\n\n window.gtmDataObject.push(eventData)\n if (window.NEXT_V1_PLP_EXPLICIT_FILTER_TRACKING && dataType) {\n window.gtmDataObject.push({\n ...window.NEXT_V1_PLP_EXPLICIT_FILTER_TRACKING,\n experiment_action: `${actionType} - ${dataType}`,\n cta_name: 'All filters'\n })\n }\n\n emitCustomEvent('plp_filter', eventData)\n}\n\nconst getExplicitFilterEventData = (\n actionType,\n filterType,\n filterValues,\n clickLocation\n) => {\n return {\n event: 'plp_filter',\n event_raised_by: raisedByPB,\n action_type: actionType,\n filter_type: filterType,\n ...(filterValues ? { filter_values: filterValues } : {}),\n ...(clickLocation ? { click_location: clickLocation } : {})\n }\n}\n\nfunction groupSelectedFilters(filtersSelected = []) {\n return filtersSelected.reduce((grouped, { key, value }) => {\n if (!grouped[key]) grouped[key] = { key, values: [] }\n grouped[key].values.push(value.replaceAll(',', '-'))\n return grouped\n }, {})\n}\n\nexport const isGtmTrackingExists = trackingData => {\n window.gtmDataObject = window.gtmDataObject || []\n\n return window?.gtmDataObject.some(\n event =>\n event.event === trackingData.event &&\n event.ecommerce?.creative_slot === trackingData.campaign.position &&\n event.ecommerce?.promotion_id === trackingData.campaign.id &&\n event.ecommerce?.promotion_name === trackingData.campaign.name &&\n event.ecommerce?.creative_name === trackingData.campaign.creative\n )\n}\n","interface ViewportEventConfig {\n once?: boolean\n uniqueKey?: string | null\n}\n\ntype IntersectionObserverInit = {\n root?: Element | null\n rootMargin?: string\n threshold?: number | number[]\n}\n\nconst triggeredEvents: Set<string> = new Set()\n\nexport function viewportEvent(\n element: Element | null,\n callback: () => void,\n { once = false, uniqueKey = null }: ViewportEventConfig = {},\n options: IntersectionObserverInit = { threshold: 0.5 }\n): IntersectionObserver | null {\n if (!element) {\n console.error('viewportEvent: Valid DOM element required.')\n return null\n }\n\n if (once && uniqueKey && triggeredEvents.has(uniqueKey)) {\n return null\n }\n\n const observer = new IntersectionObserver((entries, observerInstance) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n if (once && uniqueKey) {\n triggeredEvents.add(uniqueKey)\n }\n callback()\n observerInstance.disconnect()\n }\n })\n }, options)\n\n observer.observe(element)\n return observer\n}\n","import { CampaignProps } from '@commons/types'\nimport { viewPromotion } from '@content/helpers/src/gtmEvents'\nimport { viewportEvent } from '@content/helpers/src/viewPortEvent'\nimport { useEffect, useRef } from 'preact/hooks'\n\nconst useImpressionTracker = (\n containerRef,\n campaign,\n shouldExecute = true\n): {\n containerRef: HTMLElement\n campaign: CampaignProps\n shouldExecute: boolean\n} => {\n const hasTrackedRef = useRef(false)\n\n useEffect(() => {\n if (\n !shouldExecute ||\n hasTrackedRef.current ||\n !containerRef.current ||\n !campaign\n ) {\n return\n }\n\n const uniqueKey = `view_promotion_${Math.random().toString(36).substr(2, 9)}`\n\n const observer = viewportEvent(\n containerRef.current,\n () => {\n if (!hasTrackedRef.current) {\n viewPromotion({ ...campaign })\n hasTrackedRef.current = true\n }\n },\n { once: true, uniqueKey }\n )\n return () => {\n observer.disconnect()\n }\n }, [campaign])\n\n return containerRef\n}\n\nexport default useImpressionTracker\n","import styles from './SectionHeader.module.scss'\nimport { SectionHeaderProps } from './types.ts'\nimport viewportHelper from '@content/helpers/src/viewport.helpers'\n\nconst SectionHeader = ({\n align = 'left',\n alignMobile = 'center',\n contrast = 'light',\n subhead = '',\n headline = '',\n description = ''\n}: SectionHeaderProps) => {\n if (viewportHelper.is.mobile) {\n align = alignMobile\n }\n\n const alignClass = styles['heading__align--' + align]\n\n return (\n <div\n className={`${styles.heading} ${alignClass ? alignClass : ''} ${styles['heading__contrast--' + contrast]}`}>\n {subhead && <h4 className={styles.subhead}>{subhead}</h4>}\n {headline && <h3 className={styles.headline}>{headline}</h3>}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n )\n}\n\nexport default SectionHeader\n","import Background from '@commons/background/Background'\nimport { CampaignProps } from '@commons/types'\nimport { PbPropsProvider, usePbProps } from '@content/helpers/src/context'\nimport { selectPromotion } from '@content/helpers/src/gtmEvents'\nimport { getPBProps } from '@content/helpers/src/utils.ts'\nimport { Button } from '@nespresso-design-system/components'\nimport styles from './HeroHome.module.scss'\nimport { CopywritingProps, PBProps } from './types'\nimport useImpressionTracker from '@content/helpers/src/hooks/useImpressionTracker'\nimport { useRef } from 'preact/hooks'\nimport SectionHeader from '@commons/section-header/SectionHeader'\n\ntype HeroHomeProps = {\n data: string\n}\nconst Buttons = () => {\n const {\n copywriting,\n campaign\n }: { copywriting: CopywritingProps; campaign: CampaignProps } = usePbProps()\n\n const handlePrimaryClick = () => {\n selectPromotion({\n cta_name: `LINK - 1 - ${copywriting.cta_primary.label}`,\n ...campaign\n })\n }\n const handleSecondaryClick = () => {\n selectPromotion({\n cta_name: `LINK - 2 - ${copywriting.cta_secondary.label}`,\n ...campaign\n })\n }\n\n return (\n <div className={styles.buttons}>\n {copywriting.cta_primary?.href && (\n <Button\n onClick={handlePrimaryClick}\n {...copywriting.cta_primary}\n />\n )}\n {copywriting.cta_secondary?.href && (\n <Button\n onClick={handleSecondaryClick}\n {...copywriting.cta_secondary}\n />\n )}\n </div>\n )\n}\n\nexport const getOverlayType = (overlay, position) => {\n if (!overlay || !position) {\n return 'gradient-left'\n }\n if (!overlay || overlay == 'full') {\n return overlay\n } else {\n return `${overlay}-${position}`\n }\n}\n\nfunction HeroHome({ data }: HeroHomeProps) {\n const pbProps = getPBProps<PBProps>(data)\n const { campaign, layout, copywriting } = pbProps as PBProps\n const containerRef = useRef(null)\n\n useImpressionTracker(containerRef, campaign)\n\n const positions = {\n left: styles['left'],\n 'left-corner': styles['left-corner'],\n bottom: styles['bottom'],\n center: styles['center'],\n undefined: styles['left']\n }\n\n return (\n <div ref={containerRef} className={`${styles.heroHome}`}>\n <PbPropsProvider value={pbProps}>\n <Background\n overlay={getOverlayType(layout.overlay, layout.align)}\n {...layout.background}\n video={layout.background_video}\n className={styles.video}\n />\n <div\n className={`${styles.heroHomeWrapper} ${positions[layout.align]}`}>\n <div className={styles.headingWrapper}>\n <SectionHeader\n contrast={layout.contrast}\n headline={copywriting.heading}\n subhead={copywriting.subhead}\n description={copywriting.description}\n />\n </div>\n <Buttons />\n </div>\n </PbPropsProvider>\n </div>\n )\n}\n\nexport default HeroHome\n","import '@content/foundations/src/index'\nimport asWebComponent from '../../asWebComponent'\nimport HeroHome from './HeroHome'\n\nexport default asWebComponent(HeroHome, 'nb-hero-home', ['data'])\n","import type { FunctionComponent } from 'preact'\nimport register from 'preact-custom-element'\nimport type { Ref } from 'preact/hooks'\nimport { useEffect, useRef, useState } from 'preact/hooks'\n\n/**\n * Turns a Preact component into a Web Component,\n * allowing the component to be used in either context\n * @param func A (P)React function component\n * @param tagName The Web Component tag name, like 'my-component'\n * @param observedAttributes Array of element attributes to observe for changes\n * @param options Additional web component options\n * @returns The custom element\n */\nexport default function asWebComponent(\n func: FunctionComponent<any>,\n tagName: string,\n observedAttributes?: string[],\n options?: { shadow: boolean }\n) {\n if (customElements.get(tagName)) {\n return customElements.get(tagName)\n }\n register(func, tagName, observedAttributes, options)\n return customElements.get(tagName)\n}\n\ninterface useCustomElementReturn {\n immediateChildRef: Ref<any>\n customElement: HTMLElement | null | undefined\n}\n\n/**\n * Allows access to the Web Component wrapper, from within the Preact Component\n */\nexport function useCustomElement(): useCustomElementReturn {\n const ref = useRef<any>(null)\n const [customElement, setCustomElement] = useState(undefined)\n useEffect(() => {\n setCustomElement(ref.current?.parentElement)\n }, [ref])\n\n return { immediateChildRef: ref, customElement }\n}\n"],"names":["r","Object","assign","bind","t","e","arguments","length","n","o","prototype","hasOwnProperty","call","apply","this","i","a","getChildContext","context","children","keys","indexOf","s","CustomEvent","detail","bubbles","cancelable","dispatchEvent","_vdom","_props","nodeType","data","attributes","l","childNodes","name","value","c","u","d","slot","p","h","nodeName","toLowerCase","_vdomComponent","hasAttribute","_root","replace","toUpperCase","ref","_listener","stopPropagation","addEventListener","removeEventListener","f","type","props","key","__k","__","__b","__e","__d","__c","constructor","__v","__i","__u","__source","__self","defaultProps","vnode","PauseIcon","fillRect","_jsx","className","styles","xmlns","width","height","viewBox","fill","PlayIcon","size","style","fillRule","clipRule","g","E","C","isPureReactComponent","shouldComponentUpdate","state","R","__f","w","Symbol","for","k","$$typeof","render","isReactComponent","displayName","M","then","T","unmount","A","__H","forEach","__P","map","D","appendChild","L","O","__a","U","__R","push","__O","setState","pop","forceUpdate","componentWillUnmount","document","createElement","fallback","V","delete","revealOrder","get","Map","reverse","set","componentDidUpdate","componentDidMount","z","B","H","Z","Y","$","test","defineProperty","configurable","writable","J","event","K","Q","cancelBubble","X","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","tn","enumerable","class","en","multiple","Array","isArray","selected","defaultValue","rn","__r","un","diffed","__esModule","default","exports","toString","includes","window","classNames","current","mask","I","icon","method","$el","split","Number","isNaN","parseFloat","_","m","maskImage","alt","loading","src","button","primary","secondary","dark","outline","ghost","leading","large","medium","small","loadingIcon","spin","a11yLabel","a11yTitle","contrast","disabled","iconPosition","isDecorative","isLoading","label","b","variant","y","x","title","N","j","href","ExpandableButton","onClick","_jsxs","expandableButton","ButtonText","expandableButtonIcon","Icon","expandableButtonText","reducedMotion","matchMedia","matches","Video","url","auto_play","hasModal","onVideoClick","isPlaying","setIsPlaying","useState","videoRef","useRef","ctaRef","useEffect","videoElement","pause","playsInline","autoPlay","muted","loop","id","togglePlayPause","play","BREAKPOINT_TABLET","helper","is","innerWidth","vw","devicePixelRatio","mobile","mobile_tablet","tablet","desktop","retina","lt","Background","video","overlay","rounded","overlayClass","full","roundedClass","viewportHelper","backgroundImage","PbPropsContext","createContext","undefined","PbPropsProvider","Provider","emitCustomEvent","eventName","customEvent","composed","removeEmptyValues","obj","DOMParser","raisedByPB","selectPromotion","args","eventData","cta_name","event_raised_by","ecommerce","creative","position","ecommerceData","promotion_id","promotion_name","creative_slot","creative_name","gtmDataObject","triggeredEvents","Set","useImpressionTracker","containerRef","campaign","shouldExecute","hasTrackedRef","uniqueKey","Math","random","substr","observer","viewportEvent","element","callback","once","options","threshold","error","has","IntersectionObserver","entries","observerInstance","entry","isIntersecting","add","disconnect","observe","viewPromotion","SectionHeader","align","alignMobile","subhead","headline","description","heading","Buttons","copywriting","useContext","Error","usePbProps","buttons","cta_primary","Button","handlePrimaryClick","cta_secondary","handleSecondaryClick","getOverlayType","asWebComponent","func","tagName","observedAttributes","customElements","Reflect","construct","HTMLElement","shadow","attachShadow","mode","create","connectedCallback","attributeChangedCallback","disconnectedCallback","propTypes","setAttribute","define","pbProps","JSON","parse","getPBProps","layout","positions","left","bottom","center","heroHome","background","background_video","heroHomeWrapper","headingWrapper"],"mappings":"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","x_google_ignoreList":[0,1,4,5,6,7,8,9]}