@getforma/core 0.3.1 → 0.8.1

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.
Files changed (52) hide show
  1. package/README.md +279 -20
  2. package/dist/chunk-3U57L2TY.cjs +38 -0
  3. package/dist/chunk-3U57L2TY.cjs.map +1 -0
  4. package/dist/{chunk-5H52PKGF.js → chunk-N522P3G6.js} +37 -19
  5. package/dist/chunk-N522P3G6.js.map +1 -0
  6. package/dist/chunk-OZCHIVAZ.js +35 -0
  7. package/dist/chunk-OZCHIVAZ.js.map +1 -0
  8. package/dist/{chunk-TSQ7AKFT.cjs → chunk-YMIMKO4W.cjs} +66 -25
  9. package/dist/chunk-YMIMKO4W.cjs.map +1 -0
  10. package/dist/forma-runtime-csp.js +1 -1
  11. package/dist/forma-runtime.js +1 -1
  12. package/dist/formajs-runtime-hardened.global.js +1 -1
  13. package/dist/formajs-runtime-hardened.global.js.map +1 -1
  14. package/dist/formajs-runtime.global.js +1 -1
  15. package/dist/formajs-runtime.global.js.map +1 -1
  16. package/dist/formajs.global.js +1 -1
  17. package/dist/formajs.global.js.map +1 -1
  18. package/dist/index.cjs +142 -118
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +70 -29
  21. package/dist/index.d.ts +70 -29
  22. package/dist/index.js +64 -60
  23. package/dist/index.js.map +1 -1
  24. package/dist/runtime-hardened.cjs +166 -39
  25. package/dist/runtime-hardened.cjs.map +1 -1
  26. package/dist/runtime-hardened.js +167 -40
  27. package/dist/runtime-hardened.js.map +1 -1
  28. package/dist/runtime.cjs +184 -57
  29. package/dist/runtime.cjs.map +1 -1
  30. package/dist/runtime.js +162 -35
  31. package/dist/runtime.js.map +1 -1
  32. package/dist/signal-B4_wQJHs.d.cts +53 -0
  33. package/dist/signal-B4_wQJHs.d.ts +53 -0
  34. package/dist/ssr/index.cjs +37 -12
  35. package/dist/ssr/index.cjs.map +1 -1
  36. package/dist/ssr/index.js +37 -12
  37. package/dist/ssr/index.js.map +1 -1
  38. package/dist/tc39-compat.cjs +4 -12
  39. package/dist/tc39-compat.cjs.map +1 -1
  40. package/dist/tc39-compat.d.cts +1 -1
  41. package/dist/tc39-compat.d.ts +1 -1
  42. package/dist/tc39-compat.js +3 -11
  43. package/dist/tc39-compat.js.map +1 -1
  44. package/package.json +2 -2
  45. package/dist/chunk-5H52PKGF.js.map +0 -1
  46. package/dist/chunk-FPSLC62A.cjs +0 -31
  47. package/dist/chunk-FPSLC62A.cjs.map +0 -1
  48. package/dist/chunk-KX5WRZH7.js +0 -27
  49. package/dist/chunk-KX5WRZH7.js.map +0 -1
  50. package/dist/chunk-TSQ7AKFT.cjs.map +0 -1
  51. package/dist/signal-CfLDwMyg.d.cts +0 -29
  52. package/dist/signal-CfLDwMyg.d.ts +0 -29
@@ -1,16 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunkFPSLC62A_cjs = require('./chunk-FPSLC62A.cjs');
3
+ var chunk3U57L2TY_cjs = require('./chunk-3U57L2TY.cjs');
4
4
  var alienSignals = require('alien-signals');
5
5
 
6
- // src/reactive/root.ts
7
6
  var currentRoot = null;
8
7
  var rootStack = [];
