@descope/sdk-mixins
Version:
Descope JavaScript SDK mixins
46 lines (43 loc) • 2.36 kB
JavaScript
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