{"version":3,"file":"./modules/Teaser.xxxxxxxx.js","mappings":"4IAIMA,EAAiB,yBAEvB,aASI,WAAmBC,GAAnB,WAAmB,KAAAA,QAAAA,EACfC,KAAKC,mBACLD,KAAKD,QAAUA,GACV,WACDG,OAAOC,iBAAiB,OAAQ,WAC5B,EAAKC,eACT,EAER,CAiFJ,OAhGW,EAAAC,MAAP,SAAaC,QAAA,IAAAA,IAAAA,EAAA,GACTC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,iBAAd,GAAiCC,QAAQ,SAAChB,GACpH,IAAIiB,EAAOjB,GACXA,EAAQc,QAAQC,kBAAoB,MACxC,EACJ,EAaQ,YAAAb,iBAAR,WACuCD,KAAKD,QAAQW,iBAAiB,qDACtCK,QAAQ,SAACE,GAC5BA,EAAGC,YAAYC,QAAU,KACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,IAElD,GAC+BpB,KAAKD,QAAQW,iBAAiB,8CACtCK,QAAQ,SAACE,GACxBA,EAAGC,YAAYC,QAAU,MACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,KAAO,MAEzD,GAEkCpB,KAAKD,QAAQW,iBAAiB,+DACtCK,QAAQ,SAACE,GAC3BA,EAAGC,YAAYC,QAAU,KACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,IAElD,GAC8BpB,KAAKD,QAAQW,iBAAiB,uDACtCK,QAAQ,SAACE,GACvBA,EAAGC,YAAYC,QAAU,MACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,KAAO,MAEzD,GACoCpB,KAAKD,QAAQW,iBAAiB,8DACtCK,QAAQ,SAACE,GAC7BA,EAAGC,YAAYC,QAAU,KACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,IAElD,GACgCpB,KAAKD,QAAQW,iBAAiB,uDACtCK,QAAQ,SAACE,GACzBA,EAAGC,YAAYC,QAAU,MACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,KAAO,MAEzD,EACJ,EACA,YAAAhB,cAAA,WACI,IAGIiB,EACAC,EAJEC,EAA2BvB,KAAKD,QAAQyB,cAAc,cAa5D,GANIH,GANkB,QAASrB,KAAKD,QAAS,qBAM1B,EAGA,EAGdwB,EAAL,CAGAD,EAAUC,EAAYL,YACtBlB,KAAKD,QAAQ0B,aAAa,uBAAwBJ,EAAe,IAOjE,IALA,IACMK,EADoBJ,EAAQK,OACKC,MAAM,KACvCC,EAAa7B,KAAK8B,cAAcP,GAG/BF,EAAeQ,EAAaN,EAAYQ,cAC3CL,EAAaM,MACbT,EAAYU,UAAYP,EAAaQ,KAAK,KAAO,KAZ3C,CAcd,EAEA,YAAAJ,cAAA,SAAc/B,GACV,IAAM8B,EAAa3B,OAAOiC,iBAAiBpC,GAAS,eACpD,MAAmB,WAAf8B,EACO,KAAOO,WAAWlC,OAAOiC,iBAAiBpC,GAAS,cAEnDqC,WAAWP,EAE1B,EACJ,EAlGA,G,UAoGA,IAAIb,EAAOX,MAeP,IAAIW,EAAOX,MAAMP,E","sources":["webpack:///./modules/Teaser.ts"],"sourcesContent":["\r\nimport { hasClass } from \"../helpers/DOMHelpers\";\r\nimport { isMobile } from \"../helpers/helperFunctions\";\r\n\r\nconst moduleSelector = '[data-module=\"Teaser\"]';\r\n\r\nexport default class Teaser {\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Teaser(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.limitTextContent();\r\n this.element = element;\r\n if (!isMobile()) {\r\n window.addEventListener('load', () => {\r\n this.startTruncate();\r\n });\r\n }\r\n }\r\n\r\n\r\n private limitTextContent(): void {\r\n const fullColumnheadlineElements = this.element.querySelectorAll('.career-facelift .full-col-teaser .cw-h2-headline');\r\n fullColumnheadlineElements.forEach((el: Element) => {\r\n if (el.textContent.length >= 41) {\r\n el.textContent = el.textContent.substr(0, 40);\r\n }\r\n });\r\n const fullColumntextElements = this.element.querySelectorAll('.career-facelift .full-col-teaser .cw-text');\r\n fullColumntextElements.forEach((el: Element) => {\r\n if (el.textContent.length >= 458) {\r\n el.textContent = el.textContent.substr(0, 457) + \"...\";\r\n }\r\n });\r\n\r\n const columntwoheadlineElements = this.element.querySelectorAll('.career-facelift .col-6 .cw-default-teaser .cw-h3-headline');\r\n columntwoheadlineElements.forEach((el: Element) => {\r\n if (el.textContent.length >= 91) {\r\n el.textContent = el.textContent.substr(0, 90);\r\n }\r\n });\r\n const columntwotextElements = this.element.querySelectorAll('.career-facelift .col-6 .cw-default-teaser .cw-text');\r\n columntwotextElements.forEach((el: Element) => {\r\n if (el.textContent.length >= 226) {\r\n el.textContent = el.textContent.substr(0, 225) + \"...\";\r\n }\r\n });\r\n const columnthreeheadlineElements = this.element.querySelectorAll('.career-facelift .col-4 .cw-default-teaser .cw-h3-headline');\r\n columnthreeheadlineElements.forEach((el: Element) => {\r\n if (el.textContent.length >= 48) {\r\n el.textContent = el.textContent.substr(0, 47);\r\n }\r\n });\r\n const columnthreetextElements = this.element.querySelectorAll('.career-facelift .col-4 .cw-default-teaser .cw-text');\r\n columnthreetextElements.forEach((el: Element) => {\r\n if (el.textContent.length >= 146) {\r\n el.textContent = el.textContent.substr(0, 145) + \"...\";\r\n }\r\n });\r\n }\r\n startTruncate() {\r\n const paragraphEl = this.element.querySelector('.cw-text p'),\r\n isContentTeaser = hasClass(this.element, 'cw-content-teaser');\r\n\r\n let linesElement: number,\r\n getText;\r\n\r\n if (isContentTeaser) {\r\n linesElement = 5;\r\n }\r\n else {\r\n linesElement = 4;\r\n }\r\n\r\n if (!paragraphEl)\r\n return;\r\n\r\n getText = paragraphEl.textContent;\r\n this.element.setAttribute('data-line-limitation', linesElement + '');\r\n\r\n const truncateTextParts = getText.trim();\r\n const newTextParts = truncateTextParts.split(' ');\r\n const lineHeight = this.getLineHeight(paragraphEl);\r\n //console.log(`${linesElement} lines * lineheight ${lineHeight} =`, linesElement * lineHeight, \", paragraphOffsetHeight: \", paragraphEl.clientHeight)\r\n\r\n while (linesElement * lineHeight < paragraphEl.clientHeight) {\r\n newTextParts.pop();\r\n paragraphEl.innerHTML = newTextParts.join(' ') + '...';\r\n }\r\n }\r\n\r\n getLineHeight(element) {\r\n const lineHeight = window.getComputedStyle(element)['line-height'];\r\n if (lineHeight === 'normal') {\r\n return 1.16 * parseFloat(window.getComputedStyle(element)['font-size']);\r\n } else {\r\n return parseFloat(lineHeight);\r\n }\r\n }\r\n}\r\n\r\nnew Teaser.setup();\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n new Teaser.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new Teaser.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n new Teaser.setup(moduleSelector);\r\n}"],"names":["moduleSelector","element","this","limitTextContent","window","addEventListener","startTruncate","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","Teaser","el","textContent","length","substr","linesElement","getText","paragraphEl","querySelector","setAttribute","newTextParts","trim","split","lineHeight","getLineHeight","clientHeight","pop","innerHTML","join","getComputedStyle","parseFloat"],"sourceRoot":""}