sibujs 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.cjs +1 -1
- package/dist/browser.js +4 -4
- package/dist/build.cjs +30 -8
- package/dist/build.js +10 -10
- package/dist/cdn.dev.global.js +6 -6
- package/dist/cdn.global.js +6 -6
- package/dist/{chunk-HZEBO22J.js → chunk-2LSY4WDM.js} +38 -16
- package/dist/{chunk-2LOYNGBY.js → chunk-3E5YNK2F.js} +1 -1
- package/dist/{chunk-7VEC3UD2.js → chunk-7BJLKDBI.js} +1 -1
- package/dist/{chunk-XZ2N525U.js → chunk-7BPN4MXR.js} +4 -4
- package/dist/{chunk-NEYWS4EX.js → chunk-7GQIRV27.js} +3 -3
- package/dist/{chunk-HJEPKZ2O.js → chunk-7UBG6LDP.js} +1 -1
- package/dist/{chunk-P3DHXBR6.js → chunk-7UK6BSAT.js} +1 -1
- package/dist/{chunk-BNKV4REK.js → chunk-AAHT6AKT.js} +2 -2
- package/dist/{chunk-QCFLDD7C.js → chunk-G7GPNB6N.js} +4 -4
- package/dist/{chunk-SF3TB4K6.js → chunk-GZYQNIPS.js} +5 -5
- package/dist/{chunk-BMYYZWHX.js → chunk-IYHM4FWD.js} +1 -1
- package/dist/{chunk-FOWBJZDL.js → chunk-L4B3Y3OM.js} +1 -1
- package/dist/{chunk-HECVW343.js → chunk-MYA5HEK5.js} +1 -1
- package/dist/{chunk-GDUNQCCW.js → chunk-R4EF7V3K.js} +4 -4
- package/dist/{chunk-3VTSPNC5.js → chunk-RE6KLGMV.js} +1 -1
- package/dist/{chunk-7ALC7KGE.js → chunk-TSL64O5L.js} +1 -1
- package/dist/{chunk-KE4KWRDY.js → chunk-UD6YE2GW.js} +2 -2
- package/dist/{chunk-OUWAIXIK.js → chunk-USS5ENJ2.js} +3 -3
- package/dist/{chunk-6ZGI3RBE.js → chunk-XGCZ45NH.js} +2 -2
- package/dist/{chunk-QL4UREZO.js → chunk-ZVYNIUOG.js} +3 -3
- package/dist/data.cjs +1 -1
- package/dist/data.js +6 -6
- package/dist/devtools.cjs +1 -1
- package/dist/devtools.js +4 -4
- package/dist/ecosystem.cjs +1 -1
- package/dist/ecosystem.js +7 -7
- package/dist/extras.cjs +1 -1
- package/dist/extras.js +19 -19
- package/dist/index.cjs +30 -8
- package/dist/index.d.cts +36 -4
- package/dist/index.d.ts +36 -4
- package/dist/index.js +10 -10
- package/dist/motion.cjs +1 -1
- package/dist/motion.js +3 -3
- package/dist/patterns.cjs +1 -1
- package/dist/patterns.js +5 -5
- package/dist/performance.cjs +1 -1
- package/dist/performance.js +4 -4
- package/dist/plugins.cjs +4 -3
- package/dist/plugins.d.cts +10 -2
- package/dist/plugins.d.ts +10 -2
- package/dist/plugins.js +9 -8
- package/dist/ssr.cjs +1 -1
- package/dist/ssr.js +7 -7
- package/dist/testing.cjs +1 -1
- package/dist/testing.js +2 -2
- package/dist/ui.cjs +1 -1
- package/dist/ui.js +6 -6
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +6 -6
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1984,8 +1984,40 @@ type IslandStrategy = "load" | "idle" | "visible" | "interaction" | "media";
|
|
|
1984
1984
|
type IslandLoader = () => Promise<EnhanceSetup | {
|
|
1985
1985
|
default: EnhanceSetup;
|
|
1986
1986
|
}>;
|
|
1987
|
-
/**
|
|
1988
|
-
|
|
1987
|
+
/**
|
|
1988
|
+
* A loader that has been through {@link lazyIsland}.
|
|
1989
|
+
*
|
|
1990
|
+
* Exported for callers that want to be explicit about having wrapped one. It is
|
|
1991
|
+
* NOT required by {@link IslandRegistration}, and that is deliberate.
|
|
1992
|
+
*
|
|
1993
|
+
* Requiring the brand would catch a forgotten `lazyIsland(...)` at compile time,
|
|
1994
|
+
* which is where a mistake is cheapest to find — but it also rejects code that
|
|
1995
|
+
* compiles today, and this package's contract is that the existing public API
|
|
1996
|
+
* keeps working, widening rather than replacing, with a codemod for anything
|
|
1997
|
+
* that cannot be widened. There is no codemod infrastructure here to ship one
|
|
1998
|
+
* through, so the narrowing is not taken: the mistake is caught at mount time
|
|
1999
|
+
* instead, by the thenable guard in `enhance()`, which throws immediately with
|
|
2000
|
+
* an actionable message and leaves the element unenhanced. Loud and instant at
|
|
2001
|
+
* runtime beats a type error that arrives with a breaking change attached.
|
|
2002
|
+
*
|
|
2003
|
+
* The brand is a phantom STRING-keyed property, never a `unique symbol`. A
|
|
2004
|
+
* `unique symbol` has nominal identity per declaration, so two copies of this
|
|
2005
|
+
* package's `.d.ts` in one dependency tree would produce two incompatible
|
|
2006
|
+
* types. That is not hypothetical: the registry is deliberately shared through
|
|
2007
|
+
* `Symbol.for` precisely because duplicate copies are expected. The property
|
|
2008
|
+
* exists only in the type — the runtime marker is the global symbol below.
|
|
2009
|
+
*/
|
|
2010
|
+
type LazyIslandLoader = IslandLoader & {
|
|
2011
|
+
readonly __sibujsLazyIsland: true;
|
|
2012
|
+
};
|
|
2013
|
+
/**
|
|
2014
|
+
* Either an inline setup, or a loader.
|
|
2015
|
+
*
|
|
2016
|
+
* Unchanged from 4.2: an unbranded `IslandLoader` is still accepted, so no
|
|
2017
|
+
* previously-compiling code breaks. Wrapping with {@link lazyIsland} is what
|
|
2018
|
+
* makes it *work* — see {@link LazyIslandLoader} for why this is not narrowed.
|
|
2019
|
+
*/
|
|
2020
|
+
type IslandRegistration = EnhanceSetup | IslandLoader | LazyIslandLoader;
|
|
1989
2021
|
/**
|
|
1990
2022
|
* Mark a loader as lazy island code — its module is fetched only when the island
|
|
1991
2023
|
* activates, so a page ships ~0 JS for islands that never trigger.
|
|
@@ -1995,7 +2027,7 @@ type IslandRegistration = EnhanceSetup | IslandLoader;
|
|
|
1995
2027
|
* registerIsland("chart", lazyIsland(() => import("./islands/chart.js")));
|
|
1996
2028
|
* ```
|
|
1997
2029
|
*/
|
|
1998
|
-
declare function lazyIsland(loader: IslandLoader):
|
|
2030
|
+
declare function lazyIsland(loader: IslandLoader): LazyIslandLoader;
|
|
1999
2031
|
/**
|
|
2000
2032
|
* Register an island by name. The setup is applied via `enhance()` when a
|
|
2001
2033
|
* matching `[data-sibu-island="name"]` element activates.
|
|
@@ -2274,4 +2306,4 @@ declare const untracked: ReactiveApi["untracked"];
|
|
|
2274
2306
|
declare const retrack: ReactiveApi["retrack"];
|
|
2275
2307
|
declare const setMaxDrainIterations: ReactiveApi["setMaxDrainIterations"];
|
|
2276
2308
|
|
|
2277
|
-
export { type Accessor, type ActionFn, type AnchorProps, type ArrayActions, type AsyncDerivedContext, type AsyncDerivedState, type AudioProps, type ButtonProps, type Context, DynamicComponent, type EachBindings, type EachEventBindings, type EffectBody, type EffectOptions, type EnhanceContext, type EnhanceSetup, ErrorBoundary, type ErrorBoundaryOptions, type ErrorBoundaryProps, ErrorDisplay, type ErrorDisplayProps, type ErrorSeverity, type ExternalSource, type FormProps, Fragment, type ImgProps, type InputProps, type InputType, type IslandLoader, type IslandRegistration, type IslandStrategy, KeepAlive, type KeepAliveOptions, type LabelProps, Loading, type LoadingProps, type LongPressOptions, MAX_DRAIN_TEARDOWNS, type MediaProps, type MountIslandsOptions, NodeChild, NodeChildren, type OnCleanup, type OptionProps, Portal, type Ref, type RuntimeErrorContext, type RuntimeErrorHandler, type RuntimeErrorPhase, type SSRStore, type SelectProps, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, type TextareaProps, type TypedTagFunction, type VideoProps, __resetIdCounter, a, abbr, action, address, area, array, article, aside, asyncDerived, audio, autoResize, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, copyOnClick, createId, customElement, data, datalist, dd, deepEqual, deepSignal, defer, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enhance, enhanceAll, enqueueBatchedSignal, external, fieldset, figcaption, figure, font, footer, form, g, getAction, getRequestScopedCache, getRuntimeErrorHandler, getSSRStore, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, lazyIsland, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, menu, meta, meter, mount, mountIslands, nav, nextTick, noscript, object, ol, on, onCleanup, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerAction, registerComponent, registerDisposer, registerIsland, replaceChildrenSafely, reportDrainRunaway, reportError, resolveComponent, retrack, rp, rt, ruby, runInSSRContext, s, samp, script, section, select, setGlobalErrorHandler, setMaxDrainIterations, setRuntimeErrorHandler, show, signal, slot, small, source, span, stop, store, strict, strictEffect, strong, style, sub, summary, sup, svg, symbol, table, takePendingError, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track$1 as track, transition, trapFocus, tspan, u, ul, unregisterComponent, unregisterDisposer, unregisterIsland, untracked, use, var_, video, watch, when, withSSR, writable };
|
|
2309
|
+
export { type Accessor, type ActionFn, type AnchorProps, type ArrayActions, type AsyncDerivedContext, type AsyncDerivedState, type AudioProps, type ButtonProps, type Context, DynamicComponent, type EachBindings, type EachEventBindings, type EffectBody, type EffectOptions, type EnhanceContext, type EnhanceSetup, ErrorBoundary, type ErrorBoundaryOptions, type ErrorBoundaryProps, ErrorDisplay, type ErrorDisplayProps, type ErrorSeverity, type ExternalSource, type FormProps, Fragment, type ImgProps, type InputProps, type InputType, type IslandLoader, type IslandRegistration, type IslandStrategy, KeepAlive, type KeepAliveOptions, type LabelProps, type LazyIslandLoader, Loading, type LoadingProps, type LongPressOptions, MAX_DRAIN_TEARDOWNS, type MediaProps, type MountIslandsOptions, NodeChild, NodeChildren, type OnCleanup, type OptionProps, Portal, type Ref, type RuntimeErrorContext, type RuntimeErrorHandler, type RuntimeErrorPhase, type SSRStore, type SelectProps, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, type TextareaProps, type TypedTagFunction, type VideoProps, __resetIdCounter, a, abbr, action, address, area, array, article, aside, asyncDerived, audio, autoResize, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, copyOnClick, createId, customElement, data, datalist, dd, deepEqual, deepSignal, defer, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enhance, enhanceAll, enqueueBatchedSignal, external, fieldset, figcaption, figure, font, footer, form, g, getAction, getRequestScopedCache, getRuntimeErrorHandler, getSSRStore, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, lazyIsland, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, menu, meta, meter, mount, mountIslands, nav, nextTick, noscript, object, ol, on, onCleanup, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerAction, registerComponent, registerDisposer, registerIsland, replaceChildrenSafely, reportDrainRunaway, reportError, resolveComponent, retrack, rp, rt, ruby, runInSSRContext, s, samp, script, section, select, setGlobalErrorHandler, setMaxDrainIterations, setRuntimeErrorHandler, show, signal, slot, small, source, span, stop, store, strict, strictEffect, strong, style, sub, summary, sup, svg, symbol, table, takePendingError, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track$1 as track, transition, trapFocus, tspan, u, ul, unregisterComponent, unregisterDisposer, unregisterIsland, untracked, use, var_, video, watch, when, withSSR, writable };
|
package/dist/index.d.ts
CHANGED
|
@@ -1984,8 +1984,40 @@ type IslandStrategy = "load" | "idle" | "visible" | "interaction" | "media";
|
|
|
1984
1984
|
type IslandLoader = () => Promise<EnhanceSetup | {
|
|
1985
1985
|
default: EnhanceSetup;
|
|
1986
1986
|
}>;
|
|
1987
|
-
/**
|
|
1988
|
-
|
|
1987
|
+
/**
|
|
1988
|
+
* A loader that has been through {@link lazyIsland}.
|
|
1989
|
+
*
|
|
1990
|
+
* Exported for callers that want to be explicit about having wrapped one. It is
|
|
1991
|
+
* NOT required by {@link IslandRegistration}, and that is deliberate.
|
|
1992
|
+
*
|
|
1993
|
+
* Requiring the brand would catch a forgotten `lazyIsland(...)` at compile time,
|
|
1994
|
+
* which is where a mistake is cheapest to find — but it also rejects code that
|
|
1995
|
+
* compiles today, and this package's contract is that the existing public API
|
|
1996
|
+
* keeps working, widening rather than replacing, with a codemod for anything
|
|
1997
|
+
* that cannot be widened. There is no codemod infrastructure here to ship one
|
|
1998
|
+
* through, so the narrowing is not taken: the mistake is caught at mount time
|
|
1999
|
+
* instead, by the thenable guard in `enhance()`, which throws immediately with
|
|
2000
|
+
* an actionable message and leaves the element unenhanced. Loud and instant at
|
|
2001
|
+
* runtime beats a type error that arrives with a breaking change attached.
|
|
2002
|
+
*
|
|
2003
|
+
* The brand is a phantom STRING-keyed property, never a `unique symbol`. A
|
|
2004
|
+
* `unique symbol` has nominal identity per declaration, so two copies of this
|
|
2005
|
+
* package's `.d.ts` in one dependency tree would produce two incompatible
|
|
2006
|
+
* types. That is not hypothetical: the registry is deliberately shared through
|
|
2007
|
+
* `Symbol.for` precisely because duplicate copies are expected. The property
|
|
2008
|
+
* exists only in the type — the runtime marker is the global symbol below.
|
|
2009
|
+
*/
|
|
2010
|
+
type LazyIslandLoader = IslandLoader & {
|
|
2011
|
+
readonly __sibujsLazyIsland: true;
|
|
2012
|
+
};
|
|
2013
|
+
/**
|
|
2014
|
+
* Either an inline setup, or a loader.
|
|
2015
|
+
*
|
|
2016
|
+
* Unchanged from 4.2: an unbranded `IslandLoader` is still accepted, so no
|
|
2017
|
+
* previously-compiling code breaks. Wrapping with {@link lazyIsland} is what
|
|
2018
|
+
* makes it *work* — see {@link LazyIslandLoader} for why this is not narrowed.
|
|
2019
|
+
*/
|
|
2020
|
+
type IslandRegistration = EnhanceSetup | IslandLoader | LazyIslandLoader;
|
|
1989
2021
|
/**
|
|
1990
2022
|
* Mark a loader as lazy island code — its module is fetched only when the island
|
|
1991
2023
|
* activates, so a page ships ~0 JS for islands that never trigger.
|
|
@@ -1995,7 +2027,7 @@ type IslandRegistration = EnhanceSetup | IslandLoader;
|
|
|
1995
2027
|
* registerIsland("chart", lazyIsland(() => import("./islands/chart.js")));
|
|
1996
2028
|
* ```
|
|
1997
2029
|
*/
|
|
1998
|
-
declare function lazyIsland(loader: IslandLoader):
|
|
2030
|
+
declare function lazyIsland(loader: IslandLoader): LazyIslandLoader;
|
|
1999
2031
|
/**
|
|
2000
2032
|
* Register an island by name. The setup is applied via `enhance()` when a
|
|
2001
2033
|
* matching `[data-sibu-island="name"]` element activates.
|
|
@@ -2274,4 +2306,4 @@ declare const untracked: ReactiveApi["untracked"];
|
|
|
2274
2306
|
declare const retrack: ReactiveApi["retrack"];
|
|
2275
2307
|
declare const setMaxDrainIterations: ReactiveApi["setMaxDrainIterations"];
|
|
2276
2308
|
|
|
2277
|
-
export { type Accessor, type ActionFn, type AnchorProps, type ArrayActions, type AsyncDerivedContext, type AsyncDerivedState, type AudioProps, type ButtonProps, type Context, DynamicComponent, type EachBindings, type EachEventBindings, type EffectBody, type EffectOptions, type EnhanceContext, type EnhanceSetup, ErrorBoundary, type ErrorBoundaryOptions, type ErrorBoundaryProps, ErrorDisplay, type ErrorDisplayProps, type ErrorSeverity, type ExternalSource, type FormProps, Fragment, type ImgProps, type InputProps, type InputType, type IslandLoader, type IslandRegistration, type IslandStrategy, KeepAlive, type KeepAliveOptions, type LabelProps, Loading, type LoadingProps, type LongPressOptions, MAX_DRAIN_TEARDOWNS, type MediaProps, type MountIslandsOptions, NodeChild, NodeChildren, type OnCleanup, type OptionProps, Portal, type Ref, type RuntimeErrorContext, type RuntimeErrorHandler, type RuntimeErrorPhase, type SSRStore, type SelectProps, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, type TextareaProps, type TypedTagFunction, type VideoProps, __resetIdCounter, a, abbr, action, address, area, array, article, aside, asyncDerived, audio, autoResize, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, copyOnClick, createId, customElement, data, datalist, dd, deepEqual, deepSignal, defer, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enhance, enhanceAll, enqueueBatchedSignal, external, fieldset, figcaption, figure, font, footer, form, g, getAction, getRequestScopedCache, getRuntimeErrorHandler, getSSRStore, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, lazyIsland, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, menu, meta, meter, mount, mountIslands, nav, nextTick, noscript, object, ol, on, onCleanup, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerAction, registerComponent, registerDisposer, registerIsland, replaceChildrenSafely, reportDrainRunaway, reportError, resolveComponent, retrack, rp, rt, ruby, runInSSRContext, s, samp, script, section, select, setGlobalErrorHandler, setMaxDrainIterations, setRuntimeErrorHandler, show, signal, slot, small, source, span, stop, store, strict, strictEffect, strong, style, sub, summary, sup, svg, symbol, table, takePendingError, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track$1 as track, transition, trapFocus, tspan, u, ul, unregisterComponent, unregisterDisposer, unregisterIsland, untracked, use, var_, video, watch, when, withSSR, writable };
|
|
2309
|
+
export { type Accessor, type ActionFn, type AnchorProps, type ArrayActions, type AsyncDerivedContext, type AsyncDerivedState, type AudioProps, type ButtonProps, type Context, DynamicComponent, type EachBindings, type EachEventBindings, type EffectBody, type EffectOptions, type EnhanceContext, type EnhanceSetup, ErrorBoundary, type ErrorBoundaryOptions, type ErrorBoundaryProps, ErrorDisplay, type ErrorDisplayProps, type ErrorSeverity, type ExternalSource, type FormProps, Fragment, type ImgProps, type InputProps, type InputType, type IslandLoader, type IslandRegistration, type IslandStrategy, KeepAlive, type KeepAliveOptions, type LabelProps, type LazyIslandLoader, Loading, type LoadingProps, type LongPressOptions, MAX_DRAIN_TEARDOWNS, type MediaProps, type MountIslandsOptions, NodeChild, NodeChildren, type OnCleanup, type OptionProps, Portal, type Ref, type RuntimeErrorContext, type RuntimeErrorHandler, type RuntimeErrorPhase, type SSRStore, type SelectProps, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, type TextareaProps, type TypedTagFunction, type VideoProps, __resetIdCounter, a, abbr, action, address, area, array, article, aside, asyncDerived, audio, autoResize, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, copyOnClick, createId, customElement, data, datalist, dd, deepEqual, deepSignal, defer, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enhance, enhanceAll, enqueueBatchedSignal, external, fieldset, figcaption, figure, font, footer, form, g, getAction, getRequestScopedCache, getRuntimeErrorHandler, getSSRStore, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, lazyIsland, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, menu, meta, meter, mount, mountIslands, nav, nextTick, noscript, object, ol, on, onCleanup, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerAction, registerComponent, registerDisposer, registerIsland, replaceChildrenSafely, reportDrainRunaway, reportError, resolveComponent, retrack, rp, rt, ruby, runInSSRContext, s, samp, script, section, select, setGlobalErrorHandler, setMaxDrainIterations, setRuntimeErrorHandler, show, signal, slot, small, source, span, stop, store, strict, strictEffect, strong, style, sub, summary, sup, svg, symbol, table, takePendingError, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track$1 as track, transition, trapFocus, tspan, u, ul, unregisterComponent, unregisterDisposer, unregisterIsland, untracked, use, var_, video, watch, when, withSSR, writable };
|
package/dist/index.js
CHANGED
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
unregisterIsland,
|
|
53
53
|
when,
|
|
54
54
|
writable
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-2LSY4WDM.js";
|
|
56
56
|
import {
|
|
57
57
|
a,
|
|
58
58
|
abbr,
|
|
@@ -190,36 +190,36 @@ import {
|
|
|
190
190
|
use,
|
|
191
191
|
var_,
|
|
192
192
|
video
|
|
193
|
-
} from "./chunk-
|
|
193
|
+
} from "./chunk-7UK6BSAT.js";
|
|
194
194
|
import {
|
|
195
195
|
trustHTML
|
|
196
196
|
} from "./chunk-NIOYEGBQ.js";
|
|
197
197
|
import {
|
|
198
198
|
watch
|
|
199
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-IYHM4FWD.js";
|
|
200
200
|
import {
|
|
201
201
|
__resetIdCounter,
|
|
202
202
|
createId
|
|
203
203
|
} from "./chunk-CCSJMTRN.js";
|
|
204
204
|
import {
|
|
205
205
|
context
|
|
206
|
-
} from "./chunk-
|
|
206
|
+
} from "./chunk-L4B3Y3OM.js";
|
|
207
207
|
import {
|
|
208
208
|
SVG_NS,
|
|
209
209
|
tagFactory
|
|
210
|
-
} from "./chunk-
|
|
210
|
+
} from "./chunk-XGCZ45NH.js";
|
|
211
211
|
import {
|
|
212
212
|
bindDynamic
|
|
213
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-7UBG6LDP.js";
|
|
214
214
|
import {
|
|
215
215
|
derived
|
|
216
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-3E5YNK2F.js";
|
|
217
217
|
import "./chunk-IXKSNWV5.js";
|
|
218
218
|
import "./chunk-7ZHH77QA.js";
|
|
219
219
|
import {
|
|
220
220
|
effect,
|
|
221
221
|
on
|
|
222
|
-
} from "./chunk-
|
|
222
|
+
} from "./chunk-7BJLKDBI.js";
|
|
223
223
|
import {
|
|
224
224
|
disableSSR,
|
|
225
225
|
enableSSR,
|
|
@@ -244,12 +244,12 @@ import {
|
|
|
244
244
|
external,
|
|
245
245
|
isBatching,
|
|
246
246
|
signal
|
|
247
|
-
} from "./chunk-
|
|
247
|
+
} from "./chunk-MYA5HEK5.js";
|
|
248
248
|
import {
|
|
249
249
|
retrack,
|
|
250
250
|
setMaxDrainIterations,
|
|
251
251
|
untracked
|
|
252
|
-
} from "./chunk-
|
|
252
|
+
} from "./chunk-TSL64O5L.js";
|
|
253
253
|
import {
|
|
254
254
|
getRuntimeErrorHandler,
|
|
255
255
|
reportError,
|
package/dist/motion.cjs
CHANGED
|
@@ -700,7 +700,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
700
700
|
}
|
|
701
701
|
|
|
702
702
|
// src/reactivity/track.ts
|
|
703
|
-
var _runtimeVersion = true ? "4.
|
|
703
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
704
704
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
705
705
|
function resolveReactiveApi() {
|
|
706
706
|
const g = globalThis;
|
package/dist/motion.js
CHANGED
|
@@ -20,10 +20,10 @@ import {
|
|
|
20
20
|
stagger,
|
|
21
21
|
transition,
|
|
22
22
|
viewTransition
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-RE6KLGMV.js";
|
|
24
24
|
import "./chunk-QKRPLZ2V.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-MYA5HEK5.js";
|
|
26
|
+
import "./chunk-TSL64O5L.js";
|
|
27
27
|
import "./chunk-2WLZ6757.js";
|
|
28
28
|
export {
|
|
29
29
|
TransitionGroup,
|
package/dist/patterns.cjs
CHANGED
|
@@ -603,7 +603,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
603
603
|
}
|
|
604
604
|
|
|
605
605
|
// src/reactivity/track.ts
|
|
606
|
-
var _runtimeVersion = true ? "4.
|
|
606
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
607
607
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
608
608
|
function resolveReactiveApi() {
|
|
609
609
|
const g = globalThis;
|
package/dist/patterns.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
optimisticList,
|
|
6
6
|
persisted,
|
|
7
7
|
timeline
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-USS5ENJ2.js";
|
|
9
9
|
import {
|
|
10
10
|
RenderProp,
|
|
11
11
|
assertType,
|
|
@@ -23,11 +23,11 @@ import {
|
|
|
23
23
|
withWrapper
|
|
24
24
|
} from "./chunk-VJE6DDYM.js";
|
|
25
25
|
import "./chunk-H3SRKIYX.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-3E5YNK2F.js";
|
|
27
|
+
import "./chunk-7BJLKDBI.js";
|
|
28
28
|
import "./chunk-5DXA2J44.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-MYA5HEK5.js";
|
|
30
|
+
import "./chunk-TSL64O5L.js";
|
|
31
31
|
import "./chunk-2WLZ6757.js";
|
|
32
32
|
export {
|
|
33
33
|
RenderProp,
|
package/dist/performance.cjs
CHANGED
|
@@ -790,7 +790,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
790
790
|
}
|
|
791
791
|
|
|
792
792
|
// src/reactivity/track.ts
|
|
793
|
-
var _runtimeVersion = true ? "4.
|
|
793
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
794
794
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
795
795
|
function resolveReactiveApi() {
|
|
796
796
|
const g = globalThis;
|
package/dist/performance.js
CHANGED
|
@@ -33,17 +33,17 @@ import {
|
|
|
33
33
|
transitionState,
|
|
34
34
|
uniqueId,
|
|
35
35
|
yieldToMain
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-AAHT6AKT.js";
|
|
37
37
|
import {
|
|
38
38
|
trustHTML
|
|
39
39
|
} from "./chunk-NIOYEGBQ.js";
|
|
40
40
|
import "./chunk-IXKSNWV5.js";
|
|
41
41
|
import "./chunk-7ZHH77QA.js";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-7BJLKDBI.js";
|
|
43
43
|
import "./chunk-5DXA2J44.js";
|
|
44
44
|
import "./chunk-QKRPLZ2V.js";
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
45
|
+
import "./chunk-MYA5HEK5.js";
|
|
46
|
+
import "./chunk-TSL64O5L.js";
|
|
47
47
|
import "./chunk-2WLZ6757.js";
|
|
48
48
|
export {
|
|
49
49
|
DOMPool,
|
package/dist/plugins.cjs
CHANGED
|
@@ -1887,7 +1887,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
1887
1887
|
}
|
|
1888
1888
|
|
|
1889
1889
|
// src/reactivity/track.ts
|
|
1890
|
-
var _runtimeVersion = true ? "4.
|
|
1890
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
1891
1891
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
1892
1892
|
function resolveReactiveApi() {
|
|
1893
1893
|
const g2 = globalThis;
|
|
@@ -4435,7 +4435,7 @@ function Suspense(props) {
|
|
|
4435
4435
|
console.error("[Suspense] Fallback error:", error);
|
|
4436
4436
|
return;
|
|
4437
4437
|
}
|
|
4438
|
-
if (!
|
|
4438
|
+
if (!fallback || fallback.nodeType !== 1) return;
|
|
4439
4439
|
const parent = commitTarget(myGeneration);
|
|
4440
4440
|
if (!parent) {
|
|
4441
4441
|
release(fallback);
|
|
@@ -4451,7 +4451,8 @@ function Suspense(props) {
|
|
|
4451
4451
|
try {
|
|
4452
4452
|
const result = props.nodes();
|
|
4453
4453
|
let element;
|
|
4454
|
-
|
|
4454
|
+
const isNode = typeof result?.nodeType === "number";
|
|
4455
|
+
if (!isNode && result != null && typeof result.then === "function") {
|
|
4455
4456
|
showFallback(myGeneration);
|
|
4456
4457
|
element = await result;
|
|
4457
4458
|
} else {
|
package/dist/plugins.d.cts
CHANGED
|
@@ -552,8 +552,16 @@ declare function RouterLink(props: {
|
|
|
552
552
|
* because ownership is the correct primitive to express that with.
|
|
553
553
|
*/
|
|
554
554
|
declare function Suspense(props: {
|
|
555
|
-
|
|
556
|
-
|
|
555
|
+
/** Shown while `nodes` is pending. An element, or a function returning one. */
|
|
556
|
+
fallback?: (() => HTMLElement) | HTMLElement;
|
|
557
|
+
/**
|
|
558
|
+
* The content. May be an element, or any thenable resolving to one —
|
|
559
|
+
* `PromiseLike`, not `Promise`, because a promise from another realm or a
|
|
560
|
+
* custom thenable is awaited just the same. The previous type admitted only
|
|
561
|
+
* `Promise`, so the very values the runtime was fixed to handle still had to
|
|
562
|
+
* be cast at the call site.
|
|
563
|
+
*/
|
|
564
|
+
nodes: () => HTMLElement | PromiseLike<HTMLElement>;
|
|
557
565
|
}): Node;
|
|
558
566
|
/**
|
|
559
567
|
* Creates a lazy-loaded component.
|
package/dist/plugins.d.ts
CHANGED
|
@@ -552,8 +552,16 @@ declare function RouterLink(props: {
|
|
|
552
552
|
* because ownership is the correct primitive to express that with.
|
|
553
553
|
*/
|
|
554
554
|
declare function Suspense(props: {
|
|
555
|
-
|
|
556
|
-
|
|
555
|
+
/** Shown while `nodes` is pending. An element, or a function returning one. */
|
|
556
|
+
fallback?: (() => HTMLElement) | HTMLElement;
|
|
557
|
+
/**
|
|
558
|
+
* The content. May be an element, or any thenable resolving to one —
|
|
559
|
+
* `PromiseLike`, not `Promise`, because a promise from another realm or a
|
|
560
|
+
* custom thenable is awaited just the same. The previous type admitted only
|
|
561
|
+
* `Promise`, so the very values the runtime was fixed to handle still had to
|
|
562
|
+
* be cast at the call site.
|
|
563
|
+
*/
|
|
564
|
+
nodes: () => HTMLElement | PromiseLike<HTMLElement>;
|
|
557
565
|
}): Node;
|
|
558
566
|
/**
|
|
559
567
|
* Creates a lazy-loaded component.
|
package/dist/plugins.js
CHANGED
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
} from "./chunk-WWV3SJ3L.js";
|
|
36
36
|
import {
|
|
37
37
|
span
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-7UK6BSAT.js";
|
|
39
39
|
import {
|
|
40
40
|
escapeScriptJson,
|
|
41
41
|
renderToString,
|
|
@@ -43,8 +43,8 @@ import {
|
|
|
43
43
|
} from "./chunk-NIOYEGBQ.js";
|
|
44
44
|
import {
|
|
45
45
|
resolveClassValue
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-XGCZ45NH.js";
|
|
47
|
+
import "./chunk-7UBG6LDP.js";
|
|
48
48
|
import {
|
|
49
49
|
isUrlAttribute,
|
|
50
50
|
sanitizeStyleAttribute,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
} from "./chunk-7ZHH77QA.js";
|
|
57
57
|
import {
|
|
58
58
|
effect
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-7BJLKDBI.js";
|
|
60
60
|
import {
|
|
61
61
|
getRequestStore
|
|
62
62
|
} from "./chunk-5DXA2J44.js";
|
|
@@ -66,10 +66,10 @@ import {
|
|
|
66
66
|
} from "./chunk-QKRPLZ2V.js";
|
|
67
67
|
import {
|
|
68
68
|
signal
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-MYA5HEK5.js";
|
|
70
70
|
import {
|
|
71
71
|
track
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-TSL64O5L.js";
|
|
73
73
|
import {
|
|
74
74
|
devWarn,
|
|
75
75
|
isDev
|
|
@@ -1706,7 +1706,7 @@ function Suspense(props) {
|
|
|
1706
1706
|
console.error("[Suspense] Fallback error:", error);
|
|
1707
1707
|
return;
|
|
1708
1708
|
}
|
|
1709
|
-
if (!
|
|
1709
|
+
if (!fallback || fallback.nodeType !== 1) return;
|
|
1710
1710
|
const parent = commitTarget(myGeneration);
|
|
1711
1711
|
if (!parent) {
|
|
1712
1712
|
release(fallback);
|
|
@@ -1722,7 +1722,8 @@ function Suspense(props) {
|
|
|
1722
1722
|
try {
|
|
1723
1723
|
const result = props.nodes();
|
|
1724
1724
|
let element;
|
|
1725
|
-
|
|
1725
|
+
const isNode = typeof result?.nodeType === "number";
|
|
1726
|
+
if (!isNode && result != null && typeof result.then === "function") {
|
|
1726
1727
|
showFallback(myGeneration);
|
|
1727
1728
|
element = await result;
|
|
1728
1729
|
} else {
|
package/dist/ssr.cjs
CHANGED
|
@@ -1641,7 +1641,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
1641
1641
|
}
|
|
1642
1642
|
|
|
1643
1643
|
// src/reactivity/track.ts
|
|
1644
|
-
var _runtimeVersion = true ? "4.
|
|
1644
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
1645
1645
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
1646
1646
|
function resolveReactiveApi() {
|
|
1647
1647
|
const g2 = globalThis;
|
package/dist/ssr.js
CHANGED
|
@@ -23,9 +23,9 @@ import {
|
|
|
23
23
|
wasm,
|
|
24
24
|
worker,
|
|
25
25
|
workerFn
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-7GQIRV27.js";
|
|
27
27
|
import "./chunk-52XFPGSN.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-7UK6BSAT.js";
|
|
29
29
|
import {
|
|
30
30
|
collectStream,
|
|
31
31
|
deserializeState,
|
|
@@ -46,15 +46,15 @@ import {
|
|
|
46
46
|
suspenseSwapScript,
|
|
47
47
|
trustHTML
|
|
48
48
|
} from "./chunk-NIOYEGBQ.js";
|
|
49
|
-
import "./chunk-
|
|
50
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-XGCZ45NH.js";
|
|
50
|
+
import "./chunk-7UBG6LDP.js";
|
|
51
51
|
import "./chunk-IXKSNWV5.js";
|
|
52
52
|
import "./chunk-7ZHH77QA.js";
|
|
53
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-7BJLKDBI.js";
|
|
54
54
|
import "./chunk-5DXA2J44.js";
|
|
55
55
|
import "./chunk-QKRPLZ2V.js";
|
|
56
|
-
import "./chunk-
|
|
57
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-MYA5HEK5.js";
|
|
57
|
+
import "./chunk-TSL64O5L.js";
|
|
58
58
|
import "./chunk-2WLZ6757.js";
|
|
59
59
|
export {
|
|
60
60
|
Head,
|
package/dist/testing.cjs
CHANGED
|
@@ -2130,7 +2130,7 @@ function forEachSubscriber(signal, visit) {
|
|
|
2130
2130
|
}
|
|
2131
2131
|
|
|
2132
2132
|
// src/reactivity/track.ts
|
|
2133
|
-
var _runtimeVersion = true ? "4.
|
|
2133
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
2134
2134
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
2135
2135
|
function resolveReactiveApi() {
|
|
2136
2136
|
const g = globalThis;
|
package/dist/testing.js
CHANGED
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
} from "./chunk-7ZHH77QA.js";
|
|
4
4
|
import {
|
|
5
5
|
effect
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7BJLKDBI.js";
|
|
7
7
|
import "./chunk-5DXA2J44.js";
|
|
8
8
|
import {
|
|
9
9
|
replaceChildrenSafely
|
|
10
10
|
} from "./chunk-QKRPLZ2V.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-TSL64O5L.js";
|
|
12
12
|
import "./chunk-2WLZ6757.js";
|
|
13
13
|
|
|
14
14
|
// src/testing/a11y.ts
|
package/dist/ui.cjs
CHANGED
|
@@ -726,7 +726,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
726
726
|
}
|
|
727
727
|
|
|
728
728
|
// src/reactivity/track.ts
|
|
729
|
-
var _runtimeVersion = true ? "4.
|
|
729
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
730
730
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
731
731
|
function resolveReactiveApi() {
|
|
732
732
|
const g = globalThis;
|
package/dist/ui.js
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
toast,
|
|
39
39
|
withScopedStyle,
|
|
40
40
|
zipMask
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-GZYQNIPS.js";
|
|
42
42
|
import {
|
|
43
43
|
RenderProp,
|
|
44
44
|
assertType,
|
|
@@ -58,23 +58,23 @@ import {
|
|
|
58
58
|
import {
|
|
59
59
|
createId
|
|
60
60
|
} from "./chunk-CCSJMTRN.js";
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
61
|
+
import "./chunk-7UBG6LDP.js";
|
|
62
|
+
import "./chunk-3E5YNK2F.js";
|
|
63
63
|
import "./chunk-IXKSNWV5.js";
|
|
64
64
|
import {
|
|
65
65
|
globalSingleton
|
|
66
66
|
} from "./chunk-7ZHH77QA.js";
|
|
67
67
|
import {
|
|
68
68
|
effect
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-7BJLKDBI.js";
|
|
70
70
|
import "./chunk-5DXA2J44.js";
|
|
71
71
|
import {
|
|
72
72
|
registerDisposer
|
|
73
73
|
} from "./chunk-QKRPLZ2V.js";
|
|
74
74
|
import {
|
|
75
75
|
signal
|
|
76
|
-
} from "./chunk-
|
|
77
|
-
import "./chunk-
|
|
76
|
+
} from "./chunk-MYA5HEK5.js";
|
|
77
|
+
import "./chunk-TSL64O5L.js";
|
|
78
78
|
import "./chunk-2WLZ6757.js";
|
|
79
79
|
|
|
80
80
|
// src/ui/formAction.ts
|
package/dist/widgets.cjs
CHANGED
|
@@ -600,7 +600,7 @@ function forEachSubscriber(signal2, visit) {
|
|
|
600
600
|
}
|
|
601
601
|
|
|
602
602
|
// src/reactivity/track.ts
|
|
603
|
-
var _runtimeVersion = true ? "4.
|
|
603
|
+
var _runtimeVersion = true ? "4.3.0" : "dev";
|
|
604
604
|
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
605
605
|
function resolveReactiveApi() {
|
|
606
606
|
const g = globalThis;
|
package/dist/widgets.js
CHANGED
|
@@ -8,15 +8,15 @@ import {
|
|
|
8
8
|
select,
|
|
9
9
|
tabs,
|
|
10
10
|
tooltip
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-G7GPNB6N.js";
|
|
12
|
+
import "./chunk-IYHM4FWD.js";
|
|
13
13
|
import "./chunk-CCSJMTRN.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-3E5YNK2F.js";
|
|
15
15
|
import "./chunk-IXKSNWV5.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-7BJLKDBI.js";
|
|
17
17
|
import "./chunk-5DXA2J44.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-MYA5HEK5.js";
|
|
19
|
+
import "./chunk-TSL64O5L.js";
|
|
20
20
|
import "./chunk-2WLZ6757.js";
|
|
21
21
|
export {
|
|
22
22
|
accordion,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sibujs",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"description": "A lightweight, function-based frontend framework that combines the best of React, Svelte, and Vue — with zero VDOM and maximum simplicity. Designed for developers who want fine-grained reactivity and full control without compilation or magic.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"frontend",
|