UNPKG

@tempots/dom

Version:

Fully-typed frontend framework alternative to React and Angular

789 lines (788 loc) 46.5 kB
import { Renderable, SplitNValue } from '../types/domain'; import { Signal, Value } from '@tempots/core'; /** * Creates a renderable for an HTML attribute with the specified name and value. * * This is the functional equivalent of using `attr[name](value)` with a dynamic attribute name. * * The `class` attribute is special and can be used multiple times on the same element. * Multiple class values will be merged together. * * @param name - The name of the attribute. * @param value - The value of the attribute (can be a literal or Signal). * @returns A renderable that sets the attribute. * @example * ```ts * const button = html.button( * Attr('type', 'button'), * Attr('disabled', disabledSignal), * // Multiple class attributes * Attr('class', 'btn btn-primary'), * Attr('class', 'active'), // Both classes will be applied * // ... * ) * ``` * @public */ export declare const Attr: (name: string, value: unknown) => Renderable; /** * The `attr` object allows to create any HTML attribute. Either a literal value * or `Signal<?>` can be passed as a value. The type of the value is inferred * from the attribute name. * * @example * ```ts * const button = html.button( * attr.type('button'), * attr.disabled(disabled), // where disabled is a `Signal<boolean>` * // ... * ) * ``` * @public */ export declare const attr: { accept: (value: SplitNValue<string>) => Renderable; 'accept-charset': (value: SplitNValue<string>) => Renderable; accesskey: (value: SplitNValue<string>) => Renderable; action: (value: SplitNValue<string>) => Renderable; align: (value: SplitNValue<string>) => Renderable; allow: (value: SplitNValue<string>) => Renderable; allowfullscreen: (value: SplitNValue<boolean>) => Renderable; allowpaymentrequest: (value: SplitNValue<boolean>) => Renderable; alt: (value: SplitNValue<string>) => Renderable; as: (value: SplitNValue<string>) => Renderable; async: (value: SplitNValue<boolean>) => Renderable; autocapitalize: (value: SplitNValue<"none" | "off" | "on" | "sentences" | "words" | "characters">) => Renderable; autocomplete: (value: SplitNValue<string>) => Renderable; autofocus: (value: SplitNValue<boolean>) => Renderable; autoplay: (value: SplitNValue<boolean>) => Renderable; bgcolor: (value: SplitNValue<string>) => Renderable; border: (value: SplitNValue<string>) => Renderable; capture: (value: SplitNValue<boolean | "user" | "environment">) => Renderable; charset: (value: SplitNValue<string>) => Renderable; checked: (value: SplitNValue<boolean>) => Renderable; cite: (value: SplitNValue<string>) => Renderable; class: (value: SplitNValue<string>) => Renderable; color: (value: SplitNValue<string>) => Renderable; cols: (value: SplitNValue<number>) => Renderable; colspan: (value: SplitNValue<number>) => Renderable; content: (value: SplitNValue<string>) => Renderable; contenteditable: (value: SplitNValue<boolean | "true" | "false" | "plaintext-only">) => Renderable; controls: (value: SplitNValue<string>) => Renderable; coords: (value: SplitNValue<string>) => Renderable; crossorigin: (value: SplitNValue<"" | "anonymous" | "use-credentials">) => Renderable; data: (value: SplitNValue<string>) => Renderable; datetime: (value: SplitNValue<string>) => Renderable; decoding: (value: SplitNValue<"sync" | "async" | "auto">) => Renderable; default: (value: SplitNValue<string>) => Renderable; defer: (value: SplitNValue<string>) => Renderable; dir: (value: SplitNValue<"auto" | "ltr" | "rtl">) => Renderable; dirname: (value: SplitNValue<string>) => Renderable; disabled: (value: SplitNValue<boolean>) => Renderable; download: (value: SplitNValue<string>) => Renderable; draggable: (value: SplitNValue<boolean | "true" | "false">) => Renderable; dropzone: (value: SplitNValue<string>) => Renderable; enctype: (value: SplitNValue<string>) => Renderable; enterkeyhint: (value: SplitNValue<"enter" | "done" | "go" | "next" | "previous" | "search" | "send">) => Renderable; for: (value: SplitNValue<string>) => Renderable; form: (value: SplitNValue<string>) => Renderable; formaction: (value: SplitNValue<string>) => Renderable; formenctype: (value: SplitNValue<string>) => Renderable; formmethod: (value: SplitNValue<string>) => Renderable; formnovalidate: (value: SplitNValue<boolean>) => Renderable; formtarget: (value: SplitNValue<string>) => Renderable; headers: (value: SplitNValue<string>) => Renderable; height: (value: SplitNValue<string>) => Renderable; hidden: (value: SplitNValue<boolean | "" | "until-found" | "hidden">) => Renderable; high: (value: SplitNValue<string>) => Renderable; href: (value: SplitNValue<string>) => Renderable; hreflang: (value: SplitNValue<string>) => Renderable; 'http-equiv': (value: SplitNValue<string>) => Renderable; icon: (value: SplitNValue<string>) => Renderable; id: (value: SplitNValue<string>) => Renderable; imagesizes: (value: SplitNValue<string>) => Renderable; imagesrcset: (value: SplitNValue<string>) => Renderable; inputmode: (value: SplitNValue<"none" | "text" | "search" | "decimal" | "numeric" | "tel" | "email" | "url">) => Renderable; integrity: (value: SplitNValue<string>) => Renderable; is: (value: SplitNValue<string>) => Renderable; ismap: (value: SplitNValue<string>) => Renderable; itemid: (value: SplitNValue<string>) => Renderable; itemprop: (value: SplitNValue<string>) => Renderable; itemref: (value: SplitNValue<string>) => Renderable; itemscope: (value: SplitNValue<boolean>) => Renderable; itemtype: (value: SplitNValue<string>) => Renderable; keytype: (value: SplitNValue<string>) => Renderable; kind: (value: SplitNValue<string>) => Renderable; label: (value: SplitNValue<string>) => Renderable; lang: (value: SplitNValue<string>) => Renderable; language: (value: SplitNValue<string>) => Renderable; list: (value: SplitNValue<string>) => Renderable; loading: (value: SplitNValue<"eager" | "lazy">) => Renderable; loop: (value: SplitNValue<string>) => Renderable; low: (value: SplitNValue<string>) => Renderable; manifest: (value: SplitNValue<string>) => Renderable; max: (value: SplitNValue<number>) => Renderable; maxlength: (value: SplitNValue<number>) => Renderable; media: (value: SplitNValue<string>) => Renderable; method: (value: SplitNValue<string>) => Renderable; min: (value: SplitNValue<number>) => Renderable; minlength: (value: SplitNValue<number>) => Renderable; multiple: (value: SplitNValue<boolean>) => Renderable; muted: (value: SplitNValue<boolean>) => Renderable; name: (value: SplitNValue<string>) => Renderable; nonce: (value: SplitNValue<string>) => Renderable; novalidate: (value: SplitNValue<string>) => Renderable; open: (value: SplitNValue<string>) => Renderable; optimum: (value: SplitNValue<string>) => Renderable; part: (value: SplitNValue<string>) => Renderable; pattern: (value: SplitNValue<string>) => Renderable; ping: (value: SplitNValue<string>) => Renderable; placeholder: (value: SplitNValue<string>) => Renderable; playsinline: (value: SplitNValue<boolean>) => Renderable; popover: (value: SplitNValue<"" | "auto" | "manual">) => Renderable; popovertarget: (value: SplitNValue<string>) => Renderable; popovertargetaction: (value: SplitNValue<"hide" | "show" | "toggle">) => Renderable; poster: (value: SplitNValue<string>) => Renderable; preload: (value: SplitNValue<string>) => Renderable; property: (value: SplitNValue<string>) => Renderable; radiogroup: (value: SplitNValue<string>) => Renderable; readonly: (value: SplitNValue<boolean>) => Renderable; referrerpolicy: (value: SplitNValue<"no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url">) => Renderable; rel: (value: SplitNValue<string>) => Renderable; required: (value: SplitNValue<string>) => Renderable; reversed: (value: SplitNValue<string>) => Renderable; role: (value: SplitNValue<string>) => Renderable; rows: (value: SplitNValue<number>) => Renderable; rowspan: (value: SplitNValue<number>) => Renderable; sandbox: (value: SplitNValue<string>) => Renderable; scope: (value: SplitNValue<string>) => Renderable; scoped: (value: SplitNValue<string>) => Renderable; seamless: (value: SplitNValue<string>) => Renderable; selected: (value: SplitNValue<boolean>) => Renderable; shape: (value: SplitNValue<string>) => Renderable; size: (value: SplitNValue<number>) => Renderable; sizes: (value: SplitNValue<string>) => Renderable; slot: (value: SplitNValue<string>) => Renderable; span: (value: SplitNValue<string>) => Renderable; spellcheck: (value: SplitNValue<boolean | "true" | "false">) => Renderable; src: (value: SplitNValue<string>) => Renderable; srcdoc: (value: SplitNValue<string>) => Renderable; srclang: (value: SplitNValue<string>) => Renderable; srcset: (value: SplitNValue<string>) => Renderable; start: (value: SplitNValue<string>) => Renderable; step: (value: SplitNValue<number>) => Renderable; style: (value: SplitNValue<string>) => Renderable; tabindex: (value: SplitNValue<number>) => Renderable; target: (value: SplitNValue<string>) => Renderable; title: (value: SplitNValue<string>) => Renderable; translate: (value: SplitNValue<"yes" | "no">) => Renderable; type: (value: SplitNValue<string>) => Renderable; usemap: (value: SplitNValue<string>) => Renderable; value: (value: SplitNValue<string>) => Renderable; valueAsNumber: (value: SplitNValue<number>) => Renderable; valueAsDate: (value: SplitNValue<Date>) => Renderable; width: (value: SplitNValue<string>) => Renderable; wrap: (value: SplitNValue<string>) => Renderable; textContent: (value: SplitNValue<string>) => Renderable; innerText: (value: SplitNValue<string>) => Renderable; innerHTML: (value: SplitNValue<string>) => Renderable; outerHTML: (value: SplitNValue<string>) => Renderable; }; /** * Creates a renderable for a data attribute with the specified name and value. * * This is an alias for `dataAttr(name, value)` that accepts `unknown` values. * * @param name - The name of the data attribute (without the 'data-' prefix). * @param value - The value of the attribute (can be a literal or Signal). * @returns A renderable that sets the data attribute. * @example * ```ts * const button = html.button( * DataAttr('myinfo', 'something'), // maps to the `data-myinfo` attribute * ) * ``` * @public */ export declare const DataAttr: (name: string, value: Value<string>) => Renderable; /** * Creates a renderable for a `data-` attribute with the specified name and value. * * @param name - The name of the data attribute (without the 'data-' prefix). * @param value - The value of the attribute (can be a literal or Signal). * @returns A renderable that sets the data attribute. * @example * ```ts * const button = html.button( * dataAttr('myinfo', 'something'), // maps to the `data-myinfo` attribute * ) * ``` * @public * @deprecated */ export declare const dataAttr: (name: string, value: Value<string>) => Renderable; /** * Creates a renderable for an ARIA attribute with the specified name and value. * * This is the functional equivalent of using `aria[name](value)` with a dynamic attribute name. * * @param name - The name of the ARIA attribute (without the 'aria-' prefix). * @param value - The value of the attribute (can be a literal or Signal). * @returns A renderable that sets the ARIA attribute. * @example * ```ts * const button = html.button( * Aria('label', 'Click me!'), // maps to the `aria-label` attribute * Aria('pressed', pressedSignal), // maps to the `aria-pressed` attribute * ) * ``` * @public */ export declare const Aria: (name: string, value: unknown) => Renderable; /** * An object that provides a convenient way to create mountable attributes for ARIA properties. * * The type of the value is inferred from the attribute name. * * @example * ```ts * const button = html.button( * aria.label('Click me!'), // maps to the `aria-label` attribute * // maps to the `aria-pressed` attribute where pressed is a `Signal<boolean>` * aria.pressed(pressed) * ) * ``` * @public */ export declare const aria: { activedescendant: (value: SplitNValue<string>) => Renderable; atomic: (value: SplitNValue<boolean>) => Renderable; autocomplete: (value: SplitNValue<"none" | "inline" | "list" | "both">) => Renderable; braillelabel: (value: SplitNValue<string>) => Renderable; brailleroledescription: (value: SplitNValue<string>) => Renderable; busy: (value: SplitNValue<boolean>) => Renderable; checked: (value: SplitNValue<boolean | "mixed">) => Renderable; colcount: (value: SplitNValue<number>) => Renderable; colindex: (value: SplitNValue<number>) => Renderable; colindextext: (value: SplitNValue<string>) => Renderable; colspan: (value: SplitNValue<number>) => Renderable; controls: (value: SplitNValue<string>) => Renderable; current: (value: SplitNValue<string>) => Renderable; describedby: (value: SplitNValue<string>) => Renderable; description: (value: SplitNValue<string>) => Renderable; details: (value: SplitNValue<string>) => Renderable; disabled: (value: SplitNValue<boolean>) => Renderable; dropeffect: (value: SplitNValue<"none" | "copy" | "execute" | "link" | "move" | "popup">) => Renderable; errormessage: (value: SplitNValue<string>) => Renderable; expanded: (value: SplitNValue<boolean | "undefined">) => Renderable; flowto: (value: SplitNValue<string>) => Renderable; grabbed: (value: SplitNValue<boolean>) => Renderable; haspopup: (value: SplitNValue<boolean | "true" | "false" | "menu" | "listbox" | "tree" | "grid" | "dialog">) => Renderable; hidden: (value: SplitNValue<boolean | "undefined">) => Renderable; invalid: (value: SplitNValue<boolean | "true" | "false" | "grammar" | "spelling">) => Renderable; keyshortcuts: (value: SplitNValue<string>) => Renderable; label: (value: SplitNValue<string>) => Renderable; labelledby: (value: SplitNValue<string>) => Renderable; level: (value: SplitNValue<number>) => Renderable; live: (value: SplitNValue<"off" | "assertive" | "polite">) => Renderable; modal: (value: SplitNValue<boolean>) => Renderable; multiline: (value: SplitNValue<boolean>) => Renderable; multiselectable: (value: SplitNValue<boolean>) => Renderable; orientation: (value: SplitNValue<"undefined" | "horizontal" | "vertical">) => Renderable; owns: (value: SplitNValue<string>) => Renderable; placeholder: (value: SplitNValue<string>) => Renderable; posinset: (value: SplitNValue<number>) => Renderable; pressed: (value: SplitNValue<boolean | "undefined" | "mixed">) => Renderable; readonly: (value: SplitNValue<boolean>) => Renderable; relevant: (value: SplitNValue<string>) => Renderable; required: (value: SplitNValue<boolean>) => Renderable; roledescription: (value: SplitNValue<string>) => Renderable; rowcount: (value: SplitNValue<number>) => Renderable; rowindex: (value: SplitNValue<number>) => Renderable; rowindextext: (value: SplitNValue<string>) => Renderable; rowspan: (value: SplitNValue<number>) => Renderable; selected: (value: SplitNValue<boolean | "undefined">) => Renderable; setsize: (value: SplitNValue<number>) => Renderable; sort: (value: SplitNValue<"none" | "ascending" | "descending" | "other">) => Renderable; valuemax: (value: SplitNValue<number>) => Renderable; valuemin: (value: SplitNValue<number>) => Renderable; valuenow: (value: SplitNValue<number>) => Renderable; valuetext: (value: SplitNValue<string>) => Renderable; }; /** * Creates a renderable for an SVG attribute with the specified name and value. * * This is the functional equivalent of using `svgAttr[name](value)` with a dynamic attribute name. * * @param name - The name of the SVG attribute. * @param value - The value of the attribute (can be a literal or Signal). * @returns A renderable that sets the SVG attribute. * @example * ```ts * const circle = svg.circle( * SVGAttr('cx', 50), * SVGAttr('cy', 50), * SVGAttr('r', radiusSignal), * ) * ``` * @public */ export declare const SVGAttr: (name: string, value: unknown) => Renderable; /** * An object that provides a convenient way to create mountable attributes for * SVG elements. * * @example * ```ts * const svg = html.svg( * svgAttr.width(100), * svgAttr.height(height), // where height is a `Signal<number>` * // ... * ) * ``` * @public */ export declare const svgAttr: { 'accent-height': (value: SplitNValue<string | number>) => Renderable; accumulate: (value: SplitNValue<"none" | "sum">) => Renderable; additive: (value: SplitNValue<"sum" | "replace">) => Renderable; 'alignment-baseline': (value: SplitNValue<"auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit">) => Renderable; 'allow-reorder': (value: SplitNValue<"yes" | "no">) => Renderable; alphabetic: (value: SplitNValue<string | number>) => Renderable; amplitude: (value: SplitNValue<string | number>) => Renderable; 'arabic-form': (value: SplitNValue<"initial" | "medial" | "terminal" | "isolated">) => Renderable; ascent: (value: SplitNValue<string | number>) => Renderable; attributeName: (value: SplitNValue<string>) => Renderable; attributeType: (value: SplitNValue<"auto" | "CSS" | "XML">) => Renderable; autoReverse: (value: SplitNValue<string | boolean>) => Renderable; azimuth: (value: SplitNValue<string | number>) => Renderable; baseFrequency: (value: SplitNValue<string | number>) => Renderable; baseProfile: (value: SplitNValue<string>) => Renderable; 'baseline-shift': (value: SplitNValue<string | number>) => Renderable; bbox: (value: SplitNValue<string>) => Renderable; begin: (value: SplitNValue<string>) => Renderable; bias: (value: SplitNValue<string | number>) => Renderable; by: (value: SplitNValue<string>) => Renderable; calcMode: (value: SplitNValue<"discrete" | "linear" | "paced" | "spline">) => Renderable; 'cap-height': (value: SplitNValue<string | number>) => Renderable; class: (value: SplitNValue<string>) => Renderable; clip: (value: SplitNValue<string>) => Renderable; 'clip-path': (value: SplitNValue<string>) => Renderable; clipPathUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; clipRule: (value: SplitNValue<"inherit" | "nonzero" | "evenodd">) => Renderable; 'color-interpolation': (value: SplitNValue<"auto" | "inherit" | "sRGB" | "linearRGB">) => Renderable; 'color-interpolation-filters': (value: SplitNValue<"auto" | "inherit" | "sRGB" | "linearRGB">) => Renderable; 'color-profile': (value: SplitNValue<string>) => Renderable; 'color-rendering': (value: SplitNValue<"auto" | "inherit" | "optimizeSpeed" | "optimizeQuality">) => Renderable; contentScriptType: (value: SplitNValue<string>) => Renderable; contentStyleType: (value: SplitNValue<string>) => Renderable; crossorigin: (value: SplitNValue<"anonymous" | "use-credentials">) => Renderable; cursor: (value: SplitNValue<string>) => Renderable; cx: (value: SplitNValue<string | number>) => Renderable; cy: (value: SplitNValue<string | number>) => Renderable; d: (value: SplitNValue<string>) => Renderable; decelerate: (value: SplitNValue<string | number>) => Renderable; descent: (value: SplitNValue<string | number>) => Renderable; diffuseConstant: (value: SplitNValue<string | number>) => Renderable; direction: (value: SplitNValue<"ltr" | "rtl" | "inherit">) => Renderable; display: (value: SplitNValue<string>) => Renderable; divisor: (value: SplitNValue<string | number>) => Renderable; 'dominant-baseline': (value: SplitNValue<"auto" | "middle" | "central" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" | "text-bottom" | "text-top">) => Renderable; dur: (value: SplitNValue<string>) => Renderable; dx: (value: SplitNValue<string | number>) => Renderable; dy: (value: SplitNValue<string | number>) => Renderable; edgeMode: (value: SplitNValue<"none" | "duplicate" | "wrap">) => Renderable; elevation: (value: SplitNValue<string | number>) => Renderable; 'enable-background': (value: SplitNValue<string>) => Renderable; end: (value: SplitNValue<string>) => Renderable; exponent: (value: SplitNValue<string | number>) => Renderable; externalResourcesRequired: (value: SplitNValue<string | boolean>) => Renderable; fill: (value: SplitNValue<string>) => Renderable; 'fill-opacity': (value: SplitNValue<string | number>) => Renderable; 'fill-rule': (value: SplitNValue<"inherit" | "nonzero" | "evenodd">) => Renderable; filter: (value: SplitNValue<string>) => Renderable; filterRes: (value: SplitNValue<string>) => Renderable; filterUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; 'flood-color': (value: SplitNValue<string>) => Renderable; 'flood-opacity': (value: SplitNValue<string | number>) => Renderable; focusable: (value: SplitNValue<string | boolean>) => Renderable; 'font-family': (value: SplitNValue<string>) => Renderable; 'font-size': (value: SplitNValue<string | number>) => Renderable; 'font-size-adjust': (value: SplitNValue<string | number>) => Renderable; 'font-stretch': (value: SplitNValue<string>) => Renderable; 'font-style': (value: SplitNValue<"normal" | "italic" | "inherit" | "oblique">) => Renderable; 'font-variant': (value: SplitNValue<string>) => Renderable; 'font-weight': (value: SplitNValue<string>) => Renderable; format: (value: SplitNValue<string>) => Renderable; fr: (value: SplitNValue<string | number>) => Renderable; from: (value: SplitNValue<string>) => Renderable; fx: (value: SplitNValue<string | number>) => Renderable; fy: (value: SplitNValue<string | number>) => Renderable; g1: (value: SplitNValue<string>) => Renderable; g2: (value: SplitNValue<string>) => Renderable; 'glyph-name': (value: SplitNValue<string>) => Renderable; 'glyph-orientation-horizontal': (value: SplitNValue<string | number>) => Renderable; 'glyph-orientation-vertical': (value: SplitNValue<string | number>) => Renderable; glyphRef: (value: SplitNValue<string>) => Renderable; gradientTransform: (value: SplitNValue<string>) => Renderable; gradientUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; hanging: (value: SplitNValue<string | number>) => Renderable; height: (value: SplitNValue<string | number>) => Renderable; 'horiz-adv-x': (value: SplitNValue<string | number>) => Renderable; 'horiz-origin-x': (value: SplitNValue<string | number>) => Renderable; 'horiz-origin-y': (value: SplitNValue<string | number>) => Renderable; href: (value: SplitNValue<string>) => Renderable; id: (value: SplitNValue<string>) => Renderable; ideographic: (value: SplitNValue<string | number>) => Renderable; 'image-rendering': (value: SplitNValue<"auto" | "inherit" | "optimizeSpeed" | "optimizeQuality">) => Renderable; in: (value: SplitNValue<string>) => Renderable; in2: (value: SplitNValue<string>) => Renderable; intercept: (value: SplitNValue<string | number>) => Renderable; k: (value: SplitNValue<string | number>) => Renderable; k1: (value: SplitNValue<string | number>) => Renderable; k2: (value: SplitNValue<string | number>) => Renderable; k3: (value: SplitNValue<string | number>) => Renderable; k4: (value: SplitNValue<string | number>) => Renderable; kernelMatrix: (value: SplitNValue<string>) => Renderable; kernelUnitLength: (value: SplitNValue<string | number>) => Renderable; kerning: (value: SplitNValue<string | number>) => Renderable; keyPoints: (value: SplitNValue<string>) => Renderable; keySplines: (value: SplitNValue<string>) => Renderable; keyTimes: (value: SplitNValue<string>) => Renderable; lang: (value: SplitNValue<string>) => Renderable; lengthAdjust: (value: SplitNValue<"spacing" | "spacingAndGlyphs">) => Renderable; 'letter-spacing': (value: SplitNValue<string | number>) => Renderable; 'lighting-color': (value: SplitNValue<string>) => Renderable; limitingConeAngle: (value: SplitNValue<string | number>) => Renderable; local: (value: SplitNValue<string>) => Renderable; 'marker-end': (value: SplitNValue<string>) => Renderable; markerHeight: (value: SplitNValue<string | number>) => Renderable; 'marker-mid': (value: SplitNValue<string>) => Renderable; 'marker-start': (value: SplitNValue<string>) => Renderable; markerUnits: (value: SplitNValue<"strokeWidth" | "userSpaceOnUse">) => Renderable; markerWidth: (value: SplitNValue<string | number>) => Renderable; mask: (value: SplitNValue<string>) => Renderable; maskContentUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; maskUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; mathematical: (value: SplitNValue<string | number>) => Renderable; max: (value: SplitNValue<string>) => Renderable; media: (value: SplitNValue<string>) => Renderable; method: (value: SplitNValue<"align" | "stretch">) => Renderable; min: (value: SplitNValue<string>) => Renderable; mode: (value: SplitNValue<"normal" | "multiply" | "screen" | "darken" | "lighten">) => Renderable; name: (value: SplitNValue<string>) => Renderable; numOctaves: (value: SplitNValue<string | number>) => Renderable; offset: (value: SplitNValue<string | number>) => Renderable; opacity: (value: SplitNValue<string | number>) => Renderable; operator: (value: SplitNValue<"over" | "in" | "out" | "atop" | "xor" | "lighter" | "arithmetic">) => Renderable; order: (value: SplitNValue<string | number>) => Renderable; orient: (value: SplitNValue<string | number>) => Renderable; orientation: (value: SplitNValue<"h" | "v">) => Renderable; origin: (value: SplitNValue<string>) => Renderable; overflow: (value: SplitNValue<"auto" | "hidden" | "scroll" | "inherit" | "visible">) => Renderable; 'overline-position': (value: SplitNValue<string | number>) => Renderable; 'overline-thickness': (value: SplitNValue<string | number>) => Renderable; 'paint-order': (value: SplitNValue<string>) => Renderable; 'panose-1': (value: SplitNValue<string>) => Renderable; path: (value: SplitNValue<string>) => Renderable; pathLength: (value: SplitNValue<string | number>) => Renderable; patternContentUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; patternTransform: (value: SplitNValue<string>) => Renderable; patternUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; 'pointer-events': (value: SplitNValue<"none" | "all" | "fill" | "stroke" | "inherit" | "visible" | "bounding-box" | "visiblePainted" | "visibleFill" | "visibleStroke" | "painted">) => Renderable; points: (value: SplitNValue<string>) => Renderable; pointsAtX: (value: SplitNValue<string | number>) => Renderable; pointsAtY: (value: SplitNValue<string | number>) => Renderable; pointsAtZ: (value: SplitNValue<string | number>) => Renderable; preserveAlpha: (value: SplitNValue<string | boolean>) => Renderable; preserveAspectRatio: (value: SplitNValue<string>) => Renderable; primitiveUnits: (value: SplitNValue<"userSpaceOnUse" | "objectBoundingBox">) => Renderable; r: (value: SplitNValue<string | number>) => Renderable; radius: (value: SplitNValue<string | number>) => Renderable; refX: (value: SplitNValue<string | number>) => Renderable; refY: (value: SplitNValue<string | number>) => Renderable; 'rendering-intent': (value: SplitNValue<"auto" | "inherit" | "perceptual" | "relative-colorimetric" | "saturation" | "absolute-colorimetric">) => Renderable; repeatCount: (value: SplitNValue<string | number>) => Renderable; repeatDur: (value: SplitNValue<string>) => Renderable; requiredExtensions: (value: SplitNValue<string>) => Renderable; requiredFeatures: (value: SplitNValue<string>) => Renderable; restart: (value: SplitNValue<"always" | "whenNotActive" | "never">) => Renderable; result: (value: SplitNValue<string>) => Renderable; role: (value: SplitNValue<string>) => Renderable; rotate: (value: SplitNValue<string | number>) => Renderable; rx: (value: SplitNValue<string | number>) => Renderable; ry: (value: SplitNValue<string | number>) => Renderable; scale: (value: SplitNValue<string | number>) => Renderable; seed: (value: SplitNValue<string | number>) => Renderable; 'shape-rendering': (value: SplitNValue<"auto" | "inherit" | "optimizeSpeed" | "crispEdges" | "geometricPrecision">) => Renderable; side: (value: SplitNValue<"left" | "right">) => Renderable; slope: (value: SplitNValue<string | number>) => Renderable; spacing: (value: SplitNValue<"auto" | "exact">) => Renderable; specularConstant: (value: SplitNValue<string | number>) => Renderable; specularExponent: (value: SplitNValue<string | number>) => Renderable; speed: (value: SplitNValue<string | number>) => Renderable; spreadMethod: (value: SplitNValue<"pad" | "reflect" | "repeat">) => Renderable; startOffset: (value: SplitNValue<string | number>) => Renderable; stdDeviation: (value: SplitNValue<string | number>) => Renderable; stemh: (value: SplitNValue<string | number>) => Renderable; stemv: (value: SplitNValue<string | number>) => Renderable; stitchTiles: (value: SplitNValue<"noStitch" | "stitch">) => Renderable; 'stop-color': (value: SplitNValue<string>) => Renderable; 'stop-opacity': (value: SplitNValue<string | number>) => Renderable; 'strikethrough-position': (value: SplitNValue<string | number>) => Renderable; 'strikethrough-thickness': (value: SplitNValue<string | number>) => Renderable; string: (value: SplitNValue<string>) => Renderable; stroke: (value: SplitNValue<string>) => Renderable; 'stroke-dasharray': (value: SplitNValue<string>) => Renderable; 'stroke-dashoffset': (value: SplitNValue<string | number>) => Renderable; 'stroke-linecap': (value: SplitNValue<"inherit" | "butt" | "round" | "square">) => Renderable; 'stroke-linejoin': (value: SplitNValue<"inherit" | "round" | "miter" | "bevel">) => Renderable; 'stroke-miterlimit': (value: SplitNValue<string | number>) => Renderable; 'stroke-opacity': (value: SplitNValue<string | number>) => Renderable; 'stroke-width': (value: SplitNValue<string | number>) => Renderable; style: (value: SplitNValue<string>) => Renderable; surfaceScale: (value: SplitNValue<string | number>) => Renderable; systemLanguage: (value: SplitNValue<string>) => Renderable; tabindex: (value: SplitNValue<string | number>) => Renderable; tableValues: (value: SplitNValue<string>) => Renderable; target: (value: SplitNValue<string>) => Renderable; targetX: (value: SplitNValue<string | number>) => Renderable; targetY: (value: SplitNValue<string | number>) => Renderable; 'text-anchor': (value: SplitNValue<"middle" | "inherit" | "start" | "end">) => Renderable; 'text-decoration': (value: SplitNValue<"none" | "inherit" | "underline" | "overline" | "line-through" | "blink">) => Renderable; textLength: (value: SplitNValue<string | number>) => Renderable; 'text-rendering': (value: SplitNValue<"auto" | "inherit" | "optimizeSpeed" | "geometricPrecision" | "optimizeLegibility">) => Renderable; title: (value: SplitNValue<string>) => Renderable; to: (value: SplitNValue<string>) => Renderable; transform: (value: SplitNValue<string>) => Renderable; 'transform-origin': (value: SplitNValue<string>) => Renderable; type: (value: SplitNValue<string>) => Renderable; u1: (value: SplitNValue<string>) => Renderable; u2: (value: SplitNValue<string>) => Renderable; 'underline-position': (value: SplitNValue<string | number>) => Renderable; 'underline-thickness': (value: SplitNValue<string | number>) => Renderable; unicode: (value: SplitNValue<string>) => Renderable; 'unicode-bidi': (value: SplitNValue<"normal" | "inherit" | "embed" | "isolate" | "bidi-override" | "isolate-override" | "plaintext">) => Renderable; 'unicode-range': (value: SplitNValue<string>) => Renderable; 'units-per-em': (value: SplitNValue<string | number>) => Renderable; 'v-alphabetic': (value: SplitNValue<string | number>) => Renderable; values: (value: SplitNValue<string>) => Renderable; 'vector-effect': (value: SplitNValue<"none" | "non-scaling-stroke" | "non-scaling-size" | "non-rotation" | "fixed-position">) => Renderable; version: (value: SplitNValue<string>) => Renderable; 'vert-adv-y': (value: SplitNValue<string | number>) => Renderable; 'vert-origin-x': (value: SplitNValue<string | number>) => Renderable; 'vert-origin-y': (value: SplitNValue<string | number>) => Renderable; 'v-hanging': (value: SplitNValue<string | number>) => Renderable; 'v-ideographic': (value: SplitNValue<string | number>) => Renderable; viewBox: (value: SplitNValue<string>) => Renderable; viewTarget: (value: SplitNValue<string>) => Renderable; visibility: (value: SplitNValue<"hidden" | "inherit" | "visible" | "collapse">) => Renderable; 'v-mathematical': (value: SplitNValue<string | number>) => Renderable; width: (value: SplitNValue<string | number>) => Renderable; widths: (value: SplitNValue<string>) => Renderable; 'word-spacing': (value: SplitNValue<string | number>) => Renderable; 'writing-mode': (value: SplitNValue<"inherit" | "lr-tb" | "rl-tb" | "tb-rl" | "lr" | "rl" | "tb">) => Renderable; x1: (value: SplitNValue<string | number>) => Renderable; x2: (value: SplitNValue<string | number>) => Renderable; x: (value: SplitNValue<string | number>) => Renderable; xChannelSelector: (value: SplitNValue<"R" | "G" | "B" | "A">) => Renderable; 'x-height': (value: SplitNValue<string | number>) => Renderable; 'xlink:actuate': (value: SplitNValue<"none" | "other" | "onLoad" | "onRequest">) => Renderable; 'xlink:arcrole': (value: SplitNValue<string>) => Renderable; 'xlink:href': (value: SplitNValue<string>) => Renderable; 'xlink:role': (value: SplitNValue<string>) => Renderable; 'xlink:show': (value: SplitNValue<"none" | "other" | "replace" | "embed" | "new">) => Renderable; 'xlink:title': (value: SplitNValue<string>) => Renderable; 'xlink:type': (value: SplitNValue<"none" | "simple" | "extended" | "locator" | "arc" | "resource" | "title">) => Renderable; xlinkActuate: (value: SplitNValue<"none" | "other" | "onLoad" | "onRequest">) => Renderable; xlinkArcrole: (value: SplitNValue<string>) => Renderable; xlinkHref: (value: SplitNValue<string>) => Renderable; xlinkRole: (value: SplitNValue<string>) => Renderable; xlinkShow: (value: SplitNValue<"none" | "other" | "replace" | "embed" | "new">) => Renderable; xlinkTitle: (value: SplitNValue<string>) => Renderable; xlinkType: (value: SplitNValue<"none" | "simple" | "extended" | "locator" | "arc" | "resource" | "title">) => Renderable; 'xml:base': (value: SplitNValue<string>) => Renderable; 'xml:lang': (value: SplitNValue<string>) => Renderable; 'xml:space': (value: SplitNValue<"default" | "preserve">) => Renderable; xmlBase: (value: SplitNValue<string>) => Renderable; xmlLang: (value: SplitNValue<string>) => Renderable; xmlns: (value: SplitNValue<string>) => Renderable; 'xmlns:xlink': (value: SplitNValue<string>) => Renderable; xmlnsXlink: (value: SplitNValue<string>) => Renderable; xmlSpace: (value: SplitNValue<"default" | "preserve">) => Renderable; y1: (value: SplitNValue<string | number>) => Renderable; y2: (value: SplitNValue<string | number>) => Renderable; y: (value: SplitNValue<string | number>) => Renderable; yChannelSelector: (value: SplitNValue<"R" | "G" | "B" | "A">) => Renderable; z: (value: SplitNValue<string | number>) => Renderable; zoomAndPan: (value: SplitNValue<"disable" | "magnify">) => Renderable; }; /** * Creates a renderable for a MathML attribute with the specified name and value. * * This is the functional equivalent of using `mathAttr[name](value)`. * * @param name - The name of the MathML attribute. * @param value - The value of the attribute (can be a literal or Signal). * @returns A renderable that sets the MathML attribute. * @example * ```ts * const mi = math.mi( * MathAttr('mathvariant', 'bold'), * MathAttr('mathsize', sizeSignal), * ) * ``` * @public */ export declare const MathAttr: (name: string, value: unknown) => Renderable; /** * An object that provides attribute functions for MathML tags. * * @example * ```ts * const math = html.math( * mathAttr.mathvariant('bold'), * mathAttr.mathsize(size), // where size is a `Signal<number>` * // ... * ) * ``` * @public */ export declare const mathAttr: { accent: (value: SplitNValue<string | boolean>) => Renderable; accentunder: (value: SplitNValue<string | boolean>) => Renderable; actiontype: (value: SplitNValue<"statusline" | "tooltip" | "input">) => Renderable; align: (value: SplitNValue<"left" | "right" | "center">) => Renderable; altimg: (value: SplitNValue<string>) => Renderable; altimgheight: (value: SplitNValue<string>) => Renderable; altimgvalign: (value: SplitNValue<string>) => Renderable; altimgwidth: (value: SplitNValue<string>) => Renderable; alttext: (value: SplitNValue<string>) => Renderable; background: (value: SplitNValue<string>) => Renderable; base: (value: SplitNValue<string>) => Renderable; bevelled: (value: SplitNValue<string | boolean>) => Renderable; charalign: (value: SplitNValue<"left" | "right" | "center">) => Renderable; class: (value: SplitNValue<string>) => Renderable; close: (value: SplitNValue<string>) => Renderable; color: (value: SplitNValue<string>) => Renderable; columnalign: (value: SplitNValue<string>) => Renderable; columnlines: (value: SplitNValue<string>) => Renderable; columnspacing: (value: SplitNValue<string>) => Renderable; columnspan: (value: SplitNValue<string | number>) => Renderable; columnwidth: (value: SplitNValue<string>) => Renderable; crossout: (value: SplitNValue<string>) => Renderable; decimalpoint: (value: SplitNValue<string>) => Renderable; definitionurl: (value: SplitNValue<string>) => Renderable; denomalign: (value: SplitNValue<"left" | "right" | "center">) => Renderable; depth: (value: SplitNValue<string>) => Renderable; dir: (value: SplitNValue<"ltr" | "rtl">) => Renderable; display: (value: SplitNValue<"inline" | "block">) => Renderable; displaystyle: (value: SplitNValue<string | boolean>) => Renderable; edge: (value: SplitNValue<"left" | "right">) => Renderable; encoding: (value: SplitNValue<string>) => Renderable; equalcolumns: (value: SplitNValue<string | boolean>) => Renderable; equalrows: (value: SplitNValue<string | boolean>) => Renderable; fence: (value: SplitNValue<string | boolean>) => Renderable; fontfamily: (value: SplitNValue<string>) => Renderable; fontsize: (value: SplitNValue<string>) => Renderable; fontstyle: (value: SplitNValue<"normal" | "italic">) => Renderable; fontweight: (value: SplitNValue<"normal" | "bold">) => Renderable; form: (value: SplitNValue<"prefix" | "infix" | "postfix">) => Renderable; frame: (value: SplitNValue<string>) => Renderable; groupalign: (value: SplitNValue<string>) => Renderable; height: (value: SplitNValue<string>) => Renderable; href: (value: SplitNValue<string>) => Renderable; id: (value: SplitNValue<string>) => Renderable; indentalign: (value: SplitNValue<"left" | "right" | "auto" | "center" | "id">) => Renderable; indentalignfirst: (value: SplitNValue<"left" | "right" | "auto" | "center" | "id" | "indentaling">) => Renderable; indentalignlast: (value: SplitNValue<"left" | "right" | "auto" | "center" | "id" | "indentaling">) => Renderable; indentshift: (value: SplitNValue<string>) => Renderable; indentshiftfirst: (value: SplitNValue<string>) => Renderable; indentshiftlast: (value: SplitNValue<string>) => Renderable; indenttarget: (value: SplitNValue<string>) => Renderable; infixlinebreakstyle: (value: SplitNValue<"before" | "after" | "duplicate">) => Renderable; intent: (value: SplitNValue<string>) => Renderable; largeop: (value: SplitNValue<string | boolean>) => Renderable; leftoverhang: (value: SplitNValue<string>) => Renderable; length: (value: SplitNValue<string>) => Renderable; linebreak: (value: SplitNValue<"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak">) => Renderable; linebreakmultchar: (value: SplitNValue<string>) => Renderable; linebreakstyle: (value: SplitNValue<"before" | "after" | "duplicate" | "infixlinebreakstyle">) => Renderable; lineleading: (value: SplitNValue<string>) => Renderable; linethickness: (value: SplitNValue<string>) => Renderable; location: (value: SplitNValue<string>) => Renderable; longdivstyle: (value: SplitNValue<"lefttop" | "stackedrightright" | "mediumstackedrightright" | "shortstackedrightright" | "righttop">) => Renderable; lquote: (value: SplitNValue<string>) => Renderable; lspace: (value: SplitNValue<string>) => Renderable; mathbackground: (value: SplitNValue<string>) => Renderable; mathcolor: (value: SplitNValue<string>) => Renderable; mathdepth: (value: SplitNValue<string>) => Renderable; mathsize: (value: SplitNValue<string>) => Renderable; mathvariant: (value: SplitNValue<"normal" | "italic" | "bold" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched">) => Renderable; maxsize: (value: SplitNValue<string>) => Renderable; maxwidth: (value: SplitNValue<string>) => Renderable; minlabelspacing: (value: SplitNValue<string>) => Renderable; minsize: (value: SplitNValue<string>) => Renderable; movablelimits: (value: SplitNValue<string | boolean>) => Renderable; mslinethickness: (value: SplitNValue<string>) => Renderable; notation: (value: SplitNValue<string>) => Renderable; numalign: (value: SplitNValue<"left" | "right" | "center">) => Renderable; open: (value: SplitNValue<string>) => Renderable; other: (value: SplitNValue<string>) => Renderable; overflow: (value: SplitNValue<"scale" | "linebreak" | "scroll" | "elide" | "truncate">) => Renderable; position: (value: SplitNValue<string>) => Renderable; rightoverhang: (value: SplitNValue<string>) => Renderable; rowalign: (value: SplitNValue<string>) => Renderable; rowlines: (value: SplitNValue<string>) => Renderable; rowspacing: (value: SplitNValue<string>) => Renderable; rowspan: (value: SplitNValue<string | number>) => Renderable; rquote: (value: SplitNValue<string>) => Renderable; rspace: (value: SplitNValue<string>) => Renderable; scriptlevel: (value: SplitNValue<string>) => Renderable; scriptminsize: (value: SplitNValue<string>) => Renderable; scriptsizemultiplier: (value: SplitNValue<string>) => Renderable; selection: (value: SplitNValue<string>) => Renderable; separator: (value: SplitNValue<string | boolean>) => Renderable; separators: (value: SplitNValue<string>) => Renderable; shift: (value: SplitNValue<string>) => Renderable; side: (value: SplitNValue<"left" | "right" | "leftoverlap" | "rightoverlap">) => Renderable; stackalign: (value: SplitNValue<"left" | "right" | "center" | "decimalpoint">) => Renderable; stretchy: (value: SplitNValue<string | boolean>) => Renderable; style: (value: SplitNValue<string>) => Renderable; subscriptshift: (value: SplitNValue<string>) => Renderable; superscriptshift: (value: SplitNValue<string>) => Renderable; symmetric: (value: SplitNValue<string | boolean>) => Renderable; type: (value: SplitNValue<string>) => Renderable; valign: (value: SplitNValue<"bottom" | "top" | "center" | "baseline" | "axis">) => Renderable; voffset: (value: SplitNValue<string>) => Renderable; width: (value: SplitNValue<string>) => Renderable; xlink: (value: SplitNValue<string>) => Renderable; xmlns: (value: SplitNValue<string>) => Renderable; xref: (value: SplitNValue<string>) => Renderable; }; /** * Creates a renderable that toggles a CSS class based on O(1) selection matching. * * Instead of creating a `computed` per row that re-evaluates when the source changes * (O(n) for n rows), this uses `createSelector` from `@tempots/core` to only update * the two rows that actually change (the previously selected and newly selected). * * A shared selector is automatically created per source signal and cached via WeakMap. * * @param source - The signal containing the currently selected value. * @param key - The static key to compare against (e.g., the row's ID). * @param activeClass - The CSS class(es) to toggle (space-separated). Defaults to `'danger'`. * @param equals - Optional equality function. Defaults to `===`. * @returns A renderable that adds/removes the class based on selection state. * * @example * ```ts * const selected = prop(0) * html.tr( * selectedClass(selected, item.id, 'danger'), * // ... * ) * ``` * @public */ export declare const selectedClass: <T>(source: Signal<T>, key: T, activeClass?: string, equals?: (a: T, b: T) => boolean) => Renderable;