Increase complexity of test demo
This commit is contained in:
@@ -21,16 +21,20 @@ From the workspace root:
|
||||
npm run dev:v2
|
||||
```
|
||||
|
||||
Open the printed URL to explore seven physical labs:
|
||||
Open the printed URL to explore nine physical labs:
|
||||
|
||||
- a four-view chain that can keep four nodes and three edges live at once;
|
||||
- one view with horizontal, vertical, and edge-only declarations;
|
||||
- programmatic gallery navigation followed by gesture-owned traversal;
|
||||
- a vertically presented media player with local interactive state;
|
||||
- a chat that intentionally declares no back gesture;
|
||||
- a predicate-gated downward gesture that drops a left-edge dialog.
|
||||
- a predicate-gated downward gesture that drops a left-edge dialog;
|
||||
- three nested scenes demonstrating cooperative carousels, vertical decks, and
|
||||
an intentional parent/child gesture conflict.
|
||||
an intentional parent/child gesture conflict; and
|
||||
- a checkout flow that replaces Payment Details with Confirmation and proves
|
||||
that back returns directly to the retained Hub instance; and
|
||||
- a connected two-thirds drawer that keeps the translated source page visible
|
||||
in the exposed final third.
|
||||
|
||||
The expandable inspector reports mounted Vue instances, active operation
|
||||
edges, animation progress, and recent lifecycle events. In the chain lab,
|
||||
@@ -156,6 +160,46 @@ The application chooses whether this is exposed as a left-edge gesture,
|
||||
toolbar button, keyboard shortcut, Android hardware-back action, or not exposed
|
||||
at all.
|
||||
|
||||
## Replacing the current entry
|
||||
|
||||
Use `replace()` for completed one-way flows such as Payment Details →
|
||||
Confirmation:
|
||||
|
||||
```ts
|
||||
import {
|
||||
originView,
|
||||
replace,
|
||||
slideLeft,
|
||||
useOrigin,
|
||||
} from "@native-vue-router/core-v2";
|
||||
import OrderConfirmationView from "./OrderConfirmationView.vue";
|
||||
|
||||
const origin = useOrigin();
|
||||
|
||||
function confirmOrder() {
|
||||
return origin.perform(
|
||||
replace(
|
||||
originView(OrderConfirmationView, { orderId: "NVO-2048" }),
|
||||
slideLeft,
|
||||
),
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
The replacement inherits the current entry's mounted predecessor. It does not
|
||||
retain the entry being replaced, so back from Confirmation skips Payment
|
||||
Details. The mutation is atomic: a cancelled interactive replacement removes
|
||||
the proposed Confirmation and restores Payment Details unchanged.
|
||||
|
||||
Inside a gesture builder, omit choreography from the intent:
|
||||
|
||||
```ts
|
||||
gesture.to
|
||||
.left()
|
||||
.navigate(() => replace(originView(OrderConfirmationView)))
|
||||
.animate(slideLeft);
|
||||
```
|
||||
|
||||
## Custom choreography
|
||||
|
||||
A choreography returns independent effects for its source, target, and their
|
||||
@@ -195,6 +239,23 @@ Y transform = (X→Y target) × (Y→Z source)
|
||||
Z transform = (X→Y target) × (Y→Z target)
|
||||
```
|
||||
|
||||
For partial presentations that must keep both views visible after commit, set
|
||||
`persistAtRest: true` on the opening choreography:
|
||||
|
||||
```ts
|
||||
const openDrawer = defineOriginChoreography({
|
||||
persistAtRest: true,
|
||||
effects: ({ progress }) => ({
|
||||
source: { transform: `translateX(${progress * 66.6667}%)` },
|
||||
target: { transform: `translateX(${(progress - 1) * 66.6667}%)` },
|
||||
}),
|
||||
});
|
||||
```
|
||||
|
||||
The retained source becomes visible-but-inert rather than parked. A reciprocal
|
||||
back choreography closes the target; a cancelled close restores the connected
|
||||
resting effects and both original Vue instances.
|
||||
|
||||
## Why scene nodes are flat
|
||||
|
||||
The operation graph is not represented as Vue component ancestry. Every
|
||||
|
||||
Reference in New Issue
Block a user