@ribajs/core
Version:
Core module of Riba.js
63 lines • 5.23 kB
JavaScript
import { Binder } from "../binder.js";
import { isCustomElement, waitForCustomElement } from "@ribajs/utils";
const NO_RIBA_COMPONENT_ERROR_MESSAGE = '[componentAttributeBinder] You can only use the "rv-co-*" binder on Riba components, but "{tagName}" is not registered.';
export class ComponentAttributeBinder extends Binder {
static key = "co-*";
publishes = true;
componentAttributeObserver;
attributeName;
__routine(el, value) {
const attrName = this.args[0].trim();
if (el.setBinderAttribute) {
el.setBinderAttribute(attrName, value);
}
else {
console.warn(NO_RIBA_COMPONENT_ERROR_MESSAGE.replace("{tagName}", el.tagName), el);
}
}
async routine(el, value) {
if (isCustomElement(el, true, true)) {
this.__routine(el, value);
}
else if (isCustomElement(el, true)) {
await waitForCustomElement(el);
this.__routine(el, value);
}
else {
console.warn(NO_RIBA_COMPONENT_ERROR_MESSAGE.replace("{tagName}", el.tagName), el);
}
}
__bind(el) {
this.attributeName = this.args[0].toString().trim();
if (typeof el.observeAttribute !== "function") {
console.warn(NO_RIBA_COMPONENT_ERROR_MESSAGE.replace("{tagName}", el.tagName), el);
return;
}
this.componentAttributeObserver = el.observeAttribute(this.attributeName, {
sync: () => {
this.publish();
},
});
}
async bind(el) {
if (isCustomElement(el, true, true)) {
this.__bind(el);
}
else if (isCustomElement(el, true)) {
await waitForCustomElement(el);
this.__bind(el);
}
else {
console.warn(NO_RIBA_COMPONENT_ERROR_MESSAGE.replace("{tagName}", el.tagName), el);
}
}
unbind() {
this.componentAttributeObserver?.unobserve();
}
getValue(el) {
const attrName = this.args[0].trim();
const val = el.getBinderAttribute(attrName);
return val;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tYXR0cmlidXRlLmJpbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZXJzL2NvLWF0dHJpYnV0ZS5iaW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE1BQU0sK0JBQStCLEdBQ25DLHlIQUF5SCxDQUFDO0FBTTVILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxNQUEyQjtJQUN2RSxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBRVAsMEJBQTBCLENBQVk7SUFDdEMsYUFBYSxDQUFVO0lBRXZCLFNBQVMsQ0FBQyxFQUFrQixFQUFFLEtBQVU7UUFDaEQsTUFBTSxRQUFRLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsSUFBSSxDQUNWLCtCQUErQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUNoRSxFQUFFLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFrQixFQUFFLEtBQVU7UUFDMUMsSUFBSSxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FDViwrQkFBK0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFDaEUsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVTLE1BQU0sQ0FBQyxFQUFrQjtRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM5QyxPQUFPLENBQUMsSUFBSSxDQUNWLCtCQUErQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUNoRSxFQUFFLENBQ0gsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3hFLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFrQjtRQUMzQixJQUFJLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FDViwrQkFBK0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFDaEUsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFrQjtRQUN6QixNQUFNLFFBQVEsR0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMifQ==