Forward EDN->JS options conversion per the conversion contract (ticket agd-01ky0eck96vn). Walking-skeleton cut: namespace layout and naming are provisional until the namespace-layout decision lands.
Forward EDN->JS options conversion per the conversion contract (ticket agd-01ky0eck96vn). Walking-skeleton cut: namespace layout and naming are provisional until the namespace-layout decision lands.
(->js x)Type-driven recursion (contract rule 2): CLJS maps -> JS objects, CLJS sequentials -> JS arrays, keywords -> camelized strings, fns auto-wrapped, everything else untouched.
Type-driven recursion (contract rule 2): CLJS maps -> JS objects, CLJS sequentials -> JS arrays, keywords -> camelized strings, fns auto-wrapped, everything else untouched.
(camel->kebab s)Reverse transform for callback-params beans: "rowIndex" -> "row-index".
Hot path (ADR 0018 §7): an already-lower-case input — every dashless callback key, and kebab-keyed consumer data — returns the argument itself, with no regex replacement and no lower-casing.
Reverse transform for callback-params beans: "rowIndex" -> "row-index". Hot path (ADR 0018 §7): an already-lower-case input — every dashless callback key, and kebab-keyed consumer data — returns the argument itself, with no regex replacement and no lower-casing.
Build the JS value a deferred input stands for. Open dispatch rather than a
case so the renderer helpers can register their own construction and this
namespace never has to require render or react — react is optional
precisely so core consumers need not install react-dom. Load order is safe by
construction: a tagged value can only exist if the namespace that mints it was
loaded. :row-id is the exception that registers here, since its construction
needs this namespace's own key transform and fn wrapper.
Build the JS value a deferred input stands for. Open dispatch rather than a case so the renderer helpers can register their own construction and this namespace never has to require `render` or `react` — `react` is optional precisely so core consumers need not install react-dom. Load order is safe by construction: a tagged value can only exist if the namespace that mints it was loaded. :row-id is the exception that registers here, since its construction needs this namespace's own key transform and fn wrapper.
(deferred tag x)Stash x under an internal construction tag. ->js runs construct on it when
the conversion boundary reaches the wrapper.
Stash x under an internal construction tag. ->js runs `construct` on it when the conversion boundary reaches the wrapper.
(kebab->camel s)Pure mechanical transform: :row-data -> "rowData".
Hot path (ADR 0018 §7): a dashless input — already-camel keys, and every common callback key — returns the argument itself, with no split and no intermediate strings.
Pure mechanical transform: :row-data -> "rowData". Hot path (ADR 0018 §7): a dashless input — already-camel keys, and every common callback key — returns the argument itself, with no split and no intermediate strings.
(lookup-prop k)kebab->camel over a callback-bean lookup key, memoized via cached-camel. Dashless keys — :value, :data, :node, :api, :id — return their name directly and never touch the cache.
kebab->camel over a callback-bean lookup key, memoized via cached-camel. Dashless keys — :value, :data, :node, :api, :id — return their name directly and never touch the cache.
(params-bean o)Lazy kebab-keyed view over a JS callback object. A view, not a copy: only accessed keys pay conversion; the underlying JS object is reachable via ag-grid-cljs.impl.bean/object.
Lookups follow the callback-bean law (ADR 0018): camel-first, literal-second, decided per object. The :transform hands every recursively reached plain object — nested objects and object elements inside arrays — its own object-aware bean, so each one tests presence on itself.
Lazy kebab-keyed view over a JS callback object. A view, not a copy: only accessed keys pay conversion; the underlying JS object is reachable via ag-grid-cljs.impl.bean/object. Lookups follow the callback-bean law (ADR 0018): camel-first, literal-second, decided per object. The :transform hands every recursively reached plain object — nested objects and object elements inside arrays — its own object-aware bean, so each one tests presence on itself.
(raw x)Sole escape hatch: the converter emits x untouched — no recursion, no renaming, no function wrapping.
Sole escape hatch: the converter emits x untouched — no recursion, no renaming, no function wrapping.
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 |