§
    ²[6gv‡  ã                   ó¬   — d dl Zd dlmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZmZmZ ddlmZ ddlmZ ej         G d„ d	e	ej        ¦  «        ¦   «         ZdS )
é    N)ÚListÚUnicodeÚDictÚobserveÚIntegeré   )Ú
BaseFigureÚBasePlotlyType)ÚBoxSelectorÚLassoSelectorÚInputDeviceStateÚPoints)Úcustom_serializers)Ú__frontend_version__c                   óN  ‡ — e Zd ZdZ ed¦  «                             d¬¦  «        Z ed¦  «                             d¬¦  «        Z ee¦  «                             d¬¦  «        Z	 ed¦  «                             d¬¦  «        Z
 ed¦  «                             d¬¦  «        Z ee¦  «                             d¬¦  «        Z  e¦   «         j        d'ddie¤ŽZ  e¦   «         j        d'ddie¤ŽZ  e¦   «         j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ  ed¬¦  «        j        d'ddie¤ŽZ   ed¬¦  «        j        d'ddie¤ŽZ! e"d	¦  «                             d¬¦  «        Z# e"d	¦  «                             d¬¦  «        Z$dZ%d
Z&	 d*ˆ fd„	Z'd+d„Z(d,d„Z)d„ Z*d„ Z+	 d,d„Z,d„ Z-d„ Z. e/d¦  «        d„ ¦   «         Z0 e/d¦  «        d„ ¦   «         Z1 e/d¦  «        d„ ¦   «         Z2 e/d¦  «        d„ ¦   «         Z3 e/d¦  «        d„ ¦   «         Z4 e/d¦  «        d„ ¦   «         Z5d „ Z6d-d!„Z7d"„ Z8d#„ Z9e:d$„ ¦   «         Z;e;j<        d%„ ¦   «         Z;e=d&„ ¦   «         Z>e=d.d(„¦   «         Z?e=d/d)„¦   «         Z@ˆ xZAS )0ÚBaseFigureWidgetza
    Base class for FigureWidget. The FigureWidget class is code-generated as a
    subclass
    Ú
FigureViewT)Úsynczjupyterlab-plotlyÚFigureModelr   )Ú
allow_noner   FNc                 óæ   •—  t          t          | ¦  «        j        d||||dœ|¤Ž | j        rt                               ¦   «          d| _        d| _        g | _        d| _        d| _	        d| _
        d S )N)ÚdataÚlayout_plotlyÚframesÚskip_invalidr   F© )Úsuperr   Ú__init__Ú_frame_objsÚ_display_frames_errorÚ_last_layout_edit_idÚ_layout_edit_in_processÚ_waiting_edit_callbacksÚ_last_trace_edit_idÚ_trace_edit_in_processÚ_view_count)Úselfr   Úlayoutr   r   ÚkwargsÚ	__class__s         €úP/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/plotly/basewidget.pyr   zBaseFigureWidget.__init__c   s¨   ø€ ð 	/�Õ Ñ%Ô%Ô.ð 	
ØØ ØØ%ð		
ð 	
ð
 ð	
ð 	
ð 	
ð Ôð 	5Ý×2Ò2Ñ4Ô4Ð4ð %&ˆÔ!ð
 (-ˆÔ$ð
 (*ˆÔ$ð $%ˆÔ ð
 ',ˆÔ#ð ˆÔÐÐó    c                 ó^   — | j         dz   }|| _         d| _        |||dœ}|| _        d| _        dS )aŠ  
        Send Plotly.relayout message to the frontend

        Parameters
        ----------
        layout_data : dict
            Plotly.relayout layout data
        source_view_id : str
            UID of view that triggered this relayout operation
            (e.g. By the user clicking 'zoom' in the toolbar). None if the
            operation was not triggered by a frontend view
        r   T)Úrelayout_dataÚlayout_edit_idÚsource_view_idN)r!   r"   Ú_py2js_relayout)r'   Úlayout_datar0   r/   Úmsg_datas        r+   Ú_send_relayout_msgz#BaseFigureWidget._send_relayout_msgœ   sP   € ð Ô2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 )Ø,Ø,ð
