UNPKG

@descope/sdk-mixins

Version:
46 lines (43 loc) 2.36 kB
import { __classPrivateFieldGet } from 'tslib'; import { createSingletonMixin, compose } from '@descope/sdk-helpers'; import { initLifecycleMixin } from '../initLifecycleMixin.js'; import { loggerMixin } from '../loggerMixin/loggerMixin.js'; import { attributesObserver } from './helpers.js'; const observeAttributesMixin = createSingletonMixin((superclass) => { var _ObserveAttributesMixinClass_observeMappings, _a; const BaseClass = compose(loggerMixin, initLifecycleMixin)(superclass); return _a = class ObserveAttributesMixinClass extends BaseClass { constructor() { super(...arguments); _ObserveAttributesMixinClass_observeMappings.set(this, {}); } async init() { var _b; await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this)); attributesObserver(this, (attrName) => { var _b; (_b = __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) === null || _b === void 0 ? void 0 : _b.forEach((cb) => { cb(attrName, this.getAttribute(attrName)); }); }); } observeAttribute(attrName, onAttrChange) { if (!__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) { __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName] = []; } const idx = __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].push(onAttrChange); return () => __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].splice(idx, 1); } observeAttributes(attrs, cb) { const unobserveList = attrs.reduce((acc, attrName) => { acc.push(this.observeAttribute(attrName, cb)); return acc; }, []); return () => unobserveList.forEach((unobserve) => unobserve()); } }, _ObserveAttributesMixinClass_observeMappings = new WeakMap(), _a; }); export { observeAttributesMixin }; //# sourceMappingURL=observeAttributesMixin.js.map