/*! * 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.97 */ 'use strict'; const index = require('./index-a0010f96.js'); const observers = require('./observers-5706326b.js'); const observed = new Set(); let mutationObserver; const observerOptions = { childList: true }; /** * Helper to set up a conditional slot component on connectedCallback. * * @param component */ 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. * * @param component */ 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;