{"version":3,"sources":["webpack://gli-frontend/../web/themes/custom/gilderlehrman_theme/src/js/gli__image-captions.js"],"names":["$","Drupal","behaviors","imageCaptions","attach","context","imageCaptionPages","createImageCaption","element","orgHtml","outerHTML","caption","classes","getAttribute","newHtml","title","alt","i","length","container","document","body","classList","contains","querySelector","elements","querySelectorAll","forEach","closest","add","jQuery"],"mappings":"CAKA,SAAEA,EAAGC,GAIHA,EAAOC,UAAUC,cAAgB,CAC/BC,OAD+B,SACxBC,GA6CL,IA5CA,IAAMC,EAAoB,CACxB,8BACA,8BACA,2CACA,mCACA,yBACA,iCACA,uCACA,6BAQIC,EAAqB,SAACC,GAAoC,IACxDC,EAAUD,EAAQE,UACpBC,EAAU,KACVC,EAAU,GAEwB,OAAlCJ,EAAQK,aAAa,UACvBD,EAAUJ,EAAQK,aAAa,SAC/BD,GAAW,kCAEXA,EAAU,gCAGZ,IAAIE,EAAU,kBAAH,OAAqBF,EAArB,aAAiCH,GAEtB,KAAlBD,EAAQO,MACVJ,EAAUH,EAAQO,MACO,KAAhBP,EAAQQ,MACjBL,EAAUH,EAAQQ,KAGJ,OAAZL,IACFG,GAAW,eAAJ,OAAmBH,EAAnB,kBAGTG,GAAW,YACXN,EAAQE,UAAYI,GAGbG,EAAI,EAAGA,EAAIX,EAAkBY,OAAQD,IAAK,CACjD,IAAIE,EAAY,KAWhB,GAVIC,SAASC,KAAKC,UAAUC,SAASjB,EAAkBW,IACrDE,EAAYC,SAASI,cAAc,WAE5BnB,GAAWe,UAEdf,EAAQiB,UAAUC,SAASjB,EAAkBW,MAC/CE,EAAYd,EAAQmB,cAAc,YAIlC,MAAOL,EAAiD,CAC1D,IAAMM,EAAWN,EAAUO,iBAAiB,6DACxC,MAAOD,GACTA,EAASE,SAAQ,SAACnB,GAEXA,EAAQoB,QAAQ,wBAA2BpB,EAAQc,UAAUC,SAAS,kCACzEf,EAAQc,UAAUO,IAAI,gCACtBtB,EAAmBC,WArEnC,CA6EGsB,OAAQ7B","file":"/js/gli__image-captions.js","sourcesContent":["/**\n * @file\n * GilderLehrman Image Captions behaviors.\n */\n\n(($, Drupal) => {\n /**\n * Create Image Caption for img tag.\n */\n Drupal.behaviors.imageCaptions = {\n attach(context) {\n const imageCaptionPages = [\n \"page__node-type--about-page\",\n \"page__node-type--blog-entry\",\n \"page__node-type--collection-landing-page\",\n \"page__node-type--curriculum-page\",\n \"page__node-type--essay\",\n \"page__node-type--program-event\",\n \"page__node-type--programs-and-events\",\n \"page__node-type--resource\",\n ];\n\n /**\n * Create image captions for images inline in content.\n *\n * @param {Element} element The image.\n */\n const createImageCaption = (element, isModalContext = false) => {\n const orgHtml = element.outerHTML;\n let caption = null;\n let classes = \"\";\n\n if (element.getAttribute(\"class\") !== null) {\n classes = element.getAttribute(\"class\");\n classes += \" gli__image_caption body-image\";\n } else {\n classes = \"gli__image_caption body-image\";\n }\n\n let newHtml = `
${orgHtml}`;\n\n if (element.title !== \"\") {\n caption = element.title;\n } else if (element.alt !== \"\") {\n caption = element.alt;\n }\n\n if (caption !== null) {\n newHtml += `
${caption}
`;\n }\n\n newHtml += `
`;\n element.outerHTML = newHtml;\n };\n\n for (let i = 0; i < imageCaptionPages.length; i++) {\n let container = null;\n if (document.body.classList.contains(imageCaptionPages[i])) {\n container = document.querySelector(\"article\");\n }\n else if (context != document) {\n // Check if in modal.\n if (context.classList.contains(imageCaptionPages[i])) {\n container = context.querySelector(\"article\");\n }\n }\n\n if (typeof container !== \"undefined\" && container !== null) {\n const elements = container.querySelectorAll(\".text img, p img, .introduction img, .field-name-body img\");\n if (typeof elements !== \"undefined\" && elements !== null) {\n elements.forEach((element) => {\n // Do not duplicate captions or generate a caption if this is in a paragraph.\n if (!element.closest(\".media-image-figure\") && !element.classList.contains('gli__image_caption_processed')) {\n element.classList.add(\"gli__image_caption_processed\");\n createImageCaption(element);\n }\n });\n }\n }\n }\n },\n };\n})(jQuery, Drupal);\n"],"sourceRoot":""}