/*! * All material copyright ESRI, All Rights Reserved, unless otherwise specified. * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details. * v1.0.0-beta.82 */ 'use strict'; const index = require('./index-5c65e149.js'); const observers = require('./observers-d9fdf006.js'); const observed = new Set(); let mutationObserver; const observerOptions = { childList: true }; /** * Helper to set up a conditional slot component on connectedCallback. */ function connectConditionalSlotComponent(component) { if (!mutationObserver) { mutationObserver = observers.createObserver("mutation", processMutations); } mutationObserver.observe(component.el, observerOptions); } /** * Helper to tear down a conditional slot component on disconnectedCallback. */ function disconnectConditionalSlotComponent(component) { observed.delete(component.el); // we explicitly process queued mutations and disconnect and reconnect // the observer until MutationObserver gets an `unobserve` method // see https://github.com/whatwg/dom/issues/126 processMutations(mutationObserver.takeRecords()); mutationObserver.disconnect(); for (const [element] of observed.entries()) { mutationObserver.observe(element, observerOptions); } } function processMutations(mutations) { mutations.forEach(({ target }) => { index.forceUpdate(target); }); } exports.connectConditionalSlotComponent = connectConditionalSlotComponent; exports.disconnectConditionalSlotComponent = disconnectConditionalSlotComponent;