PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /home/distinctdesign/codenwebz.com/website-design-3/js/
Server: Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
IP: 162.0.232.53
Choose File :

Url:
Dir : /home/distinctdesign/codenwebz.com/website-design-3/js/ada.js

document.addEventListener('DOMContentLoaded', () => {

	// Set aria-label on nav elements
	const navContainers = document.querySelectorAll('.aria-label-js');
	if (navContainers.length > 0) {
		navContainers.forEach(container => {
			const labelText = container.getAttribute('aria-label');
			const navElement = container.querySelector('nav');
			if (labelText && navElement) {
				navElement.setAttribute('aria-label', labelText);
				container.removeAttribute('aria-label');
			}
		});
	}

// Breakdance form messages
(() => {
  const formMessageSelector = '.breakdance-form-message';

  const applyA11yAttributesToFormMessageElement = (formMessageElement) => {
    const isHtmlElement = formMessageElement instanceof HTMLElement;

    if (isHtmlElement) {
      formMessageElement.setAttribute('role', 'status');
      formMessageElement.setAttribute('aria-live', 'polite');

      const hasTabindexAttribute = formMessageElement.hasAttribute('tabindex');
      if (!hasTabindexAttribute) {
        formMessageElement.setAttribute('tabindex', '-1');
      }
    }
  };

  const focusFormMessageElementAfterPaint = (formMessageElement) => {
    const isHtmlElement = formMessageElement instanceof HTMLElement;

    if (isHtmlElement) {
      requestAnimationFrame(() => {
        formMessageElement.focus({ preventScroll: true });

        requestAnimationFrame(() => {
          const isFocused = document.activeElement === formMessageElement;
          if (!isFocused) {
            formMessageElement.focus({ preventScroll: true });
          }
        });
      });
    }
  };

  const applyA11yAndFocusForFormMessageElement = (formMessageElement) => {
    const isHtmlElement = formMessageElement instanceof HTMLElement;

    if (isHtmlElement) {
      applyA11yAttributesToFormMessageElement(formMessageElement);
      focusFormMessageElementAfterPaint(formMessageElement);
    }
  };

  const processAllExistingFormMessageElements = () => {
    const formMessageElementList = document.querySelectorAll(formMessageSelector);
    formMessageElementList.forEach((formMessageElement) => {
      applyA11yAndFocusForFormMessageElement(formMessageElement);
    });
  };

  const handleAddedNodeForFormMessage = (addedNode) => {
    const isHtmlElement = addedNode instanceof HTMLElement;

    if (isHtmlElement) {
      if (addedNode.matches?.(formMessageSelector)) {
        applyA11yAndFocusForFormMessageElement(addedNode);
      } else {
        const nestedFormMessageElement = addedNode.querySelector?.(formMessageSelector);
        if (nestedFormMessageElement) {
          applyA11yAndFocusForFormMessageElement(nestedFormMessageElement);
        }
      }
    }
  };

  const handleMutationRecordList = (mutationRecordList) => {
    mutationRecordList.forEach((mutationRecord) => {
      if (mutationRecord.type === 'childList') {
        mutationRecord.addedNodes.forEach((addedNode) => {
          handleAddedNodeForFormMessage(addedNode);
        });
      }
    });
  };

  const startBreakdanceFormMessageObserver = () => {
    processAllExistingFormMessageElements();

    const breakdanceFormMessageMutationObserver = new MutationObserver((mutationRecordList) => {
      handleMutationRecordList(mutationRecordList);
    });

    breakdanceFormMessageMutationObserver.observe(document.body, {
      childList: true,
      subtree: true,
    });
  };

  startBreakdanceFormMessageObserver();
})();


// Breakdamce blockquote
(() => {
  const blockquoteElements = document.querySelectorAll('.bde-blockquote');

  if (blockquoteElements.length > 0) {
    blockquoteElements.forEach((blockquoteElement) => {
      blockquoteElement.setAttribute('role', 'blockquote');
    });
  }
})();

  // Chat bubble close button
  const closeChatLabelText = 'Close chat widget';
  const chatWidgetSelector = 'chat-widget';

  const applyCloseChatLabelToRoot = (searchRootNode) => {
    const buttonNodeList = searchRootNode.querySelectorAll('button');

    buttonNodeList.forEach((buttonElement) => {
      const existingAriaLabel = buttonElement.getAttribute('aria-label');
      const existingTitle = buttonElement.getAttribute('title');
      const buttonText = (buttonElement.textContent || '').trim().toLowerCase();
      const buttonClassText = (buttonElement.className || '').toString().toLowerCase();
      const buttonTestIdText = (buttonElement.getAttribute('data-testid') || '').toLowerCase();
      const hasSvgIcon = !!buttonElement.querySelector('svg');

      const looksLikeCloseButton =
        buttonTestIdText.includes('close') ||
        buttonClassText.includes('close') ||
        buttonText === '×' ||
        buttonText === 'x';

      if (!existingAriaLabel && hasSvgIcon && looksLikeCloseButton) {
        buttonElement.setAttribute('aria-label', closeChatLabelText);
      }

      if (!existingTitle && hasSvgIcon && looksLikeCloseButton) {
        buttonElement.setAttribute('title', closeChatLabelText);
      }
    });
  };

  const applyCloseChatLabel = () => {
    const chatWidgetElementList = document.querySelectorAll(chatWidgetSelector);

    chatWidgetElementList.forEach((chatWidgetElement) => {
      const widgetShadowRoot = chatWidgetElement.shadowRoot;

      if (widgetShadowRoot) {
        applyCloseChatLabelToRoot(widgetShadowRoot);
      }

      applyCloseChatLabelToRoot(chatWidgetElement);
    });
  };

  const domMutationObserver = new MutationObserver(() => {
    applyCloseChatLabel();
  });

  applyCloseChatLabel();

  domMutationObserver.observe(document.documentElement, {
    childList: true,
    subtree: true
  });

// Modal window landmarks
(() => {
  const modalTitleId = 'get-fired-modal-title';
  const modalDescriptionId = 'get-fired-modal-description';

  let popupRootObserver = null;
  let bodyInsertionObserver = null;
  let isApplyQueued = false;

  const disconnectPopupRootObserver = () => {
    if (popupRootObserver) {
      popupRootObserver.disconnect();
      popupRootObserver = null;
    }
  };

  const disconnectBodyInsertionObserver = () => {
    if (bodyInsertionObserver) {
      bodyInsertionObserver.disconnect();
      bodyInsertionObserver = null;
    }
  };

  const applyGetFiredModalA11y = () => {
    const minimizedPopupRootElement = document.getElementById('get-fired-minimized');
    const modalPanelElement = minimizedPopupRootElement ? minimizedPopupRootElement.querySelector('.breakdance-popup') : null;
    const modalTitleElement = minimizedPopupRootElement ? minimizedPopupRootElement.querySelector('.bde-text-18152-148') : null;
    const modalDescriptionElement = minimizedPopupRootElement ? minimizedPopupRootElement.querySelector('.bde-rich-text-18152-149') : null;

    if (modalTitleElement && !modalTitleElement.id) {
      modalTitleElement.id = modalTitleId;
    }

    if (modalDescriptionElement && !modalDescriptionElement.id) {
      modalDescriptionElement.id = modalDescriptionId;
    }

    if (modalPanelElement) {
      modalPanelElement.setAttribute('role', 'dialog');
      modalPanelElement.setAttribute('aria-modal', 'true');

      if (modalTitleElement && modalTitleElement.id) {
        modalPanelElement.setAttribute('aria-labelledby', modalTitleElement.id);
      }

      if (modalDescriptionElement && modalDescriptionElement.id) {
        modalPanelElement.setAttribute('aria-describedby', modalDescriptionElement.id);
      }
    }
  };

  const queueApplyGetFiredModalA11y = () => {
    if (!isApplyQueued) {
      isApplyQueued = true;

      requestAnimationFrame(() => {
        isApplyQueued = false;
        applyGetFiredModalA11y();
      });
    }
  };

  const observePopupRootElement = () => {
    const minimizedPopupRootElement = document.getElementById('get-fired-minimized');

    disconnectPopupRootObserver();

    if (minimizedPopupRootElement) {
      popupRootObserver = new MutationObserver(() => {
        queueApplyGetFiredModalA11y();
      });

      popupRootObserver.observe(minimizedPopupRootElement, {
        childList: true,
        subtree: true
      });
    }
  };

  const observeForPopupInsertion = () => {
    const documentBodyElement = document.body;

    disconnectPopupRootObserver();

    if (documentBodyElement) {
      popupRootObserver = new MutationObserver(() => {
        const minimizedPopupRootElement = document.getElementById('get-fired-minimized');

        if (minimizedPopupRootElement) {
          observePopupRootElement();
          queueApplyGetFiredModalA11y();
        }
      });

      popupRootObserver.observe(documentBodyElement, {
        childList: true,
        subtree: true
      });
    }
  };

  const startGetFiredModalA11y = () => {
    const minimizedPopupRootElement = document.getElementById('get-fired-minimized');

    applyGetFiredModalA11y();

    if (minimizedPopupRootElement) {
      observePopupRootElement();
    } else {
      observeForPopupInsertion();
    }
  };

  if (document.body) {
    startGetFiredModalA11y();
  } else {
    bodyInsertionObserver = new MutationObserver(() => {
      if (document.body) {
        disconnectBodyInsertionObserver();
        startGetFiredModalA11y();
      }
    });

    bodyInsertionObserver.observe(document.documentElement, {
      childList: true,
      subtree: true
    });
  }
})();

// Chat widget landmarks
(() => {
  const chatLandmarkRoleValue = 'complementary';
  const chatLandmarkLabelValue = 'Live chat';

  let applyQueuedFlag = false;
  let bodyObserverInstance = null;

  const applyChatWidgetLandmark = () => {
    const chatWidgetElement = document.querySelector('chat-widget');

    if (chatWidgetElement) {
      chatWidgetElement.setAttribute('role', chatLandmarkRoleValue);
      chatWidgetElement.setAttribute('aria-label', chatLandmarkLabelValue);
    }
  };

  const queueApplyChatWidgetLandmark = () => {
    if (!applyQueuedFlag) {
      applyQueuedFlag = true;

      requestAnimationFrame(() => {
        applyQueuedFlag = false;
        applyChatWidgetLandmark();
      });
    }
  };

  const observeBodyForChatWidget = () => {
    const bodyElement = document.body;

    if (bodyElement) {
      if (bodyObserverInstance) {
        bodyObserverInstance.disconnect();
        bodyObserverInstance = null;
      }

      bodyObserverInstance = new MutationObserver(() => {
        queueApplyChatWidgetLandmark();
      });

      bodyObserverInstance.observe(bodyElement, { childList: true, subtree: true });
    }
  };

  applyChatWidgetLandmark();
  observeBodyForChatWidget();
})();
	
// FAQs announcement
(() => {
  const faqComponentSelector = '.bde-frequently-asked-questions'
  const faqToggleButtonSelector = 'button[aria-controls]'
  const faqAnswerRegionSelector = '.bde-faq__answer'

  const setRegionAriaHiddenFromExpanded = (faqToggleButtonElement) => {
    const expandedAttributeValue = faqToggleButtonElement.getAttribute('aria-expanded')
    const isExpanded = expandedAttributeValue === 'true'

    const faqItemElement = faqToggleButtonElement.closest('.bde-faq__item')
    if (faqItemElement) {
      const faqAnswerRegionElement = faqItemElement.querySelector(faqAnswerRegionSelector)
      if (faqAnswerRegionElement) {
        faqAnswerRegionElement.setAttribute('aria-hidden', isExpanded ? 'false' : 'true')
      }
    }
  }

  const syncAllFaqComponents = () => {
    const faqComponentElements = document.querySelectorAll(faqComponentSelector)

    faqComponentElements.forEach((faqComponentElement) => {
      const faqToggleButtonElements = faqComponentElement.querySelectorAll(faqToggleButtonSelector)
      faqToggleButtonElements.forEach((faqToggleButtonElement) => {
        setRegionAriaHiddenFromExpanded(faqToggleButtonElement)
      })
    })
  }

  const observeFaqComponents = () => {
    const ariaExpandedObserver = new MutationObserver((mutationRecordList) => {
      mutationRecordList.forEach((mutationRecord) => {
        const isAriaExpandedAttributeChange = mutationRecord.type === 'attributes' && mutationRecord.attributeName === 'aria-expanded'
        const changedElementIsButton = mutationRecord.target instanceof HTMLElement && mutationRecord.target.matches(faqToggleButtonSelector)

        if (isAriaExpandedAttributeChange && changedElementIsButton) {
          setRegionAriaHiddenFromExpanded(mutationRecord.target)
        }
      })
    })

    ariaExpandedObserver.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['aria-expanded'],
      subtree: true
    })
  }

  syncAllFaqComponents()
  observeFaqComponents()
})();

