mirror of
https://github.com/jaandrle/deka-dom-el
synced 2025-08-01 00:00:15 +02:00
:tap: removed on.attributeChanged and static observedAttributes
This commit is contained in:
@@ -7,10 +7,10 @@ import { c_ch_o } from "./events-observer.js";
|
||||
*
|
||||
* @param {Element|ShadowRoot} target - The custom element or shadow root to render into
|
||||
* @param {Function} render - The render function that returns content
|
||||
* @param {Function|Object} [props=observedAttributes] - Props to pass to the render function
|
||||
* @param {Function|Object} [props= {}] - Props to pass to the render function
|
||||
* @returns {Node} The rendered content
|
||||
*/
|
||||
export function customElementRender(target, render, props= observedAttributes){
|
||||
export function customElementRender(target, render, props= {}){
|
||||
const custom_element= target.host || target;
|
||||
scope.push({
|
||||
scope: custom_element,
|
||||
@@ -69,15 +69,3 @@ export { lifecyclesToEvents as customElementWithDDE };
|
||||
function wrapMethod(obj, method, apply){
|
||||
obj[method]= new Proxy(obj[method] || (()=> {}), { apply });
|
||||
}
|
||||
|
||||
import { observedAttributes as oA } from "./helpers.js";
|
||||
|
||||
/**
|
||||
* Gets observed attributes for a custom element
|
||||
*
|
||||
* @param {Element} instance - Custom element instance
|
||||
* @returns {Object} Object mapping camelCase attribute names to their values
|
||||
*/
|
||||
export function observedAttributes(instance){
|
||||
return oA(instance, (i, n)=> i.getAttribute(n));
|
||||
}
|
||||
|
@@ -106,35 +106,3 @@ on.disconnectedAsAbort= function(host){
|
||||
host(on.disconnected(()=> a.abort()));
|
||||
return a.signal;
|
||||
};
|
||||
|
||||
/** Store for elements with attribute observers */
|
||||
const els_attribute_store= new WeakSet();
|
||||
|
||||
/**
|
||||
* Creates a function to register attribute change event listeners
|
||||
*
|
||||
* @param {Function} listener - Event handler
|
||||
* @param {Object} [options] - Event listener options
|
||||
* @returns {Function} Function that registers the attribute change listener
|
||||
*/
|
||||
on.attributeChanged= function(listener, options){
|
||||
if(typeof options !== "object")
|
||||
options= {};
|
||||
return function registerElement(element){
|
||||
element.addEventListener(eva, listener, options);
|
||||
if(element[keyLTE] || els_attribute_store.has(element))
|
||||
return element;
|
||||
|
||||
if(!env.M) return element;
|
||||
|
||||
const observer= new env.M(function(mutations){
|
||||
for(const { attributeName, target } of mutations)
|
||||
target.dispatchEvent(
|
||||
new CustomEvent(eva, { detail: [ attributeName, target.getAttribute(attributeName) ] }));
|
||||
});
|
||||
const c= onAbort(options.signal, ()=> observer.disconnect());
|
||||
if(c) observer.observe(element, { attributes: true });
|
||||
//TODO: clean up when element disconnected
|
||||
return element;
|
||||
};
|
||||
};
|
||||
|
@@ -159,7 +159,7 @@ signal.clear= function(...signals){
|
||||
};
|
||||
/** Property key for tracking reactive elements */
|
||||
const key_reactive= "__dde_reactive";
|
||||
import { enviroment as env } from "../dom-common.js";
|
||||
import { enviroment as env, eva } from "../dom-common.js";
|
||||
import { el } from "../dom.js";
|
||||
import { scope } from "../dom.js";
|
||||
import { on } from "../events.js";
|
||||
@@ -265,7 +265,7 @@ const key_attributes= "__dde_attributes";
|
||||
signal.observedAttributes= function(element){
|
||||
const store= element[key_attributes]= {};
|
||||
const attrs= observedAttributes(element, observedAttribute(store));
|
||||
on.attributeChanged(function attributeChangeToSignal({ detail }){
|
||||
on(eva, function attributeChangeToSignal({ detail }){
|
||||
/*! This maps attributes to signals (`S.observedAttributes`).
|
||||
Investigate `__dde_attributes` key of the element. */
|
||||
const [ name, value ]= detail;
|
||||
|
Reference in New Issue
Block a user