ð 
ˆð  (ˆÔØ#ˆÔÐÐr,   c                 ó¼   — |                       |¦  «        }| j        dz   }|| _        d| _        | j        dz   }|| _        d| _        |||||dœ}|| _        d| _        dS )a  
        Send Plotly.restyle message to the frontend

        Parameters
        ----------
        restyle_data : dict
            Plotly.restyle restyle data
        trace_indexes : list[int]
            List of trace indexes that the restyle operation
            applies to
        source_view_id : str
            UID of view that triggered this restyle operation
            (e.g. By the user clicking the legend to hide a trace).
            None if the operation was not triggered by a frontend view
        r   T)Úrestyle_dataÚrestyle_tracesÚtrace_edit_idr/   r0   N)Ú_normalize_trace_indexesr!   r"   r$   r%   Ú_py2js_restyle)r'   r6   Útrace_indexesr0   r/   r8   Úrestyle_msgs          r+   Ú_send_restyle_msgz"BaseFigureWidget._send_restyle_msg¼   sˆ   € ð& ×5Ò5°mÑDÔDˆð Ô2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$àÔ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#ð
 )Ø+Ø*Ø,Ø,ð
ð 
ˆð *ˆÔØ"ˆÔÐÐr,   c                 óŽ   — | j         dz   }|| _         d| _        | j        dz   }|| _        d| _        |||dœ}|| _        d| _        dS )zÙ
        Send Plotly.addTraces message to the frontend

        Parameters
        ----------
        new_traces_data : list[dict]
            List of trace data for new traces as accepted by Plotly.addTraces
        r   T)Ú
trace_datar8   r/   N)r!   r"   r$   r%   Ú_py2js_addTraces)r'   Únew_traces_datar/   r8   Úadd_traces_msgs        r+   Ú_send_addTraces_msgz$BaseFigureWidget._send_addTraces_msgê   sm   € ð Ô2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$àÔ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#ð
 *Ø*Ø,ð
ð 
ˆð !/ˆÔØ $ˆÔÐÐr,   c                 ó,   — ||dœ}|| _         d| _         dS )zõ
        Send Plotly.moveTraces message to the frontend

        Parameters
        ----------
        current_inds : list[int]
            List of current trace indexes
        new_inds : list[int]
            List of new trace indexes
        )Úcurrent_trace_indsÚnew_trace_indsN)Ú_py2js_moveTraces)r'   Úcurrent_indsÚnew_indsÚmove_msgs       r+   Ú_send_moveTraces_msgz%BaseFigureWidget._send_moveTraces_msg  s)   € ð +7È(ÐSÐSˆð "*ˆÔØ!%ˆÔÐÐr,   c                 ó¾   — |                       |¦  «        }| j        dz   }|| _        d| _        | j        dz   }|| _        d| _        ||||||dœ}|| _        d| _        dS )a'  
        Send Plotly.update message to the frontend

        Parameters
        ----------
        restyle_data : dict
            Plotly.update restyle data
        relayout_data : dict
            Plotly.update relayout data
        trace_indexes : list[int]
            List of trace indexes that the update operation applies to
        source_view_id : str
            UID of view that triggered this update operation
            (e.g. By the user clicking a button).
            None if the operation was not triggered by a frontend view
        r   T)Ú
style_datar2   Ústyle_tracesr8   r/   r0   N)r9   r$   r%   r!   r"   Ú_py2js_update)r'   r6   r.   r;   r0   r8   r/   Ú
update_msgs           r+   Ú_send_update_msgz!BaseFigureWidget._send_update_msg   s‹   € ð, ×5Ò5°mÑDÔDˆð Ô0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#àÔ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 'Ø(Ø)Ø*Ø,Ø,ð
ð 
ˆ
ð (ˆÔØ!ˆÔÐÐr,   c                 óÀ   — |                       |¦  «        }| j        dz   }|| _        d| _        | j        dz   }|| _        d| _        ||||||ddœ}|| _        d| _        dS )aß  
        Send Plotly.update message to the frontend

        Note: there is no source_view_id parameter because animations
        triggered by the fontend are not currently supported

        Parameters
        ----------
        styles_data : list[dict]
            Plotly.animate styles data
        relayout_data : dict
            Plotly.animate relayout data
        trace_indexes : list[int]
            List of trace indexes that the animate operation applies to
        r   TN)rM   r2   rN   Úanimation_optsr8   r/   r0   )r9   r$   r%   r!   r"   Ú_py2js_animate)r'   Ústyles_datar.   r;   rS   r8   r/   Úanimate_msgs           r+   Ú_send_animate_msgz"BaseFigureWidget._send_animate_msgR  sŽ   € ð* ×5Ò5°mÑDÔDˆð Ô0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#àÔ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 &Ø(Ø)Ø,Ø*Ø,Ø"ð
