1
0
mirror of https://github.com/jaandrle/deka-dom-el synced 2024-11-22 16:55:23 +01:00
deka-dom-el/jsdom.js
2023-09-13 21:39:24 +02:00

52 lines
1.3 KiB
JavaScript

//TODO: https://www.npmjs.com/package/html-element
import { prop_process } from './src/dom-common.js';
const { setDelete }= prop_process;
/** @param {HTMLElement} obj */
prop_process.setDelete= function(obj, prop, value){
if("checked"!==prop) return setDelete(obj, prop, value);
if(value) return obj.setAttribute("checked", "");
obj.removeAttribute("checked");
};
const keys= [ "HTMLElement", "SVGElement", "DocumentFragment", "MutationObserver", "document" ];
let dom_last;
export let namespace;
export let createElement;
export let el;
export let assign;
export let classListDeclarative;
export let empty;
export let on;
export let dispatchEvent;
export async function register(dom, keys_aditional= []){
if(dom_last===dom)
return import("./index.js");
keys.push(...keys_aditional);
const w= dom.window;
keys.forEach(key=> globalThis[key]= w[key]);
globalThis.window= w;
w.console= globalThis.console;
const m= await import("./index.js");
namespace= m.namespace;
createElement= m.createElement;
el= m.el;
assign= m.assign;
classListDeclarative= m.classListDeclarative;
empty= m.empty;
on= m.on;
dispatchEvent= m.dispatchEvent;
return m;
}
export function unregister(){
if(!dom_last)
return false;
keys.forEach(key=> Reflect.deleteProperty(globalThis, key));
Reflect.deleteProperty(globalThis, "window");
dom_last= undefined;
return true;
}