@fictjs/runtime 0.0.3 → 0.0.4
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/README.md +1 -1
- package/dist/index.cjs +33 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.dev.js +36 -31
- package/dist/index.dev.js.map +1 -1
- package/dist/index.js +33 -30
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.cts +671 -0
- package/dist/jsx-dev-runtime.d.ts +671 -0
- package/dist/slim.cjs +32 -29
- package/dist/slim.cjs.map +1 -1
- package/dist/slim.js +32 -29
- package/dist/slim.js.map +1 -1
- package/package.json +2 -2
- package/src/binding.ts +49 -31
- package/src/index.ts +1 -0
package/dist/index.d.cts
CHANGED
|
@@ -995,6 +995,12 @@ declare function isReactive(value: unknown): value is () => unknown;
|
|
|
995
995
|
* Unwrap a potentially reactive value to get the actual value
|
|
996
996
|
*/
|
|
997
997
|
declare function unwrap<T>(value: MaybeReactive<T>): T;
|
|
998
|
+
/**
|
|
999
|
+
* Invoke an event handler or handler accessor in a safe way.
|
|
1000
|
+
* Supports handlers that return another handler and handlers that expect an
|
|
1001
|
+
* optional data payload followed by the event.
|
|
1002
|
+
*/
|
|
1003
|
+
declare function callEventHandler(handler: EventListenerOrEventListenerObject | null | undefined, event: Event, node?: EventTarget | null, data?: unknown): void;
|
|
998
1004
|
/**
|
|
999
1005
|
* Unwrap a primitive proxy value to get the raw primitive value.
|
|
1000
1006
|
* This is primarily useful for advanced scenarios where you need the actual
|
|
@@ -1569,4 +1575,4 @@ declare function isNodeBetweenMarkers(node: Node, startMarker: Comment, endMarke
|
|
|
1569
1575
|
*/
|
|
1570
1576
|
declare function createKeyedList<T>(getItems: () => T[], keyFn: (item: T, index: number) => string | number, renderItem: FineGrainedRenderItem<T>, needsIndex?: boolean): KeyedListBinding;
|
|
1571
1577
|
|
|
1572
|
-
export { $effect, $memo, $state, Aliases, type AttributeSetter, type BaseProps, type BindingHandle, BooleanAttributes, ChildProperties, type ClassProp, type Cleanup, type Component, type CreateElementFn, type DOMElement, DelegatedEvents, type Effect, ErrorBoundary, type ErrorInfo, type EventHandler, type FictDevtoolsHook, type FictNode, type FictVNode, Fragment, JSX, type KeyFn, type KeyedBlock, type KeyedListBinding, type KeyedListContainer, type MarkerBlock, type MaybeReactive, type Memo, Properties, type PropsWithChildren, type Ref, type RefCallback, type RefObject, SVGElements, SVGNamespace, type SignalAccessor as Signal, type Store, type StyleProp, Suspense, type SuspenseToken, UnitlessStyles, type VersionedSignal, type VersionedSignalOptions, __fictPopContext, __fictProp, __fictPropsRest, __fictPushContext, __fictRender, __fictResetContext, __fictUseContext, __fictUseEffect, __fictUseMemo, __fictUseSignal, addEventListener, assign, batch, bindAttribute, bindClass, bindEvent, bindProperty, bindRef, bindStyle, bindText, classList, clearDelegatedEvents, createAttributeBinding, createChildBinding, createClassBinding, createConditional, createEffect, createElement, createKeyedBlock, createKeyedList, createKeyedListContainer, createList, createMemo, createPortal, createPropsProxy, createRef, createRenderEffect, createRoot, createSelector, createShow, signal as createSignal, createStore, createStyleBinding, createSuspenseToken, createTextBinding, createVersionedSignal, delegateEvents, destroyMarkerBlock, getDevtoolsHook, getFirstNodeAfter, getPropAlias, insert, insertNodesBefore, isNodeBetweenMarkers, isReactive, mergeProps, moveMarkerBlock, moveNodesBefore, onCleanup, onDestroy, onMount, __fictProp as prop, reconcileArrays, removeNodes, render, setCycleProtectionOptions, spread, startTransition, template, toNodeArray, untrack, unwrap, unwrapPrimitive, useDeferredValue, useProp, useTransition };
|
|
1578
|
+
export { $effect, $memo, $state, Aliases, type AttributeSetter, type BaseProps, type BindingHandle, BooleanAttributes, ChildProperties, type ClassProp, type Cleanup, type Component, type CreateElementFn, type DOMElement, DelegatedEvents, type Effect, ErrorBoundary, type ErrorInfo, type EventHandler, type FictDevtoolsHook, type FictNode, type FictVNode, Fragment, JSX, type KeyFn, type KeyedBlock, type KeyedListBinding, type KeyedListContainer, type MarkerBlock, type MaybeReactive, type Memo, Properties, type PropsWithChildren, type Ref, type RefCallback, type RefObject, SVGElements, SVGNamespace, type SignalAccessor as Signal, type Store, type StyleProp, Suspense, type SuspenseToken, UnitlessStyles, type VersionedSignal, type VersionedSignalOptions, __fictPopContext, __fictProp, __fictPropsRest, __fictPushContext, __fictRender, __fictResetContext, __fictUseContext, __fictUseEffect, __fictUseMemo, __fictUseSignal, addEventListener, assign, batch, bindAttribute, bindClass, bindEvent, bindProperty, bindRef, bindStyle, bindText, callEventHandler, classList, clearDelegatedEvents, createAttributeBinding, createChildBinding, createClassBinding, createConditional, createEffect, createElement, createKeyedBlock, createKeyedList, createKeyedListContainer, createList, createMemo, createPortal, createPropsProxy, createRef, createRenderEffect, createRoot, createSelector, createShow, signal as createSignal, createStore, createStyleBinding, createSuspenseToken, createTextBinding, createVersionedSignal, delegateEvents, destroyMarkerBlock, getDevtoolsHook, getFirstNodeAfter, getPropAlias, insert, insertNodesBefore, isNodeBetweenMarkers, isReactive, mergeProps, moveMarkerBlock, moveNodesBefore, onCleanup, onDestroy, onMount, __fictProp as prop, reconcileArrays, removeNodes, render, setCycleProtectionOptions, spread, startTransition, template, toNodeArray, untrack, unwrap, unwrapPrimitive, useDeferredValue, useProp, useTransition };
|
package/dist/index.d.ts
CHANGED
|
@@ -995,6 +995,12 @@ declare function isReactive(value: unknown): value is () => unknown;
|
|
|
995
995
|
* Unwrap a potentially reactive value to get the actual value
|
|
996
996
|
*/
|
|
997
997
|
declare function unwrap<T>(value: MaybeReactive<T>): T;
|
|
998
|
+
/**
|
|
999
|
+
* Invoke an event handler or handler accessor in a safe way.
|
|
1000
|
+
* Supports handlers that return another handler and handlers that expect an
|
|
1001
|
+
* optional data payload followed by the event.
|
|
1002
|
+
*/
|
|
1003
|
+
declare function callEventHandler(handler: EventListenerOrEventListenerObject | null | undefined, event: Event, node?: EventTarget | null, data?: unknown): void;
|
|
998
1004
|
/**
|
|
999
1005
|
* Unwrap a primitive proxy value to get the raw primitive value.
|
|
1000
1006
|
* This is primarily useful for advanced scenarios where you need the actual
|
|
@@ -1569,4 +1575,4 @@ declare function isNodeBetweenMarkers(node: Node, startMarker: Comment, endMarke
|
|
|
1569
1575
|
*/
|
|
1570
1576
|
declare function createKeyedList<T>(getItems: () => T[], keyFn: (item: T, index: number) => string | number, renderItem: FineGrainedRenderItem<T>, needsIndex?: boolean): KeyedListBinding;
|
|
1571
1577
|
|
|
1572
|
-
export { $effect, $memo, $state, Aliases, type AttributeSetter, type BaseProps, type BindingHandle, BooleanAttributes, ChildProperties, type ClassProp, type Cleanup, type Component, type CreateElementFn, type DOMElement, DelegatedEvents, type Effect, ErrorBoundary, type ErrorInfo, type EventHandler, type FictDevtoolsHook, type FictNode, type FictVNode, Fragment, JSX, type KeyFn, type KeyedBlock, type KeyedListBinding, type KeyedListContainer, type MarkerBlock, type MaybeReactive, type Memo, Properties, type PropsWithChildren, type Ref, type RefCallback, type RefObject, SVGElements, SVGNamespace, type SignalAccessor as Signal, type Store, type StyleProp, Suspense, type SuspenseToken, UnitlessStyles, type VersionedSignal, type VersionedSignalOptions, __fictPopContext, __fictProp, __fictPropsRest, __fictPushContext, __fictRender, __fictResetContext, __fictUseContext, __fictUseEffect, __fictUseMemo, __fictUseSignal, addEventListener, assign, batch, bindAttribute, bindClass, bindEvent, bindProperty, bindRef, bindStyle, bindText, classList, clearDelegatedEvents, createAttributeBinding, createChildBinding, createClassBinding, createConditional, createEffect, createElement, createKeyedBlock, createKeyedList, createKeyedListContainer, createList, createMemo, createPortal, createPropsProxy, createRef, createRenderEffect, createRoot, createSelector, createShow, signal as createSignal, createStore, createStyleBinding, createSuspenseToken, createTextBinding, createVersionedSignal, delegateEvents, destroyMarkerBlock, getDevtoolsHook, getFirstNodeAfter, getPropAlias, insert, insertNodesBefore, isNodeBetweenMarkers, isReactive, mergeProps, moveMarkerBlock, moveNodesBefore, onCleanup, onDestroy, onMount, __fictProp as prop, reconcileArrays, removeNodes, render, setCycleProtectionOptions, spread, startTransition, template, toNodeArray, untrack, unwrap, unwrapPrimitive, useDeferredValue, useProp, useTransition };
|
|
1578
|
+
export { $effect, $memo, $state, Aliases, type AttributeSetter, type BaseProps, type BindingHandle, BooleanAttributes, ChildProperties, type ClassProp, type Cleanup, type Component, type CreateElementFn, type DOMElement, DelegatedEvents, type Effect, ErrorBoundary, type ErrorInfo, type EventHandler, type FictDevtoolsHook, type FictNode, type FictVNode, Fragment, JSX, type KeyFn, type KeyedBlock, type KeyedListBinding, type KeyedListContainer, type MarkerBlock, type MaybeReactive, type Memo, Properties, type PropsWithChildren, type Ref, type RefCallback, type RefObject, SVGElements, SVGNamespace, type SignalAccessor as Signal, type Store, type StyleProp, Suspense, type SuspenseToken, UnitlessStyles, type VersionedSignal, type VersionedSignalOptions, __fictPopContext, __fictProp, __fictPropsRest, __fictPushContext, __fictRender, __fictResetContext, __fictUseContext, __fictUseEffect, __fictUseMemo, __fictUseSignal, addEventListener, assign, batch, bindAttribute, bindClass, bindEvent, bindProperty, bindRef, bindStyle, bindText, callEventHandler, classList, clearDelegatedEvents, createAttributeBinding, createChildBinding, createClassBinding, createConditional, createEffect, createElement, createKeyedBlock, createKeyedList, createKeyedListContainer, createList, createMemo, createPortal, createPropsProxy, createRef, createRenderEffect, createRoot, createSelector, createShow, signal as createSignal, createStore, createStyleBinding, createSuspenseToken, createTextBinding, createVersionedSignal, delegateEvents, destroyMarkerBlock, getDevtoolsHook, getFirstNodeAfter, getPropAlias, insert, insertNodesBefore, isNodeBetweenMarkers, isReactive, mergeProps, moveMarkerBlock, moveNodesBefore, onCleanup, onDestroy, onMount, __fictProp as prop, reconcileArrays, removeNodes, render, setCycleProtectionOptions, spread, startTransition, template, toNodeArray, untrack, unwrap, unwrapPrimitive, useDeferredValue, useProp, useTransition };
|
package/dist/index.dev.js
CHANGED
|
@@ -1840,6 +1840,30 @@ function isReactive(value) {
|
|
|
1840
1840
|
function unwrap2(value) {
|
|
1841
1841
|
return isReactive(value) ? value() : value;
|
|
1842
1842
|
}
|
|
1843
|
+
function callEventHandler(handler, event, node, data) {
|
|
1844
|
+
if (!handler) return;
|
|
1845
|
+
const context = node ?? event.currentTarget ?? void 0;
|
|
1846
|
+
const invoke = (fn) => {
|
|
1847
|
+
if (typeof fn === "function") {
|
|
1848
|
+
const result = data === void 0 ? fn.call(context, event) : fn.call(context, data, event);
|
|
1849
|
+
if (typeof result === "function" && result !== fn) {
|
|
1850
|
+
if (data === void 0) {
|
|
1851
|
+
;
|
|
1852
|
+
result.call(context, event);
|
|
1853
|
+
} else {
|
|
1854
|
+
;
|
|
1855
|
+
result.call(context, data, event);
|
|
1856
|
+
}
|
|
1857
|
+
} else if (result && typeof result.handleEvent === "function") {
|
|
1858
|
+
;
|
|
1859
|
+
result.handleEvent.call(result, event);
|
|
1860
|
+
}
|
|
1861
|
+
} else if (fn && typeof fn.handleEvent === "function") {
|
|
1862
|
+
fn.handleEvent.call(fn, event);
|
|
1863
|
+
}
|
|
1864
|
+
};
|
|
1865
|
+
invoke(handler);
|
|
1866
|
+
}
|
|
1843
1867
|
var PRIMITIVE_PROXY = Symbol("fict:primitive-proxy");
|
|
1844
1868
|
var PRIMITIVE_PROXY_RAW_VALUE = Symbol("fict:primitive-proxy:raw-value");
|
|
1845
1869
|
function unwrapPrimitive(value) {
|
|
@@ -2353,16 +2377,10 @@ function globalEventHandler(e) {
|
|
|
2353
2377
|
const hasData = rawData !== void 0;
|
|
2354
2378
|
const resolvedNodeData = hasData ? resolveData(rawData) : void 0;
|
|
2355
2379
|
if (typeof handler === "function") {
|
|
2356
|
-
|
|
2357
|
-
;
|
|
2358
|
-
handler.call(node, resolvedNodeData, e);
|
|
2359
|
-
} else {
|
|
2360
|
-
;
|
|
2361
|
-
handler.call(node, e);
|
|
2362
|
-
}
|
|
2380
|
+
callEventHandler(handler, e, node, hasData ? resolvedNodeData : void 0);
|
|
2363
2381
|
} else if (Array.isArray(handler)) {
|
|
2364
2382
|
const tupleData = resolveData(handler[1]);
|
|
2365
|
-
handler[0]
|
|
2383
|
+
callEventHandler(handler[0], e, node, tupleData);
|
|
2366
2384
|
}
|
|
2367
2385
|
if (e.cancelBubble) return false;
|
|
2368
2386
|
}
|
|
@@ -2428,23 +2446,15 @@ function bindEvent(el, eventName, handler, options2) {
|
|
|
2428
2446
|
if (DelegatedEvents.has(eventName) && !options2) {
|
|
2429
2447
|
const key = `$$${eventName}`;
|
|
2430
2448
|
delegateEvents([eventName]);
|
|
2431
|
-
const createWrapped = (resolve) => {
|
|
2432
|
-
const wrapped2 = function(...args) {
|
|
2433
|
-
try {
|
|
2434
|
-
const fn = resolve();
|
|
2435
|
-
if (typeof fn === "function") {
|
|
2436
|
-
return fn.apply(this, args);
|
|
2437
|
-
} else if (fn && typeof fn.handleEvent === "function") {
|
|
2438
|
-
return fn.handleEvent.apply(fn, args);
|
|
2439
|
-
}
|
|
2440
|
-
} catch (err) {
|
|
2441
|
-
handleError(err, { source: "event", eventName }, rootRef);
|
|
2442
|
-
}
|
|
2443
|
-
};
|
|
2444
|
-
return wrapped2;
|
|
2445
|
-
};
|
|
2446
2449
|
const resolveHandler = isReactive(handler) ? handler : () => handler;
|
|
2447
|
-
el[key] =
|
|
2450
|
+
el[key] = function(...args) {
|
|
2451
|
+
try {
|
|
2452
|
+
const fn = resolveHandler();
|
|
2453
|
+
callEventHandler(fn, args[0], el);
|
|
2454
|
+
} catch (err) {
|
|
2455
|
+
handleError(err, { source: "event", eventName }, rootRef);
|
|
2456
|
+
}
|
|
2457
|
+
};
|
|
2448
2458
|
return () => {
|
|
2449
2459
|
el[key] = void 0;
|
|
2450
2460
|
};
|
|
@@ -2453,13 +2463,7 @@ function bindEvent(el, eventName, handler, options2) {
|
|
|
2453
2463
|
const wrapped = (event) => {
|
|
2454
2464
|
try {
|
|
2455
2465
|
const resolved = getHandler();
|
|
2456
|
-
|
|
2457
|
-
;
|
|
2458
|
-
resolved(event);
|
|
2459
|
-
} else if (resolved && typeof resolved.handleEvent === "function") {
|
|
2460
|
-
;
|
|
2461
|
-
resolved.handleEvent(event);
|
|
2462
|
-
}
|
|
2466
|
+
callEventHandler(resolved, event, el);
|
|
2463
2467
|
} catch (err) {
|
|
2464
2468
|
if (handleError(err, { source: "event", eventName }, rootRef)) {
|
|
2465
2469
|
return;
|
|
@@ -4180,6 +4184,7 @@ export {
|
|
|
4180
4184
|
bindRef,
|
|
4181
4185
|
bindStyle,
|
|
4182
4186
|
bindText,
|
|
4187
|
+
callEventHandler,
|
|
4183
4188
|
classList,
|
|
4184
4189
|
clearDelegatedEvents,
|
|
4185
4190
|
createAttributeBinding,
|