1
0
mirror of https://github.com/jaandrle/deka-dom-el synced 2025-07-01 20:32:13 +02:00

🐛 update dom-common.js setDelete to setDeleteAttr

This commit is contained in:
2023-09-19 12:34:42 +02:00
parent 1df797e316
commit 78fdb45ea7
8 changed files with 386 additions and 369 deletions

View File

@ -1,8 +1,8 @@
/** @type {Map<string, boolean>} */
export const prop_cache= new Map(JSON.parse('[["#text,textContent",true],["HTMLElement,textContent",true],["HTMLElement,className",true]]'));
export const prop_process= { setDelete };
export const prop_process= { setDeleteAttr };
import { isUndef } from './helpers.js';
function setDelete(obj, prop, val){
function setDeleteAttr(obj, prop, val){
/* Issue
For some native attrs you can unset only to set empty string.
This can be confusing as it is seen in inspector `<… id=""`.

View File

@ -36,7 +36,7 @@ export function createElement(tag, attributes, ...connect){
export { createElement as el };
import { prop_cache, prop_process } from './dom-common.js';
const { setDelete }= prop_process;
const { setDeleteAttr }= prop_process;
export function assign(element, ...attributes){
const s= signals(this);
if(!attributes.length) return element;
@ -71,7 +71,7 @@ export function assign(element, ...attributes){
if(!is_svg) break;
return element.appendChild(document.createTextNode(attr));
}
return isPropSetter(element, key) ? setDelete(element, key, attr) : setRemoveAttr(key, attr);
return isPropSetter(element, key) ? setDeleteAttr(element, key, attr) : setRemoveAttr(key, attr);
});
return element;
}
@ -109,7 +109,8 @@ function getPropDescriptor(p, key, level= 0){
}
/** @template {Record<any, any>} T @param {T} obj @param {(param: [ keyof T, T[keyof T] ])=> void} cb */
function forEachEntries(obj, cb){ return Object.entries(obj).forEach(([ key, val ])=> cb(key, val)); }
function forEachEntries(obj, cb){ return Object.entries(obj).forEach(([ key, val ])=> key && cb(key, val)); }
function setRemove(obj, prop, key, val){ return obj[ (isUndef(val) ? "remove" : "set") + prop ](key, val); }
function setRemoveNS(obj, prop, key, val, ns= null){ return obj[ (isUndef(val) ? "remove" : "set") + prop + "NS" ](ns, key, val); }
function setDelete(obj, key, val){ Reflect.set(obj, key, val); if(!isUndef(val)) return; return Reflect.deleteProperty(obj, key); }