I don't see where the JS is being loaded. You can enqueue the javascript assets from within the shortcode function though to make sure they are being loaded on any screen that the shortcode is used on, or include it in a tag