(module command mzscheme
(require (lib "contract.ss")
(lib "cut.ss" "srfi" "26"))
(require (file "base.ss")
(file "core.ss"))
(define (open/wait url+generate)
(respond/stmt
(lambda (embed-url)
(js:stmt (ignore ((dot Delirium api openAndWait)
,(embed-url (lambda (request) request))
,(if (string? url+generate)
url+generate
(embed-url url+generate))))))))
(define (click/wait selector)
(respond/stmt
(lambda (embed-url)
(js:stmt (ignore ((dot Delirium api clickAndWait)
,(embed-url (lambda (request) request))
#,selector))))))
(define (click*/wait selector)
(respond/stmt
(lambda (embed-url)
(js:stmt (ignore ((dot Delirium api clickAllAndWait)
,(embed-url (lambda (request) request))
#,selector))))))
(define (click selector)
(respond/expr
(lambda (embed-url)
(js:expr ((dot Delirium api click) #,selector)))))
(define (click* selector)
(respond/expr
(lambda (embed-url)
(js:expr ((dot Delirium api clickAll) #,selector)))))
(define (select selector value)
(respond/expr
(lambda (embed-url)
(js:expr ((dot Delirium api select) #,selector ,value)))))
(define (select* selector value)
(respond/expr
(lambda (embed-url)
(js:expr ((dot Delirium api selectAll) #,selector ,value)))))
(define (type selector value)
(respond/expr
(lambda (embed-url)
(js:expr ((dot Delirium api type) #,selector ,value)))))
(define (type* selector value)
(respond/expr
(lambda (embed-url)
(js:expr ((dot Delirium api typeAll) #,selector ,value)))))
(provide/contract
[open/wait (-> (or/c (-> request? response?) string?) void?)]
[click/wait (-> javascript-expression? void?)]
[click*/wait (-> javascript-expression? void?)]
[click (-> javascript-expression? void?)]
[click* (-> javascript-expression? void?)]
[select (-> javascript-expression? (or/c string? symbol?) any)]
[select* (-> javascript-expression? (or/c string? symbol?) any)]
[type (-> javascript-expression? string? any)]
[type* (-> javascript-expression? string? any)])
)