code: def get_event_data_from_property_update(
      cls, property, selected_data, fig_dict
  ):
      traces = fig_dict.get("data", [])
  
      # build event data and compute which trace UIDs are eligible
      # Look up callback with UID
      # graph reference and update the streams
      point_inds = {}
      if selected_data:
          for point in selected_data["points"]:
              point_inds.setdefault(point["curveNumber"], [])
              point_inds[point["curveNumber"]].append(
                  point["pointNumber"]
              )
  
      event_data = {}
      for trace_ind, trace in enumerate(traces):
          trace_uid = trace.get("uid", None)
          new_index = point_inds.get(trace_ind, [])
          event_data[trace_uid] = dict(index=new_index)
  
      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 Selection1DCallback obj's underlying member method code with example usage: obj.get_event_data_from_property_update(cls, property, selected_data, fig_dict) and returns: event_data