UNPKG

@ribajs/core

Version:

Core module of Riba.js

63 lines 5.23 kB
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==