refine heart breath preparation and contraction
This commit is contained in:
+18
-11
@@ -13,8 +13,10 @@ const {
|
||||
const HEART_BREATH_INHALE_MS = 3_000;
|
||||
const HEART_BREATH_HOLD_MS = 2_000;
|
||||
const HEART_BREATH_EXHALE_MS = 4_000;
|
||||
const HEART_BREATH_PREPARE_MS = 1_000;
|
||||
const HEART_BREATH_CYCLE_MS = HEART_BREATH_INHALE_MS + HEART_BREATH_HOLD_MS + HEART_BREATH_EXHALE_MS;
|
||||
const HEART_BREATH_TOTAL_MS = HEART_BREATH_CYCLE_MS * 5;
|
||||
const HEART_BREATH_ACTIVE_MS = HEART_BREATH_CYCLE_MS * 5;
|
||||
const HEART_BREATH_TOTAL_MS = HEART_BREATH_PREPARE_MS + HEART_BREATH_ACTIVE_MS;
|
||||
|
||||
const state = {
|
||||
user: null,
|
||||
@@ -3831,23 +3833,28 @@ function updateBreathingDisplay() {
|
||||
? Math.max(0, state.heartBreathingEndsAt - Date.now())
|
||||
: Math.max(0, state.heartSeconds * 1000);
|
||||
const elapsedMs = HEART_BREATH_TOTAL_MS - remainingMs;
|
||||
const cycleElapsedMs = elapsedMs % HEART_BREATH_CYCLE_MS;
|
||||
const breathPhase = cycleElapsedMs < HEART_BREATH_INHALE_MS
|
||||
? "inhale"
|
||||
: cycleElapsedMs < HEART_BREATH_INHALE_MS + HEART_BREATH_HOLD_MS
|
||||
? "hold"
|
||||
: "exhale";
|
||||
const activeElapsedMs = Math.max(0, elapsedMs - HEART_BREATH_PREPARE_MS);
|
||||
const cycleElapsedMs = activeElapsedMs % HEART_BREATH_CYCLE_MS;
|
||||
const breathPhase = elapsedMs < HEART_BREATH_PREPARE_MS
|
||||
? "prepare"
|
||||
: cycleElapsedMs < HEART_BREATH_INHALE_MS
|
||||
? "inhale"
|
||||
: cycleElapsedMs < HEART_BREATH_INHALE_MS + HEART_BREATH_HOLD_MS
|
||||
? "hold"
|
||||
: "exhale";
|
||||
const phase = state.heartSeconds <= 0 ? "settled" : breathPhase;
|
||||
const scene = document.querySelector("#breathingScene");
|
||||
scene.dataset.phase = phase;
|
||||
setText("breathingPhase", phase === "settled" ? "已静" : phase === "inhale" ? "吸气" : phase === "hold" ? "停驻" : "呼气");
|
||||
setText("breathingPhase", phase === "settled" ? "静" : phase === "prepare" ? "静" : phase === "inhale" ? "吸" : phase === "hold" ? "顿" : "呼");
|
||||
const prompt = state.heartSeconds <= 0
|
||||
? "静心已成,可以起卦"
|
||||
: phase === "hold"
|
||||
: phase === "prepare"
|
||||
? "放松片刻,准备呼吸"
|
||||
: phase === "hold"
|
||||
? "停驻片刻,让念头自然沉下"
|
||||
: elapsedMs < 18_000
|
||||
: activeElapsedMs < 18_000
|
||||
? phase === "inhale" ? "缓慢吸气,放下对答案的预设" : "缓慢呼气,让预设随之松开"
|
||||
: elapsedMs < 36_000
|
||||
: activeElapsedMs < 36_000
|
||||
? phase === "inhale" ? "吸气,只留下真正想问的事" : "呼气,不急着寻找答案"
|
||||
: phase === "inhale" ? "吸气,让心停在此刻" : "呼气,不追逐经过的念头";
|
||||
setText("breathingPrompt", prompt);
|
||||
|
||||
Reference in New Issue
Block a user