{"version":3,"file":"main.js","sources":["webpack://cwNxWebpackApp/./src/app/styles/styles.css?4c76","webpack://cwNxWebpackApp/./src/app/lazy-pages/lazy-page-home.ts","webpack://cwNxWebpackApp/./src/app/modules/initial.module.ts","webpack://cwNxWebpackApp/./src/app/modules/lazy-base/initialize-lazy-bg-loader.ts","webpack://cwNxWebpackApp/./src/app/modules/lazy-base/initialize-scroll-to-anchor.ts","webpack://cwNxWebpackApp/./src/app/modules/lazy-components/initialize-cookie-popup.ts","webpack://cwNxWebpackApp/./src/app/modules/lazy-components/initialize-footer.ts","webpack://cwNxWebpackApp/./src/app/modules/lazy-components/initialize-header.ts","webpack://cwNxWebpackApp/./src/app/modules/lazy-components/initialize-mobile-menu.ts","webpack://cwNxWebpackApp/./src/app/entries/main.ts"],"sourcesContent":["// extracted by css-extract-rspack-plugin\nexport {};","/**\n * Initializes the page home module by dynamically importing the required module.\n * If the `#pageHome` element is not found, the function exits early.\n *\n * @throws Will throw an error if the page home module fails to load.\n */\nexport const initializePageHomeModule = async (): Promise => {\n const pageHomeElement = document.querySelector('#pageHome');\n\n if (pageHomeElement) {\n try {\n const { pageHome: pageHomeModule } = await import('../pages/page-home');\n\n await pageHomeModule();\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Failed to load page-home module:', error);\n\n throw new Error(\n `Failed to load page-home module: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n }\n};\n","// const APP_FONT = {\n// VARIABLE: 'Commissioner',\n// };\n\nexport const initialModule = {\n /**\n * Asynchronously loads theme CSS and fonts if the theme CSS path is available.\n *\n * This function attempts to load the theme CSS using a lazy style loader, followed by\n * loading the critical and variable fonts using a lazy font loader. If any error occurs\n * during the loading process, it logs the error and rethrows it.\n *\n * @throws Will throw an error if loading the CSS or fonts fails.\n */\n async load(): Promise {\n try {\n // const { lazyFontLoader } = await import(\n // '@ms/shared/utils/loaders/lazy-font-loader'\n // );\n // lazyFontLoader(APP_FONT.VARIABLE);\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error loading initial module:', error);\n\n throw error;\n }\n },\n};\n","/**\n * Initializes the lazy background image loader by dynamically importing the necessary module.\n * If the lazy background image element is not found, the function exits early.\n *\n * @throws Will throw an error if the lazy background image loader fails to initialize.\n */\nexport const initializeLazyBgImageLoader = async (): Promise => {\n const lazyBgElement = document.querySelector('[data-lazy-bg]');\n\n if (!lazyBgElement) return; // Exit if the lazy background image element is not found\n\n try {\n const { lazyBgImageLoader } = await import(\n '@ms/shared/utils/loaders/lazy-bg-image-loader'\n );\n\n lazyBgImageLoader.init();\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error initializing lazy background image loader:', error);\n\n throw new Error(\n `Failed to initialize lazy background image loader: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n};\n","/**\n * Initializes the scroll-to-anchor functionality.\n *\n * This function checks if an element with the `data-scroll` attribute is present.\n * If found, it lazily imports the `scrollToAnchor` module and initializes it.\n * Errors during the import or initialization process are caught, logged, and rethrown.\n *\n * @throws Will throw an error if the scroll-to-anchor module fails to load or initialize.\n */\nexport const initializeScrollToAnchor = async (): Promise => {\n const scrollElement = document.querySelector('[data-scroll]');\n\n if (!scrollElement) {\n return; // Exit if the scroll element is not found\n }\n\n try {\n const { scrollToAnchor } = await import(\n '@ms/shared/utils/scroll-to-anchor'\n );\n\n scrollToAnchor.init();\n } catch (error: unknown) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error';\n\n // eslint-disable-next-line no-console\n console.error(\n `🚨 Failed to load or initialize scroll-to-anchor: ${errorMessage}`,\n );\n\n throw new Error(`Failed to initialize scroll-to-anchor: ${errorMessage}`);\n }\n};\n","/**\n * Initializes the cookiePopup by dynamically importing the necessary module.\n * If cookie-popup element is not found on the page, the function will exit early.\n *\n * @throws Will throw an error if the cookiePopup initialization fails.\n */\nexport const initializeCookiePopup = async (): Promise => {\n const cookiePopupElement =\n document.querySelector('#cookiePopup');\n\n if (!cookiePopupElement) return; // Exit if the cookie-popup element is not found\n\n try {\n const { cookiePopup } = await import('../components/cookie-popup');\n\n cookiePopup.init();\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error initializing cookiePopup:', error);\n\n throw new Error(\n `Failed to initialize cookiePopup: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n};\n","/**\n * Module for lazy-loading footer styles and components when the footer becomes visible\n * in the viewport with a specified offset or is already visible on page load.\n */\nexport const lazyFooter = (() => {\n // eslint-disable-next-line unicorn/no-null\n let footer: HTMLElement | null = null;\n\n /**\n * Dynamically imports the footer styles.\n *\n * @returns A promise that resolves when the styles are successfully loaded.\n */\n const loadFooterStyles = async (): Promise => {\n await import('../../styles/01-components/04-footer/layout/site-footer.css');\n };\n\n /**\n * Dynamically imports the privacy settings popup component.\n *\n * @returns A promise that resolves when the component is successfully loaded.\n */\n const loadPrivacySettingsPopup = async (): Promise => {\n const { privacySettingsPopup } = await import(\n '@custom-writing/shared/components/privacy-settings-popup'\n );\n\n privacySettingsPopup.init();\n };\n\n /**\n * Handles the visibility of the footer and triggers the lazy loading\n * of footer styles and components when the footer becomes visible\n * within the viewport.\n *\n * @param controller - An AbortController to manage the scroll event listener.\n *\n * @returns A promise that resolves when the styles are loaded or rejects if an error occurs.\n *\n * @throws If an error occurs during the loading of the styles or components.\n */\n const onFooterVisible = async (\n controller: AbortController,\n ): Promise => {\n try {\n await loadFooterStyles();\n await loadPrivacySettingsPopup();\n // Abort the scroll event listener after the styles and components are loaded\n controller.abort();\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error loading footer styles:', error);\n\n throw new Error(\n `Failed to load footer styles: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n };\n\n /**\n * Initializes the scroll event listener to check the visibility of the footer.\n * If the footer becomes visible with a 200px offset from the viewport bottom,\n * it triggers the loading of the footer styles and components.\n */\n const initializeFooterOnScroll = (): void => {\n // Create a new AbortController to manage the scroll event listener\n const controller = new AbortController();\n const { signal } = controller;\n\n // Attach a scroll event listener that checks the footer's visibility with an offset\n window.addEventListener(\n 'scroll',\n () => {\n if (\n footer &&\n footer.getBoundingClientRect().top < window.innerHeight + 200\n ) {\n onFooterVisible(controller);\n }\n },\n { signal },\n );\n };\n\n /**\n * Checks if the footer is immediately visible when the page loads.\n * If visible, it loads the footer styles and components immediately.\n * If not, it sets up a scroll event listener to load the styles and components when the footer becomes visible.\n *\n * @returns A promise that resolves when the footer styles and components are either loaded immediately\n * or set up to be loaded on scroll.\n */\n const checkInitialFooterVisibility = async (): Promise => {\n footer = document.querySelector('#siteFooter');\n\n if (footer) {\n const footerRect = footer.getBoundingClientRect();\n\n if (footerRect.top < window.innerHeight + 200) {\n // Footer is already within the offset, load styles immediately\n await loadFooterStyles();\n await loadPrivacySettingsPopup();\n\n return;\n }\n }\n\n // Otherwise, initialize scroll event listener\n initializeFooterOnScroll();\n };\n\n return {\n /**\n * Initializes the module by checking the initial visibility of the footer\n * and setting up the scroll event listener if necessary.\n */\n init: () => checkInitialFooterVisibility(),\n };\n})();\n","/**\n * Dynamically imports the header styles.\n *\n * @returns A promise that resolves when the styles are successfully loaded.\n */\nconst loadHeaderStyles = async (): Promise => {\n await import(\n '../../styles/01-components/01-header/lazy/desktop/menu-dropdown.css'\n );\n};\n\n/**\n * Initializes the header by dynamically importing the necessary module.\n * If the header element is not found on the page, the function will exit early.\n *\n * @throws Will throw an error if the fixed header initialization fails.\n */\nexport const initializeHeader = async (): Promise => {\n const headerElement = document.querySelector('#header');\n\n if (!headerElement) return; // Exit if the header element is not found\n\n const menuDropdownElement =\n document.querySelector('.dmm-dropdown');\n\n try {\n await loadHeaderStyles();\n\n if (menuDropdownElement) {\n const { mainDesktopMenuDropdown } = await import(\n '../components/header/main-desktop-menu-dropdown'\n );\n\n mainDesktopMenuDropdown.init();\n }\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error initializing header:', error);\n\n throw new Error(\n `Failed to initialize header: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n};\n","/**\n * Initializes the mobileMenu by dynamically importing the necessary module from `@custom-writing/shared/components/mobile-menu`.\n * If the element is not found, the function exits early without further action.\n *\n * @throws Will throw an error with a descriptive message if the mobileMenu initialization fails.\n *\n * @returns A promise that resolves when the mobileMenu is successfully initialized or does nothing if the element is not found.\n */\nexport const initializeMobileMenu = async (\n callback?: () => void,\n): Promise => {\n const mobileMenuElement =\n document.querySelector('#mobileMenu');\n\n if (!mobileMenuElement) return; // Exit if the mobileMenu element is not found\n\n try {\n const { MobileMenu } = await import(\n '@custom-writing/shared/components/mobile-menu'\n );\n\n MobileMenu.init(callback);\n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error initializing mobileMenu:', error);\n\n throw new Error(\n `Failed to initialize mobileMenu: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n};\n","import '../styles/styles.css';\n\nimport { initializePageHomeModule } from '../lazy-pages/lazy-page-home';\nimport { initialModule } from '../modules/initial.module';\nimport { initializeLazyBgImageLoader } from '../modules/lazy-base/initialize-lazy-bg-loader';\nimport { initializeScrollToAnchor } from '../modules/lazy-base/initialize-scroll-to-anchor';\nimport { initializeCookiePopup } from '../modules/lazy-components/initialize-cookie-popup';\nimport { lazyFooter } from '../modules/lazy-components/initialize-footer';\nimport { initializeHeader } from '../modules/lazy-components/initialize-header';\nimport { initializeMobileMenu } from '../modules/lazy-components/initialize-mobile-menu';\n\n// eslint-disable-next-line unicorn/prefer-top-level-await\n(async () => {\n try {\n await initialModule.load();\n\n initializeScrollToAnchor();\n initializeLazyBgImageLoader();\n initializeCookiePopup();\n\n initializeHeader();\n initializeMobileMenu();\n lazyFooter.init();\n\n // Initialize specific page modules.\n initializePageHomeModule();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('🚨 Error loading main module:', error);\n }\n})();\n"],"names":["initializePageHomeModule","pageHomeElement","_ref","pageHomeModule","error","document","console","Error","_instanceof","String","initialModule","load","initializeLazyBgImageLoader","lazyBgElement","lazyBgImageLoader","initializeScrollToAnchor","scrollElement","scrollToAnchor","errorMessage","initializeCookiePopup","cookiePopupElement","cookiePopup","lazyFooter","footer","loadFooterStyles","loadPrivacySettingsPopup","privacySettingsPopup","onFooterVisible","controller","initializeFooterOnScroll","AbortController","signal","window","checkInitialFooterVisibility","footerRect","loadHeaderStyles","initializeHeader","headerElement","menuDropdownElement","mainDesktopMenuDropdown","initializeMobileMenu","callback","mobileMenuElement","MobileMenu"],"mappings":"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"}