ð 
ˆð *ˆÔØ"ˆÔÐÐr,   c                 óŽ   — | j         dz   }|| _         d| _        | j        dz   }|| _        d| _        |||dœ}|| _        d| _        dS )z¿
        Send Plotly.deleteTraces message to the frontend

        Parameters
        ----------
        delete_inds : list[int]
            List of trace indexes of traces to delete
        r   T)Údelete_indsr/   r8   N)r$   r%   r!   r"   Ú_py2js_deleteTraces)r'   rY   r8   r/   Ú
delete_msgs        r+   Ú_send_deleteTraces_msgz'BaseFigureWidget._send_deleteTraces_msg„  sm   € ð Ô0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#àÔ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 'Ø,Ø*ð
ð 
ˆ
ð $.ˆÔ Ø#'ˆÔ Ð Ð r,   Ú_js2py_traceDeltasc                 óB  — |d         }|s	d| _         dS |d         }|d         }|| j        k    ré|D ]©}|d         }d„ | j        D ¦   «         }|                     |¦  «        }| j        |         }	t                               |	j        |¦  «        }
|                      |	j        |	j        ¦  «        }|r||dœ}|| _	        d| _	        |  
                    |
|g¦  «         Œªd| _        | j        s/| j        r( | j                             ¦   «         ¦   «          | j        °(d| _         dS )	z@
        Process trace deltas message from the frontend
        ÚnewNÚtrace_deltasr8   Úuidc                 ó   — g | ]	}|j         ‘Œ
S r   )ra   )Ú.0Útraces     r+   ú
<listcomp>z?BaseFigureWidget._handler_js2py_traceDeltas.<locals>.<listcomp>Â  s   € Ð?Ð?Ð?¨E˜eœiÐ?Ð?Ð?r,   )Úremove_traceÚremove_propsF)r]   r$   r   Úindexr   Ú_transform_dataÚ_prop_defaultsÚ_remove_overlapping_propsÚ_propsÚ_py2js_removeTracePropsÚ _dispatch_trace_change_callbacksr%   r"   r#   Úpop)r'   Úchanger3   r`   r8   ÚdeltaÚ	trace_uidÚ
trace_uidsÚtrace_indexÚ	uid_traceÚdelta_transformrg   Úremove_trace_props_msgs                r+   Ú_handler_js2py_traceDeltasz+BaseFigureWidget._handler_js2py_traceDeltas§  s‚  € ð ˜%”=ˆØð 	Ø&*ˆDÔ#ØˆFà Ô/ˆØ  Ô1ˆð ˜DÔ4Ò4Ð4ð &ð Vð V�ð " %œL�	Ø?Ð?°T´YÐ?Ñ?Ô?�
Ø(×.Ò.¨yÑ9Ô9�Ø œI kÔ2�	õ #3×"BÒ"BØÔ,¨eñ#ô #�ð  $×=Ò=ØÔ$ iÔ&>ñ ô  �ð
  ð 8à(3Ø(4ð.ð .Ð*ð 4J�DÔ0Ø37�DÔ0ð ×5Ò5°oÈÀ}ÑUÔUÐUÐUð +0ˆDÔ'ð Ô/ð 9ØÔ2ð 9Ø6�DÔ0×4Ò4Ñ6Ô6Ñ8Ô8Ð8ð Ô2ð 9ð #'ˆÔÐÐr,   Ú_js2py_layoutDeltac                 ó4  — |d         }|s	d| _         dS |d         }|d         }|| j        k    rât                               | j        |¦  «        }|                      | j        | j        ¦  «        }|rd|i}|| _        d| _        |D ]9}|d         }	| j         	                    |	¦  «        }
