let observer; let components = { "reimagine-container": { "importPath": "./es/base/container/index.js", "dependencies": [] }, "reimagine-base-ui-shell": { "importPath": "./es/base/ui-shell/index.js", "dependencies": [] }, "reimagine-high-impact-accordion": { "importPath": "./es/blades/high-impact-accordion/index.js", "dependencies": [] }, "reimagine-action-bar": { "importPath": "./es/components/action-bar/index.js", "dependencies": [] }, "reimagine-announcement": { "importPath": "./es/components/announcement/index.js", "dependencies": [] }, "reimagine-back-to-top": { "importPath": "./es/components/back-to-top/index.js", "dependencies": [] }, "reimagine-badge": { "importPath": "./es/components/badge/index.js", "dependencies": [] }, "reimagine-breadcrumbs": { "importPath": "./es/components/breadcrumbs/index.js", "dependencies": [] }, "reimagine-button": { "importPath": "./es/components/button/index.js", "dependencies": [] }, "reimagine-button-group": { "importPath": "./es/components/button-group/index.js", "dependencies": [] }, "reimagine-card-group": { "importPath": "./es/components/card-group/index.js", "dependencies": [] }, "reimagine-collapse": { "importPath": "./es/components/collapse/index.js", "dependencies": [] }, "reimagine-divider": { "importPath": "./es/components/divider/index.js", "dependencies": [] }, "reimagine-filter-item-with-nested-list": { "importPath": "./es/components/filter-item-with-nested-list/index.js", "dependencies": [] }, "reimagine-filter-list": { "importPath": "./es/components/filter-list/index.js", "dependencies": [] }, "reimagine-flyout": { "importPath": "./es/components/flyout/index.js", "dependencies": [] }, "reimagine-heading-block": { "importPath": "./es/components/heading-block/index.js", "dependencies": [] }, "reimagine-icon": { "importPath": "./es/components/icon/index.js", "dependencies": [] }, "reimagine-inline-price": { "importPath": "./es/components/inline-price/index.js", "dependencies": [] }, "reimagine-link": { "importPath": "./es/components/link/index.js", "dependencies": [] }, "reimagine-link-group": { "importPath": "./es/components/link-group/index.js", "dependencies": [] }, "reimagine-link-list": { "importPath": "./es/components/link-list/index.js", "dependencies": [] }, "reimagine-list-item": { "importPath": "./es/components/list-item/index.js", "dependencies": [] }, "reimagine-media": { "importPath": "./es/components/media/index.js", "dependencies": [] }, "reimagine-media-player": { "importPath": "./es/components/media-player/index.js", "dependencies": [] }, "reimagine-media-text-stack": { "importPath": "./es/components/media-text-stack/index.js", "dependencies": [] }, "reimagine-modal": { "importPath": "./es/components/modal/index.js", "dependencies": [] }, "reimagine-pill": { "importPath": "./es/components/pill/index.js", "dependencies": [] }, "reimagine-qrcode": { "importPath": "./es/components/qrcode/index.js", "dependencies": [] }, "reimagine-rolling-text": { "importPath": "./es/components/rolling-text/index.js", "dependencies": [] }, "reimagine-search": { "importPath": "./es/components/search/index.js", "dependencies": [] }, "reimagine-section-title": { "importPath": "./es/components/section-title/index.js", "dependencies": [] }, "reimagine-selector-slider": { "importPath": "./es/components/selector-slider/index.js", "dependencies": [] }, "reimagine-share": { "importPath": "./es/components/share/index.js", "dependencies": [] }, "reimagine-show-more-show-less": { "importPath": "./es/components/show-more-show-less/index.js", "dependencies": [] }, "reimagine-star-rating": { "importPath": "./es/components/star-rating/index.js", "dependencies": [] }, "reimagine-stat": { "importPath": "./es/components/stat/index.js", "dependencies": [] }, "reimagine-sticky": { "importPath": "./es/components/sticky/index.js", "dependencies": [] }, "reimagine-text-block": { "importPath": "./es/components/text-block/index.js", "dependencies": [] }, "reimagine-layout": { "importPath": "./es/base/layout/layout/index.js", "dependencies": [] }, "reimagine-layout-column": { "importPath": "./es/base/layout/layout-column/index.js", "dependencies": [] }, "reimagine-banner-featured": { "importPath": "./es/blades/banner/banner-featured/index.js", "dependencies": [] }, "reimagine-banner-heading": { "importPath": "./es/blades/banner/banner-heading/index.js", "dependencies": [] }, "reimagine-banner-news": { "importPath": "./es/blades/banner/banner-news/index.js", "dependencies": [] }, "reimagine-banner-search": { "importPath": "./es/blades/banner/banner-search/index.js", "dependencies": [] }, "reimagine-cta-banner": { "importPath": "./es/blades/banner/cta-banner/index.js", "dependencies": [] }, "reimagine-section-with-media": { "importPath": "./es/blades/banner/section-with-media/index.js", "dependencies": [] }, "reimagine-section-with-quote": { "importPath": "./es/blades/banner/section-with-quote/index.js", "dependencies": [] }, "reimagine-statement-banner": { "importPath": "./es/blades/banner/statement-banner/index.js", "dependencies": [] }, "reimagine-banner-testimonial": { "importPath": "./es/blades/banner/testimonial/index.js", "dependencies": [] }, "reimagine-featured": { "importPath": "./es/blades/card-grid/featured/index.js", "dependencies": [] }, "reimagine-featured-stack": { "importPath": "./es/blades/card-grid/featured-stack/index.js", "dependencies": [] }, "reimagine-card-grid-logo-wall": { "importPath": "./es/blades/card-grid/logo-wall/index.js", "dependencies": [] }, "reimagine-media-text-stacked": { "importPath": "./es/blades/card-grid/media-text-stacked/index.js", "dependencies": [] }, "reimagine-mixed-stack": { "importPath": "./es/blades/card-grid/mixed-stack/index.js", "dependencies": [] }, "reimagine-card-grid-product": { "importPath": "./es/blades/card-grid/product/index.js", "dependencies": [] }, "reimagine-card-grid-staggered": { "importPath": "./es/blades/card-grid/staggered/index.js", "dependencies": [] }, "reimagine-carousel-card-grid": { "importPath": "./es/blades/carousel/card-grid/index.js", "dependencies": [] }, "reimagine-carousel-featured": { "importPath": "./es/blades/carousel/featured/index.js", "dependencies": [] }, "reimagine-carousel-storytelling": { "importPath": "./es/blades/carousel/story-telling/index.js", "dependencies": [] }, "reimagine-editorial-agenda": { "importPath": "./es/blades/editorial/agenda/index.js", "dependencies": [] }, "reimagine-editorial-featured": { "importPath": "./es/blades/card-grid/featured/index.js", "dependencies": [] }, "reimagine-story-grid": { "importPath": "./es/blades/editorial/story-grid/index.js", "dependencies": [] }, "reimagine-features-and-pricng-3-col": { "importPath": "./es/blades/features-and-pricing/3-col/index.js", "dependencies": [] }, "reimagine-pricing-grid": { "importPath": "./es/blades/features-and-pricing/pricing-grid/index.js", "dependencies": [] }, "reimagine-features-and-pricing-product-highlight": { "importPath": "./es/blades/features-and-pricing/product-highlight/index.js", "dependencies": [] }, "reimagine-hero-ai-search": { "importPath": "./es/blades/hero/ai-search/index.js", "dependencies": [] }, "reimagine-hero-article": { "importPath": "./es/blades/hero/article/index.js", "dependencies": [] }, "reimagine-hero-author": { "importPath": "./es/blades/hero/author/index.js", "dependencies": [] }, "reimagine-hero-category": { "importPath": "./es/blades/hero/category/index.js", "dependencies": [] }, "reimagine-hero-featured": { "importPath": "./es/blades/hero/featured/index.js", "dependencies": [] }, "reimagine-hero-featured-xl-video": { "importPath": "./es/blades/hero/featured-xl-video/index.js", "dependencies": [] }, "reimagine-hero-dynamic-text": { "importPath": "./es/blades/hero/hero-dynamic-text/index.js", "dependencies": [] }, "reimagine-hero-impact": { "importPath": "./es/blades/hero/hero-impact/index.js", "dependencies": [] }, "reimagine-hero-tabs": { "importPath": "./es/blades/hero/hero-tabs/index.js", "dependencies": [] }, "reimagine-hero-product": { "importPath": "./es/blades/hero/product/index.js", "dependencies": [] }, "reimagine-hero-quicklinks": { "importPath": "./es/blades/hero/quicklinks/index.js", "dependencies": [] }, "reimagine-hero-search": { "importPath": "./es/blades/hero/search/index.js", "dependencies": [] }, "reimagine-logo-testimonials": { "importPath": "./es/blades/high-impact/logo-testimonials/index.js", "dependencies": [] }, "reimagine-media-demo": { "importPath": "./es/blades/high-impact/media-demo/index.js", "dependencies": [] }, "reimagine-high-impact-media-tabs": { "importPath": "./es/blades/high-impact/media-tabs/index.js", "dependencies": [] }, "reimagine-high-impact-product-accordion": { "importPath": "./es/blades/high-impact/product-accordion/index.js", "dependencies": [] }, "reimagine-high-impact-vertical-tabs": { "importPath": "./es/blades/high-impact/vertical-tabs/index.js", "dependencies": [] }, "reimagine-immersive-scroll": { "importPath": "./es/blades/media/immersive-scroll/index.js", "dependencies": [] }, "reimagine-media-video": { "importPath": "./es/blades/media/media-video/index.js", "dependencies": [] }, "reimagine-media-with-caption": { "importPath": "./es/blades/media/media-with-caption/index.js", "dependencies": [] }, "reimagine-filtered-search": { "importPath": "./es/blades/pricing-hub/filtered-search/index.js", "dependencies": [] }, "reimagine-data-tiles": { "importPath": "./es/blades/stats/data-tiles/index.js", "dependencies": [] }, "reimagine-data-with-caption": { "importPath": "./es/blades/stats/data-with-caption/index.js", "dependencies": [] }, "reimagine-data-with-icon": { "importPath": "./es/blades/stats/data-with-icon/index.js", "dependencies": [] }, "reimagine-stats-featured": { "importPath": "./es/blades/stats/featured/index.js", "dependencies": [] }, "reimagine-timeline": { "importPath": "./es/blades/timeline/timeline/index.js", "dependencies": [] }, "reimagine-timeline-bar": { "importPath": "./es/blades/timeline/timeline-bar/index.js", "dependencies": [] }, "reimagine-timeline-bar-indicator": { "importPath": "./es/blades/timeline/timeline-bar-indicator/index.js", "dependencies": [] }, "reimagine-jumplinks": { "importPath": "./es/blades/utility/jumplinks/index.js", "dependencies": [] }, "reimagine-utility-link-list": { "importPath": "./es/blades/utility/link-list/index.js", "dependencies": [] }, "reimagine-link-media": { "importPath": "./es/blades/utility/link-media/index.js", "dependencies": [] }, "reimagine-logo-footer": { "importPath": "./es/blades/utility/logo-footer/index.js", "dependencies": [] }, "reimagine-long-form-seo": { "importPath": "./es/blades/utility/long-form-seo/index.js", "dependencies": [] }, "reimagine-accordion": { "importPath": "./es/components/accordion/accordion/index.js", "dependencies": [] }, "reimagine-accordion-item": { "importPath": "./es/components/accordion/accordion-item/index.js", "dependencies": [] }, "reimagine-agenda": { "importPath": "./es/components/agenda/agenda/index.js", "dependencies": [] }, "reimagine-agenda-item": { "importPath": "./es/components/agenda/agenda-item/index.js", "dependencies": [] }, "reimagine-ai-powered-assistant": { "importPath": "./es/components/ai/ai-powered-assistant/index.js", "dependencies": [] }, "reimagine-ai-powered-assistant-drawer": { "importPath": "./es/components/ai/ai-powered-assistant-drawer/index.js", "dependencies": [] }, "reimagine-ai-powered-assistant-drawer-pricing-hub": { "importPath": "./es/components/ai/ai-powered-assistant-drawer-pricing-hub/index.js", "dependencies": [] }, "reimagine-ai-search": { "importPath": "./es/components/ai/ai-search/index.js", "dependencies": [] }, "reimagine-card-badge": { "importPath": "./es/components/card/card-badge/index.js", "dependencies": [] }, "reimagine-card-banner": { "importPath": "./es/components/card/card-banner/index.js", "dependencies": [] }, "reimagine-card-case-study": { "importPath": "./es/components/card/card-case-study/index.js", "dependencies": [] }, "reimagine-customer-story": { "importPath": "./es/components/card/card-customerStory/index.js", "dependencies": [] }, "reimagine-card-data": { "importPath": "./es/components/card/card-data/index.js", "dependencies": [] }, "reimagine-card-data-sheet": { "importPath": "./es/components/card/card-data-sheet/index.js", "dependencies": [] }, "reimagine-card-editorial": { "importPath": "./es/components/card/card-editorial/index.js", "dependencies": [] }, "reimagine-card-feature": { "importPath": "./es/components/card/card-feature/index.js", "dependencies": [] }, "reimagine-card-in-hero": { "importPath": "./es/components/card/card-in-hero/index.js", "dependencies": [] }, "reimagine-card-multiaction": { "importPath": "./es/components/card/card-multiaction/index.js", "dependencies": [] }, "reimagine-card-plan-detail": { "importPath": "./es/components/card/card-plan-detail/index.js", "dependencies": [] }, "reimagine-card-product-pricing": { "importPath": "./es/components/card/card-product-pricing/index.js", "dependencies": [] }, "reimagine-card-promo": { "importPath": "./es/components/card/card-promo/index.js", "dependencies": [] }, "reimagine-card-quote": { "importPath": "./es/components/card/card-quote/index.js", "dependencies": [] }, "reimagine-card-split": { "importPath": "./es/components/card/card-split/index.js", "dependencies": [] }, "reimagine-card-stat": { "importPath": "./es/components/card/card-stat/index.js", "dependencies": [] }, "reimagine-card-testimonial": { "importPath": "./es/components/card/card-testimonial/index.js", "dependencies": [] }, "reimagine-card-timer": { "importPath": "./es/components/card/card-timer/index.js", "dependencies": [] }, "reimagine-carousel": { "importPath": "./es/components/carousel/carousel/index.js", "dependencies": [] }, "reimagine-carousel-indicator": { "importPath": "./es/components/carousel/carousel-indicator/index.js", "dependencies": [] }, "reimagine-carousel-item": { "importPath": "./es/components/carousel/carousel-item/index.js", "dependencies": [] }, "reimagine-checklist": { "importPath": "./es/components/checklist/checklist-item/index.js", "dependencies": [] }, "reimagine-dropdown": { "importPath": "./es/components/dropdown/dropdown/index.js", "dependencies": [] }, "reimagine-dropdown-bar": { "importPath": "./es/components/dropdown/dropdown-bar/index.js", "dependencies": [] }, "reimagine-dropdown-trigger": { "importPath": "./es/components/dropdown/dropdown-trigger/index.js", "dependencies": [] }, "reimagine-title-dropdown": { "importPath": "./es/components/dropdown/title-dropdown/index.js", "dependencies": [] }, "reimagine-footnote": { "importPath": "./es/components/footnote/footnote/index.js", "dependencies": [] }, "reimagine-footnote-item": { "importPath": "./es/components/footnote/footnote-item/index.js", "dependencies": [] }, "reimagine-indicator": { "importPath": "./es/components/indicator/indicator/index.js", "dependencies": [] }, "reimagine-indicator-row": { "importPath": "./es/components/indicator/indicator-row/index.js", "dependencies": [] }, "reimagine-checkbox": { "importPath": "./es/components/input/checkbox/index.js", "dependencies": [] }, "reimagine-input": { "importPath": "./es/components/input/input/index.js", "dependencies": [] }, "reimagine-link-bar": { "importPath": "./es/components/link-bar/link-bar/index.js", "dependencies": [] }, "reimagine-link-bar-item": { "importPath": "./es/components/link-bar/link-bar-item/index.js", "dependencies": [] }, "reimagine-logo-tabs": { "importPath": "./es/components/logo-testimonial/logo-tabs/index.js", "dependencies": [] }, "reimagine-logobar": { "importPath": "./es/components/logobar/logobar/index.js", "dependencies": [] }, "reimagine-logobar-item": { "importPath": "./es/components/logobar/logobar-item/index.js", "dependencies": [] }, "reimagine-menu-list": { "importPath": "./es/components/menu-list/menu-list/index.js", "dependencies": [] }, "reimagine-menu-list-item": { "importPath": "./es/components/menu-list/menu-list-item/index.js", "dependencies": [] }, "reimagine-pagination": { "importPath": "./es/components/pagination/pagination/index.js", "dependencies": [] }, "reimagine-pagination-item": { "importPath": "./es/components/pagination/pagination-item/index.js", "dependencies": [] }, "reimagine-popover": { "importPath": "./es/components/popover/popover/index.js", "dependencies": [] }, "reimagine-popover-trigger": { "importPath": "./es/components/popover/popover-trigger/index.js", "dependencies": [] }, "reimagine-pricing-metered-filters": { "importPath": "./es/components/pricing/pricing-metered-filters/index.js", "dependencies": [] }, "reimagine-pricing-metered-table": { "importPath": "./es/components/pricing/pricing-metered-table/index.js", "dependencies": [] }, "reimagine-radiobutton": { "importPath": "./es/components/radiobutton-group/radiobutton/index.js", "dependencies": [] }, "reimagine-radiobutton-group": { "importPath": "./es/components/radiobutton-group/radiobutton-group/index.js", "dependencies": [] }, "reimagine-related-products": { "importPath": "./es/components/related-products/related-products/index.js", "dependencies": [] }, "reimagine-related-products-item": { "importPath": "./es/components/related-products/related-products-item/index.js", "dependencies": [] }, "reimagine-scrollslider": { "importPath": "./es/components/scrollslider/scrollslider/index.js", "dependencies": [] }, "reimagine-scrollslider-item": { "importPath": "./es/components/scrollslider/scrollslider-item/index.js", "dependencies": [] }, "reimagine-secondary-nav": { "importPath": "./es/components/secondary-nav/secondary-nav/index.js", "dependencies": [] }, "reimagine-secondary-nav-item": { "importPath": "./es/components/secondary-nav/secondary-nav-item/index.js", "dependencies": [] }, "reimagine-sku": { "importPath": "./es/components/sku/sku-item/index.js", "dependencies": [] }, "reimagine-statement": { "importPath": "./es/components/statement/statement/index.js", "dependencies": [] }, "reimagine-statement-footer": { "importPath": "./es/components/statement/statement-footer/index.js", "dependencies": [] }, "reimagine-table": { "importPath": "./es/components/table/table/index.js", "dependencies": [] }, "reimagine-tab": { "importPath": "./es/components/tabs/tab/index.js", "dependencies": [] }, "reimagine-tab-compound": { "importPath": "./es/components/tabs/tab-compound/index.js", "dependencies": [] }, "reimagine-tab-item": { "importPath": "./es/components/tabs/tab-item/index.js", "dependencies": [] }, "reimagine-tab-panel": { "importPath": "./es/components/tabs/tab-panel/index.js", "dependencies": [] }, "reimagine-tabs": { "importPath": "./es/components/tabs/tabs/index.js", "dependencies": [] }, "reimagine-tag": { "importPath": "./es/components/tag/tag/index.js", "dependencies": [] }, "reimagine-tag-bar": { "importPath": "./es/components/tag/tag-bar/index.js", "dependencies": [] }, "reimagine-ui-shell": { "importPath": null, "dependencies": [] }, "reimagine-article-header": { "importPath": "./es/blades/editorial/article/article-header/index.js", "dependencies": [] }, "reimagine-article-header-author": { "importPath": "./es/blades/editorial/article/article-header-author/index.js", "dependencies": [] }, "reimagine-editorial-article-chapter": { "importPath": "./es/blades/editorial/article/chapter/index.js", "dependencies": [] }, "reimagine-editorial-article-quote": { "importPath": "./es/blades/editorial/article/quote/index.js", "dependencies": [] }, "reimagine-editorial-article-summary": { "importPath": "./es/blades/editorial/article/summary/index.js", "dependencies": [] }, "reimagine-editorial-article-takeaway": { "importPath": "./es/blades/editorial/article/takeaway/index.js", "dependencies": [] }, "reimagine-hero-featured-slider": { "importPath": "./es/blades/hero/hero-featured-slider/hero-featured-slider/index.js", "dependencies": [] }, "reimagine-hero-featured-slider-item": { "importPath": "./es/blades/hero/hero-featured-slider/hero-featured-slider-item/index.js", "dependencies": [] }, "reimagine-hero-media-carousel": { "importPath": "./es/blades/hero/media-carousel/media-carousel/index.js", "dependencies": [] }, "reimagine-hero-media-carousel-item": { "importPath": "./es/blades/hero/media-carousel/media-carousel-item/index.js", "dependencies": [] }, "reimagine-article-list": { "importPath": "./es/blades/editorial/article/story-summary/article-list/index.js", "dependencies": [] }, "reimagine-story-summary": { "importPath": "./es/blades/editorial/article/story-summary/story-summary/index.js", "dependencies": [] }, "reimagine-article-list-item": { "importPath": "./es/blades/editorial/article/story-summary/article-list-item/index.js", "dependencies": [] } }; const eagerLoad = []; /** Update the lazy-loader configuration at runtime */ export async function updateConfig(config) { if (config.components) { components = { ...components, ...config.components }; } if(config.prefix || config.suffix) { components = getScopedComponents(config.prefix, config.suffix); } if (config.rootElement) { if (observer) { observer.disconnect(); } start(config.rootElement); } if (config.eagerLoad) { await Promise.allSettled(eagerLoad?.map((tagName) => register(tagName))); } } function getScopedComponents(prefix = "", suffix = "") { const scopedComponents = {}; for (const [key, value] of Object.entries(components)) { const newKey = prefix + key + suffix; scopedComponents[newKey] = value; } return scopedComponents; } /** Load any undefined custom elements and load the components in the list */ async function load(root) { const rootTagName = root instanceof Element ? root.tagName.toLowerCase() : ""; const tags = [...root.querySelectorAll(":not(:defined)")]?.map((el) => el.tagName.toLowerCase() ) || []; if (rootTagName.includes("-") && !customElements.get(rootTagName)) { tags.push(rootTagName); } const tagsToRegister = [...new Set(tags)]; await Promise.allSettled(tagsToRegister?.map((tagName) => register(tagName))); } /** Register the component and any dependencies */ function register(tagName) { const component = components[tagName]; if (customElements.get(tagName)) { cleanUp(component, tagName); return Promise.resolve(); } if (!component) { return Promise.resolve(); } return new Promise((resolve, reject) => { import(component.importPath) .then(() => { cleanUp(component, tagName); resolve(); }) .catch(() => { console.error(`Unable to load <${tagName}> from ${component.importPath}`); reject(); }); }); } /** Remove the component from the list of components to load */ function cleanUp(component, tagName) { delete components[tagName]; component.dependencies?.forEach((dependency) => { delete components[dependency]; }); if (!Object.keys(component).length) { observer.disconnect(); } } /** Delay the display of the UI until all components have loaded */ function reduceFOUC() { Promise.allSettled( [...document.querySelectorAll(":not(:defined)")].map((component) => customElements.whenDefined(component.tagName.toLowerCase()) ) ).then(() => document.body.classList.add("wc-loaded")); // Add fallback in case a component fails to load setTimeout(() => document.body.classList.add("wc-loaded"), 200); } /** Initialize the loader */ async function start(root = document.body) { reduceFOUC(); // Eager load any components that are not defined in the Custom Elements Manifest await Promise.allSettled(eagerLoad?.map((tagName) => register(tagName))); // Watch for any new elements that are added to the DOM observer = new MutationObserver((mutations) => { for (const { addedNodes } of mutations) { for (const node of addedNodes) { if (node.nodeType === Node.ELEMENT_NODE) { load(node); } } } }); load(root); observer.observe(root, { subtree: true, childList: true }); } start();