// Breakdance Tooltips
(() => {
  const tooltipSelector = '.bde-tooltip[data-tippy-content]';

  const ensureFocusable = (tooltipElement) => {
    tooltipElement.removeAttribute('aria-expanded');

    const iconElement = tooltipElement.querySelector('.tooltip-icon');
    const triggerElement = iconElement || tooltipElement;

    // ALWAYS enforce focusability
    triggerElement.setAttribute('tabindex', '0');
    triggerElement.setAttribute('role', 'button');

    // Ensure accessible name
    const hasAccessibleName =
      triggerElement.getAttribute('aria-label') ||
      triggerElement.textContent.trim().length > 0;

    if (!hasAccessibleName) {
      const temp = document.createElement('div');
      temp.innerHTML = tooltipElement.getAttribute('data-tippy-content') || '';
      const text = (temp.textContent || '').trim();

      if (text) {
        triggerElement.setAttribute('aria-label', text);
      }
    }
  };

  const patchAll = () => {
    document.querySelectorAll(tooltipSelector).forEach((tooltipElement) => {
      ensureFocusable(tooltipElement);
    });
  };

  const observer = new MutationObserver(() => {
    patchAll();
  });

  observer.observe(document.documentElement, {
    childList: true,
    subtree: true
  });

  patchAll();
})();

});