|
r|	| j        vr
i | j        |	<   Œ:|  
                    |¦  «         d| _        | j        s/| j        r( | j                             ¦   «         ¦   «          | j        °(d| _         dS )z@
        Process layout delta message from the frontend
        r_   NÚlayout_deltar/   rg   r   F)ry   r!   r   ri   Ú_layout_defaultsrk   Ú_layoutÚ_py2js_removeLayoutPropsr(   Ú_subplot_re_matchÚ!_dispatch_layout_change_callbacksr"   r%   r#   ro   )r'   rp   r3   r{   r/   rv   Úremoved_propsÚremove_props_msgÚproppathÚpropÚmatchs              r+   Ú_handler_js2py_layoutDeltaz+BaseFigureWidget._handler_js2py_layoutDeltaè  sn  € ð ˜%”=ˆØð 	Ø&*ˆDÔ#ØˆFà Ô/ˆØ!Ð"2Ô3ˆð ˜TÔ6Ò6Ð6õ /×>Ò>ØÔ% |ñô ˆOð !×:Ò:Ø”˜dÔ3ñô ˆMð
 ð 5Ø$2°MÐ#BÐ à0@�Ô-Ø04�Ô-ð
 ,ð +ð +�Ø ”{�Øœ×5Ò5°dÑ;Ô;�Øð +˜T¨¬Ð4Ð4à(*�D”K Ñ%øð ×2Ò2°?ÑCÔCÐCð ,1ˆDÔ(ð Ô.ð 9ØÔ2ð 9Ø6�DÔ0×4Ò4Ñ6Ô6Ñ8Ô8Ð8ð Ô2ð 9ð #'ˆÔÐÐr,   Ú_js2py_restylec                 óš   — |d         }|s	d| _         dS |d         }|d         }|d         }|                      |||¬¦  «         d| _         dS )zB
        Process Plotly.restyle message from the frontend
        r_   NrM   rN   r0   )r6   r;   r0   )r‡   Úplotly_restyle)r'   rp   r<   rM   rN   r0   s         r+   Ú_handler_js2py_restylez'BaseFigureWidget._handler_js2py_restyle(  sy   € ð ˜U”mˆàð 	Ø"&ˆDÔØˆFà  Ô.ˆ
Ø" >Ô2ˆØ$Ð%5Ô6ˆð 	×ÒØ#Ø&Ø)ð 	ñ 	
ô 	
ð 	
ð #ˆÔÐÐr,   Ú_js2py_updatec                 ó¬   — |d         }|s	d| _         dS |d         }|d         }|d         }|d         }|                      ||||¬¦  «         d| _         dS )zA
        Process Plotly.update message from the frontend
        r_   NrM   rN   r2   r0   )r6   r.   r;   r0   )r‹   Úplotly_update)r'   rp   rP   Ústyler;   r(   r0   s          r+   Ú_handler_js2py_updatez&BaseFigureWidget._handler_js2py_updateD  s†   € ð ˜E”]ˆ
àð 	Ø!%ˆDÔØˆFà˜<Ô(ˆØ" >Ô2ˆØ˜MÔ*ˆØ#Ð$4Ô5ˆð 	×ÒØØ Ø'Ø)ð	 	ñ 	
ô 	
ð 	
ð "ˆÔÐÐr,   Ú_js2py_relayoutc                 óº   — |d         }|s	d| _         dS |d         }|d         }d|v r|                     d¦  «         |                      ||¬¦  «         d| _         dS )zC
        Process Plotly.relayout message from the frontend
        r_   Nr.   r0   ÚlastInputTime)r.   r0   )r�   ro   Úplotly_relayout)r'   rp   Úrelayout_msgr.   r0   s        r+   Ú_handler_js2py_relayoutz(BaseFigureWidget._handler_js2py_relayoutb  s�   € ð ˜e”}ˆàð 	Ø#'ˆDÔ ØˆFà$ _Ô5ˆØ%Ð&6Ô7ˆà˜mÐ+Ð+ð ×Ò˜oÑ.Ô.Ð.ð 	×Ò¨=ÈÐÑXÔXÐXà#ˆÔÐÐr,   Ú_js2py_pointsCallbackc                 óz  ‡ — |d         }|s	d‰ _         dS |d         }|                     dd¦  «        rP|d         }|d         }|d         }|dk    rt          di |¤Ž}n'|dk    rt          di |¤Ž}nt	          d	|z  ¦  «        ‚d}|                     d
d¦  «        r|d
         }t          di |¤Ž}	nd}	|d         }
