@getforma/core 0.3.1 → 0.6.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.
- package/README.md +190 -16
- package/dist/{chunk-KX5WRZH7.js → chunk-DPSAVBCP.js} +3 -4
- package/dist/chunk-DPSAVBCP.js.map +1 -0
- package/dist/{chunk-FPSLC62A.cjs → chunk-KH3F5NRU.cjs} +2 -4
- package/dist/chunk-KH3F5NRU.cjs.map +1 -0
- package/dist/{chunk-5H52PKGF.js → chunk-TKGUHASG.js} +20 -10
- package/dist/chunk-TKGUHASG.js.map +1 -0
- package/dist/{chunk-TSQ7AKFT.cjs → chunk-YSKF3VRA.cjs} +27 -17
- package/dist/chunk-YSKF3VRA.cjs.map +1 -0
- package/dist/forma-runtime-csp.js +1 -1
- package/dist/forma-runtime.js +1 -1
- package/dist/formajs-runtime-hardened.global.js +1 -1
- package/dist/formajs-runtime-hardened.global.js.map +1 -1
- package/dist/formajs-runtime.global.js +1 -1
- package/dist/formajs-runtime.global.js.map +1 -1
- package/dist/formajs.global.js +1 -1
- package/dist/formajs.global.js.map +1 -1
- package/dist/index.cjs +102 -75
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -9
- package/dist/index.d.ts +41 -9
- package/dist/index.js +46 -17
- package/dist/index.js.map +1 -1
- package/dist/runtime-hardened.cjs +61 -13
- package/dist/runtime-hardened.cjs.map +1 -1
- package/dist/runtime-hardened.js +62 -14
- package/dist/runtime-hardened.js.map +1 -1
- package/dist/runtime.cjs +85 -36
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.js +63 -14
- package/dist/runtime.js.map +1 -1
- package/dist/ssr/index.cjs +18 -10
- package/dist/ssr/index.cjs.map +1 -1
- package/dist/ssr/index.js +18 -10
- package/dist/ssr/index.js.map +1 -1
- package/dist/tc39-compat.cjs +3 -3
- package/dist/tc39-compat.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-5H52PKGF.js.map +0 -1
- package/dist/chunk-FPSLC62A.cjs.map +0 -1
- package/dist/chunk-KX5WRZH7.js.map +0 -1
- package/dist/chunk-TSQ7AKFT.cjs.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -16,6 +16,11 @@ declare function createEffect(fn: () => void | (() => void)): () => void;
|
|
|
16
16
|
/**
|
|
17
17
|
* Create a lazy, cached computed value.
|
|
18
18
|
*
|
|
19
|
+
* Note: Unlike SolidJS's createComputed (which is an eager synchronous
|
|
20
|
+
* side effect), this is a lazy cached derivation — equivalent to
|
|
21
|
+
* SolidJS's createMemo. Both createComputed and createMemo in FormaJS
|
|
22
|
+
* are identical.
|
|
23
|
+
*
|
|
19
24
|
* ```ts
|
|
20
25
|
* const [count, setCount] = createSignal(0);
|
|
21
26
|
* const doubled = createComputed(() => count() * 2);
|
|
@@ -39,6 +44,11 @@ declare function createComputed<T>(fn: () => T): () => T;
|
|
|
39
44
|
* Create a memoized computed value.
|
|
40
45
|
* Identical to `createComputed` — provided for React/SolidJS familiarity.
|
|
41
46
|
*
|
|
47
|
+
* Note: Unlike SolidJS's createComputed (which is an eager synchronous
|
|
48
|
+
* side effect), both createComputed and createMemo in FormaJS are lazy
|
|
49
|
+
* cached derivations — equivalent to SolidJS's createMemo. They are
|
|
50
|
+
* identical.
|
|
51
|
+
*
|
|
42
52
|
* The computation runs lazily and caches the result. It only recomputes
|
|
43
53
|
* when a signal it reads during computation changes.
|
|
44
54
|
*
|
|
@@ -380,6 +390,7 @@ declare function cleanup(el: Element): void;
|
|
|
380
390
|
* )
|
|
381
391
|
* ```
|
|
382
392
|
*/
|
|
393
|
+
declare function h(tag: (props: Record<string, unknown>) => unknown, props?: Record<string, unknown> | null, ...children: unknown[]): Node;
|
|
383
394
|
declare function h(tag: typeof Fragment, props?: null, ...children: unknown[]): DocumentFragment;
|
|
384
395
|
declare function h(tag: string, props?: Record<string, unknown> | null, ...children: unknown[]): HTMLElement;
|
|
385
396
|
/**
|
|
@@ -473,12 +484,6 @@ interface CreateListOptions {
|
|
|
473
484
|
*/
|
|
474
485
|
updateOnItemChange?: 'none' | 'rerender';
|
|
475
486
|
}
|
|
476
|
-
/**
|
|
477
|
-
* Find the longest increasing subsequence.
|
|
478
|
-
* Returns indices into the input array.
|
|
479
|
-
* O(n log n) time, O(n) space.
|
|
480
|
-
*/
|
|
481
|
-
declare function longestIncreasingSubsequence(arr: number[]): number[];
|
|
482
487
|
/**
|
|
483
488
|
* Reconcile a DOM parent's children to match a new array of items.
|
|
484
489
|
* Uses keyed reconciliation with LIS for minimum DOM operations.
|
|
@@ -712,8 +717,20 @@ declare function hydrateIsland(component: () => unknown, target: Element): Eleme
|
|
|
712
717
|
* loads props (inline or script_tag), and hydrates each island inside
|
|
713
718
|
* an independent createRoot scope with try/catch error isolation.
|
|
714
719
|
*/
|
|
715
|
-
/**
|
|
716
|
-
|
|
720
|
+
/**
|
|
721
|
+
* Function that hydrates an island.
|
|
722
|
+
*
|
|
723
|
+
* @param el The root element of the island (`[data-forma-island]`).
|
|
724
|
+
* Useful for layout measurement, focus management, CSS class
|
|
725
|
+
* toggling, third-party library init, or reading extra `data-*`
|
|
726
|
+
* attributes from the server-rendered shell.
|
|
727
|
+
* @param props Parsed props from `data-forma-props` (inline or script block),
|
|
728
|
+
* or `null` if no props were provided.
|
|
729
|
+
* @returns A component tree (from `h()` calls) for descriptor-based
|
|
730
|
+
* hydration, or `undefined` for imperative islands that set up
|
|
731
|
+
* their own effects.
|
|
732
|
+
*/
|
|
733
|
+
type IslandHydrateFn = (el: HTMLElement, props: Record<string, unknown> | null) => unknown;
|
|
717
734
|
/**
|
|
718
735
|
* Discover and activate all SSR-rendered islands on the page.
|
|
719
736
|
*
|
|
@@ -723,6 +740,21 @@ type IslandHydrateFn = (props: Record<string, unknown> | null) => unknown;
|
|
|
723
740
|
* @param registry Map of component names to hydration functions.
|
|
724
741
|
*/
|
|
725
742
|
declare function activateIslands(registry: Record<string, IslandHydrateFn>): void;
|
|
743
|
+
/**
|
|
744
|
+
* Dispose a single island, tearing down its reactive root and all effects.
|
|
745
|
+
*
|
|
746
|
+
* Safe to call multiple times (idempotent). Sets `data-forma-status` to
|
|
747
|
+
* `"disposed"` so the island can be distinguished from active/error states.
|
|
748
|
+
*/
|
|
749
|
+
declare function deactivateIsland(el: HTMLElement): void;
|
|
750
|
+
/**
|
|
751
|
+
* Dispose ALL active islands under a root element (or the whole document).
|
|
752
|
+
*
|
|
753
|
+
* Use this when swapping module content — e.g., replacing the contents of
|
|
754
|
+
* a `<forma-stage>` Shadow DOM during AI generation. Prevents leaked effects
|
|
755
|
+
* and event listeners from accumulating across swaps.
|
|
756
|
+
*/
|
|
757
|
+
declare function deactivateAllIslands(root?: Element | Document): void;
|
|
726
758
|
|
|
727
759
|
/**
|
|
728
760
|
* Forma Component - Define
|
|
@@ -1407,4 +1439,4 @@ declare function renderLocal(slotsJson: string): Promise<string>;
|
|
|
1407
1439
|
/** Fragment render (single island) via WASM. */
|
|
1408
1440
|
declare function renderIsland(slotsJson: string, islandId: number): Promise<string>;
|
|
1409
1441
|
|
|
1410
|
-
export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject,
|
|
1442
|
+
export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, untrack, withRevalidation };
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,11 @@ declare function createEffect(fn: () => void | (() => void)): () => void;
|
|
|
16
16
|
/**
|
|
17
17
|
* Create a lazy, cached computed value.
|
|
18
18
|
*
|
|
19
|
+
* Note: Unlike SolidJS's createComputed (which is an eager synchronous
|
|
20
|
+
* side effect), this is a lazy cached derivation — equivalent to
|
|
21
|
+
* SolidJS's createMemo. Both createComputed and createMemo in FormaJS
|
|
22
|
+
* are identical.
|
|
23
|
+
*
|
|
19
24
|
* ```ts
|
|
20
25
|
* const [count, setCount] = createSignal(0);
|
|
21
26
|
* const doubled = createComputed(() => count() * 2);
|
|
@@ -39,6 +44,11 @@ declare function createComputed<T>(fn: () => T): () => T;
|
|
|
39
44
|
* Create a memoized computed value.
|
|
40
45
|
* Identical to `createComputed` — provided for React/SolidJS familiarity.
|
|
41
46
|
*
|
|
47
|
+
* Note: Unlike SolidJS's createComputed (which is an eager synchronous
|
|
48
|
+
* side effect), both createComputed and createMemo in FormaJS are lazy
|
|
49
|
+
* cached derivations — equivalent to SolidJS's createMemo. They are
|
|
50
|
+
* identical.
|
|
51
|
+
*
|
|
42
52
|
* The computation runs lazily and caches the result. It only recomputes
|
|
43
53
|
* when a signal it reads during computation changes.
|
|
44
54
|
*
|
|
@@ -380,6 +390,7 @@ declare function cleanup(el: Element): void;
|
|
|
380
390
|
* )
|
|
381
391
|
* ```
|
|
382
392
|
*/
|
|
393
|
+
declare function h(tag: (props: Record<string, unknown>) => unknown, props?: Record<string, unknown> | null, ...children: unknown[]): Node;
|
|
383
394
|
declare function h(tag: typeof Fragment, props?: null, ...children: unknown[]): DocumentFragment;
|
|
384
395
|
declare function h(tag: string, props?: Record<string, unknown> | null, ...children: unknown[]): HTMLElement;
|
|
385
396
|
/**
|
|
@@ -473,12 +484,6 @@ interface CreateListOptions {
|
|
|
473
484
|
*/
|
|
474
485
|
updateOnItemChange?: 'none' | 'rerender';
|
|
475
486
|
}
|
|
476
|
-
/**
|
|
477
|
-
* Find the longest increasing subsequence.
|
|
478
|
-
* Returns indices into the input array.
|
|
479
|
-
* O(n log n) time, O(n) space.
|
|
480
|
-
*/
|
|
481
|
-
declare function longestIncreasingSubsequence(arr: number[]): number[];
|
|
482
487
|
/**
|
|
483
488
|
* Reconcile a DOM parent's children to match a new array of items.
|
|
484
489
|
* Uses keyed reconciliation with LIS for minimum DOM operations.
|
|
@@ -712,8 +717,20 @@ declare function hydrateIsland(component: () => unknown, target: Element): Eleme
|
|
|
712
717
|
* loads props (inline or script_tag), and hydrates each island inside
|
|
713
718
|
* an independent createRoot scope with try/catch error isolation.
|
|
714
719
|
*/
|
|
715
|
-
/**
|
|
716
|
-
|
|
720
|
+
/**
|
|
721
|
+
* Function that hydrates an island.
|
|
722
|
+
*
|
|
723
|
+
* @param el The root element of the island (`[data-forma-island]`).
|
|
724
|
+
* Useful for layout measurement, focus management, CSS class
|
|
725
|
+
* toggling, third-party library init, or reading extra `data-*`
|
|
726
|
+
* attributes from the server-rendered shell.
|
|
727
|
+
* @param props Parsed props from `data-forma-props` (inline or script block),
|
|
728
|
+
* or `null` if no props were provided.
|
|
729
|
+
* @returns A component tree (from `h()` calls) for descriptor-based
|
|
730
|
+
* hydration, or `undefined` for imperative islands that set up
|
|
731
|
+
* their own effects.
|
|
732
|
+
*/
|
|
733
|
+
type IslandHydrateFn = (el: HTMLElement, props: Record<string, unknown> | null) => unknown;
|
|
717
734
|
/**
|
|
718
735
|
* Discover and activate all SSR-rendered islands on the page.
|
|
719
736
|
*
|
|
@@ -723,6 +740,21 @@ type IslandHydrateFn = (props: Record<string, unknown> | null) => unknown;
|
|
|
723
740
|
* @param registry Map of component names to hydration functions.
|
|
724
741
|
*/
|
|
725
742
|
declare function activateIslands(registry: Record<string, IslandHydrateFn>): void;
|
|
743
|
+
/**
|
|
744
|
+
* Dispose a single island, tearing down its reactive root and all effects.
|
|
745
|
+
*
|
|
746
|
+
* Safe to call multiple times (idempotent). Sets `data-forma-status` to
|
|
747
|
+
* `"disposed"` so the island can be distinguished from active/error states.
|
|
748
|
+
*/
|
|
749
|
+
declare function deactivateIsland(el: HTMLElement): void;
|
|
750
|
+
/**
|
|
751
|
+
* Dispose ALL active islands under a root element (or the whole document).
|
|
752
|
+
*
|
|
753
|
+
* Use this when swapping module content — e.g., replacing the contents of
|
|
754
|
+
* a `<forma-stage>` Shadow DOM during AI generation. Prevents leaked effects
|
|
755
|
+
* and event listeners from accumulating across swaps.
|
|
756
|
+
*/
|
|
757
|
+
declare function deactivateAllIslands(root?: Element | Document): void;
|
|
726
758
|
|
|
727
759
|
/**
|
|
728
760
|
* Forma Component - Define
|
|
@@ -1407,4 +1439,4 @@ declare function renderLocal(slotsJson: string): Promise<string>;
|
|
|
1407
1439
|
/** Fragment render (single island) via WASM. */
|
|
1408
1440
|
declare function renderIsland(slotsJson: string, islandId: number): Promise<string>;
|
|
1409
1441
|
|
|
1410
|
-
export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject,
|
|
1442
|
+
export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, untrack, withRevalidation };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { internalEffect, createRoot, hydrateIsland, untrack, createEffect, pushSuspenseContext, popSuspenseContext, __DEV__, batch } from './chunk-
|
|
2
|
-
export { Fragment, batch, cleanup, createEffect, createList, createMemo, createReducer, createRef, createResource, createRoot, createShow, fragment, h, hydrateIsland,
|
|
3
|
-
import { createSignal
|
|
4
|
-
export { createComputed, createSignal } from './chunk-
|
|
1
|
+
import { internalEffect, createRoot, hydrateIsland, untrack, createEffect, pushSuspenseContext, popSuspenseContext, __DEV__, reportError, batch } from './chunk-TKGUHASG.js';
|
|
2
|
+
export { Fragment, batch, cleanup, createEffect, createList, createMemo, createReducer, createRef, createResource, createRoot, createShow, fragment, h, hydrateIsland, on, onCleanup, onError, reconcileList, untrack } from './chunk-TKGUHASG.js';
|
|
3
|
+
import { createSignal } from './chunk-DPSAVBCP.js';
|
|
4
|
+
export { createComputed, createSignal } from './chunk-DPSAVBCP.js';
|
|
5
5
|
|
|
6
6
|
// src/dom/text.ts
|
|
7
7
|
function createText(value) {
|
|
@@ -243,9 +243,6 @@ function activateIslands(registry2) {
|
|
|
243
243
|
continue;
|
|
244
244
|
}
|
|
245
245
|
const trigger = root.getAttribute("data-forma-hydrate") || "load";
|
|
246
|
-
if (trigger === "interaction" || trigger === "idle") {
|
|
247
|
-
if (__DEV__) console.warn(`[forma] Trigger "${trigger}" not yet implemented for island "${componentName}" (id=${id}), falling back to load`);
|
|
248
|
-
}
|
|
249
246
|
if (trigger === "visible") {
|
|
250
247
|
const observer = new IntersectionObserver(
|
|
251
248
|
(entries) => {
|
|
@@ -258,18 +255,47 @@ function activateIslands(registry2) {
|
|
|
258
255
|
{ rootMargin: "200px" }
|
|
259
256
|
);
|
|
260
257
|
observer.observe(root);
|
|
258
|
+
} else if (trigger === "idle") {
|
|
259
|
+
const hydrate = () => hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps);
|
|
260
|
+
if (typeof requestIdleCallback === "function") {
|
|
261
|
+
requestIdleCallback(hydrate);
|
|
262
|
+
} else {
|
|
263
|
+
setTimeout(hydrate, 200);
|
|
264
|
+
}
|
|
265
|
+
} else if (trigger === "interaction") {
|
|
266
|
+
const hydrate = () => {
|
|
267
|
+
root.removeEventListener("pointerdown", hydrate, true);
|
|
268
|
+
root.removeEventListener("focusin", hydrate, true);
|
|
269
|
+
hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps);
|
|
270
|
+
};
|
|
271
|
+
root.addEventListener("pointerdown", hydrate, { capture: true, once: true });
|
|
272
|
+
root.addEventListener("focusin", hydrate, { capture: true, once: true });
|
|
261
273
|
} else {
|
|
262
274
|
hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps);
|
|
263
275
|
}
|
|
264
276
|
}
|
|
265
277
|
}
|
|
278
|
+
function deactivateIsland(el) {
|
|
279
|
+
const dispose = el.__formaDispose;
|
|
280
|
+
if (typeof dispose === "function") {
|
|
281
|
+
dispose();
|
|
282
|
+
delete el.__formaDispose;
|
|
283
|
+
el.setAttribute("data-forma-status", "disposed");
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function deactivateAllIslands(root = document) {
|
|
287
|
+
const islands = root.querySelectorAll('[data-forma-status="active"]');
|
|
288
|
+
for (const island of islands) {
|
|
289
|
+
deactivateIsland(island);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
266
292
|
function hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps) {
|
|
267
293
|
try {
|
|
268
294
|
const props = loadIslandProps(root, id, sharedProps);
|
|
269
295
|
root.setAttribute("data-forma-status", "hydrating");
|
|
270
296
|
let activeRoot = root;
|
|
271
297
|
createRoot((dispose) => {
|
|
272
|
-
activeRoot = hydrateIsland(() => hydrateFn(props), root);
|
|
298
|
+
activeRoot = hydrateIsland(() => hydrateFn(root, props), root);
|
|
273
299
|
activeRoot.__formaDispose = dispose;
|
|
274
300
|
});
|
|
275
301
|
activeRoot.setAttribute("data-forma-status", "active");
|
|
@@ -322,13 +348,15 @@ function defineComponent(setupOrDef) {
|
|
|
322
348
|
for (const cb of ctx.unmountCallbacks) {
|
|
323
349
|
try {
|
|
324
350
|
cb();
|
|
325
|
-
} catch {
|
|
351
|
+
} catch (e) {
|
|
352
|
+
reportError(e, "onUnmount");
|
|
326
353
|
}
|
|
327
354
|
}
|
|
328
355
|
for (const d of ctx.disposers) {
|
|
329
356
|
try {
|
|
330
357
|
d();
|
|
331
|
-
} catch {
|
|
358
|
+
} catch (e) {
|
|
359
|
+
reportError(e, "component disposer");
|
|
332
360
|
}
|
|
333
361
|
}
|
|
334
362
|
ctx.disposers.length = 0;
|
|
@@ -342,7 +370,8 @@ function defineComponent(setupOrDef) {
|
|
|
342
370
|
if (typeof cleanup2 === "function") {
|
|
343
371
|
ctx.unmountCallbacks.push(cleanup2);
|
|
344
372
|
}
|
|
345
|
-
} catch {
|
|
373
|
+
} catch (e) {
|
|
374
|
+
reportError(e, "onMount");
|
|
346
375
|
}
|
|
347
376
|
}
|
|
348
377
|
return dom;
|
|
@@ -616,9 +645,9 @@ function createHistory(source, options) {
|
|
|
616
645
|
const maxLength = options?.maxLength ?? 100;
|
|
617
646
|
let _stack = [sourceGet()];
|
|
618
647
|
let _cursor = 0;
|
|
619
|
-
const [stackSignal, setStackSignal] =
|
|
620
|
-
const [cursorSignal, setCursorSignal] =
|
|
621
|
-
const [stackLenSignal, setStackLenSignal] =
|
|
648
|
+
const [stackSignal, setStackSignal] = createSignal([..._stack]);
|
|
649
|
+
const [cursorSignal, setCursorSignal] = createSignal(_cursor);
|
|
650
|
+
const [stackLenSignal, setStackLenSignal] = createSignal(_stack.length);
|
|
622
651
|
function syncSignals() {
|
|
623
652
|
batch(() => {
|
|
624
653
|
setStackSignal([..._stack]);
|
|
@@ -1315,8 +1344,8 @@ function createWebSocket(url, options) {
|
|
|
1315
1344
|
|
|
1316
1345
|
// src/server/action.ts
|
|
1317
1346
|
function createAction(serverFn, options) {
|
|
1318
|
-
const [pending, setPending] =
|
|
1319
|
-
const [error, setError] =
|
|
1347
|
+
const [pending, setPending] = createSignal(false);
|
|
1348
|
+
const [error, setError] = createSignal(void 0);
|
|
1320
1349
|
const action = async (...args) => {
|
|
1321
1350
|
setPending(true);
|
|
1322
1351
|
setError(void 0);
|
|
@@ -1507,6 +1536,6 @@ async function renderIsland(slotsJson, islandId) {
|
|
|
1507
1536
|
return wasm.render_island(ir, slotsJson, islandId);
|
|
1508
1537
|
}
|
|
1509
1538
|
|
|
1510
|
-
export { $, $$, $$serverFunction, activateIslands, addClass, applyRevalidation, children, closest, createAction, createBus, createContext, createErrorBoundary, createFetch, createHistory, createIndexedDB, createLocalStorage, createPortal, createRPCMiddleware, createSSE, createSessionStorage, createStore, createSuspense, createSwitch, createText, createWebSocket, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, getRegisteredEndpoints, getServerFunction, handleRPC, inject, mount, nextSibling, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, withRevalidation };
|
|
1539
|
+
export { $, $$, $$serverFunction, activateIslands, addClass, applyRevalidation, children, closest, createAction, createBus, createContext, createErrorBoundary, createFetch, createHistory, createIndexedDB, createLocalStorage, createPortal, createRPCMiddleware, createSSE, createSessionStorage, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, getRegisteredEndpoints, getServerFunction, handleRPC, inject, mount, nextSibling, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, withRevalidation };
|
|
1511
1540
|
//# sourceMappingURL=index.js.map
|
|
1512
1541
|
//# sourceMappingURL=index.js.map
|