function html_direction(element) {
let is_ltr = element.matches(":dir(ltr)");
let is_rtl = element.matches(":dir(rtl)");
if (is_ltr == is_rtl) {
return "error";
}
return is_ltr ? "ltr" : "rtl";
}
function setup_tree(light_tree, shadow_tree) {
let body = document.body;
let old_length = body.childNodes.length;
body.insertAdjacentHTML("beforeend", light_tree.trim());
if (body.childNodes.length != old_length + 1) {
throw "unexpected markup";
}
let result = body.lastChild;
if (shadow_tree) {
let shadow = result.querySelector("#root").attachShadow({mode: "open"});
shadow.innerHTML = shadow_tree.trim();
return [result, shadow];
}
return result;
}