Class: Dommy::ResizeObserver

Inherits:
Object
  • Object
show all
Includes:
Internal::ObservableCallback
Defined in:
lib/dommy/resize_observer.rb

Overview

‘ResizeObserver` — stub for the element-resize API. Same shape as IntersectionObserver: observe / unobserve / disconnect, plus `__trigger__` for tests to drive callbacks.

Spec: drafts.csswg.org/resize-observer/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(callback) ⇒ ResizeObserver

Returns a new instance of ResizeObserver.



14
15
16
17
# File 'lib/dommy/resize_observer.rb', line 14

def initialize(callback)
  @callback = callback
  @targets = []
end

Instance Attribute Details

#callbackObject (readonly)

Returns the value of attribute callback.



12
13
14
# File 'lib/dommy/resize_observer.rb', line 12

def callback
  @callback
end

Instance Method Details

#__js_call__(method, args) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/dommy/resize_observer.rb', line 42

def __js_call__(method, args)
  case method
  when "observe"
    observe(args[0], args[1])
  when "unobserve"
    unobserve(args[0])
  when "disconnect"
    disconnect
  end
end

#__trigger__(entries) ⇒ Object



38
39
40
# File 'lib/dommy/resize_observer.rb', line 38

def __trigger__(entries)
  invoke_callback(entries)
end

#disconnectObject



29
30
31
32
# File 'lib/dommy/resize_observer.rb', line 29

def disconnect
  @targets.clear
  nil
end

#observe(target, _options = nil) ⇒ Object



19
20
21
22
# File 'lib/dommy/resize_observer.rb', line 19

def observe(target, _options = nil)
  @targets << target unless @targets.include?(target)
  nil
end

#observed_targetsObject



34
35
36
# File 'lib/dommy/resize_observer.rb', line 34

def observed_targets
  @targets.dup
end

#unobserve(target) ⇒ Object



24
25
26
27
# File 'lib/dommy/resize_observer.rb', line 24

def unobserve(target)
  @targets.delete(target)
  nil
end