{"version":3,"file":"iabills.js","names":["$","Drupal","once","behaviors","myCustomBehavior","attach","context","settings","isSafari","test","navigator","userAgent","forEach","dropdown","button","find","dropdownMenu","each","label","this","attr","divGroup","divOptGroup","text","append","optionText","optionValue","val","divOption","replaceWith","on","event","preventDefault","stopPropagation","e","toggleClass","document","target","closest","length","removeClass","selectedText","selectedValue","trigger","html","optgroupWrapValue","parent","select","selectedTextSafari","optgroupWrapValueSafari","firstOption","first","doc","srcValue","element","mapster","mapKey","fill","fillColor","fillOpacity","stroke","strokeWidth","strokeColor","singleSelect","render_highlight","strokeOpacity","staticState","onConfigured","imageElement","mapName","replace","mapElement","hoverTimeout","areaElement","clearTimeout","setTimeout","currentPopup","data","fadeOut","css","popupId","popup","areaCoords","split","areaTop","parseInt","mapContainer","mapContainerOffset","offset","popupHeight","outerHeight","viewportHeight","window","height","scrollTop","popupTop","top","popupLeft","left","width","display","opacity","remove","imageUrl","overlay","imagePopup","popupContent","position","backgroundColor","zIndex","fadeIn","addClass","transform","offsetTop","bindEventHandlersToMapAreas","jQuery"],"sources":["iabills.js"],"mappings":"CAAA,SAAWA,EAAGC,EAAQC,GACpBD,EAAOE,UAAUC,iBAAmB,CAClCC,OAAQ,SAAUC,EAASC,GAEzB,SAASC,IACP,MAAO,iCAAiCC,KAAKC,UAAUC,UACzD,CAGAT,EAAK,qBAAsB,mBAAoBI,GAASM,SAAQ,SAAUC,GACxE,MAAMC,EAASd,EAAEa,GAAUE,KAAK,qBAC1BC,EAAehB,EAAEa,GAAUE,KAAK,kBAElCP,KACFR,EAAEa,GAAUE,KAAK,YAAYE,MAAK,WAChC,MAAMC,EAAQlB,EAAEmB,MAAMC,KAAK,SAErBC,EAAWrB,EAAE,iCAAiCoB,KAAK,aAAcF,GACjEI,EAActB,EAAE,4BAA4BuB,KAAKL,GAEvDG,EAASG,OAAOF,GAEhBtB,EAAEmB,MAAMJ,KAAK,UAAUE,MAAK,WAC1B,MAAMQ,EAAazB,EAAEmB,MAAMI,OACrBG,EAAc1B,EAAEmB,MAAMQ,MACtBC,EAAY5B,EAAE,0BAA0BuB,KAAKE,GAAYL,KAAK,QAASM,GAC7EL,EAASG,OAAOI,EAClB,IAEA5B,EAAEmB,MAAMU,YAAYR,GAEpBA,EAASS,GAAG,SAAS,SAASC,GAC5BA,EAAMC,iBACND,EAAME,iBACR,GACF,IAGFjC,EAAEc,GAAQgB,GAAG,SAAS,SAAUI,GAC9BA,EAAED,kBACFjC,EAAEgB,GAAcmB,YAAY,OAC9B,IAEAnC,EAAEoC,UAAUN,GAAG,SAAS,SAAUC,GAC3B/B,EAAE+B,EAAMM,QAAQC,QAAQ,oBAAoBC,QAC/CvC,EAAEgB,GAAcwB,YAAY,OAEhC,IAEIhC,IACFR,EAAEgB,GAAcD,KAAK,WAAWe,GAAG,SAAS,WAC1C,MAAMW,EAAezC,EAAEmB,MAAMI,OACvBmB,EAAgB1C,EAAEmB,MAAMC,KAAK,SACnCpB,EAAE,kBAAkB2B,IAAIe,GAAeC,QAAQ,UAC/C3C,EAAEgB,GAAcwB,YAAY,QAC5BxC,EAAEc,GAAQ8B,KAAKH,EACjB,IAEAzC,EAAEgB,GAAcD,KAAK,UAAUe,GAAG,SAAS,WACzC,MAAMW,EAAezC,EAAEmB,MAAMI,OACvBmB,EAAgB1C,EAAEmB,MAAMQ,MAC9B3B,EAAE,kBAAkB2B,IAAIe,GAAeC,QAAQ,UAC/C3C,EAAEgB,GAAcwB,YAAY,QAC5B,IAAIK,EAAoB7C,EAAEmB,MAAM2B,SAAS1B,KAAK,SAC9CpB,EAAEc,GAAQ8B,KAAKC,EAAoB,MAAQJ,EAC7C,GAGJ,IAEAvC,EAAK,aAAc,iBAAkBI,GAASM,SAAQ,SAAUmC,GAC9D/C,EAAE+C,GAAQjB,GAAG,UAAU,WACrB,IAAIW,EAAezC,EAAEmB,MAAMJ,KAAK,mBAAmBQ,OAC/CsB,EAAoB7C,EAAEmB,MAAMmB,QAAQ,oBAAoBvB,KAAK,2BAA2BK,KAAK,SAE7FZ,IACFR,EAAEmB,MAAMmB,QAAQ,oBAAoBvB,KAAK,yCAAyCe,GAAG,SAAS,WAC5F,IAAIkB,EAAqBhD,EAAEmB,MAAMI,OAC7B0B,EAA0BjD,EAAEmB,MAAMmB,QAAQ,kBAAkBlB,KAAK,cACrEpB,EAAE,qBAAqBuB,KAAK0B,EAA0B,MAAQD,EAChE,IAGAhD,EAAE,qBAAqBuB,KAAKsB,EAAoB,MAAQJ,EAE5D,GACF,IAEAvC,EAAK,iBAAkB,mBAAoBI,GAASM,SAAQ,SAAUC,GACpE,IAAIqC,EAAclD,EAAEa,GAAUE,KAAK,yBAAyBoC,QAExD3C,MACF0C,EAAclD,EAAEa,GAAUE,KAAK,0BAA0BoC,SAG3D,IAEIN,EAFAH,EAAgBQ,EAAYvB,MAC5Bc,EAAeS,EAAY3B,OAG3Bf,KACFkC,EAAgBQ,EAAY9B,KAAK,SACjCyB,EAAoB7C,EAAEa,GAAUE,KAAK,iCAAiCK,KAAK,eAE3EyB,EAAoB7C,EAAEa,GAAUE,KAAK,2BAA2BK,KAAK,SAGvEpB,EAAE,kBAAkB2B,IAAIe,GAAeC,QAAQ,UAC/C3C,EAAEa,GAAUE,KAAK,qBAAqB6B,KAAKC,EAAoB,MAAQJ,EACzE,IAGAvC,EAAK,gBAAiB,qBAAsBI,GAASM,SAAQ,SAAUwC,GACrE,MAAMC,EAAWrD,EAAEoD,GAAKhC,KAAK,OACzBiC,GACFrD,EAAE,sBAAsBoB,KAAK,OAAQiC,EAEzC,IAIAnD,EAAK,cAAe,4BAA6BI,GAASM,SAAQ,SAAU0C,GAC1EtD,EAAEsD,GAASC,QAAQ,CACjBC,OAAQ,iBACRC,KAAM,QACNC,UAAW,SACXC,YAAa,EACbC,QAAQ,EACRC,YAAa,EACbC,YAAa,SACbC,cAAc,EACdC,iBAAkB,CAChBP,MAAM,EACNC,UAAW,SACXC,YAAa,GACbM,cAAe,GAEjBC,aAAa,EACbC,aAAc,YAMlB,SAAqCC,GACnC,IAAIC,EAAUrE,EAAEoE,GAAchD,KAAK,UACnC,IAAKiD,EAAS,OAEdA,EAAUA,EAAQC,QAAQ,IAAK,IAC/B,IAAIC,EAAavE,EAAE,aAAeqE,EAAU,KAAM/D,GAClD,GAA0B,IAAtBiE,EAAWhC,OAAc,OAE7BvC,EAAE,OAAQuE,GAAYtD,MAAK,WACzB,IACIuD,EADAC,EAActD,KAGlBnB,EAAEyE,GAAa3C,GAAG,cAAc,WAC9B4C,aAAaF,GACbA,EAAeG,YAAW,WACxB,MAAMC,EAAe5E,EAAE,sBAAuBM,GAG9C,GAFmBN,EAAE,qBAENuC,OAAS,EAAG,OAE3B,GAAIqC,EAAarC,OAAQ,CACAqC,EAAaC,KAAK,eAClB7E,EAAEyE,GAAaI,KAAK,cAGzCD,EAAaE,UAAUC,IAAI,UAAW,IAE1C,CAEA,MAAMC,EAAUhF,EAAEyE,GAAaI,KAAK,aAC9BI,EAAQjF,EAAE,IAAMgF,EAAS1E,GAE/B,GAAI2E,EAAM1C,OAAQ,CAChB,MAAM2C,EAAalF,EAAEyE,GAAarD,KAAK,UAAU+D,MAAM,KAEjDC,GADWC,SAASH,EAAW,GAAI,IACzBG,SAASH,EAAW,GAAI,KAExC,IAAII,EAAetF,EAAEoE,GAAc9B,QAAQ,wBACf,IAAxBgD,EAAa/C,SAAc+C,EAAetF,EAAEoE,IAEhD,MAAMmB,EAAqBD,EAAaE,SAClCC,EAAcR,EAAMS,cACpBC,EAAiB3F,EAAE4F,QAAQC,SAC3BC,EAAY9F,EAAE4F,QAAQE,YAG5B,IAAIC,EAAWX,EAAUG,EAAmBS,IAAM,GAG9CD,EAAWN,EAAcE,EAAiBG,IAC5CC,EAAWJ,EAAiBG,EAAYL,EAAc,IAIpDM,EAAWD,EAAY,KACzBC,EAAWD,EAAY,IAGzB,MAAMG,EAAYV,EAAmBW,KAAOZ,EAAaa,QAAU,GAEnElB,EAAMF,IAAI,CAAEiB,IAAKD,EAAW,KAAMG,KAAMD,EAAY,KAAMG,QAAS,QAASC,QAAS,GACvF,CACF,GAAG,IACL,IAEArG,EAAEyE,GAAa3C,GAAG,cAAc,WAC9B4C,aAAaF,EACf,IAEAxE,EAAEyE,GAAa3C,GAAG,SAAS,SAAUC,GACnCA,EAAMC,iBACNhC,EAAE,gCAAgCsG,SAGlCtG,EAAE,eAAe8E,UAAUC,IAAI,UAAW,KAE1C,MAAMwB,EAAWvG,EAAEmB,MAAM0D,KAAK,mBACxBG,EAAUhF,EAAEmB,MAAM0D,KAAK,aAE7B,GAAI0B,GAAYvB,EAAS,CACvB,MAAMwB,EAAUxG,EAAE,qCACZyG,EAAazG,EAAE,6HAGHuG,+KAMlBvG,EAAE,QAAQwB,OAAOgF,GAAShF,OAAOiF,GAEjC,MAAMC,EAAe1G,EAAE,IAAMgF,EAAS1E,GAASsC,OAC/C5C,EAAE,yBAAyB4C,KAAK8D,GAEhCF,EAAQzB,IAAI,CACV4B,SAAU,QACVX,IAAK,EACLE,KAAM,EACNC,MAAO,OACPN,OAAQ,OACRe,gBAAiB,2BACjBC,OAAQ,MAGVJ,EAAWK,SAASC,SAAS,QAAQhC,IAAI,CACvC4B,SAAU,QACVX,IAAK,MACLE,KAAM,MACNc,UAAW,wBACXH,OAAQ,MAGV,MAEMI,GAFcR,EAAW1F,KAAK,OAAO2E,cACrBe,EAAW1F,KAAK,yBAAyB2E,eACb,EAAI,EACtDe,EAAW1F,KAAK,yBAAyBgE,IAAI,aAAckC,GAE3DR,EAAW1F,KAAK,gBAAgBe,GAAG,SAAS,WAC1C0E,EAAQF,SACRG,EAAWH,QACb,IAEAE,EAAQ1E,GAAG,SAAS,WAClB0E,EAAQF,SACRG,EAAWH,QACb,GACF,CACF,GACF,GACF,CAvIMY,CAA4B5D,EAC9B,GAEJ,GAqIF,EAEH,CApRD,CAoRG6D,OAAQlH,OAAQC","sourcesContent":["(function ($, Drupal, once) {\n Drupal.behaviors.myCustomBehavior = {\n attach: function (context, settings) {\n\n function isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n\n // BEGIN CUSTOM DROPDOWN\n once('customDropdownInit', '.custom-dropdown', context).forEach(function (dropdown) {\n const button = $(dropdown).find('.dropdown-trigger');\n const dropdownMenu = $(dropdown).find('.dropdown-menu');\n\n if (isSafari()) {\n $(dropdown).find('optgroup').each(function () {\n const label = $(this).attr('label');\n \n const divGroup = $('
').attr('data-label', label);\n const divOptGroup = $('').text(label); \n\n divGroup.append(divOptGroup);\n\n $(this).find('option').each(function () {\n const optionText = $(this).text();\n const optionValue = $(this).val();\n const divOption = $('').text(optionText).attr('value', optionValue);\n divGroup.append(divOption); \n });\n\n $(this).replaceWith(divGroup);\n\n divGroup.on('click', function(event) {\n event.preventDefault();\n event.stopPropagation();\n });\n });\n }\n\n $(button).on('click', function (e) {\n e.stopPropagation();\n $(dropdownMenu).toggleClass('open');\n });\n\n $(document).on('click', function (event) {\n if (!$(event.target).closest('.custom-dropdown').length) {\n $(dropdownMenu).removeClass('open');\n }\n });\n\n if (isSafari()) {\n $(dropdownMenu).find('.option').on('click', function () {\n const selectedText = $(this).text();\n const selectedValue = $(this).attr('value');\n $('#bill-selector').val(selectedValue).trigger('change');\n $(dropdownMenu).removeClass('open');\n $(button).html(selectedText);\n });\n } else {\n $(dropdownMenu).find('option').on('click', function () {\n const selectedText = $(this).text();\n const selectedValue = $(this).val();\n $('#bill-selector').val(selectedValue).trigger('change');\n $(dropdownMenu).removeClass('open');\n var optgroupWrapValue = $(this).parent().attr('label');\n $(button).html(optgroupWrapValue + \" > \" + selectedText);\n });\n }\n \n });\n\n once('selectSync', '#bill-selector', context).forEach(function (select) {\n $(select).on('change', function () {\n var selectedText = $(this).find('option:selected').text();\n var optgroupWrapValue = $(this).closest('.custom-dropdown').find('.dropdown-menu optgroup').attr('label');\n \n if (isSafari()) {\n $(this).closest('.custom-dropdown').find('.dropdown-menu .optgroup-wrap .option').on('click', function () {\n var selectedTextSafari = $(this).text(); \n var optgroupWrapValueSafari = $(this).closest('.optgroup-wrap').attr('data-label'); \n $('.dropdown-trigger').text(optgroupWrapValueSafari + \" > \" + selectedTextSafari); \n });\n } else {\n // console.log(\"optgroupWrapValue: \" + optgroupWrapValue);\n $('.dropdown-trigger').text(optgroupWrapValue + \" > \" + selectedText);\n }\n });\n });\n \n once('autoSelectInit', '.custom-dropdown', context).forEach(function (dropdown) {\n var firstOption = $(dropdown).find('.dropdown-menu option').first();\n \n if (isSafari()) {\n firstOption = $(dropdown).find('.dropdown-menu .option').first();\n }\n \n var selectedValue = firstOption.val();\n var selectedText = firstOption.text();\n var optgroupWrapValue;\n \n if (isSafari()) {\n selectedValue = firstOption.attr('value');\n optgroupWrapValue = $(dropdown).find('.dropdown-menu .optgroup-wrap').attr('data-label');\n } else {\n optgroupWrapValue = $(dropdown).find('.dropdown-menu optgroup').attr('label');\n }\n \n $('#bill-selector').val(selectedValue).trigger('change');\n $(dropdown).find('.dropdown-trigger').html(optgroupWrapValue + \" > \" + selectedText); // Update the dropdown trigger with optgroup-wrap value and selected text\n });\n \n\n once('copySrcToHref', '.ia-bill--main-doc', context).forEach(function (doc) {\n const srcValue = $(doc).attr('src');\n if (srcValue) {\n $('#open-mobile-popup').attr('href', srcValue);\n }\n });\n // END OF CUSTOM DROPDOWN\n\n // MAPSTER LOGIC\n once(\"mapsterInit\", \"#bill-display img[usemap]\", context).forEach(function (element) {\n $(element).mapster({\n mapKey: \"data-bill-area\",\n fill: \"false\",\n fillColor: \"ffffff\",\n fillOpacity: 0,\n stroke: true,\n strokeWidth: 4,\n strokeColor: \"878800\",\n singleSelect: true,\n render_highlight: {\n fill: true,\n fillColor: \"cfdf00\",\n fillOpacity: 0.4,\n strokeOpacity: 0,\n },\n staticState: true,\n onConfigured: function () {\n bindEventHandlersToMapAreas(element);\n }\n });\n });\n\n function bindEventHandlersToMapAreas(imageElement) {\n var mapName = $(imageElement).attr('usemap');\n if (!mapName) return;\n\n mapName = mapName.replace('#', '');\n var mapElement = $('map[name=\"' + mapName + '\"]', context);\n if (mapElement.length === 0) return;\n\n $('area', mapElement).each(function () {\n var areaElement = this;\n var hoverTimeout;\n\n $(areaElement).on('mouseenter', function () {\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(function () {\n const currentPopup = $(\".bill-popup:visible\", context);\n const imagePopup = $(\".image-popup.show\");\n\n if (imagePopup.length > 0) return;\n\n if (currentPopup.length) {\n const currentPopupId = currentPopup.data(\"bill-area\");\n const hoveredPopupId = $(areaElement).data(\"bill-area\");\n\n if (currentPopupId !== hoveredPopupId) {\n currentPopup.fadeOut().css(\"opacity\", \"0\");\n }\n }\n\n const popupId = $(areaElement).data(\"bill-area\");\n const popup = $(\"#\" + popupId, context);\n\n if (popup.length) {\n const areaCoords = $(areaElement).attr(\"coords\").split(\",\");\n const areaLeft = parseInt(areaCoords[0], 10);\n const areaTop = parseInt(areaCoords[1], 10);\n\n let mapContainer = $(imageElement).closest('[id^=\"mapster_wrap\"]');\n if (mapContainer.length === 0) mapContainer = $(imageElement);\n\n const mapContainerOffset = mapContainer.offset();\n const popupHeight = popup.outerHeight();\n const viewportHeight = $(window).height();\n const scrollTop = $(window).scrollTop();\n\n // Calculate the top position for the popup\n let popupTop = areaTop + mapContainerOffset.top - 70;\n\n // Ensure the popup is not cut off at the bottom of the viewport\n if (popupTop + popupHeight > viewportHeight + scrollTop) {\n popupTop = viewportHeight + scrollTop - popupHeight - 10; // Adjust to fit within the viewport\n }\n\n // Ensure the popup is not positioned too high\n if (popupTop < scrollTop + 10) {\n popupTop = scrollTop + 10; // Adjust to fit within the viewport\n }\n\n const popupLeft = mapContainerOffset.left + mapContainer.width() + 20;\n\n popup.css({ top: popupTop + \"px\", left: popupLeft + \"px\", display: \"block\", opacity: 1 });\n }\n }, 100);\n });\n\n $(areaElement).on(\"mouseleave\", function () {\n clearTimeout(hoverTimeout);\n });\n\n $(areaElement).on(\"click\", function (event) {\n event.preventDefault();\n $(\".popup-overlay, .image-popup\").remove();\n\n // Close all .bill-popup elements before opening the new .image-popup\n $(\".bill-popup\").fadeOut().css(\"opacity\", \"0\");\n\n const imageUrl = $(this).data(\"bill-area-image\");\n const popupId = $(this).data(\"bill-area\");\n\n if (imageUrl && popupId) {\n const overlay = $('');\n const imagePopup = $(`\n