I like the addition of `viewer.useCanvas` so the app can control it. It implies, however, that you could have two viewers on the page, each with a different useCanvas setting, but this implementation does not support that. Maybe instead of a global USE_CANVAS, there should be a drawer.useCanvas that keeps track for each drawer.