ˆ fd„t          t          ‰ j        ¦  «        ¦  «        D ¦   «         }t          |
d         |
d         |
d         |
d         ¦  «        D ]`\  }}}}||         }|d          
                    |¦  «         |d          
                    |¦  «         |d          
                    |¦  «         Œa|                     ¦   «         D ]­\  }}t          di |¤Ž}‰ j        |         }|dk    r|                     ||	¦  «         Œ;|dk    r|                     ||	¦  «         ŒX|dk    r|                     ||	¦  «         Œu|dk    r|                     ||¦  «         Œ’|dk    r|                     |¦  «         Œ®d‰ _         dS )zC
        Process points callback message from the frontend
        r_   NÚ
event_typeÚselectorÚtypeÚselector_stateÚboxÚlassozUnsupported selector type: %sÚdevice_stateÚpointsc           	      óB   •— i | ]}|g g g ‰j         |         j        |d œ“ŒS ))Ú
point_indsÚxsÚysÚ
trace_namert   )Ú
_data_objsÚname)rc   Ú	trace_indr'   s     €r+   ú
<dictcomp>zBBaseFigureWidget._handler_js2py_pointsCallback.<locals>.<dictcomp>«  sN   ø€ ð 	
ð 	
ð 	
ð ð Ø ØØØ"œo¨iÔ8Ô=Ø(ðð ð	
ð 	
ð 	
r,   r¢   r£   Úpoint_indexesr;   r¡   Úplotly_clickÚplotly_hoverÚplotly_unhoverÚplotly_selectedÚplotly_deselectr   )r–   Úgetr   r   Ú
ValueErrorr   ÚrangeÚlenr¥   ÚzipÚappendÚitemsr   r   Ú_dispatch_on_clickÚ_dispatch_on_hoverÚ_dispatch_on_unhoverÚ_dispatch_on_selectionÚ_dispatch_on_deselect)r'   rp   Úcallback_datar˜   Úselector_dataÚselector_typer›   r™   Údevice_state_dataÚstateÚpoints_dataÚtrace_pointsÚxÚyÚ	point_indr§   Ú
trace_dictÚtrace_points_datarŸ   rd   s   `                   r+   Ú_handler_js2py_pointsCallbackz.BaseFigureWidget._handler_js2py_pointsCallback  së  ø€ ð ˜uœˆàð 	Ø)-ˆDÔ&ØˆFð # <Ô0ˆ
ð ×Ò˜Z¨Ñ.Ô.ð 	Ø)¨*Ô5ˆMØ)¨&Ô1ˆMØ*Ð+;Ô<ˆNØ Ò%Ð%Ý&Ð8Ð8¨Ð8Ð8��Ø 'Ò)Ð)Ý(Ð:Ð:¨>Ð:Ð:��å Ð!@À=Ñ!PÑQÔQÐQàˆHð ×Ò˜^¨TÑ2Ô2ð 	Ø -¨nÔ =ÐÝ$Ð9Ð9Ð'8Ð9Ð9ˆEˆEàˆEð $ HÔ-ˆð	
ð 	
ð 	
ð 	
õ #¥3 t¤Ñ#7Ô#7Ñ8Ô8ð	
ñ 	
ô 	
ˆõ +.Ø˜ÔØ˜ÔØ˜Ô(Ø˜Ô(ñ	+
ô +
ð 
	7ð 
	7Ñ&ˆAˆq�)˜Yð & iÔ0ˆJØ�tÔ×#Ò# AÑ&Ô&Ð&Ø�tÔ×#Ò# AÑ&Ô&Ð&Ø�|Ô$×+Ò+¨IÑ6Ô6Ð6Ð6ð -9×,>Ò,>Ñ,@Ô,@ð 	4ð 	4Ñ(ˆIÐ(ÝÐ0Ð0Ð/Ð0Ð0ˆFØ”I˜iÔ(ˆEà˜^Ò+Ð+Ø×(Ò(¨°Ñ7Ô7Ð7Ð7Ø˜~Ò-Ð-Ø×(Ò(¨°Ñ7Ô7Ð7Ð7ØÐ/Ò/Ð/Ø×*Ò*¨6°5Ñ9Ô9Ð9Ð9ØÐ0Ò0Ð0Ø×,Ò,¨V°XÑ>Ô>Ð>Ð>ØÐ0Ò0Ð0Ø×+Ò+¨FÑ3Ô3Ð3øà%)ˆÔ"Ð"Ð"r,   c                 ó   — t           ‚)z/
        Customize html representation
        ©ÚNotImplementedError©r'   s    r+   Ú_repr_html_zBaseFigureWidget._repr_html_×  ó
   € õ "Ð!r,   c                 ó   — ddd| j         dœiS )zF
        Return mimebundle corresponding to default renderer.
        z(application/vnd.jupyter.widget-view+jsoné   r   )Úversion_majorÚversion_minorÚmodel_id)Ú	_model_id)r'   ÚincludeÚexcludeÚvalidater)   s        r+   Ú_repr_mimebundle_z"BaseFigureWidget._repr_mimebundle_Ý  s&   € ð
 7Ø!"Ø!"Ø œNð9ð 9ð
ð 	
r,   c                 ó   — t           ‚)zD
        Handle rich display of figures in ipython contexts
        rÉ   rË   s    r+   Ú_ipython_display_z"BaseFigureWidget._ipython_display_é  rÍ   r,   c                 ón   — | j         s| j        r| j                             |¦  «         dS  |¦   «          dS )a†  
        Register a function to be called after all pending trace and layout
        edit operations have completed

        If there are no pending edit operations then function is called
        immediately

        Parameters
        ----------
        fn : callable
            Function of zero arguments to be called when all pending edit
            operations have completed
        N)r"   r%   r#   r´   )r'   Úfns     r+   Úon_edits_completedz#BaseFigureWidget.on_edits_completedñ  sE   € ð Ô'ð 	¨4Ô+Fð 	ØÔ(×/Ò/°Ñ3Ô3Ð3Ð3Ð3àˆB‰DŒDˆDˆDˆDr,   c                 ó   — | j         S ©N)r   rË   s    r+   r   zBaseFigureWidget.frames  s   € ð
 ÔÐr,   c                 ó@   — |rt                                ¦   «          d S d S rÞ   )r   r    )r'   Ú
