@fictjs/runtime 0.0.2 → 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/dist/index.js CHANGED
@@ -1838,6 +1838,27 @@ function isReactive(value) {
1838
1838
  function unwrap2(value) {
1839
1839
  return isReactive(value) ? value() : value;
1840
1840
  }
1841
+ function callEventHandler(handler, event, node, data) {
1842
+ if (!handler) return;
1843
+ const context = node ?? event.currentTarget ?? void 0;
1844
+ const invoke = (fn) => {
1845
+ if (typeof fn === "function") {
1846
+ const result = data === void 0 ? fn.call(context, event) : fn.call(context, data, event);
1847
+ if (typeof result === "function" && result !== fn) {
1848
+ if (data === void 0) {
1849
+ result.call(context, event);
1850
+ } else {
1851
+ result.call(context, data, event);
1852
+ }
1853
+ } else if (result && typeof result.handleEvent === "function") {
1854
+ result.handleEvent.call(result, event);
1855
+ }
1856
+ } else if (fn && typeof fn.handleEvent === "function") {
1857
+ fn.handleEvent.call(fn, event);
1858
+ }
1859
+ };
1860
+ invoke(handler);
1861
+ }
1841
1862
  var PRIMITIVE_PROXY = Symbol("fict:primitive-proxy");
1842
1863
  var PRIMITIVE_PROXY_RAW_VALUE = Symbol("fict:primitive-proxy:raw-value");
1843
1864
  function unwrapPrimitive(value) {
@@ -2351,14 +2372,10 @@ function globalEventHandler(e) {
2351
2372
  const hasData = rawData !== void 0;
2352
2373
  const resolvedNodeData = hasData ? resolveData(rawData) : void 0;
2353
2374
  if (typeof handler === "function") {
2354
- if (hasData) {
2355
- handler.call(node, resolvedNodeData, e);
2356
- } else {
2357
- handler.call(node, e);
2358
- }
2375
+ callEventHandler(handler, e, node, hasData ? resolvedNodeData : void 0);
2359
2376
  } else if (Array.isArray(handler)) {
2360
2377
  const tupleData = resolveData(handler[1]);
2361
- handler[0].call(node, tupleData, e);
2378
+ callEventHandler(handler[0], e, node, tupleData);
2362
2379
  }
2363
2380
  if (e.cancelBubble) return false;
2364
2381
  }
@@ -2422,23 +2439,15 @@ function bindEvent(el, eventName, handler, options2) {
2422
2439
  if (DelegatedEvents.has(eventName) && !options2) {
2423
2440
  const key = `$$${eventName}`;
2424
2441
  delegateEvents([eventName]);
2425
- const createWrapped = (resolve) => {
2426
- const wrapped2 = function(...args) {
2427
- try {
2428
- const fn = resolve();
2429
- if (typeof fn === "function") {
2430
- return fn.apply(this, args);
2431
- } else if (fn && typeof fn.handleEvent === "function") {
2432
- return fn.handleEvent.apply(fn, args);
2433
- }
2434
- } catch (err) {
2435
- handleError(err, { source: "event", eventName }, rootRef);
2436
- }
2437
- };
2438
- return wrapped2;
2439
- };
2440
2442
  const resolveHandler = isReactive(handler) ? handler : () => handler;
2441
- el[key] = createWrapped(resolveHandler);
2443
+ el[key] = function(...args) {
2444
+ try {
2445
+ const fn = resolveHandler();
2446
+ callEventHandler(fn, args[0], el);
2447
+ } catch (err) {
2448
+ handleError(err, { source: "event", eventName }, rootRef);
2449
+ }
2450
+ };
2442
2451
  return () => {
2443
2452
  el[key] = void 0;
2444
2453
  };
@@ -2447,13 +2456,7 @@ function bindEvent(el, eventName, handler, options2) {
2447
2456
  const wrapped = (event) => {
2448
2457
  try {
2449
2458
  const resolved = getHandler();
2450
- if (typeof resolved === "function") {
2451
- ;
2452
- resolved(event);
2453
- } else if (resolved && typeof resolved.handleEvent === "function") {
2454
- ;
2455
- resolved.handleEvent(event);
2456
- }
2459
+ callEventHandler(resolved, event, el);
2457
2460
  } catch (err) {
2458
2461
  if (handleError(err, { source: "event", eventName }, rootRef)) {
2459
2462
  return;
@@ -4128,6 +4131,6 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
4128
4131
  };
4129
4132
  }
4130
4133
 
4131
- export { $effect, $memo, $state, Aliases, BooleanAttributes, ChildProperties, DelegatedEvents, ErrorBoundary, Fragment, Properties, SVGElements, SVGNamespace, Suspense, UnitlessStyles, __fictPopContext, __fictProp, __fictPropsRest, __fictPushContext, __fictRender, __fictResetContext, __fictUseContext, __fictUseEffect, __fictUseMemo, __fictUseSignal, addEventListener, assign, batch2 as 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, untrack2 as untrack, unwrap2 as unwrap, unwrapPrimitive, useDeferredValue, useProp, useTransition };
4134
+ export { $effect, $memo, $state, Aliases, BooleanAttributes, ChildProperties, DelegatedEvents, ErrorBoundary, Fragment, Properties, SVGElements, SVGNamespace, Suspense, UnitlessStyles, __fictPopContext, __fictProp, __fictPropsRest, __fictPushContext, __fictRender, __fictResetContext, __fictUseContext, __fictUseEffect, __fictUseMemo, __fictUseSignal, addEventListener, assign, batch2 as 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, untrack2 as untrack, unwrap2 as unwrap, unwrapPrimitive, useDeferredValue, useProp, useTransition };
4132
4135
  //# sourceMappingURL=index.js.map
4133
4136
  //# sourceMappingURL=index.js.map