Add suspense, resource, and transitions — Phase 2 complete
- suspense render-dom form: shows fallback while resource loads, swaps to body content when resource signal resolves - resource async signal: wraps promise into signal with loading/data/error dict, auto-transitions on resolve/reject via promise-then - transition: defers signal writes to requestIdleCallback, sets pending signal for UI feedback during expensive operations - Added schedule-idle, promise-then platform functions - All Phase 2 features now marked Done in status tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -449,6 +449,7 @@ class JSEmitter:
|
||||
"dom-focus": "domFocus",
|
||||
"try-catch": "tryCatch",
|
||||
"error-message": "errorMessage",
|
||||
"schedule-idle": "scheduleIdle",
|
||||
"element-value": "elementValue",
|
||||
"validate-for-request": "validateForRequest",
|
||||
"with-transition": "withTransition",
|
||||
@@ -3031,6 +3032,11 @@ PLATFORM_ORCHESTRATION_JS = """
|
||||
|
||||
function promiseResolve(val) { return Promise.resolve(val); }
|
||||
|
||||
function promiseThen(p, onResolve, onReject) {
|
||||
if (!p || !p.then) return p;
|
||||
return onReject ? p.then(onResolve, onReject) : p.then(onResolve);
|
||||
}
|
||||
|
||||
function promiseCatch(p, fn) { return p && p.catch ? p.catch(fn) : p; }
|
||||
|
||||
// --- Abort controllers ---
|
||||
@@ -3474,6 +3480,10 @@ PLATFORM_ORCHESTRATION_JS = """
|
||||
function errorMessage(e) {
|
||||
return e && e.message ? e.message : String(e);
|
||||
}
|
||||
function scheduleIdle(fn) {
|
||||
if (typeof requestIdleCallback !== "undefined") requestIdleCallback(fn);
|
||||
else setTimeout(fn, 0);
|
||||
}
|
||||
function elementValue(el) { return el && el.value !== undefined ? el.value : NIL; }
|
||||
|
||||
function domAddListener(el, event, fn, opts) {
|
||||
|
||||
Reference in New Issue
Block a user