UNPKG

tsx-dom-ssr

Version:

A simple way to use tsx syntax to do async server-side-rendering.

37 lines (36 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setAttributes = setAttributes; const tsx_dom_types_1 = require("tsx-dom-types"); // eslint-disable-next-line @typescript-eslint/no-explicit-any function transferKnownProperties(source, target) { for (const key of Object.keys(source)) { if (key in target) target[key] = source[key]; } } function setAttributes(element, attrs) { for (const name of Object.keys(attrs)) { // Ignore some debug props that might be added by bundlers if (name === "__source" || name === "__self" || name === "tsxTag") continue; const value = attrs[name]; if (name === "class") { const finalValue = (0, tsx_dom_types_1.classnames)(value); if (finalValue) element.setAttribute(name, finalValue); } else if (name === "style" && typeof value !== "string") { // Special handler for style with a value of type CSSStyleDeclaration transferKnownProperties(value, element.style); } else if (name === "dangerouslySetInnerHTML") element.innerHTML = value; else if (value === true) { element.setAttribute(name, name); } else if (value || value === 0 || value === "") { element.setAttribute(name, value.toString()); } } }