Sha256: a68c291f411b5b63e02e2bc44f4acef521b7a8bc5593344a4a8b3b38e4cf2222

Contents?: true

Size: 1.13 KB

Versions: 6

Compression:

Stored size: 1.13 KB

Contents

module Browser; class Window

class View
  def initialize(window)
    @window = window
    @native = window.to_n
  end

  if Browser.supports? 'Window.innerSize'
    def width
      `#@native.innerWidth`
    end

    def height
      `#@native.innerHeight`
    end
  elsif Browser.supports? 'Element.clientSize'
    def height
      `#@native.document.documentElement.clientHeight`
    end

    def width
      `#@native.document.documentElement.clientWidth`
    end
  else
    def width
      raise NotImplementedError, 'window size unsupported'
    end

    def height
      raise NotImplementedError, 'window size unsupported'
    end
  end

  # Get a device pixel ratio. Can be used to handle desktop browser
  # zoom, retina devices and custom screen scale for mobile devices.
  # Use $window.visual_viewport.scale to handle mobile zoom.
  def zoom
    `#@native.devicePixelRatio`
  end

  # Handle #pixel_ratio changes. This will trigger a block on zoom.
  def on_zoom &block
    %x{
      var mqString = "(resolution: " + #@native.devicePixelRatio + "dppx)";
      #@native.matchMedia(mqString).addListener(#{block.to_n});
    }
  end
end

end; end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
opal-browser-0.3.4 opal/browser/window/view.rb
atome-opal-browser-0.3.9.5 opal/browser/window/view.rb
opal-browser-0.3.3 opal/browser/window/view.rb
opal-browser-0.3.2 opal/browser/window/view.rb
opal-browser-0.3.1 opal/browser/window/view.rb
opal-browser-0.3.0 opal/browser/window/view.rb