{"id":5963,"date":"2025-02-11T00:02:41","date_gmt":"2025-02-10T23:02:41","guid":{"rendered":"https:\/\/gleichweit-mundstuecke.com\/?page_id=5963"},"modified":"2026-05-24T07:42:24","modified_gmt":"2026-05-24T06:42:24","slug":"catalogs-2","status":"publish","type":"page","link":"https:\/\/gleichweit-mundstuecke.com\/en\/catalogs-2\/","title":{"rendered":"Catalogs"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5963\" class=\"elementor elementor-5963\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e29ba63 e-flex e-con-boxed e-con e-parent\" data-id=\"e29ba63\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-622ccdc e-flex e-con-boxed e-con e-parent\" data-id=\"622ccdc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4aa9039 elementor-widget elementor-widget-html\" data-id=\"4aa9039\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap\" rel=\"stylesheet\">\n<div id=\"gw-flipbook-wrap\">\n  <div id=\"gw-flipbook-header\">\n    <h2 id=\"gw-flipbook-title\">Gleichweit Catalog 2025<\/h2>\n    <a href=\"https:\/\/gleichweit-mundstuecke.com\/wp-content\/uploads\/2026\/05\/gleichweit-catalog-2026.pdf\" download=\"Gleichweit-Catalog.pdf\" id=\"gw-download-btn\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path><polyline points=\"7 10 12 15 17 10\"><\/polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line><\/svg>\n      Download PDF\n    <\/a>\n  <\/div>\n  <div id=\"gw-flipbook\">\n    <div id=\"gw-flipbook-loading\">\n      <div class=\"gw-spinner\"><\/div>\n      <p>Loading catalog...<\/p>\n    <\/div>\n    <div id=\"gw-flipbook-pages\"><\/div>\n  <\/div>\n  <div id=\"gw-flipbook-controls\">\n    <button id=\"gw-prev-btn\" aria-label=\"Previous page\">\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"><\/polyline><\/svg>\n    <\/button>\n    <span id=\"gw-page-info\">Page <span id=\"gw-current-page\">1<\/span> \/ <span id=\"gw-total-pages\">-<\/span><\/span>\n    <button id=\"gw-next-btn\" aria-label=\"Next page\">\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"><\/polyline><\/svg>\n    <\/button>\n    <button id=\"gw-fullscreen-btn\" aria-label=\"Fullscreen\">\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3\"><\/path><path d=\"M21 8V5a2 2 0 0 0-2-2h-3\"><\/path><path d=\"M3 16v3a2 2 0 0 0 2 2h3\"><\/path><path d=\"M16 21h3a2 2 0 0 0 2-2v-3\"><\/path><\/svg>\n    <\/button>\n  <\/div>\n<\/div>\n\n<style>\n#gw-flipbook-wrap {\n  max-width: 1100px;\n  margin: 0 auto;\n  font-family: 'Roboto', sans-serif;\n}\n#gw-flipbook-header {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  margin-bottom: 32px;\n  gap: 20px;\n  text-align: center;\n}\n#gw-flipbook-title {\n  font-family: 'Roboto', sans-serif;\n  color: #24303D;\n  font-size: 28px;\n  font-weight: 400;\n  letter-spacing: 4px;\n  text-transform: uppercase;\n  margin: 0;\n  position: relative;\n  padding-bottom: 18px;\n}\n#gw-flipbook-title::after {\n  content: '';\n  position: absolute;\n  bottom: 0;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 60px;\n  height: 2px;\n  background: #b5a775;\n}\n#gw-download-btn {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: #b5a775;\n  color: white !important;\n  padding: 10px 20px;\n  border-radius: 4px;\n  font-size: 13px;\n  font-weight: 500;\n  text-decoration: none !important;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  transition: background 0.2s;\n}\n#gw-download-btn:hover { background: #9a8e63; }\n#gw-flipbook {\n  position: relative;\n  background: #f7f5f0;\n  border-radius: 12px;\n  padding: 30px 20px;\n  min-height: 600px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-shadow: 0 4px 20px rgba(0,0,0,0.08);\n  overflow: hidden;\n}\n#gw-flipbook-loading {\n  text-align: center;\n  color: #24303D;\n}\n.gw-spinner {\n  width: 48px;\n  height: 48px;\n  border: 4px solid #e0ddd7;\n  border-top-color: #b5a775;\n  border-radius: 50%;\n  animation: gw-spin 1s linear infinite;\n  margin: 0 auto 16px;\n}\n@keyframes gw-spin { to { transform: rotate(360deg); } }\n#gw-flipbook-pages {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  display: none;\n  align-items: center;\n  justify-content: center;\n  gap: 0;\n  perspective: 2000px;\n}\n#gw-flipbook-pages.gw-ready { display: flex; }\n.gw-page {\n  position: relative;\n  background: white;\n  box-shadow: 0 4px 20px rgba(0,0,0,0.15);\n  transform-origin: left center;\n  transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1);\n  backface-visibility: hidden;\n}\n.gw-page canvas {\n  display: block;\n  width: 100%;\n  height: auto;\n}\n.gw-page.gw-page-left {\n  border-right: 1px solid #e0ddd7;\n}\n#gw-flipbook-controls {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 16px;\n  margin-top: 24px;\n}\n#gw-flipbook-controls button {\n  background: white;\n  border: 1px solid #e0ddd7;\n  width: 44px;\n  height: 44px;\n  border-radius: 50%;\n  cursor: pointer;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  color: #24303D;\n  transition: all 0.2s;\n}\n#gw-flipbook-controls button:hover {\n  background: #b5a775;\n  color: white;\n  border-color: #b5a775;\n  transform: scale(1.05);\n}\n#gw-flipbook-controls button:disabled {\n  opacity: 0.4;\n  cursor: not-allowed;\n  transform: none;\n}\n#gw-page-info {\n  font-size: 14px;\n  color: #24303D;\n  font-weight: 500;\n  min-width: 110px;\n  text-align: center;\n}\n#gw-flipbook:fullscreen {\n  background: #2a2a2a;\n  padding: 40px;\n}\n#gw-flipbook:fullscreen .gw-page canvas {\n  max-height: calc(100vh - 80px);\n  width: auto;\n}\n@media (max-width: 768px) {\n  #gw-flipbook { padding: 16px 8px; min-height: 400px; }\n  #gw-flipbook-title { font-size: 22px; }\n  #gw-flipbook-pages { flex-direction: column; }\n}\n<\/style>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.11.174\/pdf.min.js\"><\/script>\n<script>\n(function() {\n  if (typeof pdfjsLib === 'undefined') {\n    setTimeout(arguments.callee, 100);\n    return;\n  }\n  pdfjsLib.GlobalWorkerOptions.workerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.11.174\/pdf.worker.min.js';\n\n  const PDF_URL = 'https:\/\/gleichweit-mundstuecke.com\/wp-content\/uploads\/2026\/05\/gleichweit-catalog-2026.pdf';\n  const flipbook = document.getElementById('gw-flipbook');\n  const pagesContainer = document.getElementById('gw-flipbook-pages');\n  const loading = document.getElementById('gw-flipbook-loading');\n  const prevBtn = document.getElementById('gw-prev-btn');\n  const nextBtn = document.getElementById('gw-next-btn');\n  const fullscreenBtn = document.getElementById('gw-fullscreen-btn');\n  const currentPageSpan = document.getElementById('gw-current-page');\n  const totalPagesSpan = document.getElementById('gw-total-pages');\n\n  let pdf = null;\n  let currentPage = 1;\n  let totalPages = 0;\n  let isFlipping = false;\n  const pageCache = {};\n\n  function getViewportWidth() { return flipbook.clientWidth - 40; }\n  function isMobile() { return window.innerWidth < 768; }\n\n  async function renderPage(pageNum) {\n    if (pageCache[pageNum]) return pageCache[pageNum];\n    const page = await pdf.getPage(pageNum);\n    const containerWidth = getViewportWidth();\n    const targetWidth = isMobile() ? containerWidth : containerWidth \/ 2;\n    const viewport = page.getViewport({ scale: 1 });\n    const scale = targetWidth \/ viewport.width;\n    const scaledViewport = page.getViewport({ scale: scale * 2 });\n    const canvas = document.createElement('canvas');\n    canvas.width = scaledViewport.width;\n    canvas.height = scaledViewport.height;\n    canvas.style.width = targetWidth + 'px';\n    canvas.style.height = 'auto';\n    const ctx = canvas.getContext('2d');\n    await page.render({ canvasContext: ctx, viewport: scaledViewport }).promise;\n    pageCache[pageNum] = canvas;\n    return canvas;\n  }\n\n  async function displaySpread(leftPageNum) {\n    pagesContainer.innerHTML = '';\n    if (isMobile()) {\n      const canvas = await renderPage(leftPageNum);\n      const pageDiv = document.createElement('div');\n      pageDiv.className = 'gw-page';\n      const c = canvas.cloneNode(true);\n      c.getContext('2d').drawImage(canvas, 0, 0);\n      pageDiv.appendChild(c);\n      pagesContainer.appendChild(pageDiv);\n      currentPageSpan.textContent = leftPageNum;\n    } else {\n      const leftDiv = document.createElement('div');\n      leftDiv.className = 'gw-page gw-page-left';\n      const leftCanvas = await renderPage(leftPageNum);\n      const lc = leftCanvas.cloneNode(true);\n      lc.getContext('2d').drawImage(leftCanvas, 0, 0);\n      leftDiv.appendChild(lc);\n      pagesContainer.appendChild(leftDiv);\n      if (leftPageNum + 1 <= totalPages) {\n        const rightDiv = document.createElement('div');\n        rightDiv.className = 'gw-page gw-page-right';\n        const rightCanvas = await renderPage(leftPageNum + 1);\n        const rc = rightCanvas.cloneNode(true);\n        rc.getContext('2d').drawImage(rightCanvas, 0, 0);\n        rightDiv.appendChild(rc);\n        pagesContainer.appendChild(rightDiv);\n        currentPageSpan.textContent = leftPageNum + ' \u2013 ' + (leftPageNum + 1);\n      } else {\n        currentPageSpan.textContent = leftPageNum;\n      }\n    }\n    updateButtons();\n  }\n\n  function updateButtons() {\n    prevBtn.disabled = currentPage <= 1;\n    nextBtn.disabled = currentPage >= totalPages;\n  }\n\n  async function next() {\n    if (isFlipping) return;\n    const step = isMobile() ? 1 : 2;\n    if (currentPage + step > totalPages && currentPage < totalPages) { currentPage = totalPages; }\n    else if (currentPage + step <= totalPages) { currentPage += step; }\n    else { return; }\n    isFlipping = true;\n    await displaySpread(currentPage);\n    isFlipping = false;\n  }\n\n  async function prev() {\n    if (isFlipping) return;\n    const step = isMobile() ? 1 : 2;\n    if (currentPage - step < 1) {\n      if (currentPage === 1) return;\n      currentPage = 1;\n    } else { currentPage -= step; }\n    isFlipping = true;\n    await displaySpread(currentPage);\n    isFlipping = false;\n  }\n\n  prevBtn.addEventListener('click', prev);\n  nextBtn.addEventListener('click', next);\n  document.addEventListener('keydown', function(e) {\n    if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') return;\n    if (e.key === 'ArrowLeft') prev();\n    if (e.key === 'ArrowRight') next();\n  });\n  fullscreenBtn.addEventListener('click', function() {\n    if (!document.fullscreenElement) { flipbook.requestFullscreen().catch(function(){}); }\n    else { document.exitFullscreen(); }\n  });\n  let resizeTimer;\n  window.addEventListener('resize', function() {\n    clearTimeout(resizeTimer);\n    resizeTimer = setTimeout(function() {\n      Object.keys(pageCache).forEach(function(k){ delete pageCache[k]; });\n      displaySpread(currentPage);\n    }, 300);\n  });\n\n  pdfjsLib.getDocument(PDF_URL).promise.then(function(loadedPdf) {\n    pdf = loadedPdf;\n    totalPages = pdf.numPages;\n    totalPagesSpan.textContent = totalPages;\n    loading.style.display = 'none';\n    pagesContainer.classList.add('gw-ready');\n    displaySpread(1);\n  }).catch(function(err) {\n    loading.innerHTML = '<p style=\"color:#a32d2d;\">Error loading catalog. Please try again later or download the PDF file.<\/p>';\n    console.error('PDF load error:', err);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Gleichweit Catalog Download PDF Loading catalog&#8230; Page 1 \/ &#8211;<\/p>","protected":false},"author":21501,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-5963","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/pages\/5963","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/users\/21501"}],"replies":[{"embeddable":true,"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/comments?post=5963"}],"version-history":[{"count":2,"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/pages\/5963\/revisions"}],"predecessor-version":[{"id":13769,"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/pages\/5963\/revisions\/13769"}],"wp:attachment":[{"href":"https:\/\/gleichweit-mundstuecke.com\/en\/wp-json\/wp\/v2\/media?parent=5963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}