{"version":3,"file":"hang-punctuation.js","mappings":"40BAAMA,EAAe,WACnB,SAAAA,K,4FAAcC,CAAA,KAAAD,GACZE,KAAKC,WAAaC,MAAMC,KAAKC,SAASC,iBAAiB,kBACvDL,KAAKM,iBAAmB,CACtB,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,SAGRN,KAAKC,WAAWM,OAAS,GAC3BP,KAAKC,WAAWO,QAAQR,KAAKS,SAASC,KAAKV,MAE/C,C,QAuCC,O,EAvCAF,G,EAAA,EAAAa,IAAA,WAAAC,MAED,SAASC,GAKP,IAJA,IAAMC,EAAoBD,EAAUE,WAI3BC,EAAI,EAAGA,EAAIF,EAAkBP,OAAQS,GAAK,EAAG,CACpD,IAAMC,EAAKH,EAAkBE,GAE7B,GAAmB,eAAfC,EAAGC,QACL,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAGF,WAAWR,OAAQY,GAAK,EAC7CnB,KAAKoB,eAAeH,EAAGF,WAAWI,SAGpCnB,KAAKoB,eAAeH,EAExB,CACF,GAAC,CAAAN,IAAA,iBAAAC,MAED,SAAeK,GAAI,IAAAI,EAAA,KACXC,EAAOL,EAAGM,WAAaN,EAAGO,YAC5BC,EAAY,aAEFC,OAAOC,KAAK3B,KAAKM,kBACzBE,SAAQ,SAAAoB,GACe,IAAvBN,EAAKO,QAAQD,KAEE,OAAfX,EAAGC,SACY,OAAfD,EAAGC,SACY,OAAfD,EAAGC,SACY,OAAfD,EAAGC,SACY,OAAfD,EAAGC,UAEHO,GAAa,WAEfR,EAAGa,UAAUC,IAAIN,EAAYJ,EAAKf,iBAAiBsB,IAEvD,GACF,M,oEAAC9B,CAAA,CAxDkB,GA2DrB,W","sources":["webpack://@upstatement/context-labs-wp-theme/./themes/context-labs/static/js/components/hang-punctuation.js"],"sourcesContent":["class HangPunctuation {\n  constructor() {\n    this.containers = Array.from(document.querySelectorAll('.js-hang-punc'));\n    this.punctuationMarks = {\n      '\\u201c': 'medium', // “ - ldquo - left smart double quote\n      '\\u2018': 'small', // ‘ - lsquo - left smart single quote\n      '\\u0022': 'medium', // \" - ldquo - left dumb double quote\n      '\\u0027': 'small', // ' - lsquo - left dumb single quote\n      '\\u00AB': 'large', // « - laquo - left double angle quote\n      '\\u2039': 'medium', // ‹ - lsaquo - left single angle quote\n      '\\u201E': 'medium', // „ - bdquo - left smart double low quote\n      '\\u201A': 'small', // ‚ - sbquo - left smart single low quote\n    };\n\n    if (this.containers.length > 0) {\n      this.containers.forEach(this.hangPunc.bind(this));\n    }\n  }\n\n  hangPunc(container) {\n    const containerChildren = container.childNodes;\n\n    // Loop over all direct descendants of the $container\n    // If it's a blockquote, loop over its direct descendants\n    for (let i = 0; i < containerChildren.length; i += 1) {\n      const el = containerChildren[i];\n\n      if (el.tagName === 'blockquote') {\n        for (let k = 0; k < el.childNodes.length; k += 1) {\n          this.hangIfEligible(el.childNodes[k]);\n        }\n      } else {\n        this.hangIfEligible(el);\n      }\n    }\n  }\n\n  hangIfEligible(el) {\n    const text = el.innerText || el.textContent;\n    let htmlClass = 'hang-punc-';\n\n    const marks = Object.keys(this.punctuationMarks);\n    marks.forEach(mark => {\n      if (text.indexOf(mark) === 0) {\n        if (\n          el.tagName === 'H1' ||\n          el.tagName === 'H2' ||\n          el.tagName === 'H3' ||\n          el.tagName === 'H4' ||\n          el.tagName === 'H5'\n        ) {\n          htmlClass += 'header-';\n        }\n        el.classList.add(htmlClass + this.punctuationMarks[mark]);\n      }\n    });\n  }\n}\n\nexport default HangPunctuation;\n"],"names":["HangPunctuation","_classCallCheck","this","containers","Array","from","document","querySelectorAll","punctuationMarks","length","forEach","hangPunc","bind","key","value","container","containerChildren","childNodes","i","el","tagName","k","hangIfEligible","_this","text","innerText","textContent","htmlClass","Object","keys","mark","indexOf","classList","add"],"sourceRoot":""}