(module slideshow "private/frtime/frtime.ss"
(require "slide.ss")
(require "private/slideshow-frlib.ss")
(define-syntax (make-reactive stx)
(syntax-case stx ()
[(src-make-reactive exp ...)
(with-syntax ([slide-time (datum->syntax-object #'src-make-reactive 'slide-time)]
[mouse-x (datum->syntax-object #'src-make-reactive 'mouse-x)]
[mouse-y (datum->syntax-object #'src-make-reactive 'mouse-y)]
[key-events (datum->syntax-object #'src-make-reactive 'key-events)])
#'(let ([slide-time (get-current-slide-time)]
[mouse-x (get-current-mouse-x)]
[mouse-y (get-current-mouse-y)]
[key-events (get-current-key-events)])
(parameterize ([current-slide/time slide-time]
[current-slide/mouse-x mouse-x]
[current-slide/mouse-y mouse-y]
[current-slide/key-events key-events])
exp ...)))]))
(provide make-reactive
(all-from "private/slideshow-frlib.ss")
(all-from "slide.ss")
(all-from-except "private/frtime/frtime.ss" seconds milliseconds)))