new_framess     r+   r   zBaseFigureWidget.frames  s,   € àð 	5Ý×2Ò2Ñ4Ô4Ð4Ð4Ð4ð	5ð 	5r,   c                  ó$   — d} t          | ¦  «        ‚)z®
        Display an informative error when user attempts to set frames on a
        FigureWidget

        Raises
        ------
        ValueError
            always
        z‡
Frames are not supported by the plotly.graph_objs.FigureWidget class.
Note: Frames are supported by the plotly.graph_objs.Figure class)r°   )Úmsgs    r+   r    z&BaseFigureWidget._display_frames_error  s   € ðDˆõ ˜‰oŒoÐr,   r   c                 ó¼  — g }t          | t          ¦  «        �rt          |t          ¦  «        sJ ‚|                     ¦   «         D ]Ö\  }}t          |t          ¦  «        st          j        |¦  «        rp|| v rk| |         }||fz   }t
                               |||¦  «        }|                     |¦  «         |s*|                      |¦  «         | 	                    |¦  «         Œž|| v r4|dk    r.|                      |¦  «         | 	                    ||fz   ¦  «         Œ×nÀt          | t          ¦  «        r«t          |t          ¦  «        sJ ‚t          |¦  «        D ]„\  }	}|	t          | ¦  «        k    r nk| |	         }|�t          |t          ¦  «        st          j        |¦  «        r7||	fz   }t
                               |||¦  «        }|                     |¦  «         Œ…|S )a§  
        Remove properties in input_data that are also in delta_data, and do so
        recursively.

        Exception: Never remove 'uid' from input_data, this property is used
        to align traces

        Parameters
        ----------
        input_data : dict|list
        delta_data : dict|list

        Returns
        -------
        list[tuple[str|int]]
            List of removed property path tuples
        ra   )Ú
isinstanceÚdictrµ   r	   Ú_is_dict_listr   rk   Úextendro   r´   ÚlistÚ	enumerater²   )
Ú
input_dataÚ
delta_dataÚ	prop_pathÚremovedÚpÚ	delta_valÚ	input_valÚrecur_prop_pathÚrecur_removedÚis
             r+   rk   z*BaseFigureWidget._remove_overlapping_props$  s  € ð0 ˆõ �j¥$Ñ'Ô'ñ /	2Ý˜j­$Ñ/Ô/Ð/Ð/Ð/à *× 0Ò 0Ñ 2Ô 2ð 5ð 5‘��9Ý˜i­Ñ.Ô.ð 5µ*Ô2JÈ9Ñ2UÔ2Uð 5Ø˜J��à$.¨q¤M˜	Ø*3°q°dÑ*:˜Ý(8×(RÒ(RØ% y°/ñ)ô )˜ð  Ÿš }Ñ5Ô5Ð5ð  )ð <Ø&ŸNšN¨1Ñ-Ô-Ð-Ø#ŸNšN¨?Ñ;Ô;Ð;øà˜*�_�_¨¨eª¨à—N’N 1Ñ%Ô%Ð%Ø—N’N 9°¨tÑ#3Ñ4Ô4Ð4øð)5õ0 ˜
¥DÑ)Ô)ð 	2Ý˜j­$Ñ/Ô/Ð/Ð/Ð/å )¨*Ñ 5Ô 5ð 2ð 2‘��9Ø�˜J™œÒ'Ð'Ø�Eà& qœM�	àÐ)Ý" 9­dÑ3Ô3ð *å!Ô/°	Ñ:Ô:ð *ð '0°1°$Ñ&6�OÝ$4×$NÒ$NØ! 9¨oñ%ô %�Mð —N’N =Ñ1Ô1Ð1øàˆr,   c           
      ób  — i }t          | t          ¦  «        �rxt          |t          ¦  «        s$t          d                     | |¬¦  «        ¦  «        ‚|                     ¦   «         D ]»\  }}t          |t          ¦  «        st          j        |¦  «        r^|| vrt          |t          ¦  «        ri ng | |<   | |         }|                     t           	                    |||||fz   ¬¦  «        ¦  «         ŒŒ|| vst          j        | |         |¦  «        s|| |<   ||fz   }|||<   Œ¼|rkt          |                      ¦   «         ¦  «                             t          |                     ¦   «         ¦  «        ¦  «        D ]}	|                      |	¦  «         Œ�nt          | t           ¦  «        �rt          |t           ¦  «        s$t          d                     | |¬¦  «        ¦  «        ‚t#          |¦  «        D ]¿\  }
}|
t%          | ¦  «        k    r|                      d¦  «         | |
         }|�_t          |t          ¦  «        st          j        |¦  «        r6|                     t           	                    |||||
