Pure model layer for x-calendar. No DOM, no side effects — every
function is a value transform. Dates flow as ISO "YYYY-MM-DD" strings;
the canonical model holds only value-comparable data (strings, keywords,
numbers, sets) so the render change-guard can compare it with not=.
UTC date math lives in baredom.utils.dates.
Pure model layer for x-calendar. No DOM, no side effects — every function is a value transform. Dates flow as ISO "YYYY-MM-DD" strings; the canonical model holds only value-comparable data (strings, keywords, numbers, sets) so the render change-guard can compare it with `not=`. UTC date math lives in baredom.utils.dates.
DOM + lifecycle layer for x-calendar — a standalone, always-visible inline month calendar. Pure date/model logic lives in baredom.components.x-calendar.model and baredom.utils.dates; this namespace only performs DOM side effects.
DOM + lifecycle layer for x-calendar — a standalone, always-visible inline month calendar. Pure date/model logic lives in baredom.components.x-calendar.model and baredom.utils.dates; this namespace only performs DOM side effects.
Pure model layer for x-code — a code-display component with an in-house, regex-based syntax tokenizer.
No DOM, no side effects. Every function here is a plain data transform and is exercised directly by model_test.cljs with sparse inputs.
The tokenizer is deliberately lightweight. It covers js / json / css / html only and degrades any other language to plain text. It is a highlighter, not a parser: it does not track nested languages, and a handful of context-sensitive cases are knowingly imperfect (see docs/x-code.md).
Pure model layer for x-code — a code-display component with an in-house, regex-based syntax tokenizer. No DOM, no side effects. Every function here is a plain data transform and is exercised directly by model_test.cljs with sparse inputs. The tokenizer is deliberately lightweight. It covers js / json / css / html only and degrades any other language to plain text. It is a highlighter, not a parser: it does not track nested languages, and a handful of context-sensitive cases are knowingly imperfect (see docs/x-code.md).
DOM + lifecycle layer for x-code — a code-display component.
The component is stateless: DOM = f(attributes, properties). Source code is
read from the element's light-DOM textContent (or the code property /
attribute), tokenized by the pure model layer, and rendered escaped into
the shadow <code>. A MutationObserver re-renders when the light-DOM text
changes. The expand/collapse state lives in the observed expanded
attribute, so it too is a value, never a mutable field.
Instance fields hold only the refs map, the cached model, the
MutationObserver, and the code property override.
DOM + lifecycle layer for x-code — a code-display component. The component is stateless: DOM = f(attributes, properties). Source code is read from the element's light-DOM textContent (or the `code` property / attribute), tokenized by the pure model layer, and rendered escaped into the shadow `<code>`. A MutationObserver re-renders when the light-DOM text changes. The expand/collapse state lives in the observed `expanded` attribute, so it too is a value, never a mutable field. Instance fields hold only the refs map, the cached model, the MutationObserver, and the `code` property override.
Pure model layer for x-split-pane — a resizable two-panel layout.
No DOM, no side effects. Every function here is a plain data transform and is exercised directly by model_test.cljs with sparse inputs.
Pure model layer for x-split-pane — a resizable two-panel layout. No DOM, no side effects. Every function here is a plain data transform and is exercised directly by model_test.cljs with sparse inputs.
DOM + lifecycle layer for x-split-pane.
A resizable two-panel layout. The divider position is a percentage held
in the position attribute — the single source of truth. A drag or
keyboard step writes that attribute; the render pipeline reads it back
and applies flex-basis. The element is stateless: instance fields hold
only the refs map, the cached model, and a transient dragging flag.
DOM + lifecycle layer for x-split-pane. A resizable two-panel layout. The divider position is a percentage held in the `position` attribute — the single source of truth. A drag or keyboard step writes that attribute; the render pipeline reads it back and applies `flex-basis`. The element is stateless: instance fields hold only the refs map, the cached model, and a transient dragging flag.
Pure functions for the x-welcome-tour-step child element. This component is a passive data holder — the parent orchestrator reads its attributes and renders the tour UI.
Pure functions for the x-welcome-tour-step child element. This component is a passive data holder — the parent orchestrator reads its attributes and renders the tour UI.
Passive child element for x-welcome-tour. Holds step configuration as attributes and provides a default slot for rich content. The parent orchestrator reads these attributes and renders the tour UI — this element never renders visibly itself.
Passive child element for x-welcome-tour. Holds step configuration as attributes and provides a default slot for rich content. The parent orchestrator reads these attributes and renders the tour UI — this element never renders visibly itself.
Pure functions for the x-welcome-tour orchestrator component. Positioning, cutout geometry, connector path computation, and attribute normalisation — no DOM or side effects.
Pure functions for the x-welcome-tour orchestrator component. Positioning, cutout geometry, connector path computation, and attribute normalisation — no DOM or side effects.
Orchestrator for the welcome tour overlay. Manages the SVG spotlight backdrop, popover positioning, step navigation, connector rendering, focus trap, and keyboard/scroll/resize handling. The host element is invisible — all visible UI lives in a portal layer created via the shared overlay utility.
Orchestrator for the welcome tour overlay. Manages the SVG spotlight backdrop, popover positioning, step navigation, connector rendering, focus trap, and keyboard/scroll/resize handling. The host element is invisible — all visible UI lives in a portal layer created via the shared overlay utility.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |