module Isomorfeus if RUBY_ENGINE == 'opal' class << self attr_accessor :on_browser attr_accessor :on_ssr attr_accessor :on_server attr_accessor :on_desktop attr_accessor :on_mobile attr_accessor :on_tablet attr_accessor :on_tv def on_browser? # true if running on browser @on_browser end def on_ssr? # true if running in server side rendering in restricted node js vm @on_ssr end def on_server? # true if running on server @on_server end def on_desktop? # true if running as desktop app @on_desktop end def on_mobile? # true if running on mobile @on_mobile end def on_tablet? # true if running on a tablet @on_tablet end def on_tv? # true if running on a tv @on_tv end end self.on_ssr = `(typeof process === 'object' && typeof process.release === 'object' && typeof process.release.name === 'string' && process.release.name === 'node') ? true : false` self.on_desktop = false self.on_tablet = false self.on_tv = false self.on_mobile = false self.on_server = false self.on_browser = !self.on_ssr? && !self.on_desktop? && !self.on_mobile? && !self.on_tv? else class << self def on_ssr?; false; end def on_desktop?; false; end def on_mobile?; false; end def on_tablet?; false; end def on_browser?; false; end def on_tv?; false; end def on_server?; true; end end end end