@descope/sdk-mixins
Version:
Descope JavaScript SDK mixins
48 lines (44 loc) • 2.44 kB
JavaScript
;
var tslib = require('tslib');
var sdkHelpers = require('@descope/sdk-helpers');
var initLifecycleMixin = require('../initLifecycleMixin.js');
var loggerMixin = require('../loggerMixin/loggerMixin.js');
var helpers = require('./helpers.js');
const observeAttributesMixin = sdkHelpers.createSingletonMixin((superclass) => {
var _ObserveAttributesMixinClass_observeMappings, _a;
const BaseClass = sdkHelpers.compose(loggerMixin.loggerMixin, initLifecycleMixin.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));
helpers.attributesObserver(this, (attrName) => {
var _b;
(_b = tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) === null || _b === void 0 ? void 0 : _b.forEach((cb) => {
cb(attrName, this.getAttribute(attrName));
});
});
}
observeAttribute(attrName, onAttrChange) {
if (!tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) {
tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName] = [];
}
const idx = tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].push(onAttrChange);
return () => tslib.__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;
});
exports.observeAttributesMixin = observeAttributesMixin;
//# sourceMappingURL=observeAttributesMixin.js.map