{"version":3,"sources":["webpack:///./modules/Teaser.ts"],"names":["__webpack_require__","r","__webpack_exports__","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_1__","Teaser","element","_this","this","limitTextContent","Object","window","addEventListener","startTruncate","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","el","textContent","length","substr","linesElement","getText","paragraphEl","querySelector","setAttribute","newTextParts","trim","split","lineHeight","getLineHeight","clientHeight","pop","innerHTML","join","getComputedStyle","parseFloat"],"mappings":"2FACAA,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,GAAAI,EAAAJ,EAAA,IAKAK,EAAA,WASI,SAAAA,EAAmBC,GAAnB,IAAAC,EAAAC,KAAmBA,KAAAF,UACfE,KAAKC,mBACLD,KAAKF,QAAUA,EACVI,OAAAN,EAAA,EAAAM,IACDC,OAAOC,iBAAiB,OAAQ,WAC5BL,EAAKM,kBAoFrB,OAhGWR,EAAAS,MAAP,SAAaC,QAAA,IAAAA,MAJM,0BAKfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAAClB,GACpH,IAAID,EAAOC,GACXA,EAAQgB,QAAQC,kBAAoB,UAepClB,EAAAoB,UAAAhB,iBAAR,WACuCD,KAAKF,QAAQa,iBAAiB,qDACtCK,QAAQ,SAACE,GAC5BA,EAAGC,YAAYC,QAAU,KACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,OAGnBrB,KAAKF,QAAQa,iBAAiB,8CACtCK,QAAQ,SAACE,GACxBA,EAAGC,YAAYC,QAAU,MACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,KAAO,SAIvBrB,KAAKF,QAAQa,iBAAiB,+DACtCK,QAAQ,SAACE,GAC3BA,EAAGC,YAAYC,QAAU,KACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,OAGpBrB,KAAKF,QAAQa,iBAAiB,uDACtCK,QAAQ,SAACE,GACvBA,EAAGC,YAAYC,QAAU,MACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,KAAO,SAGrBrB,KAAKF,QAAQa,iBAAiB,8DACtCK,QAAQ,SAACE,GAC7BA,EAAGC,YAAYC,QAAU,KACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,OAGlBrB,KAAKF,QAAQa,iBAAiB,uDACtCK,QAAQ,SAACE,GACzBA,EAAGC,YAAYC,QAAU,MACzBF,EAAGC,YAAcD,EAAGC,YAAYE,OAAO,EAAG,KAAO,UAI7DxB,EAAAoB,UAAAZ,cAAA,WACI,IAGIiB,EACAC,EAJEC,EAA2BxB,KAAKF,QAAQ2B,cAAc,cAa5D,GANIH,EANkBpB,OAAAP,EAAA,EAAAO,CAASF,KAAKF,QAAS,qBAM1B,EAGA,EAGd0B,EAAL,CAGAD,EAAUC,EAAYL,YACtBnB,KAAKF,QAAQ4B,aAAa,uBAAwBJ,EAAe,IAOjE,IALA,IACMK,EADoBJ,EAAQK,OACKC,MAAM,KACvCC,EAAa9B,KAAK+B,cAAcP,GAG/BF,EAAeQ,EAAaN,EAAYQ,cAC3CL,EAAaM,MACbT,EAAYU,UAAYP,EAAaQ,KAAK,KAAO,QAIzDtC,EAAAoB,UAAAc,cAAA,SAAcjC,GACV,IAAMgC,EAAa3B,OAAOiC,iBAAiBtC,GAAS,eACpD,MAAmB,WAAfgC,EACO,KAAOO,WAAWlC,OAAOiC,iBAAiBtC,GAAS,cAEnDuC,WAAWP,IAG9BjC,EAlGA,eAoGA,IAAIA,EAAOS,MAeP,IAAIT,EAAOS,MArHQ","file":"./modules/Teaser.cb93aeb0.js","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}"],"sourceRoot":""}