fz   ¬¦  «        ¦  «         Œ–t          j        | |
         |¦  «        s|| |
<   ||||
fz   <   ŒÀ|S )aB  
        Transform to_data into from_data and return relayout-style
        description of the transformation

        Parameters
        ----------
        to_data : dict|list
        from_data : dict|list

        Returns
        -------
        dict
            relayout-style description of the transformation
        z,Mismatched data types: {to_dict} {from_data})Úto_dictÚ	from_data)Úshould_removeÚrelayout_pathz5Mismatched data types: to_data: {to_data} {from_data})Úto_datarö   N)rä   rå   r°   Úformatrµ   r	   ræ   Úupdater   ri   r
   Ú_vals_equalÚsetÚkeysÚ
differencero   rè   ré   r²   r´   )rù   rö   r÷   rø   r.   Ú	from_propÚfrom_valrð   Úrelayout_path_propÚremove_propró   s              r+   ri   z BaseFigureWidget._transform_datas  s:  € ð& ˆõ �g�tÑ$Ô$ñ X	Gõ ˜i­Ñ.Ô.ð Ý ØB×IÒIØ '°9ð Jñ ô ñô ð ð (1§¢Ñ'8Ô'8ð Eð EÑ#�	˜8õ ˜h­Ñ-Ô-ð EµÔ1IÈ(Ñ1SÔ1Sð Eð !¨Ð/Ð/Ý3=¸hÍÑ3MÔ3MÐ-U¨R¨RÐSU˜ 	Ñ*ð !(¨	Ô 2�IØ!×(Ò(Ý(×8Ò8Ø%Ø$Ø*7Ø*7¸9¸,Ñ*Fð	 9ñ ô ñô ð ð ð !¨Ð/Ð/µ~Ô7QØ 	Ô*¨Hñ8ô 8Ð/ð .6˜ 	Ñ*Ø-:¸i¸\Ñ-IÐ*Ø<D˜Ð&8Ñ9øð ð -Ý#& w§|¢|¡~¤~Ñ#6Ô#6×#AÒ#AÝ˜	ŸšÑ(Ô(Ñ)Ô)ñ$ô $ð -ð -�Kð —K’K Ñ,Ô,Ð,Ð,ùõ ˜¥Ñ&Ô&ñ %	Gõ ˜i­Ñ.Ô.ð Ý ØK×RÒRØ '°9ð Sñ ô ñô ð õ  )¨Ñ3Ô3ð Gð G‘��8ð �˜G™œÒ$Ð$Ø—N’N 4Ñ(Ô(Ð(Ø# AœJ�	ð Ð(Ý˜x­Ñ.Ô.ð )Ý2<Ô2JÈ8Ñ2TÔ2Tð )ð "×(Ò(Ý(×8Ò8Ø%Ø$Ø*7Ø*7¸1¸$Ñ*>ð	 9ñ ô ñô ð ð õ *Ô5°g¸a´jÀ(ÑKÔKð GØ%-˜ ™
Ø>F˜ m°q°dÑ&:Ñ;øàÐr,   )NNNFrÞ   )NN)NNT)r   )Tr   )BÚ__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtagÚ
_view_nameÚ_view_moduler   Ú_view_module_versionÚ_model_nameÚ_model_moduleÚ_model_module_versionr   r   r}   r   Ú_dataÚ_configr@   r:   r1   rO   rT   rZ   rG   r~   rm   r]   ry   r‡   r�   r‹   r–   r   r!   r$   Ú_set_trace_uidÚ_allow_disable_validationr   r4   r=   rC   rK   rQ   rW   r\   r   rx   r†   rŠ   r�   r•   rÇ   rÌ   r×   rÙ   rÜ   Úpropertyr   ÚsetterÚstaticmethodr    rk   ri   Ú__classcell__)r*   s   @r+   r   r   
   sº  ø€ € € € € ðð ð �˜Ñ&Ô&×*Ò*°Ð*Ñ5Ô5€JØ�7Ð.Ñ/Ô/×3Ò3¸Ð3Ñ>Ô>€LØ"˜7Ð#7Ñ8Ô8×<Ò<À$Ð<ÑGÔGÐà�'˜-Ñ(Ô(×,Ò,°$Ð,Ñ7Ô7€KØ�GÐ/Ñ0Ô0×4Ò4¸$Ð4Ñ?Ô?€MØ#˜GÐ$8Ñ9Ô9×=Ò=À4Ð=ÑHÔHÐð ˆdˆd‰fŒfŒjÐ9Ð9˜dÐ9Ð&8Ð9Ð9€GØˆDˆD‰FŒFŒJÐ7Ð7˜DÐ7Ð$6Ð7Ð7€EØˆdˆd‰fŒfŒjÐ9Ð9˜dÐ9Ð&8Ð9Ð9€Gð 1�t�t tÐ,Ñ,Ô,Ô0ÐQÐQ°dÐQÐ>PÐQÐQÐØ.�T�T TÐ*Ñ*Ô*Ô.ÐOÐO°DÐOÐ<NÐOÐO€NØ/�d�d dÐ+Ñ+Ô+Ô/ÐPÐP°TÐPÐ=OÐPÐP€OØ-�D�D DÐ)Ñ)Ô)Ô-ÐNÐN°4ÐNÐ;MÐNÐN€MØ.�T�T TÐ*Ñ*Ô*Ô.ÐOÐO°DÐOÐ<NÐOÐO€Nà3˜$˜$¨$Ð/Ñ/Ô/Ô3ÐTÐT¸ÐTÐASÐTÐTÐØ1˜˜¨Ð-Ñ-Ô-Ô1ÐRÐR°tÐRÐ?QÐRÐRÐà8˜t˜t¨tÐ4Ñ4Ô4Ô8ð  ð  Øð Ø'ð ð  Ðð 8˜d˜d¨dÐ3Ñ3Ô3Ô7ÐXÐX¸TÐXÐEWÐXÐXÐð 3˜˜¨Ð.Ñ.Ô.Ô2ÐSÐS¸ÐSÐ@RÐSÐSÐØ2˜˜¨Ð.Ñ.Ô.Ô2ÐSÐS¸ÐSÐ@RÐSÐSÐØ.�T�T TÐ*Ñ*Ô*Ô.ÐOÐO°DÐOÐ<NÐOÐO€NØ/�d�d dÐ+Ñ+Ô+Ô/ÐPÐP°TÐPÐ=OÐPÐP€OØ-�D�D DÐ)Ñ)Ô)Ô-ÐNÐN°4ÐNÐ;MÐNÐN€MØ5˜D˜D¨DÐ1Ñ1Ô1Ô5ÐVÐV¸4ÐVÐCUÐVÐVÐð #˜7 1™:œ:Ÿ>š>¨t˜>Ñ4Ô4ÐØ!˜' !™*œ*Ÿ.š.¨d˜.Ñ3Ô3Ðà€NØ %Ðð
 AFð5ð 5ð 5ð 5ð 5ð 5ðr$ð $ð $ð $ð@,#ð ,#ð ,#ð ,#ð\%ð %ð %ðB&ð &ð &ð, OSð0"ð 0"ð 0"ð 0"ðd0#ð 0#ð 0#ðd(ð (ð (ðF €WÐ!Ñ"Ô"ð>'ð >'ñ #Ô"ð>'ð@ €WÐ!Ñ"Ô"ð='ð ='ñ #Ô"ð='ð~ €WÐÑÔð#ð #ñ Ôð#ð6 €Wˆ_ÑÔð"ð "ñ Ôð"ð: €WÐÑÔð$ð $ñ  Ôð$ð8 €WÐ$Ñ%Ô%ðS*ð S*ñ &Ô%ðS*ðn"ð "ð "ð

ð 

ð 

ð 

ð"ð "ð "ðð ð ð* ð ð  ñ „Xð ð „]ð5ð 5ñ „]ð5ð ðð ñ „\ðð" ðLð Lð Lñ „\ðLð\ ðpð pð pñ „\ðpð pð pð pð pr,   r   )Ú
ipywidgetsÚwidgetsÚ	traitletsr   r   r   r   r   Úbasedatatypesr	   r
   Ú	callbacksr   r   r   r   Úserializersr   Úversionr   ÚregisterÚ	DOMWidgetr   r   r,   r+   ú<module>r      sî   ðØ Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ +Ð +Ð +Ð +Ð +Ð +Ø )Ð )Ð )Ð )Ð )Ð )ð 	ÔðYð Yð Yð Yð Y�z 7Ô#4ñ Yô Yñ ÔðYð Yð Yr,   