// Breakdance tooltips keyboard support
document.addEventListener('focusin', (event) => {
  const tooltipElement = event.target.closest('.bde-tooltip');
  if (tooltipElement && tooltipElement._tippy) {
    tooltipElement._tippy.show();
  }
});

document.addEventListener('focusout', (event) => {
  const tooltipElement = event.target.closest('.bde-tooltip');
  if (tooltipElement && tooltipElement._tippy) {
    tooltipElement._tippy.hide();
  }
});

document.addEventListener('keydown', (event) => {
  const tooltipElement = event.target.closest('.bde-tooltip');
  if (!tooltipElement || !tooltipElement._tippy) return;

  if (event.key === 'Enter' || event.key === ' ') {
    event.preventDefault();
    tooltipElement._tippy.show();
  }

  if (event.key === 'Escape') {
    tooltipElement._tippy.hide();
  }
});

// Chat bubble toggle focus (shadow root)
const applyLeadConnectorBubbleFocusRingOverride = () => {
  const chatWidgetElement = document.querySelector('chat-widget');

  const shadowRootNode =
    chatWidgetElement &&
    chatWidgetElement.shadowRoot
      ? chatWidgetElement.shadowRoot
      : null;

  const hasShadowRoot = !!shadowRootNode;
  const hasHostMarker =
    !!chatWidgetElement && chatWidgetElement.getAttribute('data-ada-lc-focus-ring') === '1';

  const overrideCssText = `
    button.lc_text-widget--bubble.lc_text-widget--bubble:focus,
    button.lc_text-widget--bubble.lc_text-widget--bubble:focus-visible{
      outline-style: solid !important;
      outline-width: 3px !important;
      outline-color: #000 !important;
      outline-offset: 3px !important;
      box-shadow: 0 0 0 6px #F6DC3B !important;
    }
  `;

  const canUseConstructedStylesheets =
    hasShadowRoot &&
    'adoptedStyleSheets' in shadowRootNode &&
    'replaceSync' in CSSStyleSheet.prototype;

  if (hasShadowRoot && !hasHostMarker && canUseConstructedStylesheets) {
    const overrideStyleSheet = new CSSStyleSheet();
    overrideStyleSheet.replaceSync(overrideCssText);

    const existingAdoptedStyleSheetList = shadowRootNode.adoptedStyleSheets || [];
    shadowRootNode.adoptedStyleSheets = [...existingAdoptedStyleSheetList, overrideStyleSheet];

    chatWidgetElement.setAttribute('data-ada-lc-focus-ring', '1');
  }

  if (hasShadowRoot && !hasHostMarker && !canUseConstructedStylesheets) {
    const styleElementId = 'ada-lc-bubble-focus-ring';
    const existingStyleElement = shadowRootNode.getElementById(styleElementId);

    if (!existingStyleElement) {
      const styleElement = document.createElement('style');
      styleElement.id = styleElementId;
      styleElement.textContent = overrideCssText;
      shadowRootNode.appendChild(styleElement);
      chatWidgetElement.setAttribute('data-ada-lc-focus-ring', '1');
    }
  }
};

applyLeadConnectorBubbleFocusRingOverride();

// Retry once when focus enters the widget (covers late stylesheet injection)
document.addEventListener(
  'focusin',
  () => {
    applyLeadConnectorBubbleFocusRingOverride();
  },
  true
);