class_docstr: Base class for FigureWidget. The FigureWidget class is code-generated as a
  subclass
docstr: Process layout delta message from the frontend
docstr_tok: ["Process","layout","delta","message","from","the","frontend"]
code: def _handler_js2py_layoutDelta(self, change):
      """
      Process layout delta message from the frontend
      """
  
      # Receive message
      # ---------------
      msg_data = change["new"]
      if not msg_data:
          self._js2py_layoutDelta = None
          return
  
      layout_delta = msg_data["layout_delta"]
      layout_edit_id = msg_data["layout_edit_id"]
  
      # Apply delta
      # -----------
      # We only apply the delta if this message corresponds to the most
      # recent layout edit operation
      if layout_edit_id == self._last_layout_edit_id:
          # ### Transform defaults to delta ###
          delta_transform = BaseFigureWidget._transform_data(
              self._layout_defaults, layout_delta
          )
  
          # ### Remove overlapping properties ###
          # If a property is present in both _layout and _layout_defaults
          # then we remove the copy from _layout
          removed_props = self._remove_overlapping_props(
              self._layout, self._layout_defaults
          )
  
          # ### Notify frontend model of property removal ###
          if removed_props:
              remove_props_msg = {"remove_props": removed_props}
  
              self._py2js_removeLayoutProps = remove_props_msg
              self._py2js_removeLayoutProps = None
  
          # ### Create axis objects ###
          # For example, when a SPLOM trace is created the layout defaults
          # may include axes that weren't explicitly defined by the user.
          for proppath in delta_transform:
              prop = proppath[0]
              match = self.layout._subplot_re_match(prop)
              if match and prop not in self.layout:
                  # We need to create a subplotid object
                  self.layout[prop] = {}
  
          # ### Dispatch change callbacks ###
          self._dispatch_layout_change_callbacks(delta_transform)
  
          # ### Layout edits no longer in process ###
          self._layout_edit_in_process = False
  
          # ### Call any waiting layout edit callbacks ###
          if not self._trace_edit_in_process:
              while self._waiting_edit_callbacks:
                  self._waiting_edit_callbacks.pop()()
  
      self._js2py_layoutDelta = None
  
imports: import ipywidgets
  from traitlets import List, Unicode, Dict, observe, Integer
  from .basedatatypes import BaseFigure, BasePlotlyType
  from .callbacks import BoxSelector, LassoSelector, InputDeviceState, Points
  from .serializers import custom_serializers
  from .version import __frontend_version__
label_desc: Use image node_id 10 for calling the BaseFigureWidget obj's underlying member method code with example usage: obj._handler_js2py_layoutDelta(change) without return types