9
8
  function createRoot(fn) {
10
- const scope = { disposers: [] };
9
+ const scope = { disposers: [], scopeDispose: null };
11
10
  rootStack.push(currentRoot);
12
11
  currentRoot = scope;
13
12
  const dispose = () => {
13
+ if (scope.scopeDispose) {
14
+ try {
15
+ scope.scopeDispose();
16
+ } catch {
17
+ }
18
+ scope.scopeDispose = null;
19
+ }
14
20
  for (const d of scope.disposers) {
15
21
  try {
16
22
  d();
@@ -19,14 +25,15 @@ function createRoot(fn) {
19
25
  }
20
26
  scope.disposers.length = 0;
21
27
  };
28
+ let result;
22
29
  try {
23
- return fn(dispose);
30
+ scope.scopeDispose = alienSignals.effectScope(() => {
31
+ result = fn(dispose);
32
+ });
24
33
  } finally {
25
34
  currentRoot = rootStack.pop() ?? null;
26
- if (rootStack.length === 0) {
27
- rootStack.length = 0;
28
- }
29
35
  }
36
+ return result;
30
37
  }
31
38
  function registerDisposer(dispose) {
32
39
  if (currentRoot) {
@@ -229,7 +236,7 @@ function createEffect(fn) {
229
236
  }
230
237
 
231
238
  // src/reactive/memo.ts
232
- var createMemo = chunkFPSLC62A_cjs.createComputed;
239
+ var createMemo = chunk3U57L2TY_cjs.createComputed;
233
240
  function batch(fn) {
234
241
  alienSignals.startBatch();
235
242
  try {
@@ -239,11 +246,11 @@ function batch(fn) {
239
246
  }
240
247
  }
241
248
  function untrack(fn) {
242
- alienSignals.pauseTracking();
249
+ const prev = alienSignals.setActiveSub(void 0);
243
250
  try {
244
251
  return fn();
245
252
  } finally {
246
- alienSignals.resumeTracking();
253
+ alienSignals.setActiveSub(prev);
247
254
  }
248
255
  }
249
256
 
@@ -271,7 +278,7 @@ function createRef(initialValue) {
271
278
 
272
279
  // src/reactive/reducer.ts
273
280
  function createReducer(reducer, initialState) {
274
- const [state, setState] = chunkFPSLC62A_cjs.createSignal(initialState);
281
+ const [state, setState] = chunk3U57L2TY_cjs.createSignal(initialState);
275
282
  const dispatch = (action) => {
276
283
  setState((prev) => reducer(prev, action));
277
284
  };
@@ -294,9 +301,9 @@ function getSuspenseContext() {
294
301
 
295
302
  // src/reactive/resource.ts
296
303
  function createResource(source, fetcher, options) {
297
- const [data, setData] = chunkFPSLC62A_cjs.createSignal(options?.initialValue);
298
- const [loading, setLoading] = chunkFPSLC62A_cjs.createValueSignal(false);
299
- const [error, setError] = chunkFPSLC62A_cjs.createValueSignal(void 0);
304
+ const [data, setData] = chunk3U57L2TY_cjs.createSignal(options?.initialValue);
305
+ const [loading, setLoading] = chunk3U57L2TY_cjs.createSignal(false);
306
+ const [error, setError] = chunk3U57L2TY_cjs.createSignal(void 0);
300
307
  const suspenseCtx = getSuspenseContext();
301
308
  let abortController = null;
302
309
  let fetchVersion = 0;
@@ -808,6 +815,10 @@ function appendChild(parent, child) {
808
815
  }
809
816
  }
810
817
  function h(tag, props, ...children) {
818
+ if (typeof tag === "function" && tag !== Fragment) {
819
+ const mergedProps = { ...props ?? {}, children };
820
+ return tag(mergedProps);
821
+ }
811
822
  if (tag === Fragment) {
812
823
  const frag = document.createDocumentFragment();
813
824
  for (const child of children) {
@@ -950,6 +961,7 @@ function createShow(when, thenFn, elseFn) {
950
961
  }
951
962
 
952
963
  // src/dom/hydrate.ts
964
+ var ABORT_SYM2 = /* @__PURE__ */ Symbol.for("forma-abort");
953
965
  var hydrating = false;
954
966
  function setHydrating(value2) {
955
967
  hydrating = value2;
@@ -969,7 +981,12 @@ function applyDynamicProps(el, props) {
969
981
  const value2 = props[key];
970
982
  if (typeof value2 !== "function") continue;
971
983
  if (key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && key.length > 2) {
972
- el.addEventListener(key.slice(2).toLowerCase(), value2);
984
+ let ac = el[ABORT_SYM2];
985
+ if (!ac) {
986
+ ac = new AbortController();
987
+ el[ABORT_SYM2] = ac;
988
+ }
989
+ el.addEventListener(key.slice(2).toLowerCase(), value2, { signal: ac.signal });
973
990
  continue;
974
991
  }
975
992
  const fn = value2;
@@ -1241,7 +1258,7 @@ function adoptNode(desc, ssrEl) {
1241
1258
  const prevHydrating = hydrating;
1242
1259
  hydrating = false;
1243
1260
  try {
1244
- const [getIndex] = chunkFPSLC62A_cjs.createSignal(i);
1261
+ const [getIndex] = chunk3U57L2TY_cjs.createSignal(i);
1245
1262
  const fresh = listRenderFn(item, getIndex);
1246
1263
  end.parentNode.insertBefore(fresh, end);
1247
1264
  adoptedNodes.push(fresh);
@@ -1273,7 +1290,7 @@ function adoptNode(desc, ssrEl) {
1273
1290
  for (let i = 0; i < adoptedItems.length; i++) {
1274
1291
  const item = adoptedItems[i];
1275
1292
  const key = listKeyFn(item);
1276
- const [getIndex, setIndex] = chunkFPSLC62A_cjs.createSignal(i);
1293
+ const [getIndex, setIndex] = chunk3U57L2TY_cjs.createSignal(i);
1277
1294
  cache.set(key, {
1278
1295
  element: adoptedNodes[i],
1279
1296
  item,
@@ -1298,7 +1315,7 @@ function adoptNode(desc, ssrEl) {
1298
1315
  hydrating = false;
1299
1316
  try {
1300
1317
  const key = listKeyFn(item);
1301
- const [getIndex, setIndex] = chunkFPSLC62A_cjs.createSignal(0);
1318
+ const [getIndex, setIndex] = chunk3U57L2TY_cjs.createSignal(0);
1302
1319
  const element = untrack(() => listRenderFn(item, getIndex));
1303
1320
  cache.set(key, { element, item, getIndex, setIndex });
1304
1321
  return element;
@@ -1471,11 +1488,11 @@ function longestIncreasingSubsequence(arr) {
1471
1488
  return result;
1472
1489
  }
1473
1490
  var SMALL_LIST_THRESHOLD = 32;
1474
- var ABORT_SYM2 = /* @__PURE__ */ Symbol.for("forma-abort");
1491
+ var ABORT_SYM3 = /* @__PURE__ */ Symbol.for("forma-abort");
1475
1492
  var CACHE_SYM2 = /* @__PURE__ */ Symbol.for("forma-attr-cache");
1476
1493
  var DYNAMIC_CHILD_SYM2 = /* @__PURE__ */ Symbol.for("forma-dynamic-child");
1477
1494
  function canPatchStaticElement(target, source) {
1478
- return target instanceof HTMLElement && source instanceof HTMLElement && target.tagName === source.tagName && !target[ABORT_SYM2] && !target[CACHE_SYM2] && !target[DYNAMIC_CHILD_SYM2] && !source[ABORT_SYM2] && !source[CACHE_SYM2] && !source[DYNAMIC_CHILD_SYM2];
1495
+ return target instanceof HTMLElement && source instanceof HTMLElement && target.tagName === source.tagName && !target[ABORT_SYM3] && !target[CACHE_SYM2] && !target[DYNAMIC_CHILD_SYM2] && !source[ABORT_SYM3] && !source[CACHE_SYM2] && !source[DYNAMIC_CHILD_SYM2];
1479
1496
  }
1480
1497
  function patchStaticElement(target, source) {
1481
1498
  const sourceAttrNames = /* @__PURE__ */ new Set();
@@ -1759,7 +1776,7 @@ function createList(items, keyFn, renderFn, options) {
1759
1776
  if (cached.item === item) return;
1760
1777
  cached.item = item;
1761
1778
  if (!(node instanceof HTMLElement)) return;
1762
- if (node[ABORT_SYM2] || node[CACHE_SYM2] || node[DYNAMIC_CHILD_SYM2]) {
1779
+ if (node[ABORT_SYM3] || node[CACHE_SYM2] || node[DYNAMIC_CHILD_SYM2]) {
1763
1780
  return;
1764
1781
  }
1765
1782
  const next = untrack(() => renderFn(item, cached.getIndex));
@@ -1781,7 +1798,7 @@ function createList(items, keyFn, renderFn, options) {
1781
1798
  // createFn: create element + cache entry
1782
1799
  (item) => {
1783
1800
  const key = keyFn(item);
1784
- const [getIndex, setIndex] = chunkFPSLC62A_cjs.createSignal(0);
1801
+ const [getIndex, setIndex] = chunk3U57L2TY_cjs.createSignal(0);
1785
1802
  const element = untrack(() => renderFn(item, getIndex));
1786
1803
  cache.set(key, { element, item, getIndex, setIndex });
1787
1804
  return element;
@@ -1806,6 +1823,30 @@ function createList(items, keyFn, renderFn, options) {
1806
1823
  return fragment2;
1807
1824
  }
1808
1825
 
1826
+ Object.defineProperty(exports, "getBatchDepth", {
1827
+ enumerable: true,
1828
+ get: function () { return alienSignals.getBatchDepth; }
1829
+ });
1830
+ Object.defineProperty(exports, "isComputed", {
1831
+ enumerable: true,
1832
+ get: function () { return alienSignals.isComputed; }
1833
+ });
1834
+ Object.defineProperty(exports, "isEffect", {
1835
+ enumerable: true,
1836
+ get: function () { return alienSignals.isEffect; }
1837
+ });
1838
+ Object.defineProperty(exports, "isEffectScope", {
1839
+ enumerable: true,
1840
+ get: function () { return alienSignals.isEffectScope; }
1841
+ });
1842
+ Object.defineProperty(exports, "isSignal", {
1843
+ enumerable: true,
1844
+ get: function () { return alienSignals.isSignal; }
1845
+ });
1846
+ Object.defineProperty(exports, "trigger", {
1847
+ enumerable: true,
1848
+ get: function () { return alienSignals.trigger; }
1849
+ });
1809
1850
  exports.Fragment = Fragment;
1810
1851
  exports.__DEV__ = __DEV__;
1811
1852
  exports.batch = batch;
@@ -1822,13 +1863,13 @@ exports.fragment = fragment;
1822
1863
  exports.h = h;
1823
1864
  exports.hydrateIsland = hydrateIsland;
1824
1865
  exports.internalEffect = internalEffect;
1825
- exports.longestIncreasingSubsequence = longestIncreasingSubsequence;
1826
1866
  exports.on = on;
1827
1867
  exports.onCleanup = onCleanup;
1828
1868
  exports.onError = onError;
1829
1869
  exports.popSuspenseContext = popSuspenseContext;
1830
1870
  exports.pushSuspenseContext = pushSuspenseContext;
1831
1871
  exports.reconcileList = reconcileList;
1872
+ exports.reportError = reportError;
1832
1873
  exports.untrack = untrack;
1833
- //# sourceMappingURL=chunk-TSQ7AKFT.cjs.map
1834
- //# sourceMappingURL=chunk-TSQ7AKFT.cjs.map
1874
+ //# sourceMappingURL=chunk-YMIMKO4W.cjs.map
1875
+ //# sourceMappingURL=chunk-YMIMKO4W.cjs.map