octane 0.2.16 → 0.3.0
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/cjs/context-identity.cjs +43 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/internal/client.cjs +4 -1
- package/dist/cjs/internal/context.cjs +30 -0
- package/dist/cjs/internal/server.cjs +9 -0
- package/dist/cjs/runtime.cjs +269 -365
- package/dist/cjs/runtime.server.cjs +2 -1
- package/dist/cjs/signals/graph.cjs +2 -0
- package/dist/cjs/signals/transition-coordinator.cjs +279 -0
- package/dist/cjs/signals/transition-state.cjs +8 -0
- package/dist/cjs/version.cjs +1 -1
- package/dist/compiler/bundler.js +11 -1
- package/dist/compiler/compile-universal.js +17 -5
- package/dist/compiler/compile.js +172 -32
- package/dist/compiler/context-provider.js +196 -0
- package/dist/compiler/local-void-roots.js +154 -0
- package/dist/compiler/slot-hooks.js +121 -8
- package/dist/context-identity.d.ts +2 -0
- package/dist/context-identity.js +18 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -0
- package/dist/internal/client.d.ts +1 -0
- package/dist/internal/client.js +3 -1
- package/dist/internal/context.d.ts +1 -0
- package/dist/internal/context.js +5 -0
- package/dist/internal/server.d.ts +1 -0
- package/dist/internal/server.js +4 -0
- package/dist/public-types.d.ts +1 -1
- package/dist/runtime.d.ts +19 -8
- package/dist/runtime.js +269 -365
- package/dist/runtime.server.d.ts +0 -4
- package/dist/runtime.server.js +2 -1
- package/dist/signals/graph.js +3 -0
- package/dist/signals/transition-coordinator.d.ts +139 -0
- package/dist/signals/transition-coordinator.js +255 -0
- package/dist/signals/transition-state.d.ts +4 -0
- package/dist/signals/transition-state.js +6 -0
- package/dist/universal-core.js +21 -0
- package/dist/universal-native.d.ts +0 -1
- package/dist/universal-native.js +2 -1
- package/dist/version.js +1 -1
- package/package.json +7 -1
package/dist/cjs/runtime.cjs
CHANGED
|
@@ -32,6 +32,7 @@ __export(runtime_exports, {
|
|
|
32
32
|
ViewTransition: () => ViewTransition,
|
|
33
33
|
ViewTransitionPseudoElement: () => ViewTransitionPseudoElement,
|
|
34
34
|
__createVoidRoot: () => __createVoidRoot,
|
|
35
|
+
__hydrateVoidRoot: () => __hydrateVoidRoot,
|
|
35
36
|
__useLinkedStateWithGetter: () => __useLinkedStateWithGetter,
|
|
36
37
|
__useReducerWithGetter: () => __useReducerWithGetter,
|
|
37
38
|
__useStateWithGetter: () => __useStateWithGetter,
|
|
@@ -342,6 +343,7 @@ var import_dom_binding_protocol = require("./dom-binding-protocol.cjs");
|
|
|
342
343
|
var import_dom_focused_move = require("./dom-focused-move.cjs");
|
|
343
344
|
var import_stream_protocol = require("./stream-protocol.cjs");
|
|
344
345
|
var import_renderer_bridge = require("./renderer-bridge.cjs");
|
|
346
|
+
var import_context_identity = require("./context-identity.cjs");
|
|
345
347
|
var import_native_read_client = require("./signals/native-read-client.cjs");
|
|
346
348
|
var import_native_read_collector = require("./signals/native-read-collector.cjs");
|
|
347
349
|
var import_native_read_retry = require("./signals/native-read-retry.cjs");
|
|
@@ -1199,251 +1201,21 @@ function ensureTransitionSwapDriver() {
|
|
|
1199
1201
|
rebaseHeld: rebaseHeldTransitionUpdate
|
|
1200
1202
|
};
|
|
1201
1203
|
}
|
|
1202
|
-
let
|
|
1204
|
+
let NATIVE_TRANSITION_DRIVER = null;
|
|
1203
1205
|
let NATIVE_TRANSITION_ATTEMPT = null;
|
|
1204
1206
|
function queueNativeTransition(batch) {
|
|
1205
|
-
|
|
1206
|
-
if (!scheduled && !syncFlush) {
|
|
1207
|
-
scheduled = true;
|
|
1208
|
-
queueMicrotask(flush);
|
|
1209
|
-
}
|
|
1207
|
+
NATIVE_TRANSITION_DRIVER.queue(batch);
|
|
1210
1208
|
}
|
|
1211
1209
|
function prepareNativeTransitionBlock(block) {
|
|
1212
|
-
|
|
1213
|
-
if (block.disposed || admission.blocks.has(block)) return;
|
|
1214
|
-
const hidden = SCHEDULED_VISIBILITY_DRIVER?.find(block, false);
|
|
1215
|
-
if (hidden?.nativeTransition !== void 0 && hidden.tryBlock !== null) block = hidden.tryBlock;
|
|
1216
|
-
if (admission.blocks.has(block)) return;
|
|
1217
|
-
const owner = block.idState.renderOwner;
|
|
1218
|
-
if (owner === void 0 || owner.disposed) return;
|
|
1219
|
-
const retired = owner.transaction?.retired;
|
|
1220
|
-
if (retired !== void 0 && retired !== null) {
|
|
1221
|
-
for (let current = block; current !== null; current = current.parentBlock)
|
|
1222
|
-
if (retired.has(current)) return;
|
|
1223
|
-
}
|
|
1224
|
-
admission.blocks.add(block);
|
|
1225
|
-
const root = beginRootRender(owner);
|
|
1226
|
-
admission.transactions.add(owner.transaction);
|
|
1227
|
-
const mode = block.pendingMode;
|
|
1228
|
-
block.pendingMode = "transition";
|
|
1229
|
-
const attempt = beginTransitionAttempt(block);
|
|
1230
|
-
if (attempt !== null) admission.attempts.push(attempt);
|
|
1231
|
-
try {
|
|
1232
|
-
invalidateRender(block, block);
|
|
1233
|
-
if (hidden?.nativeTransition !== void 0) {
|
|
1234
|
-
journalObjectOnce(hidden);
|
|
1235
|
-
journalRootProperty(block, "inactive", block.inactive);
|
|
1236
|
-
SCHEDULED_VISIBILITY_DRIVER.reveal(hidden, "transition");
|
|
1237
|
-
} else renderBlock(block);
|
|
1238
|
-
} catch (error) {
|
|
1239
|
-
if (isSuspenseException(error)) {
|
|
1240
|
-
for (let owner2 = block; owner2 !== null; owner2 = owner2.parentBlock) {
|
|
1241
|
-
const handler = owner2.__suspenseHandler;
|
|
1242
|
-
if (handler) {
|
|
1243
|
-
try {
|
|
1244
|
-
handler(error.thenable, block);
|
|
1245
|
-
} catch (suspension) {
|
|
1246
|
-
if (!isSuspenseException(suspension)) throw suspension;
|
|
1247
|
-
}
|
|
1248
|
-
break;
|
|
1249
|
-
}
|
|
1250
|
-
}
|
|
1251
|
-
throw error.thenable;
|
|
1252
|
-
}
|
|
1253
|
-
admission.errorBlock ??= block;
|
|
1254
|
-
throw error;
|
|
1255
|
-
} finally {
|
|
1256
|
-
endTransitionAttempt(attempt);
|
|
1257
|
-
block.pendingMode = mode;
|
|
1258
|
-
endRootRender(root);
|
|
1259
|
-
}
|
|
1260
|
-
}
|
|
1261
|
-
function finishNativeTransition(batch) {
|
|
1262
|
-
batch.nativeWake?.();
|
|
1263
|
-
batch.nativeWake = void 0;
|
|
1264
|
-
batch.native = void 0;
|
|
1265
|
-
for (const block of batch.nativeBlocks ?? [])
|
|
1266
|
-
block.idState.renderOwner?.nativeTransitions?.delete(batch);
|
|
1267
|
-
batch.nativeBlocks = void 0;
|
|
1268
|
-
for (const state of batch.nativeBoundaries?.keys() ?? []) {
|
|
1269
|
-
if (state.nativeTransition !== batch) continue;
|
|
1270
|
-
state.nativeTransition = void 0;
|
|
1271
|
-
if (state.transitionTimeoutId !== null) {
|
|
1272
|
-
clearTimeout(state.transitionTimeoutId);
|
|
1273
|
-
state.transitionTimeoutId = null;
|
|
1274
|
-
}
|
|
1275
|
-
}
|
|
1276
|
-
batch.nativeBoundaries = void 0;
|
|
1277
|
-
NATIVE_TRANSITION_QUEUE?.delete(batch);
|
|
1278
|
-
if (NATIVE_TRANSITION_QUEUE?.size === 0) NATIVE_TRANSITION_QUEUE = null;
|
|
1279
|
-
releaseTransitionHookHolder(batch);
|
|
1210
|
+
NATIVE_TRANSITION_DRIVER.prepare(block);
|
|
1280
1211
|
}
|
|
1281
1212
|
function retireNativeTransitionBlock(block) {
|
|
1282
|
-
|
|
1283
|
-
for (const batch of block.idState.renderOwner?.nativeTransitions ?? []) {
|
|
1284
|
-
if (!batch.nativeBlocks?.has(block)) continue;
|
|
1285
|
-
queueNativeTransition(batch);
|
|
1286
|
-
}
|
|
1213
|
+
NATIVE_TRANSITION_DRIVER?.retire(block);
|
|
1287
1214
|
}
|
|
1288
|
-
function
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
if (block.disposed || owner === void 0 || owner.disposed) continue;
|
|
1293
|
-
const frame = beginRootRender(owner);
|
|
1294
|
-
NATIVE_TRANSITION_ATTEMPT.transactions.add(owner.transaction);
|
|
1295
|
-
try {
|
|
1296
|
-
journalObjectOnce(slot);
|
|
1297
|
-
if (state !== void 0) {
|
|
1298
|
-
state.renderTransition = update;
|
|
1299
|
-
state.updates = void 0;
|
|
1300
|
-
} else if (reducer !== void 0) {
|
|
1301
|
-
reducer.renderTransition = update;
|
|
1302
|
-
reducer.renderPhaseActions = void 0;
|
|
1303
|
-
} else slot.value = rebaseTransitionActionUpdate(update);
|
|
1304
|
-
if (slot.pendingActionBatch === batch) {
|
|
1305
|
-
slot.pendingActionBatch = void 0;
|
|
1306
|
-
slot.pendingActionValue = void 0;
|
|
1307
|
-
}
|
|
1308
|
-
} finally {
|
|
1309
|
-
endRootRender(frame);
|
|
1310
|
-
}
|
|
1311
|
-
}
|
|
1312
|
-
}
|
|
1313
|
-
function prepareNativeTransitionHook(batch, hook) {
|
|
1314
|
-
const owner = hook.block.idState.renderOwner;
|
|
1315
|
-
if (hook.block.disposed || owner === void 0 || owner.disposed) return;
|
|
1316
|
-
const frame = beginRootRender(owner);
|
|
1317
|
-
NATIVE_TRANSITION_ATTEMPT.transactions.add(owner.transaction);
|
|
1318
|
-
try {
|
|
1319
|
-
if (batch.hooksPending && hook.pendingBatches === 1) {
|
|
1320
|
-
journalObjectOnce(hook);
|
|
1321
|
-
hook.isPending = false;
|
|
1322
|
-
}
|
|
1323
|
-
} finally {
|
|
1324
|
-
endRootRender(frame);
|
|
1325
|
-
}
|
|
1326
|
-
prepareNativeTransitionBlock(hook.block);
|
|
1327
|
-
}
|
|
1328
|
-
function flushNativeTransitions() {
|
|
1329
|
-
const queue = NATIVE_TRANSITION_QUEUE;
|
|
1330
|
-
if (queue === null) return;
|
|
1331
|
-
NATIVE_TRANSITION_QUEUE = null;
|
|
1332
|
-
for (const batch of queue) {
|
|
1333
|
-
const candidate = batch.native;
|
|
1334
|
-
if (candidate === void 0) continue;
|
|
1335
|
-
batch.nativeWake?.();
|
|
1336
|
-
batch.nativeWake = void 0;
|
|
1337
|
-
try {
|
|
1338
|
-
if (!candidate.validate()) candidate.rebase();
|
|
1339
|
-
} catch {
|
|
1340
|
-
candidate.discard();
|
|
1341
|
-
finishNativeTransition(batch);
|
|
1342
|
-
flushTransitionActionBatch(batch);
|
|
1343
|
-
continue;
|
|
1344
|
-
}
|
|
1345
|
-
if (!candidate.hasWrites()) {
|
|
1346
|
-
candidate.discard();
|
|
1347
|
-
finishNativeTransition(batch);
|
|
1348
|
-
flushTransitionActionBatch(batch);
|
|
1349
|
-
continue;
|
|
1350
|
-
}
|
|
1351
|
-
const admission = {
|
|
1352
|
-
blocks: /* @__PURE__ */ new Set(),
|
|
1353
|
-
transactions: /* @__PURE__ */ new Set(),
|
|
1354
|
-
attempts: [],
|
|
1355
|
-
presentations: [],
|
|
1356
|
-
suspensions: /* @__PURE__ */ new Map()
|
|
1357
|
-
};
|
|
1358
|
-
NATIVE_TRANSITION_ATTEMPT = admission;
|
|
1359
|
-
let outcome;
|
|
1360
|
-
try {
|
|
1361
|
-
outcome = candidate.prepare([
|
|
1362
|
-
() => prepareNativeTransitionUpdates(batch),
|
|
1363
|
-
...batch.hook === null ? [] : [() => prepareNativeTransitionHook(batch, batch.hook)],
|
|
1364
|
-
...(batch.hooks ?? []).map((hook) => () => prepareNativeTransitionHook(batch, hook)),
|
|
1365
|
-
...[...batch.updates.values()].map(
|
|
1366
|
-
(update) => () => prepareNativeTransitionBlock(update.block)
|
|
1367
|
-
),
|
|
1368
|
-
...candidate.consumers().filter((consumer) => consumer.active()).map((consumer) => () => {
|
|
1369
|
-
const presentation = consumer.prepare();
|
|
1370
|
-
if (presentation !== void 0) admission.presentations.push(presentation);
|
|
1371
|
-
})
|
|
1372
|
-
]);
|
|
1373
|
-
} finally {
|
|
1374
|
-
NATIVE_TRANSITION_ATTEMPT = null;
|
|
1375
|
-
}
|
|
1376
|
-
for (const block of batch.nativeBlocks ?? [])
|
|
1377
|
-
block.idState.renderOwner?.nativeTransitions?.delete(batch);
|
|
1378
|
-
batch.nativeBlocks = admission.blocks;
|
|
1379
|
-
for (const transaction of admission.transactions)
|
|
1380
|
-
(transaction.owner.nativeTransitions ??= /* @__PURE__ */ new Set()).add(batch);
|
|
1381
|
-
const valid = outcome.status === "ready" && admission.presentations.every((presentation) => presentation.validate()) && [...admission.transactions].every(
|
|
1382
|
-
(transaction) => !transaction.aborted && !transaction.owner.disposed && currentPresentations(transaction.capture) && (NATIVE_READ_DRIVER === null || NATIVE_READ_DRIVER.validateCapture(transaction.capture))
|
|
1383
|
-
);
|
|
1384
|
-
if (valid && outcome.status === "ready" && outcome.receipt.publish(() => {
|
|
1385
|
-
for (const transaction of admission.transactions) {
|
|
1386
|
-
transaction.nativeAdmitted = true;
|
|
1387
|
-
acceptNativeCapture(transaction.capture, transaction.owner, true);
|
|
1388
|
-
}
|
|
1389
|
-
batch.flushed = true;
|
|
1390
|
-
batch.updates.clear();
|
|
1391
|
-
finishNativeTransition(batch);
|
|
1392
|
-
for (const presentation of admission.presentations) presentation.commit();
|
|
1393
|
-
commitRootRenders();
|
|
1394
|
-
})) {
|
|
1395
|
-
continue;
|
|
1396
|
-
}
|
|
1397
|
-
for (const transaction of admission.transactions) rollbackRootRender(transaction);
|
|
1398
|
-
for (const presentation of admission.presentations) presentation.discard();
|
|
1399
|
-
for (let i = admission.attempts.length - 1; i >= 0; i--) {
|
|
1400
|
-
const swaps = admission.attempts[i].memoSwaps;
|
|
1401
|
-
if (swaps !== null)
|
|
1402
|
-
for (let j = swaps.length - 1; j >= 0; j--) applyTransitionMemoSwap(swaps[j], false);
|
|
1403
|
-
}
|
|
1404
|
-
commitRootRenders();
|
|
1405
|
-
if (outcome.status === "pending") {
|
|
1406
|
-
for (const state of batch.nativeBoundaries?.keys() ?? []) {
|
|
1407
|
-
if (admission.suspensions.has(state)) continue;
|
|
1408
|
-
if (state.nativeTransition === batch) state.nativeTransition = void 0;
|
|
1409
|
-
if (state.transitionTimeoutId !== null) {
|
|
1410
|
-
clearTimeout(state.transitionTimeoutId);
|
|
1411
|
-
state.transitionTimeoutId = null;
|
|
1412
|
-
}
|
|
1413
|
-
}
|
|
1414
|
-
for (const [state, thenable] of admission.suspensions) {
|
|
1415
|
-
state.nativeTransition = batch;
|
|
1416
|
-
if (state.hasResolved && state.branch === 1 && state.pendingBody !== null && TRANSITION_FALLBACK_TIMEOUT_MS !== Infinity && TRANSITION_FALLBACK_TIMEOUT_MS >= 0 && (state.transitionTimeoutId === null || batch.nativeBoundaries?.get(state) !== thenable)) {
|
|
1417
|
-
if (state.transitionTimeoutId !== null) clearTimeout(state.transitionTimeoutId);
|
|
1418
|
-
state.transitionTimeoutId = setTimeout(() => {
|
|
1419
|
-
state.transitionTimeoutId = null;
|
|
1420
|
-
if (state.nativeTransition === batch && !state.parentBlock.disposed && state.branch === 1)
|
|
1421
|
-
SCHEDULED_VISIBILITY_DRIVER.hidePending(state);
|
|
1422
|
-
}, TRANSITION_FALLBACK_TIMEOUT_MS);
|
|
1423
|
-
}
|
|
1424
|
-
}
|
|
1425
|
-
batch.nativeBoundaries = admission.suspensions;
|
|
1426
|
-
batch.nativeWake = candidate.watchPreparation(outcome, () => queueNativeTransition(batch));
|
|
1427
|
-
} else if (outcome.status === "ready" || outcome.status === "invalid" && outcome.reason === "stale") {
|
|
1428
|
-
queueNativeTransition(batch);
|
|
1429
|
-
} else {
|
|
1430
|
-
candidate.discard();
|
|
1431
|
-
finishNativeTransition(batch);
|
|
1432
|
-
for (const update of batch.updates.values()) {
|
|
1433
|
-
if (update.slot.pendingActionBatch === batch) {
|
|
1434
|
-
update.slot.pendingActionBatch = void 0;
|
|
1435
|
-
update.slot.pendingActionValue = void 0;
|
|
1436
|
-
}
|
|
1437
|
-
}
|
|
1438
|
-
batch.updates.clear();
|
|
1439
|
-
batch.flushed = true;
|
|
1440
|
-
if (outcome.status === "error") {
|
|
1441
|
-
if (admission.errorBlock !== void 0 && !admission.errorBlock.disposed)
|
|
1442
|
-
handleResumeError(admission.errorBlock, outcome.error);
|
|
1443
|
-
else reportTransitionError(outcome.error, batch.hook ?? void 0);
|
|
1444
|
-
} else if (outcome.status === "invalid")
|
|
1445
|
-
reportTransitionError(new TypeError((0, import_error_codes_client_generated.formatClientError)(79)), batch.hook ?? void 0);
|
|
1446
|
-
}
|
|
1215
|
+
function scheduleNativeTransitionFlush() {
|
|
1216
|
+
if (!scheduled && !syncFlush) {
|
|
1217
|
+
scheduled = true;
|
|
1218
|
+
queueMicrotask(flush);
|
|
1447
1219
|
}
|
|
1448
1220
|
}
|
|
1449
1221
|
let ACTIVE_TRANSITION_ACTION_BATCH = null;
|
|
@@ -1458,7 +1230,49 @@ function nativeCandidateForAction(batch) {
|
|
|
1458
1230
|
candidate = void 0;
|
|
1459
1231
|
}
|
|
1460
1232
|
}
|
|
1461
|
-
|
|
1233
|
+
candidate ??= batch.native = (0, import_transition_state.createSignalActionFrame)?.();
|
|
1234
|
+
if (candidate !== void 0 && NATIVE_TRANSITION_DRIVER === null) {
|
|
1235
|
+
NATIVE_TRANSITION_DRIVER = (0, import_transition_state.createSignalTransitionCoordinator)({
|
|
1236
|
+
get attempt() {
|
|
1237
|
+
return NATIVE_TRANSITION_ATTEMPT;
|
|
1238
|
+
},
|
|
1239
|
+
set attempt(admission) {
|
|
1240
|
+
NATIVE_TRANSITION_ATTEMPT = admission;
|
|
1241
|
+
},
|
|
1242
|
+
get visibility() {
|
|
1243
|
+
return SCHEDULED_VISIBILITY_DRIVER;
|
|
1244
|
+
},
|
|
1245
|
+
get rollback() {
|
|
1246
|
+
return ROOT_RENDER_ROLLBACK;
|
|
1247
|
+
},
|
|
1248
|
+
get fallbackTimeout() {
|
|
1249
|
+
return TRANSITION_FALLBACK_TIMEOUT_MS;
|
|
1250
|
+
},
|
|
1251
|
+
schedule: scheduleNativeTransitionFlush,
|
|
1252
|
+
beginRoot: beginRootRender,
|
|
1253
|
+
endRoot: endRootRender,
|
|
1254
|
+
beginAttempt: beginTransitionAttempt,
|
|
1255
|
+
endAttempt: endTransitionAttempt,
|
|
1256
|
+
invalidate: invalidateRender,
|
|
1257
|
+
render: renderBlock,
|
|
1258
|
+
journal: journalObjectOnce,
|
|
1259
|
+
journalProperty: journalRootProperty,
|
|
1260
|
+
isSuspense: isSuspenseException,
|
|
1261
|
+
releaseHookHolder: releaseTransitionHookHolder,
|
|
1262
|
+
rebaseUpdate: rebaseTransitionActionUpdate,
|
|
1263
|
+
flushBatch: flushTransitionActionBatch,
|
|
1264
|
+
currentPresentations,
|
|
1265
|
+
validateCapture: (capture) => NATIVE_READ_DRIVER === null || NATIVE_READ_DRIVER.validateCapture(capture),
|
|
1266
|
+
acceptCapture: acceptNativeCapture,
|
|
1267
|
+
commitRoots: commitRootRenders,
|
|
1268
|
+
rollbackRoot: rollbackRootRender,
|
|
1269
|
+
applyMemoSwap: applyTransitionMemoSwap,
|
|
1270
|
+
handleError: handleResumeError,
|
|
1271
|
+
reportError: reportTransitionError,
|
|
1272
|
+
unsupportedError: () => new TypeError((0, import_error_codes_client_generated.formatClientError)(79))
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
return candidate;
|
|
1462
1276
|
}
|
|
1463
1277
|
function ensureNativeActionResolver() {
|
|
1464
1278
|
if (nativeActionResolverInstalled) return;
|
|
@@ -2108,6 +1922,7 @@ const JOURNAL_RENDER = 5;
|
|
|
2108
1922
|
const JOURNAL_UNDO = 6;
|
|
2109
1923
|
const JOURNAL_RETIRED = 7;
|
|
2110
1924
|
const JOURNAL_INPUTS = 8;
|
|
1925
|
+
const JOURNAL_EVENT_OWNER = 9;
|
|
2111
1926
|
let TRANSITION_JOURNAL = null;
|
|
2112
1927
|
let TRANSITION_JOURNAL_BAGS = null;
|
|
2113
1928
|
let TRANSITION_JOURNAL_CHECKPOINT = 0;
|
|
@@ -2414,6 +2229,13 @@ function rollbackRootRender(transaction) {
|
|
|
2414
2229
|
undoCreatedInRootRender(transaction.log[i + 1], transaction.log[i + 2]);
|
|
2415
2230
|
else if (transaction.log[i] === JOURNAL_RETIRED)
|
|
2416
2231
|
transaction.log[i + 1].delete(transaction.log[i + 2]);
|
|
2232
|
+
else if (transaction.log[i] === JOURNAL_EVENT_OWNER) {
|
|
2233
|
+
const owners = transaction.log[i + 1];
|
|
2234
|
+
const el = transaction.log[i + 2];
|
|
2235
|
+
const previous = transaction.log[i + 3];
|
|
2236
|
+
if (previous === void 0) owners.delete(el);
|
|
2237
|
+
else owners.set(el, previous);
|
|
2238
|
+
}
|
|
2417
2239
|
}
|
|
2418
2240
|
transaction.log.length = 0;
|
|
2419
2241
|
}
|
|
@@ -3039,6 +2861,10 @@ function rollbackTransitionJournal(checkpoint, owner) {
|
|
|
3039
2861
|
case JOURNAL_UNDO:
|
|
3040
2862
|
target();
|
|
3041
2863
|
break;
|
|
2864
|
+
case JOURNAL_EVENT_OWNER:
|
|
2865
|
+
if (b === void 0) target.delete(a);
|
|
2866
|
+
else target.set(a, b);
|
|
2867
|
+
break;
|
|
3042
2868
|
default:
|
|
3043
2869
|
for (const key of Reflect.ownKeys(target)) {
|
|
3044
2870
|
if (!Object.prototype.hasOwnProperty.call(a, key) && Object.prototype.propertyIsEnumerable.call(target, key))
|
|
@@ -4348,7 +4174,7 @@ function drainQueue() {
|
|
|
4348
4174
|
for (const activity of activitiesToRehide) SCHEDULED_VISIBILITY_DRIVER.rehide(activity);
|
|
4349
4175
|
}
|
|
4350
4176
|
commitRootRenders();
|
|
4351
|
-
|
|
4177
|
+
NATIVE_TRANSITION_DRIVER?.flush();
|
|
4352
4178
|
return pendingError;
|
|
4353
4179
|
}
|
|
4354
4180
|
function flush() {
|
|
@@ -6235,7 +6061,7 @@ function drainPassiveEffects() {
|
|
|
6235
6061
|
drainPassivePhase();
|
|
6236
6062
|
}
|
|
6237
6063
|
function hasPendingWork() {
|
|
6238
|
-
return QUEUE.length > 0 || ROOT_RENDER_TRANSACTIONS.length > 0 ||
|
|
6064
|
+
return QUEUE.length > 0 || ROOT_RENDER_TRANSACTIONS.length > 0 || NATIVE_TRANSITION_DRIVER?.hasWork() === true || effectEventQueue.length > 0 || effectEventCommitActions.length > 0 || effectQueues[INSERTION].length > 0 || effectQueues[LAYOUT].length > 0 || effectQueues[PASSIVE].length > 0 || pendingPassiveUnmounts.length > 0 || storeSyncQueue.length > 0 || NATIVE_ADOPTION_RELEASES !== null || hasControlledSyncs();
|
|
6239
6065
|
}
|
|
6240
6066
|
function drainEffectEventUpdates() {
|
|
6241
6067
|
if (effectEventQueue.length === 0) return;
|
|
@@ -8584,7 +8410,7 @@ function createContext(defaultValue) {
|
|
|
8584
8410
|
ctx.$$kind = CONTEXT_TAG;
|
|
8585
8411
|
ctx.defaultValue = defaultValue;
|
|
8586
8412
|
ctx.$$version = 0;
|
|
8587
|
-
|
|
8413
|
+
(0, import_context_identity.registerContext)(ctx);
|
|
8588
8414
|
if (process.env.NODE_ENV !== "production") {
|
|
8589
8415
|
let consumerWarned = false;
|
|
8590
8416
|
Object.defineProperty(ctx, "Consumer", {
|
|
@@ -12269,7 +12095,7 @@ function preparePresentationSignalBinding(args, frame, text = false) {
|
|
|
12269
12095
|
const value = args[text ? 3 : 4];
|
|
12270
12096
|
const site = args[text ? 4 : 5];
|
|
12271
12097
|
const attributeKind = text ? void 0 : args[6] ?? "attr";
|
|
12272
|
-
const
|
|
12098
|
+
const policy = text ? args[5] ? DIRECT_SIGNAL_TEXT_ONLY_POLICY : DIRECT_SIGNAL_TEXT_POLICY : DIRECT_SIGNAL_ATTRIBUTE_POLICY;
|
|
12273
12099
|
return runWithBlockSignalOwner(scope, () => {
|
|
12274
12100
|
const handle = isSignalHandle(value) ? value : null;
|
|
12275
12101
|
const witness = handle !== null && frame.lease.host !== void 0 ? beginNativeReadWitness(true) : -1;
|
|
@@ -12294,17 +12120,17 @@ function preparePresentationSignalBinding(args, frame, text = false) {
|
|
|
12294
12120
|
frame,
|
|
12295
12121
|
element,
|
|
12296
12122
|
name,
|
|
12297
|
-
() =>
|
|
12123
|
+
() => writeDirectSignalAttribute(element, prepared, "attribute", previous, name, attributeKind)
|
|
12298
12124
|
);
|
|
12299
12125
|
return value;
|
|
12300
12126
|
}
|
|
12301
12127
|
const prior = previous;
|
|
12302
|
-
const reusable = prior?.[DIRECT_SIGNAL_BINDING] === true && !prior.disposed && prior.unsubscribe === void 0 && prior.handle === handle && prior.target === element && prior.
|
|
12128
|
+
const reusable = prior?.[DIRECT_SIGNAL_BINDING] === true && !prior.disposed && prior.unsubscribe === void 0 && prior.handle === handle && prior.target === element && prior.policy === policy && prior.site === site && prior.name === name && prior.attributeKind === attributeKind;
|
|
12303
12129
|
const binding = reusable ? prior : {
|
|
12304
12130
|
[DIRECT_SIGNAL_BINDING]: true,
|
|
12305
12131
|
scope,
|
|
12306
12132
|
target: element,
|
|
12307
|
-
|
|
12133
|
+
policy,
|
|
12308
12134
|
site,
|
|
12309
12135
|
name,
|
|
12310
12136
|
attributeKind,
|
|
@@ -12318,7 +12144,7 @@ function preparePresentationSignalBinding(args, frame, text = false) {
|
|
|
12318
12144
|
preparePresentationOperation(frame, element, name ?? "signalText", () => {
|
|
12319
12145
|
if (binding.disposed) return;
|
|
12320
12146
|
if (!text)
|
|
12321
|
-
|
|
12147
|
+
writeDirectSignalAttribute(element, prepared, "attribute", previous, name, attributeKind);
|
|
12322
12148
|
binding.value = current;
|
|
12323
12149
|
runWithBlockSignalOwner(scope, () => activateDirectSignalBinding(binding, void 0));
|
|
12324
12150
|
});
|
|
@@ -12338,12 +12164,12 @@ function preparePresentationSignalValue(args, frame) {
|
|
|
12338
12164
|
const valid = (retired = false) => owner.bindingContainer.contains(element) && (!retired || frame.lease.valid?.() !== false) && (lease !== void 0 && !retired ? lease.owner === owner && lease.active() && runWithBlockSignalOwner(scope, () => lease.matches(handle)) : !(0, import_control_handoff.hasSignalControlBinding)(element, "value") && !(0, import_early_values.hasHydrationControlSignalWriter)(element, "value"));
|
|
12339
12165
|
if (!valid()) presentationMiss(false);
|
|
12340
12166
|
const prior = previous;
|
|
12341
|
-
const reusable = prior?.[DIRECT_SIGNAL_BINDING] === true && !prior.disposed && prior.input === void 0 && prior.handle === handle && prior.target === element && prior.
|
|
12167
|
+
const reusable = prior?.[DIRECT_SIGNAL_BINDING] === true && !prior.disposed && prior.input === void 0 && prior.handle === handle && prior.target === element && prior.policy === DIRECT_SIGNAL_VALUE_POLICY && prior.site === site;
|
|
12342
12168
|
const binding = reusable ? prior : {
|
|
12343
12169
|
[DIRECT_SIGNAL_BINDING]: true,
|
|
12344
12170
|
scope,
|
|
12345
12171
|
target: element,
|
|
12346
|
-
|
|
12172
|
+
policy: DIRECT_SIGNAL_VALUE_POLICY,
|
|
12347
12173
|
site,
|
|
12348
12174
|
handle,
|
|
12349
12175
|
value,
|
|
@@ -12728,7 +12554,7 @@ function disposeDirectSignalBinding(binding) {
|
|
|
12728
12554
|
}
|
|
12729
12555
|
}
|
|
12730
12556
|
function directSignalControlValue(binding, snapshot) {
|
|
12731
|
-
if (binding.kind === "checked") return snapshot.checked ?? false;
|
|
12557
|
+
if (binding.policy.kind === "checked") return snapshot.checked ?? false;
|
|
12732
12558
|
return snapshot.selectedValues ?? snapshot.value;
|
|
12733
12559
|
}
|
|
12734
12560
|
function validateDirectSignalControl(element, site) {
|
|
@@ -12743,77 +12569,116 @@ function validateDirectSignalControl(element, site) {
|
|
|
12743
12569
|
}
|
|
12744
12570
|
function writeDirectSignalBinding(binding, value) {
|
|
12745
12571
|
if (TRANSITION_JOURNAL !== null) journalObjectOnce(binding);
|
|
12746
|
-
|
|
12747
|
-
|
|
12748
|
-
|
|
12749
|
-
|
|
12750
|
-
|
|
12751
|
-
|
|
12752
|
-
} else if (binding.kind === "attribute") {
|
|
12753
|
-
const element = binding.target;
|
|
12754
|
-
switch (binding.attributeKind) {
|
|
12755
|
-
case "class":
|
|
12756
|
-
if (element.namespaceURI === HTML_NS) setClassName(element, value);
|
|
12757
|
-
else setClassAttr(element, value);
|
|
12758
|
-
break;
|
|
12759
|
-
case "booleanAttr":
|
|
12760
|
-
setBooleanAttribute(element, binding.name, value);
|
|
12761
|
-
break;
|
|
12762
|
-
case "ariaAttr":
|
|
12763
|
-
setAriaAttribute(element, binding.name, value);
|
|
12764
|
-
break;
|
|
12765
|
-
case "stringData":
|
|
12766
|
-
setStringData(element, binding.name, value);
|
|
12767
|
-
break;
|
|
12768
|
-
default:
|
|
12769
|
-
setAttribute(element, binding.name, value);
|
|
12770
|
-
}
|
|
12771
|
-
} else if (binding.kind === "value") {
|
|
12772
|
-
const element = binding.target;
|
|
12773
|
-
const tag = element.localName;
|
|
12774
|
-
if (tag === "select") setSelectValue(element, value);
|
|
12775
|
-
else setValue(element, value, tag === "textarea" && isWritableSignal(binding.handle));
|
|
12572
|
+
binding.policy.writeBinding(binding, value);
|
|
12573
|
+
binding.value = value;
|
|
12574
|
+
}
|
|
12575
|
+
function writeDirectSignalBoundText(binding, value) {
|
|
12576
|
+
if (binding.text === void 0) {
|
|
12577
|
+
binding.text = binding.policy.kind === "textOnlyChild" ? htext(binding.target, value) : htextSwap(binding.target, value);
|
|
12776
12578
|
} else {
|
|
12777
|
-
|
|
12579
|
+
setText(binding.text, value);
|
|
12778
12580
|
}
|
|
12779
|
-
binding.value = value;
|
|
12780
12581
|
}
|
|
12781
|
-
function
|
|
12782
|
-
|
|
12783
|
-
|
|
12784
|
-
|
|
12785
|
-
|
|
12786
|
-
|
|
12787
|
-
|
|
12582
|
+
function writeDirectSignalBoundAttribute(binding, value) {
|
|
12583
|
+
writeDirectSignalAttribute(
|
|
12584
|
+
binding.target,
|
|
12585
|
+
value,
|
|
12586
|
+
"attribute",
|
|
12587
|
+
void 0,
|
|
12588
|
+
binding.name,
|
|
12589
|
+
binding.attributeKind
|
|
12590
|
+
);
|
|
12591
|
+
}
|
|
12592
|
+
function writeDirectSignalBoundValue(binding, value) {
|
|
12593
|
+
const element = binding.target;
|
|
12594
|
+
const tag = element.localName;
|
|
12595
|
+
if (tag === "select") setSelectValue(element, value);
|
|
12596
|
+
else setValue(element, value, tag === "textarea" && isWritableSignal(binding.handle));
|
|
12597
|
+
}
|
|
12598
|
+
function writeDirectSignalBoundChecked(binding, value) {
|
|
12599
|
+
setChecked(binding.target, value);
|
|
12600
|
+
}
|
|
12601
|
+
function writeDirectSignalText(target, value, kind, previous) {
|
|
12602
|
+
if (previous instanceof Text) {
|
|
12603
|
+
setText(previous, value);
|
|
12604
|
+
return previous;
|
|
12788
12605
|
}
|
|
12789
|
-
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
|
|
12798
|
-
|
|
12799
|
-
|
|
12800
|
-
|
|
12801
|
-
|
|
12802
|
-
|
|
12803
|
-
|
|
12804
|
-
|
|
12805
|
-
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
const element = target;
|
|
12810
|
-
if (element.localName === "select") setSelectValue(element, value);
|
|
12811
|
-
else setValue(element, value);
|
|
12812
|
-
} else {
|
|
12813
|
-
setChecked(target, value);
|
|
12606
|
+
return kind === "textOnlyChild" ? htext(target, value) : htextSwap(target, value);
|
|
12607
|
+
}
|
|
12608
|
+
function writeDirectSignalAttribute(target, value, _kind, _previous, name, attributeKind) {
|
|
12609
|
+
const element = target;
|
|
12610
|
+
switch (attributeKind) {
|
|
12611
|
+
case "class":
|
|
12612
|
+
if (element.namespaceURI === HTML_NS) setClassName(element, value);
|
|
12613
|
+
else setClassAttr(element, value);
|
|
12614
|
+
break;
|
|
12615
|
+
case "booleanAttr":
|
|
12616
|
+
setBooleanAttribute(element, name, value);
|
|
12617
|
+
break;
|
|
12618
|
+
case "ariaAttr":
|
|
12619
|
+
setAriaAttribute(element, name, value);
|
|
12620
|
+
break;
|
|
12621
|
+
case "stringData":
|
|
12622
|
+
setStringData(element, name, value);
|
|
12623
|
+
break;
|
|
12624
|
+
default:
|
|
12625
|
+
setAttribute(element, name, value);
|
|
12814
12626
|
}
|
|
12815
12627
|
return value;
|
|
12816
12628
|
}
|
|
12629
|
+
function writeDirectSignalValue(target, value, _kind, _previous, _name, _attributeKind) {
|
|
12630
|
+
const element = target;
|
|
12631
|
+
if (element.localName === "select") setSelectValue(element, value);
|
|
12632
|
+
else setValue(element, value);
|
|
12633
|
+
return value;
|
|
12634
|
+
}
|
|
12635
|
+
function writeDirectSignalChecked(target, value) {
|
|
12636
|
+
setChecked(target, value);
|
|
12637
|
+
return value;
|
|
12638
|
+
}
|
|
12639
|
+
const DIRECT_SIGNAL_TEXT_POLICY = {
|
|
12640
|
+
kind: "text",
|
|
12641
|
+
writeBinding: writeDirectSignalBoundText,
|
|
12642
|
+
write: writeDirectSignalText
|
|
12643
|
+
};
|
|
12644
|
+
const DIRECT_SIGNAL_TEXT_ONLY_POLICY = {
|
|
12645
|
+
kind: "textOnlyChild",
|
|
12646
|
+
writeBinding: writeDirectSignalBoundText,
|
|
12647
|
+
write: writeDirectSignalText
|
|
12648
|
+
};
|
|
12649
|
+
const DIRECT_SIGNAL_ATTRIBUTE_POLICY = {
|
|
12650
|
+
kind: "attribute",
|
|
12651
|
+
writeBinding: writeDirectSignalBoundAttribute,
|
|
12652
|
+
write: writeDirectSignalAttribute
|
|
12653
|
+
};
|
|
12654
|
+
const DIRECT_SIGNAL_CONTROL_POLICY = {
|
|
12655
|
+
validateNew(scope, target, kind) {
|
|
12656
|
+
if (kind === "value" && scope.block.idState.renderOwner?.controlLeases?.has(target))
|
|
12657
|
+
presentationMiss(false);
|
|
12658
|
+
},
|
|
12659
|
+
snapshot(target, site) {
|
|
12660
|
+
const snapshot = (0, import_event_capture.snapshotHydrationControl)(target);
|
|
12661
|
+
if (snapshot !== null) validateDirectSignalControl(target, site);
|
|
12662
|
+
return snapshot;
|
|
12663
|
+
},
|
|
12664
|
+
activate(binding, revision) {
|
|
12665
|
+
installDirectSignalControl(binding);
|
|
12666
|
+
if (!binding.pendingControl) (0, import_event_capture.consumeHydrationControl)(binding.target, revision);
|
|
12667
|
+
},
|
|
12668
|
+
adopt: queueDirectSignalControlAdoption
|
|
12669
|
+
};
|
|
12670
|
+
const DIRECT_SIGNAL_VALUE_POLICY = {
|
|
12671
|
+
kind: "value",
|
|
12672
|
+
writeBinding: writeDirectSignalBoundValue,
|
|
12673
|
+
write: writeDirectSignalValue,
|
|
12674
|
+
control: DIRECT_SIGNAL_CONTROL_POLICY
|
|
12675
|
+
};
|
|
12676
|
+
const DIRECT_SIGNAL_CHECKED_POLICY = {
|
|
12677
|
+
kind: "checked",
|
|
12678
|
+
writeBinding: writeDirectSignalBoundChecked,
|
|
12679
|
+
write: writeDirectSignalChecked,
|
|
12680
|
+
control: DIRECT_SIGNAL_CONTROL_POLICY
|
|
12681
|
+
};
|
|
12817
12682
|
function updateDirectSignalBinding(binding) {
|
|
12818
12683
|
if (binding.disposed || binding.pendingControl || binding.handle === null || binding.scope.block.disposed)
|
|
12819
12684
|
return;
|
|
@@ -12848,7 +12713,7 @@ function installDirectSignalControl(binding) {
|
|
|
12848
12713
|
(STAGED_DOM?.view(element) ?? element).addEventListener("input", input);
|
|
12849
12714
|
binding.controlWriterCleanup = (0, import_early_values.registerHydrationControlSignalWriter)(
|
|
12850
12715
|
element,
|
|
12851
|
-
binding.kind === "checked" ? "checked" : "value",
|
|
12716
|
+
binding.policy.kind === "checked" ? "checked" : "value",
|
|
12852
12717
|
(value) => (0, import_transition_state.withoutSignalCandidate)(
|
|
12853
12718
|
() => runWithBlockSignalOwner(binding.scope, () => {
|
|
12854
12719
|
if (!binding.disposed && !binding.pendingControl && isWritableSignal(binding.handle))
|
|
@@ -12884,19 +12749,15 @@ function activateDirectSignalBinding(binding, revision) {
|
|
|
12884
12749
|
binding.unsubscribe = binding.handle[import_types.SIGNAL_BINDING_SUBSCRIBE](
|
|
12885
12750
|
nativeTransitionBindingNotify(binding, () => updateDirectSignalBinding(binding))
|
|
12886
12751
|
);
|
|
12887
|
-
if (revision !== void 0)
|
|
12888
|
-
installDirectSignalControl(binding);
|
|
12889
|
-
if (!binding.pendingControl) (0, import_event_capture.consumeHydrationControl)(binding.target, revision);
|
|
12890
|
-
}
|
|
12752
|
+
if (revision !== void 0) binding.policy.control.activate(binding, revision);
|
|
12891
12753
|
}
|
|
12892
|
-
function createDirectSignalBinding(scope, target, value, site,
|
|
12893
|
-
|
|
12894
|
-
presentationMiss(false);
|
|
12754
|
+
function createDirectSignalBinding(scope, target, value, site, policy, name, attributeKind, text) {
|
|
12755
|
+
policy.control?.validateNew(scope, target, policy.kind);
|
|
12895
12756
|
const handle = isSignalHandle(value) ? value : null;
|
|
12896
12757
|
const binding = {
|
|
12897
12758
|
[DIRECT_SIGNAL_BINDING]: true,
|
|
12898
12759
|
scope,
|
|
12899
|
-
|
|
12760
|
+
policy,
|
|
12900
12761
|
target,
|
|
12901
12762
|
site,
|
|
12902
12763
|
name,
|
|
@@ -12906,8 +12767,7 @@ function createDirectSignalBinding(scope, target, value, site, kind, name, attri
|
|
|
12906
12767
|
disposed: false
|
|
12907
12768
|
};
|
|
12908
12769
|
if (text !== void 0) binding.text = text;
|
|
12909
|
-
const controlSnapshot =
|
|
12910
|
-
if (controlSnapshot !== null) validateDirectSignalControl(target, site);
|
|
12770
|
+
const controlSnapshot = policy.control?.snapshot(target, site) ?? null;
|
|
12911
12771
|
binding.pendingControl = activeHydration() !== null && isWritableSignal(handle) && controlSnapshot !== null && controlSnapshot.editRevision > 0;
|
|
12912
12772
|
const initial = handle === null ? value : readSignalBinding(handle);
|
|
12913
12773
|
if (!binding.pendingControl) writeDirectSignalBinding(binding, initial);
|
|
@@ -12920,18 +12780,19 @@ function createDirectSignalBinding(scope, target, value, site, kind, name, attri
|
|
|
12920
12780
|
updateDirectSignalBinding(binding);
|
|
12921
12781
|
});
|
|
12922
12782
|
} else activateDirectSignalBinding(binding, controlSnapshot?.revision);
|
|
12923
|
-
if (binding.pendingControl)
|
|
12783
|
+
if (binding.pendingControl) policy.control.adopt(binding);
|
|
12924
12784
|
registerHookCleanup(scope, () => disposeDirectSignalBinding(binding));
|
|
12925
12785
|
return binding;
|
|
12926
12786
|
}
|
|
12927
|
-
function bindDirectSignal(scope, previous, target, value, site,
|
|
12787
|
+
function bindDirectSignal(scope, previous, target, value, site, policy, name, attributeKind) {
|
|
12788
|
+
const kind = policy.kind;
|
|
12928
12789
|
const prior = typeof previous === "object" && previous !== null && previous[DIRECT_SIGNAL_BINDING] === true ? previous : null;
|
|
12929
12790
|
const handle = isSignalHandle(value) ? value : null;
|
|
12930
12791
|
if (handle !== null && (!import_document_owner.signalDocumentEnabled || (0, import_owner_context.currentSignalOwner)() !== SCOPE_SIGNAL_OWNERS.get(scope))) {
|
|
12931
12792
|
if (!import_document_owner.signalDocumentEnabled) enableSignalBindings();
|
|
12932
12793
|
return runWithBlockSignalOwner(
|
|
12933
12794
|
scope,
|
|
12934
|
-
() => bindDirectSignal(scope, previous, target, value, site,
|
|
12795
|
+
() => bindDirectSignal(scope, previous, target, value, site, policy, name, attributeKind)
|
|
12935
12796
|
);
|
|
12936
12797
|
}
|
|
12937
12798
|
if (handle === null && prior === null) {
|
|
@@ -12941,11 +12802,11 @@ function bindDirectSignal(scope, previous, target, value, site, kind, name, attr
|
|
|
12941
12802
|
}
|
|
12942
12803
|
if (TRANSITION_JOURNAL !== null) journalBag();
|
|
12943
12804
|
const scalarTarget = (kind === "text" || kind === "textOnlyChild") && previous instanceof Text ? previous : target;
|
|
12944
|
-
return
|
|
12805
|
+
return policy.write(scalarTarget, value, kind, previous, name, attributeKind);
|
|
12945
12806
|
}
|
|
12946
|
-
if (prior !== null && !prior.disposed && prior.target === target && prior.
|
|
12807
|
+
if (prior !== null && !prior.disposed && prior.target === target && prior.policy === policy && prior.site === site && prior.name === name && prior.attributeKind === attributeKind && prior.handle === handle) {
|
|
12947
12808
|
if (prior.pendingControl) {
|
|
12948
|
-
|
|
12809
|
+
policy.control.adopt(prior);
|
|
12949
12810
|
return prior;
|
|
12950
12811
|
}
|
|
12951
12812
|
const next = readSignalBinding(handle);
|
|
@@ -12955,7 +12816,7 @@ function bindDirectSignal(scope, previous, target, value, site, kind, name, attr
|
|
|
12955
12816
|
if (TRANSITION_JOURNAL !== null) journalBag();
|
|
12956
12817
|
if (handle === null) {
|
|
12957
12818
|
const scalarTarget = kind === "text" || kind === "textOnlyChild" ? prior?.text ?? prior?.target ?? target : target;
|
|
12958
|
-
const token =
|
|
12819
|
+
const token = policy.write(
|
|
12959
12820
|
scalarTarget,
|
|
12960
12821
|
value,
|
|
12961
12822
|
kind,
|
|
@@ -12978,7 +12839,7 @@ function bindDirectSignal(scope, previous, target, value, site, kind, name, attr
|
|
|
12978
12839
|
signalTarget,
|
|
12979
12840
|
value,
|
|
12980
12841
|
site,
|
|
12981
|
-
|
|
12842
|
+
policy,
|
|
12982
12843
|
name,
|
|
12983
12844
|
attributeKind,
|
|
12984
12845
|
kind === "text" || kind === "textOnlyChild" ? prior?.text ?? (previous instanceof Text ? previous : void 0) : void 0
|
|
@@ -13012,17 +12873,26 @@ function bindSignalText(scope, previous, position, value, site, onlyChild = fals
|
|
|
13012
12873
|
prior?.target ?? (previous instanceof Text ? previous : position),
|
|
13013
12874
|
value,
|
|
13014
12875
|
site,
|
|
13015
|
-
onlyChild ?
|
|
12876
|
+
onlyChild ? DIRECT_SIGNAL_TEXT_ONLY_POLICY : DIRECT_SIGNAL_TEXT_POLICY
|
|
13016
12877
|
);
|
|
13017
12878
|
}
|
|
13018
12879
|
function bindSignalAttribute(scope, previous, element, name, value, site, attributeKind = "attr") {
|
|
13019
|
-
return bindDirectSignal(
|
|
12880
|
+
return bindDirectSignal(
|
|
12881
|
+
scope,
|
|
12882
|
+
previous,
|
|
12883
|
+
element,
|
|
12884
|
+
value,
|
|
12885
|
+
site,
|
|
12886
|
+
DIRECT_SIGNAL_ATTRIBUTE_POLICY,
|
|
12887
|
+
name,
|
|
12888
|
+
attributeKind
|
|
12889
|
+
);
|
|
13020
12890
|
}
|
|
13021
12891
|
function bindSignalValue(scope, previous, element, value, site) {
|
|
13022
|
-
return bindDirectSignal(scope, previous, element, value, site,
|
|
12892
|
+
return bindDirectSignal(scope, previous, element, value, site, DIRECT_SIGNAL_VALUE_POLICY);
|
|
13023
12893
|
}
|
|
13024
12894
|
function bindSignalChecked(scope, previous, element, value, site) {
|
|
13025
|
-
return bindDirectSignal(scope, previous, element, value, site,
|
|
12895
|
+
return bindDirectSignal(scope, previous, element, value, site, DIRECT_SIGNAL_CHECKED_POLICY);
|
|
13026
12896
|
}
|
|
13027
12897
|
function setAttributeIfChanged(value, previous, el, name) {
|
|
13028
12898
|
if (previous === value) return previous;
|
|
@@ -15299,31 +15169,40 @@ function isUsableEventSlot(slot) {
|
|
|
15299
15169
|
const EMPTY_ARGS = [];
|
|
15300
15170
|
let SIGNAL_EVENT_OWNERS = null;
|
|
15301
15171
|
function setEventHandler(el, key, handler) {
|
|
15302
|
-
if (
|
|
15303
|
-
TRANSITION_JOURNAL
|
|
15304
|
-
|
|
15305
|
-
|
|
15306
|
-
|
|
15307
|
-
|
|
15308
|
-
|
|
15309
|
-
|
|
15172
|
+
if (key !== void 0) {
|
|
15173
|
+
if (TRANSITION_JOURNAL !== null) {
|
|
15174
|
+
TRANSITION_JOURNAL.push(
|
|
15175
|
+
JOURNAL_PROP,
|
|
15176
|
+
el,
|
|
15177
|
+
key,
|
|
15178
|
+
(STAGED_DOM?.view(el) ?? el)[key]
|
|
15179
|
+
);
|
|
15180
|
+
journalBag();
|
|
15181
|
+
}
|
|
15182
|
+
(STAGED_DOM?.view(el) ?? el)[key] = handler;
|
|
15310
15183
|
}
|
|
15311
|
-
(
|
|
15312
|
-
if (SIGNAL_BINDINGS_ENABLED || import_document_owner.signalDocumentEnabled) {
|
|
15313
|
-
const owner =
|
|
15184
|
+
const explicitOwner = import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 ? (0, import_owner_context.currentExplicitSignalOwner)() : null;
|
|
15185
|
+
if (SIGNAL_BINDINGS_ENABLED || import_document_owner.signalDocumentEnabled || explicitOwner !== null || SIGNAL_EVENT_OWNERS !== null) {
|
|
15186
|
+
const owner = explicitOwner ?? (import_document_owner.signalDocumentEnabled || CURRENT_SCOPE?.block.idState.renderOwner?.signalOwner !== void 0 ? CURRENT_SCOPE === null ? (0, import_owner_context.currentSignalOwner)() : SCOPE_SIGNAL_OWNERS.get(CURRENT_SCOPE) || CURRENT_SCOPE : CURRENT_SCOPE);
|
|
15314
15187
|
if (owner !== null) {
|
|
15315
15188
|
if ((owner instanceof ScopeImpl || owner instanceof BlockImpl) && SCOPE_SIGNAL_OWNERS.get(owner) === void 0)
|
|
15316
15189
|
SCOPE_SIGNAL_OWNERS.set(owner, false);
|
|
15190
|
+
const owners = SIGNAL_EVENT_OWNERS ??= /* @__PURE__ */ new WeakMap();
|
|
15317
15191
|
if (STAGED_COMMIT_CAPTURE !== null)
|
|
15318
|
-
DEFERRED_LAYOUT_DRIVER.stageAction(
|
|
15319
|
-
|
|
15320
|
-
)
|
|
15321
|
-
|
|
15192
|
+
DEFERRED_LAYOUT_DRIVER.stageAction(() => owners.set(el, owner));
|
|
15193
|
+
else {
|
|
15194
|
+
if (TRANSITION_JOURNAL !== null) {
|
|
15195
|
+
const previous = owners.get(el);
|
|
15196
|
+
if (previous !== owner)
|
|
15197
|
+
TRANSITION_JOURNAL.push(JOURNAL_EVENT_OWNER, owners, el, previous);
|
|
15198
|
+
}
|
|
15199
|
+
owners.set(el, owner);
|
|
15200
|
+
}
|
|
15322
15201
|
}
|
|
15323
15202
|
}
|
|
15324
15203
|
}
|
|
15325
15204
|
function evt0(el, key, fn) {
|
|
15326
|
-
const d = { fn, args: EMPTY_ARGS, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15205
|
+
const d = { fn, args: EMPTY_ARGS, el, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15327
15206
|
setEventHandler(el, key, d);
|
|
15328
15207
|
return d;
|
|
15329
15208
|
}
|
|
@@ -15332,9 +15211,11 @@ function evt0u(d, fn) {
|
|
|
15332
15211
|
if (_dispatchDepth !== 0) preserveDispatchedBundle(d);
|
|
15333
15212
|
if (TRANSITION_JOURNAL !== null) journalObjectOnce(d);
|
|
15334
15213
|
d.fn = fn;
|
|
15214
|
+
if ((SIGNAL_BINDINGS_ENABLED || import_document_owner.signalDocumentEnabled || import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || SIGNAL_EVENT_OWNERS !== null) && (import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || STAGED_COMMIT_CAPTURE !== null || import_document_owner.signalDocumentEnabled || CURRENT_SCOPE?.block.idState.renderOwner?.signalOwner !== void 0 || SIGNAL_EVENT_OWNERS?.get(d.el) !== CURRENT_SCOPE))
|
|
15215
|
+
setEventHandler(d.el);
|
|
15335
15216
|
}
|
|
15336
15217
|
function evt1(el, key, fn, a0) {
|
|
15337
|
-
const d = { fn, args: 1, a0, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15218
|
+
const d = { fn, args: 1, a0, el, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15338
15219
|
setEventHandler(el, key, d);
|
|
15339
15220
|
return d;
|
|
15340
15221
|
}
|
|
@@ -15344,9 +15225,11 @@ function evt1u(d, fn, a0) {
|
|
|
15344
15225
|
if (TRANSITION_JOURNAL !== null) journalObjectOnce(d);
|
|
15345
15226
|
d.fn = fn;
|
|
15346
15227
|
d.a0 = a0;
|
|
15228
|
+
if ((SIGNAL_BINDINGS_ENABLED || import_document_owner.signalDocumentEnabled || import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || SIGNAL_EVENT_OWNERS !== null) && (import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || STAGED_COMMIT_CAPTURE !== null || import_document_owner.signalDocumentEnabled || CURRENT_SCOPE?.block.idState.renderOwner?.signalOwner !== void 0 || SIGNAL_EVENT_OWNERS?.get(d.el) !== CURRENT_SCOPE))
|
|
15229
|
+
setEventHandler(d.el);
|
|
15347
15230
|
}
|
|
15348
15231
|
function evt2(el, key, fn, a0, a1) {
|
|
15349
|
-
const d = { fn, args: 2, a0, a1, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15232
|
+
const d = { fn, args: 2, a0, a1, el, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15350
15233
|
setEventHandler(el, key, d);
|
|
15351
15234
|
return d;
|
|
15352
15235
|
}
|
|
@@ -15357,19 +15240,21 @@ function evt2u(d, fn, a0, a1) {
|
|
|
15357
15240
|
d.fn = fn;
|
|
15358
15241
|
d.a0 = a0;
|
|
15359
15242
|
d.a1 = a1;
|
|
15243
|
+
if ((SIGNAL_BINDINGS_ENABLED || import_document_owner.signalDocumentEnabled || import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || SIGNAL_EVENT_OWNERS !== null) && (import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || STAGED_COMMIT_CAPTURE !== null || import_document_owner.signalDocumentEnabled || CURRENT_SCOPE?.block.idState.renderOwner?.signalOwner !== void 0 || SIGNAL_EVENT_OWNERS?.get(d.el) !== CURRENT_SCOPE))
|
|
15244
|
+
setEventHandler(d.el);
|
|
15360
15245
|
}
|
|
15361
15246
|
function evt1e(el, key, fn, a0) {
|
|
15362
|
-
const d = { fn, args: -1, a0, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15247
|
+
const d = { fn, args: -1, a0, el, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15363
15248
|
setEventHandler(el, key, d);
|
|
15364
15249
|
return d;
|
|
15365
15250
|
}
|
|
15366
15251
|
function evt2e(el, key, fn, a0, a1) {
|
|
15367
|
-
const d = { fn, args: -2, a0, a1, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15252
|
+
const d = { fn, args: -2, a0, a1, el, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15368
15253
|
setEventHandler(el, key, d);
|
|
15369
15254
|
return d;
|
|
15370
15255
|
}
|
|
15371
15256
|
function evtN(el, key, fn, args) {
|
|
15372
|
-
const d = { fn, args, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15257
|
+
const d = { fn, args, el, [EVENT_SLOT_KIND]: HANDLER_BUNDLE_KIND };
|
|
15373
15258
|
setEventHandler(el, key, d);
|
|
15374
15259
|
return d;
|
|
15375
15260
|
}
|
|
@@ -15379,6 +15264,8 @@ function evtNu(d, fn, args) {
|
|
|
15379
15264
|
if (TRANSITION_JOURNAL !== null) journalObjectOnce(d);
|
|
15380
15265
|
d.fn = fn;
|
|
15381
15266
|
d.args = args;
|
|
15267
|
+
if ((SIGNAL_BINDINGS_ENABLED || import_document_owner.signalDocumentEnabled || import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || SIGNAL_EVENT_OWNERS !== null) && (import_owner_context.activeSynchronousSignalOwner !== null || import_owner_context.activeSignalOwnerEnvironment !== void 0 || STAGED_COMMIT_CAPTURE !== null || import_document_owner.signalDocumentEnabled || CURRENT_SCOPE?.block.idState.renderOwner?.signalOwner !== void 0 || SIGNAL_EVENT_OWNERS?.get(d.el) !== CURRENT_SCOPE))
|
|
15268
|
+
setEventHandler(d.el);
|
|
15382
15269
|
}
|
|
15383
15270
|
const EVENT_BUBBLE = 1;
|
|
15384
15271
|
const EVENT_CAPTURE = 2;
|
|
@@ -15763,6 +15650,7 @@ const CURRENT_TARGET_DESCRIPTOR = {
|
|
|
15763
15650
|
};
|
|
15764
15651
|
const CAPTURE_PATH = [];
|
|
15765
15652
|
const CAPTURE_SLOTS = [];
|
|
15653
|
+
let CAPTURE_OWNERS = null;
|
|
15766
15654
|
function snapshotDelegatedSlots(base, type, capture) {
|
|
15767
15655
|
const key = capture ? type.captureKey : type.bubbleKey;
|
|
15768
15656
|
const suppressDisabled = (type.flags & EVENT_DISABLED_MOUSE) !== 0 || !capture && (type.flags & EVENT_DISABLED_ENTER) !== 0;
|
|
@@ -15770,6 +15658,8 @@ function snapshotDelegatedSlots(base, type, capture) {
|
|
|
15770
15658
|
const node = CAPTURE_PATH[index];
|
|
15771
15659
|
const slot = node[key];
|
|
15772
15660
|
CAPTURE_SLOTS[index] = slot != null && suppressDisabled && node.disabled && (node.localName === "button" || node.localName === "input" || node.localName === "select" || node.localName === "textarea") ? null : slot;
|
|
15661
|
+
if (SIGNAL_EVENT_OWNERS !== null && CAPTURE_SLOTS[index] != null)
|
|
15662
|
+
(CAPTURE_OWNERS ??= [])[index] = SIGNAL_EVENT_OWNERS.get(node);
|
|
15773
15663
|
}
|
|
15774
15664
|
}
|
|
15775
15665
|
function preserveDispatchedBundle(bundle) {
|
|
@@ -15914,7 +15804,7 @@ function buildDelegatedPath(event, listener, path = event.composedPath()) {
|
|
|
15914
15804
|
rebaseRootAtStart = true;
|
|
15915
15805
|
}
|
|
15916
15806
|
}
|
|
15917
|
-
function fireEventSlot(slot, event,
|
|
15807
|
+
function fireEventSlot(slot, event, recorded) {
|
|
15918
15808
|
const previousScope = CURRENT_SCOPE;
|
|
15919
15809
|
const previousBlock = CURRENT_BLOCK;
|
|
15920
15810
|
CURRENT_SCOPE = null;
|
|
@@ -15959,7 +15849,6 @@ function fireEventSlot(slot, event, currentTarget) {
|
|
|
15959
15849
|
invokeInvalidEventListener(`${event.type} event`, slot, event);
|
|
15960
15850
|
};
|
|
15961
15851
|
try {
|
|
15962
|
-
const recorded = SIGNAL_EVENT_OWNERS?.get(currentTarget);
|
|
15963
15852
|
const owner = recorded instanceof ScopeImpl || recorded instanceof BlockImpl ? scopeSignalOwner(recorded) : recorded;
|
|
15964
15853
|
if (owner === void 0 || (0, import_owner_context.currentSignalOwner)() === owner) invoke();
|
|
15965
15854
|
else (0, import_owner_context.runWithSignalOwner)(owner, invoke);
|
|
@@ -16063,7 +15952,7 @@ function dispatchDelegated(event) {
|
|
|
16063
15952
|
const slot = CAPTURE_SLOTS[i];
|
|
16064
15953
|
if (slot != null && !(0, import_dom_binding_handoff.consumeBindingEvent)(event, current, false)) {
|
|
16065
15954
|
setCurrentTarget(event, current, frame);
|
|
16066
|
-
fireEventSlot(slot, event,
|
|
15955
|
+
fireEventSlot(slot, event, CAPTURE_OWNERS?.[i]);
|
|
16067
15956
|
if ((frame.flags & 1) !== 0) break;
|
|
16068
15957
|
}
|
|
16069
15958
|
if (targetOnly) break;
|
|
@@ -16074,6 +15963,7 @@ function dispatchDelegated(event) {
|
|
|
16074
15963
|
} finally {
|
|
16075
15964
|
CAPTURE_PATH.length = pathBase;
|
|
16076
15965
|
CAPTURE_SLOTS.length = pathBase;
|
|
15966
|
+
if (CAPTURE_OWNERS !== null) CAPTURE_OWNERS.length = pathBase;
|
|
16077
15967
|
if (propagationStarted) endDelegatedPropagation(event, stop, null);
|
|
16078
15968
|
if (submitRec !== null) {
|
|
16079
15969
|
ACTIVE_SUBMIT_DISPATCH = prevSubmitRec;
|
|
@@ -16110,7 +16000,7 @@ function dispatchDelegatedCapture(event, path, type = _delegated.get(event.type)
|
|
|
16110
16000
|
const slot = CAPTURE_SLOTS[i];
|
|
16111
16001
|
if (slot != null && !(0, import_dom_binding_handoff.consumeBindingEvent)(event, CAPTURE_PATH[i], true)) {
|
|
16112
16002
|
setCurrentTarget(event, CAPTURE_PATH[i], frame);
|
|
16113
|
-
fireEventSlot(slot, event,
|
|
16003
|
+
fireEventSlot(slot, event, CAPTURE_OWNERS?.[i]);
|
|
16114
16004
|
if ((frame.flags & 1) !== 0) break;
|
|
16115
16005
|
}
|
|
16116
16006
|
}
|
|
@@ -16118,6 +16008,7 @@ function dispatchDelegatedCapture(event, path, type = _delegated.get(event.type)
|
|
|
16118
16008
|
stopped = frame?.flags !== 0 || !wasCancelled && event.cancelBubble;
|
|
16119
16009
|
CAPTURE_PATH.length = pathBase;
|
|
16120
16010
|
CAPTURE_SLOTS.length = pathBase;
|
|
16011
|
+
if (CAPTURE_OWNERS !== null) CAPTURE_OWNERS.length = pathBase;
|
|
16121
16012
|
endDelegatedPropagation(event, stop, immediate);
|
|
16122
16013
|
clearCurrentTarget(event);
|
|
16123
16014
|
try {
|
|
@@ -27406,6 +27297,18 @@ function __createVoidRoot(container, options) {
|
|
|
27406
27297
|
return createRootWithOutputHandler(container, options, null);
|
|
27407
27298
|
}
|
|
27408
27299
|
function hydrateRoot(container, bodyOrElement, propsOrOptions, rootOptions) {
|
|
27300
|
+
return hydrateRootWithOutputHandler(
|
|
27301
|
+
container,
|
|
27302
|
+
bodyOrElement,
|
|
27303
|
+
propsOrOptions,
|
|
27304
|
+
rootOptions,
|
|
27305
|
+
renderReturnedValue
|
|
27306
|
+
);
|
|
27307
|
+
}
|
|
27308
|
+
function __hydrateVoidRoot(container, body, props, options) {
|
|
27309
|
+
return hydrateRootWithOutputHandler(container, body, props, options, null);
|
|
27310
|
+
}
|
|
27311
|
+
function hydrateRootWithOutputHandler(container, bodyOrElement, propsOrOptions, rootOptions, outputHandler) {
|
|
27409
27312
|
assertValidRootContainer(container);
|
|
27410
27313
|
let body;
|
|
27411
27314
|
let props;
|
|
@@ -27468,7 +27371,7 @@ function hydrateRoot(container, bodyOrElement, propsOrOptions, rootOptions) {
|
|
|
27468
27371
|
body,
|
|
27469
27372
|
props,
|
|
27470
27373
|
void 0,
|
|
27471
|
-
|
|
27374
|
+
outputHandler
|
|
27472
27375
|
);
|
|
27473
27376
|
if (typeof __OCTANE_PROFILE_ENABLED__ !== "undefined" && __OCTANE_PROFILE_ENABLED__)
|
|
27474
27377
|
(0, import_profiling.__profileTrackComponent)(rootBlock, body);
|
|
@@ -27507,7 +27410,7 @@ function hydrateRoot(container, bodyOrElement, propsOrOptions, rootOptions) {
|
|
|
27507
27410
|
body,
|
|
27508
27411
|
rootKey,
|
|
27509
27412
|
idState,
|
|
27510
|
-
|
|
27413
|
+
outputHandler,
|
|
27511
27414
|
ownerToken,
|
|
27512
27415
|
rootOptions?.signalOwner ?? (import_document_owner.signalDocumentEnabled ? (0, import_document_owner.documentSignalOwner)(container) : void 0),
|
|
27513
27416
|
rootOptions
|
|
@@ -27534,7 +27437,7 @@ function hydrateRoot(container, bodyOrElement, propsOrOptions, rootOptions) {
|
|
|
27534
27437
|
body,
|
|
27535
27438
|
props,
|
|
27536
27439
|
void 0,
|
|
27537
|
-
|
|
27440
|
+
outputHandler
|
|
27538
27441
|
);
|
|
27539
27442
|
rootBlock.idState = idState;
|
|
27540
27443
|
registerRootErrorHandlers(rootBlock, rootOptions);
|
|
@@ -28057,6 +27960,7 @@ function scriptResource(attrs) {
|
|
|
28057
27960
|
ViewTransition,
|
|
28058
27961
|
ViewTransitionPseudoElement,
|
|
28059
27962
|
__createVoidRoot,
|
|
27963
|
+
__hydrateVoidRoot,
|
|
28060
27964
|
__useLinkedStateWithGetter,
|
|
28061
27965
|
__useReducerWithGetter,
|
|
28062
27966
|
__useStateWithGetter,
|