diff --git a/sx/sx/home-stepper.sx b/sx/sx/home-stepper.sx index b2002dc1..5350b287 100644 --- a/sx/sx/home-stepper.sx +++ b/sx/sx/home-stepper.sx @@ -5,8 +5,20 @@ ((source "(div (~tw :tokens \"text-center\")\n (h1 (~tw :tokens \"text-3xl font-bold mb-2\")\n (span (~tw :tokens \"text-rose-500\") \"the \")\n (span (~tw :tokens \"text-amber-500\") \"joy \")\n (span (~tw :tokens \"text-emerald-500\") \"of \")\n (span (~tw :tokens \"text-violet-600 text-4xl\") \"sx\")))") (steps (signal (list))) (store - (if (client?) (def-store "home-stepper" (fn () {:step-idx (signal 16)})) nil)) - (step-idx (if store (get store "step-idx") (signal 16))) + (if + (client?) + (def-store + "home-stepper" + (fn + () + (let + ((raw (host-get (host-global "document") "cookie")) + (prefix "sx-home-stepper=")) + (let + ((val (when (and (string? raw) (contains? raw prefix)) (let ((start (+ (index-of raw prefix) (len prefix)))) (let ((rest (slice raw start)) (end-pos (index-of (slice raw start) ";"))) (if (> end-pos -1) (slice rest 0 end-pos) rest)))))) + (let ((n (if val (parse-number val) 0))) {:step-idx (signal (if (and (number? n) (>= n 0) (<= n 16)) n 0))}))))) + nil)) + (step-idx (if store (get store "step-idx") (signal 0))) (dom-stack-sig (signal (list))) (code-tokens (signal (list)))) (letrec @@ -310,15 +322,7 @@ "sx-home-stepper=" target ";path=/;max-age=31536000;SameSite=Lax"))))))) - (let - ((saved (if (client?) (let ((raw (host-get (dom-document) "cookie")) (prefix "sx-home-stepper=")) (when (and (string? raw) (contains? raw prefix)) (let ((start (+ (index-of raw prefix) (len prefix)))) (let ((rest (slice raw start)) (end-pos (index-of rest ";"))) (if (> end-pos -1) (slice rest 0 end-pos) rest))))) (get-cookie "sx-home-stepper")))) - (when - (string? saved) - (let - ((n (parse-number saved))) - (when - (and (number? n) (>= n 0) (<= n 16)) - (reset! step-idx n))))) + nil (let ((parsed (sx-parse source))) (when