code: def get_event_data_from_property_update(
      cls, property, property_value, fig_dict
  ):
      traces = fig_dict.get("data", [])
  
      if property == "viewport":
          event_data = cls.build_event_data_from_viewport(
              traces, property_value
          )
      else:
          event_data = cls.build_event_data_from_relayout_data(
              traces, property_value
          )
  
      return event_data
  
imports: from weakref import WeakValueDictionary
  from ...element import Tiles
  from ...streams import BoundsX, BoundsXY, BoundsY, RangeX, RangeXY, RangeY, Selection1D, SelectionXY, Stream
  from .util import _trace_to_subplot
label_desc: Use image node_id 1 for calling the RangeCallback obj's underlying member method code with example usage: obj.get_event_data_from_property_update(cls, property, property_value, fig_dict) and returns: event_data