{"version":3,"file":"index.es.min.js","sources":["../../../node_modules/preact-custom-element/dist/preact-custom-element.esm.js","../../../node_modules/preact/compat/dist/compat.module.js","../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.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","../../../node_modules/@nespresso-design-system/components/dist/chunks/common.bbb66fe1.js","../../../node_modules/@nespresso-design-system/components/dist/react/ButtonIcon.js","../../../node_modules/@nespresso-design-system/components/dist/components/Card/index.js","../../../node_modules/@nespresso-design-system/components/dist/chunks/common.a982a157.js","../../../node_modules/@nespresso-design-system/components/dist/react/Modal.js","../../../node_modules/@nespresso-design-system/components/dist/chunks/common.6cfc76a4.js","../../../node_modules/@nespresso-design-system/components/dist/react/MediaModal.js","../../../packages/discovery/commons/image/Image.tsx","../../../packages/helpers/src/events.helpers.ts","../../../packages/helpers/src/utils.ts","../../../packages/helpers/src/gtmEvents.js","../../../packages/discovery/commons/modal/modal-container/ModalContainer.tsx","../../../packages/helpers/src/context.tsx","../../../packages/discovery/components/product-portfolio/ModalContext.tsx","../../../packages/helpers/src/viewPortEvent.ts","../../../packages/helpers/src/hooks/useImpressionTracker.ts","../../../packages/discovery/components/product-portfolio/ProductPortfolio.tsx","../../../packages/discovery/components/product-portfolio/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{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","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","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 \"../assets/common9.css\";\nimport { c as l } from \"./index.bddf5ebb.js\";\nconst n = \"_buttonIcon_l7hrq_87\", _ = \"_black_l7hrq_130\", a = \"_ghost_l7hrq_139\", r = \"_small_l7hrq_147\", t = {\n buttonIcon: n,\n black: _,\n ghost: a,\n small: r\n}, m = ({\n className: c,\n size: o,\n variant: s\n}) => l(t.buttonIcon, c, {\n [t[o]]: o !== \"large\",\n [t[s]]: s !== \"default\"\n});\nexport {\n m as c\n};\n//# sourceMappingURL=common.bbb66fe1.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as d } from \"../chunks/index.7e655f23.js\";\nimport { m as I } from \"../chunks/make-refs.cb0b9b76.js\";\nimport { forwardRef as b } from \"react\";\nimport { c as h } from \"../chunks/common.bbb66fe1.js\";\nconst j = b(\n ({\n a11yLabel: s,\n a11yTitle: e,\n className: n,\n icon: a,\n isDecorative: m = !1,\n size: c = \"large\",\n variant: l = \"default\",\n ...f\n }, i) => {\n const { $el: p } = I(i, [\"$el\"]), u = h({\n className: n,\n size: c,\n variant: l\n }), t = {\n \"aria-label\": s,\n className: u,\n title: e,\n ref: p,\n ...f\n }, r = /* @__PURE__ */ o(d, { icon: a });\n return m ? /* @__PURE__ */ o(\"span\", { ...t, children: r }) : /* @__PURE__ */ o(\"button\", { ...t, children: r });\n }\n);\nexport {\n j as ButtonIcon\n};\n//# sourceMappingURL=ButtonIcon.js.map\n","import \"../../assets/index7.css\";\nimport { jsxs as c, jsx as o } from \"react/jsx-runtime\";\nimport { m as f } from \"../../chunks/make-refs.cb0b9b76.js\";\nimport { c as p } from \"../../chunks/index.bddf5ebb.js\";\nimport { forwardRef as h } from \"react\";\nconst j = \"_card_3z6jd_87\", z = \"_picture_3z6jd_120\", u = \"_image_3z6jd_139\", I = \"_hasImage_3z6jd_145\", t = {\n card: j,\n picture: z,\n image: u,\n hasImage: I\n}, R = h(\n ({ children: s, className: d, imgProps: a = {}, imgSources: e, ...i }, l) => {\n const { $el: _ } = f(l, [\"$el\"]), n = () => a.src && /* @__PURE__ */ c(\"picture\", { className: t.picture, children: [\n e == null ? void 0 : e.map((m) => /* @__PURE__ */ o(\"source\", { ...m }, m.srcSet)),\n /* @__PURE__ */ o(\n \"img\",\n {\n className: t.image,\n loading: \"lazy\",\n ...a.alt ? { alt: a.alt } : { \"aria-hidden\": !0 },\n ...a\n }\n )\n ] }), r = {\n ref: _,\n className: p([d, t.card], {\n [t.hasImage]: !!a.src\n }),\n ...i\n };\n return \"href\" in r ? /* @__PURE__ */ c(\"a\", { ...r, children: [\n n(),\n s\n ] }) : /* @__PURE__ */ c(\"button\", { ...r, children: [\n n(),\n s\n ] });\n }\n);\nexport {\n R as Card\n};\n//# sourceMappingURL=index.js.map\n","import \"../assets/common4.css\";\nimport { c as n } from \"./index.bddf5ebb.js\";\nconst b = \"_modal_9qzfo_95\", _ = \"_dismiss_9qzfo_138\", u = \"_header_9qzfo_148\", m = \"_heading_9qzfo_184\", f = \"_description_9qzfo_195\", x = \"_body_9qzfo_199\", h = \"_content_9qzfo_206\", g = \"_footer_9qzfo_222\", p = \"_column_9qzfo_227\", q = \"_side_9qzfo_240\", z = \"_small_9qzfo_265\", v = \"_large_9qzfo_271\", y = \"_fixedFooter_9qzfo_276\", o = {\n modal: b,\n dismiss: _,\n header: u,\n heading: m,\n description: f,\n body: x,\n content: h,\n footer: g,\n column: p,\n side: q,\n small: z,\n large: v,\n fixedFooter: y\n}, W = ({\n className: t,\n fixedFooter: d,\n size: e,\n position: s\n}) => n([o.modal, t], {\n [o.fixedFooter]: !!d,\n [o[e] || \"\"]: e !== \"medium\",\n [o[s] || \"\"]: s !== \"center\"\n}), B = ({ bodyClassName: t }) => n(o.body, t), R = ({\n contentClassName: t\n}) => n(o.content, t), N = ({\n dismissClassName: t\n}) => n(o.dismiss, t), S = ({ isColumnMode: t }) => n(o.footer, {\n [o.column]: !!t\n}), k = (t) => {\n if (window.innerWidth >= 768 && t) {\n const d = t.getBoundingClientRect(), e = Array.from(t.children), s = Number.parseFloat(window.getComputedStyle(t).gap || \"0\"), i = e.reduce((r, c) => {\n const l = c.getBoundingClientRect();\n return r + l.width;\n }, 0), a = d.width - 2 * Number.parseFloat(window.getComputedStyle(t).paddingInline);\n return i + (e.length - 1) * s > a;\n }\n return !1;\n}, G = `\n a[href]:not([tabindex=\"-1\"]),\n area[href]:not([tabindex=\"-1\"]),\n input:not([disabled]):not([tabindex=\"-1\"]),\n select:not([disabled]):not([tabindex=\"-1\"]),\n textarea:not([disabled]):not([tabindex=\"-1\"]),\n button:not([disabled]):not([tabindex=\"-1\"]),\n iframe:not([tabindex=\"-1\"]),\n object:not([tabindex=\"-1\"]),\n embed:not([tabindex=\"-1\"]),\n [contenteditable]:not([contenteditable=\"false\"]),\n [tabindex]:not([tabindex=\"-1\"]),\n audio[controls]:not([tabindex=\"-1\"]),\n video[controls]:not([tabindex=\"-1\"]),\n summary:not([tabindex=\"-1\"]),\n svg[focusable=\"true\"]:not([tabindex=\"-1\"]),\n div[role=\"button\"]:not([tabindex=\"-1\"]),\n div[role=\"checkbox\"]:not([tabindex=\"-1\"]),\n div[role=\"link\"]:not([tabindex=\"-1\"]),\n div[role=\"menuitem\"]:not([tabindex=\"-1\"]),\n div[role=\"option\"]:not([tabindex=\"-1\"]),\n div[role=\"radio\"]:not([tabindex=\"-1\"]),\n div[role=\"switch\"]:not([tabindex=\"-1\"]),\n div[role=\"tab\"]:not([tabindex=\"-1\"])\n`;\nexport {\n R as a,\n B as b,\n W as c,\n N as d,\n k as e,\n S as f,\n G as g,\n o as s\n};\n//# sourceMappingURL=common.a982a157.js.map\n","import { jsxs as h, jsx as n, Fragment as le } from \"react/jsx-runtime\";\nimport { m as de } from \"../chunks/make-refs.cb0b9b76.js\";\nimport { forwardRef as ie, useRef as j, useState as A, useEffect as N } from \"react\";\nimport { ButtonIcon as me } from \"./ButtonIcon.js\";\nimport { c as ue, f as fe, b as he, a as we, d as ye, s as w, e as ve, g as O } from \"../chunks/common.a982a157.js\";\nconst ke = ie(\n ({\n bodyClassName: V,\n contentClassName: W,\n children: M,\n className: G,\n closeBtnA11yLabel: H,\n closeBtnA11yTitle: J,\n contentSlot: y,\n description: r,\n dismissClassName: P,\n fixedFooter: v,\n footerSlot: m,\n heading: E,\n headingElement: Q = \"h5\",\n id: a,\n isMediaModal: c = !1,\n isOpen: b = !1,\n onClose: C,\n position: S = \"center\",\n size: U = \"medium\",\n ...X\n }, Y) => {\n const { $el: s, dismissBtn: Z } = de(Y, [\"$el\", \"dismissBtn\"]), I = j(!1), u = j(null), [_, ee] = A(!1), [o, x] = A(b);\n N(() => {\n x(b);\n }, [b]);\n const B = () => {\n window.innerWidth >= 768 && u.current && s.current && ee(ve(u.current));\n };\n N(() => {\n B();\n const t = () => B(), z = (e) => {\n o && e.target instanceof Node && s.current && !s.current.contains(e.target) && L(!1);\n }, F = (e) => {\n o && e.key === \"Escape\" && (e.preventDefault(), L(!1), $());\n }, q = (e) => Array.from(\n e.querySelectorAll(O)\n ), D = (e) => {\n var l, d;\n if (e.key === \"Tab\") {\n const g = document.activeElement;\n if (g.closest(\"video, iframe\") !== null)\n return;\n e.preventDefault();\n const i = q(s.current), f = i.indexOf(g);\n if (e.shiftKey) {\n const k = f > 0 ? f - 1 : i.length - 1;\n (l = i[k]) == null || l.focus();\n } else {\n const k = f < i.length - 1 ? f + 1 : 0;\n (d = i[k]) == null || d.focus();\n }\n }\n }, K = (e) => {\n var d;\n const l = e.relatedTarget;\n l && !s.current.contains(l) && ((d = q(s.current)[0]) == null || d.focus());\n };\n return window.addEventListener(\"resize\", t), o && (window.addEventListener(\"mousedown\", z), window.addEventListener(\"focusout\", K), window.addEventListener(\"keydown\", F), window.addEventListener(\"keydown\", D)), () => {\n window.removeEventListener(\"resize\", t), window.removeEventListener(\"mousedown\", z), window.removeEventListener(\"focusout\", K), window.removeEventListener(\"keydown\", F), window.removeEventListener(\"keydown\", D);\n };\n }, [o, s, u]);\n const L = (t) => {\n x(t);\n }, $ = () => {\n const t = document.body.querySelector(\n `[aria-controls=\"${a}\"]`\n );\n t == null || t.focus();\n }, se = () => {\n const t = s.current.querySelector(\n O\n );\n t && setTimeout(() => {\n t.focus();\n }, 50);\n };\n N(() => (s.current && (o ? (s.current.show(), document.body.classList.add(\"nds-has-modal\"), se()) : I.current && (s.current.close(), document.body.classList.remove(\"nds-has-modal\"), C == null || C(), $())), I.current = !0, () => {\n document.body.classList.remove(\"nds-has-modal\");\n }), [o]);\n const p = () => /* @__PURE__ */ n(\"div\", { className: ce, children: /* @__PURE__ */ n(\n me,\n {\n ref: Z,\n icon: \"24/symbol/close\",\n size: \"small\",\n a11yLabel: H,\n a11yTitle: J,\n onClick: () => L(!1)\n }\n ) }), R = () => /* @__PURE__ */ n(\"footer\", { className: oe, ref: u, children: m }), T = () => /* @__PURE__ */ h(le, { children: [\n (r || y) && /* @__PURE__ */ h(\"div\", { className: ae, children: [\n r && /* @__PURE__ */ n(\"p\", { id: `${a}-description`, className: w.description, children: r }),\n y\n ] }),\n (!c || !v) && m && /* @__PURE__ */ n(R, {})\n ] }), ne = r || y || m, te = ue({ className: G, fixedFooter: v, size: U, position: S }), oe = fe({ isColumnMode: _ }), ae = he({ bodyClassName: V }), re = we({ contentClassName: W }), ce = ye({ dismissClassName: P });\n return /* @__PURE__ */ h(\n \"dialog\",\n {\n className: te,\n open: o,\n ...o && { \"aria-modal\": !0 },\n id: a,\n tabIndex: -1,\n ref: s,\n \"aria-labelledby\": E && `${a}-heading`,\n \"aria-describedby\": r && `${a}-description`,\n ...X,\n children: [\n c && /* @__PURE__ */ n(p, {}),\n M,\n E ? /* @__PURE__ */ h(\"header\", { className: w.header, children: [\n /* @__PURE__ */ n(Q, { id: `${a}-heading`, className: w.heading, children: E }),\n !c && /* @__PURE__ */ n(p, {})\n ] }) : !c && /* @__PURE__ */ n(\"header\", { className: w.header, children: /* @__PURE__ */ n(p, {}) }),\n ne ? /* @__PURE__ */ n(\"div\", { className: re, children: T() }) : T(),\n c && v && m && /* @__PURE__ */ n(R, {})\n ]\n }\n );\n }\n);\nexport {\n ke as Modal\n};\n//# sourceMappingURL=Modal.js.map\n","import \"../assets/common3.css\";\nimport { c } from \"./index.bddf5ebb.js\";\nconst _ = \"_modal_bm4c2_87\", t = \"_visual_bm4c2_91\", a = \"_image_bm4c2_98\", i = \"_isPlaying_bm4c2_104\", e = \"_playButton_bm4c2_108\", l = \"_iconWrapper_bm4c2_126\", m = \"_video_bm4c2_163\", r = \"_header_bm4c2_179\", b = \"_content_bm4c2_184\", d = \"_body_bm4c2_189\", y = \"_footer_bm4c2_194\", u = \"_visualOnly_bm4c2_198\", v = \"_dismiss_bm4c2_219\", s = {\n modal: _,\n visual: t,\n image: a,\n isPlaying: i,\n playButton: e,\n iconWrapper: l,\n video: m,\n header: r,\n content: b,\n body: d,\n footer: y,\n visualOnly: u,\n dismiss: v\n}, f = ({\n className: o,\n isVisualOnly: n\n}) => c([\n s.modal,\n o,\n {\n [s.visualOnly || \"\"]: !!n\n }\n]), O = ({ isPlaying: o }) => c([\n s.visual,\n {\n [s.isPlaying || \"\"]: !!o\n }\n]);\nexport {\n f as c,\n s,\n O as v\n};\n//# sourceMappingURL=common.6cfc76a4.js.map\n","import { jsx as e, jsxs as v, Fragment as x } from \"react/jsx-runtime\";\nimport { I as q } from \"../chunks/index.7e655f23.js\";\nimport { Modal as D } from \"./Modal.js\";\nimport { m as G } from \"../chunks/make-refs.cb0b9b76.js\";\nimport { forwardRef as J, useState as g, useEffect as K, isValidElement as L } from \"react\";\nimport { c as P, v as Q, s } from \"../chunks/common.6cfc76a4.js\";\nconst S = J(\n ({\n className: N,\n heroAspectRatio: C,\n heroImgAlt: $,\n heroImgHeight: M,\n heroImgRetinaSrc: f,\n heroImgSrc: l,\n heroImgWidth: R,\n heroSlot: c,\n heroVideoIframeA11yTitle: A,\n heroVideoIframeAllowSettings: w,\n heroVideoPlayBtnA11yLabel: B,\n heroVideoPlayBtnA11yTitle: I,\n heroVideoSrc: a,\n ...d\n }, k) => {\n const { modalRef: F, $videoRef: t, $videoIframeRef: n, $playBtn: m } = G(\n k,\n [\"modalRef\", \"$videoRef\", \"$videoIframeRef\", \"$playBtn\"]\n ), p = l || c, [j, b] = g(!1), [u, y] = g(null), z = p && !d.heading && !d.description, E = () => {\n var i, r;\n (t.current || n.current) && ((i = t.current) != null && i.paused && (t.current.play(), t.current.removeAttribute(\"tabindex\"), t.current.focus()), a && n.current && u === null && (y(a), n.current.removeAttribute(\"tabindex\")), (r = m.current) == null || r.setAttribute(\"tabindex\", \"-1\"), b((o) => !o));\n }, H = a && /\\.(mp4|webm|ogg)$/i.test(a), O = (i) => i.split(\".\").pop(), T = () => c && L(c) ? c : /* @__PURE__ */ e(x, { children: a && /* @__PURE__ */ v(x, { children: [\n /* @__PURE__ */ e(\n \"button\",\n {\n \"aria-label\": B,\n className: s.playButton,\n onClick: E,\n ref: m,\n title: I,\n type: \"button\",\n children: /* @__PURE__ */ e(\"span\", { className: s.iconWrapper, children: /* @__PURE__ */ e(q, { icon: \"24/symbol/play-solid\" }) })\n }\n ),\n H ? (\n // biome-ignore lint/a11y/useMediaCaption: ok\n /* @__PURE__ */ e(\n \"video\",\n {\n className: s.video,\n controls: !0,\n \"data-testid\": \"media-video\",\n poster: l,\n ref: t,\n tabIndex: -1,\n children: /* @__PURE__ */ e(\n \"source\",\n {\n src: a,\n type: `video/${O(a)}`\n }\n )\n }\n )\n ) : /* @__PURE__ */ e(\n \"iframe\",\n {\n ref: n,\n className: s.video,\n ...u !== null && { src: u },\n allow: w,\n title: A,\n allowFullScreen: !0,\n loading: \"lazy\",\n \"data-testid\": \"media-iframe\",\n tabIndex: -1\n }\n )\n ] }) });\n K(() => () => {\n var i, r, o;\n (i = t.current) == null || i.pause(), (r = t.current) == null || r.setAttribute(\"tabindex\", \"-1\"), n.current && (y(null), n.current.setAttribute(\"tabindex\", \"-1\")), (o = m.current) == null || o.removeAttribute(\"tabindex\"), b(!1);\n }, [d.isOpen]);\n const W = P({ className: N, isVisualOnly: z }), h = Q({ isPlaying: j });\n return /* @__PURE__ */ e(\n D,\n {\n className: W,\n bodyClassName: s.body,\n contentClassName: s.content,\n dismissClassName: s.dismiss,\n ref: F,\n isMediaModal: !0,\n ...d,\n children: p && /* @__PURE__ */ v(\n \"figure\",\n {\n className: h,\n style: { \"--aspect-ratio\": C },\n children: [\n l && /* @__PURE__ */ e(\n \"img\",\n {\n className: s.image,\n src: l,\n ...f && { srcSet: `${f} 2x` },\n alt: $,\n height: M,\n width: R,\n loading: \"lazy\",\n decoding: \"async\",\n \"data-testid\": \"media-img\"\n }\n ),\n T()\n ]\n }\n )\n }\n );\n }\n);\nexport {\n S as MediaModal\n};\n//# sourceMappingURL=MediaModal.js.map\n","import { ImageProps } from './types'\n\nconst Image = ({ src, alt }: ImageProps) => {\n if (!src) {\n return null\n }\n\n if (!alt) {\n console.error('Missing ALT in image: ' + src)\n }\n\n return <img src={src} alt={alt} />\n}\n\nexport default Image\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","import styles from './ModalContainer.module.scss'\nimport {\n Button,\n ButtonProps,\n ButtonRefs,\n Icon\n} from '@nespresso-design-system/components'\nimport Image from '@commons/image/Image'\nimport { ImageProps } from '@commons/image/types'\nimport { componentInteraction } from '@content/helpers/src/gtmEvents'\nimport { useEffect, useRef } from 'react'\nimport { Block, ListItem } from './types'\n\ninterface ModalContainerProps {\n content: BlockContentProps\n tracking_slot: string\n}\n\ninterface BlockContentProps {\n blocksDescription?: string\n firstBlock: Block\n secondBlock: Block\n}\n\ninterface BlockDescriptionProps {\n description: Block['description']\n}\n\ntype RenderCTAProps = ButtonProps & {\n tracking_slot: string\n}\n\nconst RenderList = ({\n listRef,\n ...list\n}: {\n listRef: React.RefObject<HTMLUListElement>\n list: ListItem[]\n}) => {\n const arr = Object.values(list)\n\n return (\n <ul ref={listRef}>\n {arr.map(\n (\n { is_deactivated, icon, heading, description }: ListItem,\n index\n ) => (\n <li\n key={index}\n className={is_deactivated ? styles.isDeactivated : ''}>\n <Icon icon={icon} method=\"mask\" />\n <span className={'t-sm-500'}>\n {heading}\n {description && (\n <span\n className={`t-sm-400 ${styles.featuresListDescription}`}>\n {description}\n </span>\n )}\n </span>\n </li>\n )\n )}\n </ul>\n )\n}\n\nconst RenderImage = ({ src, alt }: ImageProps) => {\n if (!src) {\n return null\n }\n\n return (\n <div className={styles.featuresImage}>\n <Image src={src} alt={alt} />\n </div>\n )\n}\n\nconst RenderDescription = ({ description }: BlockDescriptionProps) => {\n if (!description) {\n return null\n }\n\n return <p className={styles.featuresDescription}>{description}</p>\n}\n\nconst RenderCTA = ({ tracking_slot, ...cta }: RenderCTAProps) => {\n const ctaRef = useRef<ButtonRefs>(null)\n\n if (!cta.label) {\n return null\n }\n\n const handleClick = () => {\n componentInteraction(tracking_slot, 'modal link click', cta.label)\n }\n\n return (\n <div className={styles.featuresActions}>\n <Button\n className={styles.featuresButton}\n onClick={handleClick}\n {...cta}\n ref={ctaRef}\n />\n </div>\n )\n}\n\nexport default function ModalContainer({\n content,\n tracking_slot\n}: ModalContainerProps) {\n if (!content) {\n return null\n }\n\n const { firstBlock, secondBlock, blocksDescription } = content\n\n const leftListRef = useRef<HTMLUListElement>(null)\n const rightListRef = useRef<HTMLUListElement>(null)\n\n useEffect(() => {\n const adjustHeights = () => {\n const leftItems = leftListRef.current?.children\n const rightItems = rightListRef.current?.children\n\n if (\n !leftItems ||\n !rightItems ||\n leftItems.length !== rightItems.length\n ) {\n console.warn('Lists are mismatched or not rendered correctly.')\n return\n }\n\n // Reset heights before recalculating\n for (let i = 0; i < leftItems.length; i++) {\n ;(leftItems[i] as HTMLElement).style.height = 'auto'\n ;(rightItems[i] as HTMLElement).style.height = 'auto'\n }\n\n // Match heights for each pair of <li>\n for (let i = 0; i < leftItems.length; i++) {\n const leftHeight = (leftItems[i] as HTMLElement).offsetHeight\n const rightHeight = (rightItems[i] as HTMLElement).offsetHeight\n const maxHeight = Math.max(leftHeight, rightHeight)\n\n ;(leftItems[i] as HTMLElement).style.height = `${maxHeight}px`\n ;(rightItems[i] as HTMLElement).style.height = `${maxHeight}px`\n }\n }\n\n adjustHeights() // Initial adjustment\n window.addEventListener('resize', adjustHeights) // Adjust on window resize\n\n return () => {\n window.removeEventListener('resize', adjustHeights) // Cleanup on unmount\n }\n }, [])\n\n return (\n <>\n {blocksDescription && <p>{blocksDescription}</p>}\n <div className={styles.features}>\n <div>\n <h4 className={'t-sm-700-sl'}>{firstBlock.title}</h4>\n <RenderDescription description={firstBlock.description} />\n <RenderImage\n src={firstBlock.image}\n alt={firstBlock.imageAlt}\n />\n <RenderList listRef={leftListRef} {...firstBlock.list} />\n <RenderCTA\n tracking_slot={tracking_slot}\n {...firstBlock.cta}\n />\n </div>\n <div>\n <h4 className={'t-sm-700-sl'}>{secondBlock.title}</h4>\n <RenderDescription description={secondBlock.description} />\n <RenderImage\n src={secondBlock.image}\n alt={secondBlock.imageAlt}\n />\n <RenderList listRef={rightListRef} {...secondBlock.list} />\n <RenderCTA\n tracking_slot={tracking_slot}\n {...secondBlock.cta}\n />\n </div>\n </div>\n </>\n )\n}\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 React, { createContext, useContext, useState } from 'react'\n\ntype ModalContextType = {\n isOpen: (id: string) => boolean\n openModal: (id: string) => void\n closeModal: () => void\n}\n\nconst ModalContext = createContext<ModalContextType | undefined>(undefined)\n\nexport const ModalProvider: React.FC<{ children: React.ReactNode }> = ({\n children\n}) => {\n const [modalId, setModalId] = useState<string | null>(null)\n\n const openModal = (id: string) => {\n setModalId(id)\n }\n\n const closeModal = () => {\n setModalId(null)\n }\n\n const isOpen = (id: string) => modalId === id\n\n return (\n <ModalContext.Provider value={{ isOpen, openModal, closeModal }}>\n {children}\n </ModalContext.Provider>\n )\n}\n\nexport const useModal = () => {\n const context = useContext(ModalContext)\n\n if (!context) {\n throw new Error('useModal must be used within a ModalProvider')\n }\n return context\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 { useRef } from 'preact/hooks'\nimport { Button, Card, MediaModal } from '@nespresso-design-system/components'\n\nimport ModalContainer from '@commons/modal/modal-container/ModalContainer'\nimport { Modals } from '@commons/modal/modal-container/types'\nimport { CampaignProps, LayoutProps } from '@commons/types'\nimport { PbPropsProvider, usePbProps } from '@content/helpers/src/context'\nimport {\n componentInteraction,\n selectPromotion\n} from '@content/helpers/src/gtmEvents'\nimport { getPBProps } from '@content/helpers/src/utils.ts'\nimport { ModalProvider, useModal } from './ModalContext'\nimport styles from './ProductPortfolio.module.scss'\nimport ctaAdditionalStyles from '@commons/cta/cta.additional.module.scss'\nimport {\n ActionsProps,\n Cards,\n CTAPropsWithModal,\n HeadingProps,\n PBProps\n} from './types.ts'\nimport useImpressionTracker from '@content/helpers/src/hooks/useImpressionTracker.ts'\n\ntype ProductPortfolioProps = {\n data: string\n}\n\ntype ModalFooterLabel = {\n machineFooterLabel: boolean\n coffeeFooterLabel: boolean\n}\n\nconst RenderModalFooterCTA = ({ ...props }: CTAPropsWithModal) => {\n const btnRef = useRef(null)\n\n const handleClick = () => {\n componentInteraction(\n 'fs_product_portfolio',\n 'modal link click',\n props.label\n )\n }\n\n return <Button onClick={handleClick} {...props} ref={btnRef} />\n}\n\nconst RenderCards = ({ cards, modals }: { cards: Cards[]; modals: Modals }) => {\n const { isOpen, closeModal } = useModal()\n const { layout }: { layout: LayoutProps } = usePbProps()\n\n const modalFooterLabel: ModalFooterLabel = {\n machineFooterLabel: !!modals.machines.footerCta.label,\n coffeeFooterLabel: !!modals.coffees.footerCta.label\n }\n\n return (\n <>\n <div\n className={`${styles.productPortfolio__cards} ${styles['productPortfolio__cards__contrast_' + layout.contrast]}`}>\n {cards.map((card, i) => (\n <RenderCard {...card} key={i} />\n ))}\n </div>\n\n {modals.coffees && (\n <MediaModal\n {...modals.coffees}\n id=\"coffees\"\n closeBtnA11yLabel=\"\"\n position=\"side\"\n isOpen={isOpen('coffees')}\n onClose={closeModal}\n fixedFooter={true}\n footerSlot={\n modalFooterLabel.coffeeFooterLabel ? (\n <RenderModalFooterCTA\n {...modals.coffees.footerCta}\n />\n ) : (\n ''\n )\n }\n contentSlot={\n <ModalContainer\n tracking_slot={'fs_product_portfolio'}\n content={modals.coffees}\n />\n }\n heroAspectRatio=\"16/9\"\n />\n )}\n\n {modals.machines && (\n <MediaModal\n {...modals.machines}\n id=\"machines\"\n closeBtnA11yLabel=\"\"\n position=\"side\"\n isOpen={isOpen('machines')}\n onClose={closeModal}\n footerSlot={\n modalFooterLabel.machineFooterLabel ? (\n <RenderModalFooterCTA\n {...modals.machines.footerCta}\n />\n ) : (\n ''\n )\n }\n fixedFooter={true}\n contentSlot={\n <ModalContainer\n tracking_slot={'fs_product_portfolio'}\n content={modals.machines}\n />\n }\n heroAspectRatio=\"16/9\"\n />\n )}\n </>\n )\n}\n\nconst RenderCTA = ({\n type,\n index,\n campaign,\n ...props\n}: CTAPropsWithModal & { index: number; campaign: CampaignProps }) => {\n const { openModal } = useModal()\n const btnRef = useRef(null)\n\n if (!props.href || !props.label) {\n return null\n }\n\n const handleClick = e => {\n e.preventDefault()\n\n selectPromotion({\n ...campaign,\n cta_name: `LINK - ${index} - ${props.label}`\n })\n\n if (props.modalId) {\n openModal(props.modalId)\n }\n\n if (props.href) {\n window.location.href = props.href\n }\n }\n\n return (\n <Button\n {...props}\n className={\n type === 'secondary' ? ctaAdditionalStyles.cta__custom : ''\n }\n onClick={handleClick}\n ref={btnRef}\n />\n )\n}\n\nconst RenderActions = ({\n actions,\n campaign\n}: {\n actions: ActionsProps\n campaign: CampaignProps\n}) => {\n if (!actions) {\n return null\n }\n\n return (\n <div className={styles.productPortfolio__actions}>\n <RenderCTA\n type={'secondary'}\n index={1}\n campaign={campaign}\n {...(actions?.cta_primary || null)}\n />\n <RenderCTA\n type={'secondary'}\n index={2}\n campaign={campaign}\n {...(actions?.cta_secondary || null)}\n />\n <RenderCTA\n type={'tertiary'}\n index={3}\n campaign={campaign}\n {...(actions?.cta_tertiary || null)}\n />\n </div>\n )\n}\n\nconst RenderHeader = ({ heading }: HeadingProps) => {\n if (!heading) {\n return null\n }\n\n return (\n <div className={styles.productPortfolio__header}>\n <header>\n <h3 className={styles.heading}>{heading}</h3>\n </header>\n </div>\n )\n}\n\nconst RenderCard = ({ ...props }: Cards) => {\n const { isOpen } = useModal()\n const containerRef = useRef(null)\n\n const addViewPormotionTracking = !isOpen('coffees') && !isOpen('machines')\n\n useImpressionTracker(containerRef, props.campaign, addViewPormotionTracking)\n\n return (\n <div ref={containerRef} className={`${styles.productPortfolio__card}`}>\n <Card\n className={styles.productPortfolio__card}\n title={props.heading}\n imgProps={{\n alt: props.visual.alt_text,\n src: props.visual.mobile,\n srcSet: props.visual.mobile + ` 2x`\n }}\n imgSources={[\n {\n media: '(min-width: 768px)',\n srcSet: `${props.visual.desktop} 1x, ${props.visual.desktop} 2x`\n }\n ]}>\n <RenderHeader heading={props.heading} />\n <RenderActions\n actions={props.actions}\n campaign={props.campaign}\n />\n </Card>\n </div>\n )\n}\n\nfunction ProductPortfolio({ data }: ProductPortfolioProps) {\n const pbProps = getPBProps<PBProps>(data)\n const { layout, copywriting } = pbProps as PBProps\n const layoutPadding = [layout.padding_top, layout.padding_bottom]\n\n return (\n <PbPropsProvider value={pbProps}>\n <ModalProvider>\n <div\n className={`${styles['nb-product-portfolio']} ${[...layoutPadding].join(' ')}`}>\n <RenderCards\n cards={copywriting.cards}\n modals={copywriting.modals}\n />\n </div>\n </ModalProvider>\n </PbPropsProvider>\n )\n}\n\nexport default ProductPortfolio\n","import '@content/foundations/src/index'\nimport asWebComponent from '../../asWebComponent'\nimport ProductPortfolio from './ProductPortfolio'\n\nexport default asWebComponent(ProductPortfolio, 'nb-product-portfolio', [\n 'data'\n])\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","g","E","C","props","isPureReactComponent","shouldComponentUpdate","state","R","__b","type","__f","w","Symbol","for","k","$$typeof","render","isReactComponent","displayName","M","__e","then","__","__c","__k","T","unmount","A","__H","forEach","__P","map","D","__v","appendChild","L","__u","O","__a","U","__R","push","__O","setState","pop","forceUpdate","componentWillUnmount","document","createElement","fallback","V","delete","revealOrder","size","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","vnode","multiple","Array","isArray","selected","defaultValue","className","rn","__r","un","diffed","f","key","__d","constructor","__i","__source","__self","defaultProps","__esModule","default","exports","toString","includes","window","classNames","current","mask","I","icon","method","style","$el","split","Number","isNaN","parseFloat","_","m","maskImage","alt","height","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","buttonIcon","black","imgProps","imgSources","srcSet","te_hasImage","modal","dismiss","header","heading","description","body","content","footer","column","side","fixedFooter","G","ke","ie","bodyClassName","contentClassName","W","closeBtnA11yLabel","closeBtnA11yTitle","contentSlot","dismissClassName","P","v","footerSlot","headingElement","id","isMediaModal","isOpen","onClose","position","S","dismissBtn","de","ee","innerWidth","getBoundingClientRect","from","getComputedStyle","gap","reduce","width","paddingInline","ve","target","Node","contains","F","preventDefault","q","querySelectorAll","activeElement","closest","shiftKey","focus","relatedTarget","querySelector","show","classList","add","setTimeout","se","close","remove","ce","me","onClick","oe","le","ae","ne","te","ue","isColumnMode","fe","he","re","we","ye","open","tabIndex","heroAspectRatio","heroImgAlt","heroImgHeight","heroImgRetinaSrc","heroImgSrc","heroImgWidth","heroSlot","heroVideoIframeA11yTitle","heroVideoIframeAllowSettings","heroVideoPlayBtnA11yLabel","heroVideoPlayBtnA11yTitle","heroVideoSrc","modalRef","$videoRef","$videoIframeRef","$playBtn","paused","play","removeAttribute","setAttribute","pause","isVisualOnly","isPlaying","decoding","controls","poster","allow","allowFullScreen","Image","error","_jsx","emitCustomEvent","eventName","customEvent","composed","removeEmptyValues","obj","undefined","DOMParser","raisedByPB","componentInteraction","component_name","action_type","cta_name","eventData","event_raised_by","gtmDataObject","RenderList","listRef","list","values","is_deactivated","index","_jsxs","styles","isDeactivated","Icon","featuresListDescription","RenderImage","featuresImage","RenderDescription","featuresDescription","RenderCTA","tracking_slot","cta","ctaRef","useRef","featuresActions","Button","featuresButton","handleClick","ModalContainer","firstBlock","secondBlock","blocksDescription","leftListRef","rightListRef","useEffect","adjustHeights","leftItems","rightItems","leftHeight","offsetHeight","rightHeight","maxHeight","Math","max","console","warn","_Fragment","features","image","imageAlt","PbPropsContext","createContext","PbPropsProvider","Provider","ModalContext","ModalProvider","modalId","setModalId","useState","openModal","closeModal","useModal","useContext","Error","triggeredEvents","Set","useImpressionTracker","containerRef","campaign","shouldExecute","hasTrackedRef","uniqueKey","random","substr","observer","viewportEvent","element","callback","once","options","threshold","has","IntersectionObserver","entries","observerInstance","entry","isIntersecting","disconnect","observe","args","ecommerce","creative","ecommerceData","promotion_id","promotion_name","creative_slot","creative_name","viewPromotion","RenderModalFooterCTA","btnRef","RenderCards","cards","modals","layout","usePbProps","modalFooterLabel","machines","footerCta","coffees","productPortfolio__cards","card","_createElement","RenderCard","MediaModal","ctaAdditionalStyles","selectPromotion","location","RenderActions","actions","productPortfolio__actions","cta_primary","cta_secondary","cta_tertiary","RenderHeader","productPortfolio__header","addViewPormotionTracking","productPortfolio__card","Card","visual","alt_text","mobile","media","desktop","asWebComponent","func","tagName","observedAttributes","customElements","Reflect","construct","HTMLElement","shadow","attachShadow","mode","create","connectedCallback","attributeChangedCallback","disconnectedCallback","propTypes","define","pbProps","JSON","parse","getPBProps","copywriting","layoutPadding","padding_top","padding_bottom","join"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}