PageSourceSearch

https://www.hofmann.es/assets/cart.js?v=5f755b7a11304961a339

js hofmann.es collected 2026-09-24 09:04:18 UTC 12,489 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkstorefront_platform=self.webpackChunkstorefront_platform||[]).push([[511],{412:(t,e,n)=>{n(66992),n(33948),n(88674),n(54747),n(10072),n(99137),n(71957),n(96306),n(103),n(74592),n(58276),n(35082),n(12813),n(18222),n(38563),n(50336),n(7512),n(86535),n(99244),n(26699),n(32023),n(41817);var i=n(31955);function a(t){if("prd"!==window.env){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];console.log("[".concat(t,"]"),...n)}}n(74916),n(85827),n(23123);const o="00000000-0000-0000-0000-000000000000",r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s="/productshots/";function c(t){return"string"==typeof t&&"prints"===t.toLowerCase()}function l(t){return"string"==typeof t&&""!==t&&t!==o&&r.test(t)}function u(t){var e,n,i,a,o,r,s,c;const l=(null!==(e=t.thumbnailImageUrls)&&void 0!==e?e:[]).filter(Boolean),u=null!==(n=t.totalItemPrice)&&void 0!==n?n:0,p=null!==(i=t.totalItemPriceIncludingDiscount)&&void 0!==i?i:u;return{productId:null!==(a=t.productId)&&void 0!==a?a:null,articleType:null!==(o=t.articleType)&&void 0!==o?o:null,title:null!==(r=t.productTitle)&&void 0!==r?r:"",description:null!==(s=t.description)&&void 0!==s?s:"",options:h(t),thumbnailUrl:d(t.articleType,l),quantity:null!==(c=t.amount)&&void 0!==c?c:1,packSize:m(t),price:p,originalPrice:u,discountedPrice:p}}function d(t,e){var n,i,a;return c(t)?null!==(n=null!==(i=e.find(t=>!t.includes(s)))&&void 0!==i?i:e[0])&&void 0!==n?n:null:null!==(a=e[0])&&void 0!==a?a:null}function m(t){var e;if(c(t.articleType)){var n,i,a;const e=(null!==(n=null===(i=t.configuration)||void 0===i?void 0:i.extras)&&void 0!==n?n:[]).find(t=>{var e;return"printsize"===(null===(e=t.id)||void 0===e?void 0:e.toLowerCase())});return Math.max(1,null!==(a=null==e?void 0:e.amount)&&void 0!==a?a:1)}return Math.max(1,null!==(e=t.setCount)&&void 0!==e?e:1)}function h(t){var e;const n=null!==(e=t.extras)&&void 0!==e?e:[];return"Voucher"===t.articleType?n.length<=1?[]:n.filter(t=>"VoucherExtendedDescription"===t.type).map(t=>t.title).filter(Boolean):0===t.itemPriceWithoutExtras&&1===n.length?[]:n.map(e=>{var n;return c(t.articleType)?null===(n=e.title)||void 0===n?void 0:n.split(":")[0]:e.title}).filter(Boolean)}async function p(t){let e=t.checkoutApiUrl,n=t.channel,i=t.cartId,a=t.accessToken,o=void 0===a?null:a;if(!e||!n)return null;const r="".concat(e,"/basket/").concat(i,"?channel=").concat(encodeURIComponent(n)),s={accept:"application/json"};o&&(s.authorization="Bearer ".concat(o));const c=await async function(t,e){const n=await fetch(t,{method:"GET",headers:e});if(!n.ok)throw new Error("".concat(t," returned ").concat(n.status));return n.json()}(r,s);return c?!0===c.shouldAuthenticate?{authRequired:!0,count:0,items:[],subTotal:0,total:0}:function(t){var e,n,i,a,o,r,s;const c=(null!==(e=null==t?void 0:t.cartItems)&&void 0!==e?e:[]).map(u);return{count:c.reduce((t,e)=>t+e.quantity,0),items:c,subTotal:null!==(n=null==t||null===(i=t.prices)||void 0===i?void 0:i.subTotal)&&void 0!==n?n:0,subTotalOriginal:null!==(a=null==t||null===(o=t.prices)||void 0===o?void 0:o.subTotalOriginal)&&void 0!==a?a:0,total:null!==(r=null==t||null===(s=t.prices)||void 0===s?void 0:s.total)&&void 0!==r?r:0}}(c):null}var v=n(68975);class k{constructor(t){let e=t.redirect_uri,n=t.timeout,i=void 0===n?3e3:n;this.redirectUri=e,this.timeout=i}async signin(t,e){const n=await t.createAuthorizationParams({redirect_uri:this.redirectUri}),i=await e.enrich(n),a=await t.createAuthorizationUrl(n),o=await this.openInIframe(a,n.state);if("error"in o)throw new Error(o.error_description||o.error);if(!o.code)throw new Error("Missing authorization code.");const r={grant_type:"authorization_code",code:o.code,redirect_uri:this.redirectUri};return i.code_verifier&&(r.code_verifier=i.code_verifier),t.performTokenRequest(r)}refresh(){return Promise.reject(new Error("Refresh is not supported by the mini basket transport."))}signout(){return Promise.reject(new Error("Signout is not supported by the mini basket transport."))}openInIframe(t,e){return new Promise((n,i)=>{const a=document.createElement("iframe");a.setAttribute("aria-hidden","true"),a.setAttribute("title","authentication"),a.style.cssText="position:absolute;width:0;height:0;border:0;visibility:hidden;";let o=null;const r=()=>{window.clearTimeout(o),window.removeEventListener("message",s),a.remove()},s=t=>{t.origin===window.location.origin&&t.source===a.contentWindow&&t.data&&t.data.state===e&&(r(),n(t.data))};window.addEventListener("message",s),o=window.setTimeout(()=>{r(),i(new Error("The authentication request timed out."))},this.timeout),document.body.appendChild(a),a.src=t})}}const f={dev:"t-dtap.",tst:"t-dtap.",acc:"a-dtap.",prd:""};async function b(){var t,e,n,i;const o=window.miniBasketClientId,r=window.miniBasketClientKey,s=null!==(t=window.vendorProperties)&&void 0!==t?t:{};if(!o||!r||!s.domain)return function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];a("mini-basket-auth",...e)}("OIDC client not provisioned for this environment"),null;const c=null!==(e=f[window.env])&&void 0!==e?e:"t-dtap.",l=new v.ws({authority:"https://".concat(c,"login.").concat(s.domain,"/v2"),client_type:"AuthorizationCodeWithProofKey",client_id:o,client_secret:r,scope:"openid profile.read",transport:new k({redirect_uri:"https://".concat(window.location.host,"/oauth2"),timeout:3e3}),extra:{prompt:"none",theme:s.channel,acr_values:"idp:albelli"}}),u=await l.signin();return null!==(n=null==u||null===(i=u.tokens)||void 0===i?void 0:i.access_token)&&void 0!==n?n:null}const w="x_cart",g=["Calendar","Prints","GreetingCard"],_=t=>{const e=()=>{var e;return null===(e=window.trackingHelper)||void 0===e?void 0:e.sendTrackingEvent("custom_prop_tracking",{custom_prop_field:t})};window.trackingConsent?e():document.addEventListener("trackingConsent:initialized",e,{once:!0})},y=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return a("mini-basket",...e)};
1const C=new class{async init(){var t;if(this.basketListItem=document.querySelector('[data-testid="mini-basket"]'),!this.basketListItem)return void y("basket nav item not found, nothing to render");this.count=this.basketListItem.querySelector('[data-testid="mini-basket-count"]'),this.headerCount=this.basketListItem.querySelector('[data-testid="mini-basket-header-count"]'),this.items=this.basketListItem.querySelector('[data-testid="mini-basket-items"]'),this.total=this.basketListItem.querySelector('[data-testid="mini-basket-total"]'),this.config={checkoutApiUrl:window.checkoutApiUrl,channel:null===(t=window.vendorProperties)||void 0===t?void 0:t.channel};const e=await this.loadBasket();e&&(e.authRequired?y("basket belongs to an account we cannot read, showing link only"):e.count?"variant_1"===i.Z.get("cro_1513")?(await this.render(e),this.bindTracking()):y("not in cro_1513 variant_1, leaving as a plain link"):y("basket is empty, staying hidden",e))}async loadBasket(){const t=await this.resolveAccessToken(),e=!!t||l(i.Z.get(w)),n=()=>_(e?"has_cart_true":"has_cart_false");return window.trackingConsent?n():document.addEventListener("trackingConsent:initialized",n,{once:!0}),t?this.loadAccountBasket(t):this.loadGuestBasket()}async resolveAccessToken(){try{const t=await b();return y(t?"obtained an access token":"no access token, using the guest basket"),t}catch(t){return y("silent authentication failed",t),null}}async loadAccountBasket(t){try{const e=await async function(t,e){return p({checkoutApiUrl:t.checkoutApiUrl,channel:t.channel,cartId:o,accessToken:e})}(this.config,t);return y("account basket",e),e}catch(t){return y("account basket request failed",t),null}}async loadGuestBasket(){if(this.cartId=i.Z.get(w),!l(this.cartId))return y("no usable cart cookie",this.cartId),null;try{const t=await async function(t,e){return p({checkoutApiUrl:t.checkoutApiUrl,channel:t.channel,cartId:e})}(this.config,this.cartId);return y("guest basket",t),t}catch(t){return y("guest basket request failed",t),null}}async render(t){this.count.textContent=t.count;const e=this.getTranslation(1===t.count?"miniBasket.itemCount.singular":"miniBasket.itemCount.plural",1===t.count?"item":"items");this.headerCount.textContent="(".concat(t.count," ").concat(e,")"),this.basketListItem.classList.remove("--empty"),this.items.textContent="",this.groupItems(t.items).forEach(t=>this.items.appendChild(this.renderItem(t))),this.renderFooter(t)}bindTracking(){let t=!1;const e=()=>{t||(t=!0,_("mini_basket_shown"))};this.basketListItem.addEventListener("mouseenter",e),this.bindMobileToggle(e);const n=this.basketListItem.querySelector('[data-testid="mini-basket-go-to-basket"]');null==n||n.addEventListener("click",()=>_("mini_basket_click"))}bindMobileToggle(t){const e=this.basketListItem.querySelector(":scope > a");null==e||e.addEventListener("click",e=>{if(!window.matchMedia("(max-width: 574px)").matches)return;e.preventDefault();this.basketListItem.classList.toggle("--open")&&t()});const n=this.basketListItem.querySelector('[data-testid="mini-basket-close"]');null==n||n.addEventListener("click",()=>this.basketListItem.classList.remove("--open"))}groupItems(t){const e=new Map,n=[];return t.forEach(t=>{const i=g.find(e=>{var n;return e.toLowerCase()===(null===(n=t.articleType)||void 0===n?void 0:n.toLowerCase())}),a=null!=i?i:t;e.has(a)||(e.set(a,[]),n.push(a)),e.get(a).push(t)}),n.flatMap(t=>e.get(t))}getTranslation(t,e){const n=document.getElementById("mini-basket-translations");if(n)try{const e=JSON.parse(n.textContent);if(e&&e[t]&&e[t]!==t)return e[t]}catch(t){console.warn("Could not parse mini basket translations:",t)}return{"miniBasket.itemCount.singular":"item","miniBasket.itemCount.plural":"items"}[t]||e||t}renderFooter(t){const e=t.subTotalOriginal>0&&t.subTotalOriginal!==t.subTotal;if(this.total.textContent="",e){const e=document.createElement("span");e.className="arc3-menu__mini-basket__footer-total-original",e.textContent=this.formatPrice(t.subTotalOriginal),this.total.appendChild(e)}const n=document.createElement("span");n.className="arc3-menu__mini-basket__footer-total-current",n.textContent=this.formatPrice(t.subTotal),this.total.appendChild(n)}renderItem(t){const e=document.createElement("li");if(e.className="arc3-menu__mini-basket__item",t.thumbnailUrl){const n=document.createElement("img");n.className="arc3-menu__mini-basket__item-thumb",n.src=t.thumbnailUrl,n.alt="",n.loading="lazy",e.appendChild(this.wrapPrintThumb(t,n))}return e.append(this.renderItemInfo(t),this.renderItemPrice(t)),e}wrapPrintThumb(t,e){var n;if(!c(t.articleType)||t.thumbnailUrl.includes(s))return e;e.classList.add("mini-basket-print-stack__photo");const i=document.createElement("div");i.className="mini-basket-print-stack__layers",t.quantity*(null!==(n=t.packSize)&&void 0!==n?n:1)>1&&i.classList.add("--stacked"),i.appendChild(e);const a=document.createElement("div");return a.className="mini-basket-print-stack",a.dataset.testid="mini-basket-print-stack",a.appendChild(i),a}renderItemInfo(t){var e,n,i;const a=document.createElement("div");a.className="arc3-menu__mini-basket__item-info";const o=t.quantity*(null!==(e=t.packSize)&&void 0!==e?e:1),r=(null!==(n=t.packSize)&&void 0!==n?n:1)>1&&!!t.description,s=document.createElement("span");s.className="arc3-menu__mini-basket__item-title",s.textContent=r?t.title:"".concat(o,"x ").concat(t.title),a.appendChild(s);const c=[r?"".concat(o,"x ").concat(t.description):t.description,...null!==(i=t.options)&&void 0!==i?i:[]].filter(
1Boolean).join(" · ");if(c){const t=document.createElement("span");t.className="arc3-menu__mini-basket__item-meta",t.textContent=c,a.appendChild(t)}return a}renderItemPrice(t){const e=document.createElement("div");e.className="arc3-menu__mini-basket__item-price";const n=document.createElement("span");n.className="arc3-menu__mini-basket__item-price-current",n.textContent=this.formatPrice(t.discountedPrice),e.appendChild(n);if(t.originalPrice>0&&t.discountedPrice<t.originalPrice){const n=document.createElement("span");n.className="arc3-menu__mini-basket__item-price-original",n.textContent=this.formatPrice(t.originalPrice),e.appendChild(n)}return e}formatPrice(t){var e,n;return null!==(e=null===(n=window.priceFormatHelper)||void 0===n?void 0:n.formatPrice(t))&&void 0!==e?e:String(t)}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>C.init()):C.init()}},t=>{t.O(0,[8266,3123,8674,8975,755],()=>{return e=412,t(t.s=e);var e});t.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.