§
    ‹hþhsˆ  ã                   ó¢   — d dl mZ d dlZd dlmZmZmZmZ d dl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Z G d	„ d
eej        ¦  «        ZdS )é    )ÚdeepcopyN)ÚListÚDictÚobserveÚInteger)Ú display_jupyter_version_warningsé   )Ú
BaseFigureÚBasePlotlyType)ÚBoxSelectorÚLassoSelectorÚInputDeviceStateÚPoints)Úcustom_serializersc                   ó  ‡ — e Zd ZdZ ej        e¦  «        j        dz  dz  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„ Z%d+d„Z&d,d„Z'd„ Z(d„ Z)	 d,d„Z*d„ Z+d„ Z, e-d¦  «        d„ ¦   «         Z. e-d¦  «        d„ ¦   «         Z/ e-d¦  «        d„ ¦   «         Z0 e-d¦  «        d„ ¦   «         Z1 e-d¦  «        d„ ¦   «         Z2 e-d¦  «        d„ ¦   «         Z3d „ Z4d-d!„Z5d"„ Z6d#„ Z7e8d$„ ¦   «         Z9e9j:        d%„ ¦   «         Z9e;d&„ ¦   «         Z<e;d.d(„¦   «         Z=e;d/d)„¦   «         Z>ˆ xZ?S )0ÚBaseFigureWidgetza
    Base class for FigureWidget. The FigureWidget class is code-generated as a
    subclass
    Úpackage_datazwidgetbundle.jsÚsyncT)Ú
allow_noner   )r   FNc                 óT  •—  t          t          | ¦  «        j        d||||dœ|¤Ž | j        rt                               ¦   «          d| _        d| _        g | _        d| _        d| _	        d| _
        t          | j        j        ¦  «        | _        t          | j        ¦  «        | _        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_countr   Ú_layout_objÚ_propsÚ_widget_layoutÚ_dataÚ_widget_data)Úselfr   Úlayoutr   r   ÚkwargsÚ	__class__s         €úH/var/www/histauto/venv/lib/python3.11/site-packages/plotly/basewidget.pyr   zBaseFigureWidget.__init__Z   sÒ   ø€ ð 	/�Õ Ñ%Ô%Ô.ð 	
ØØ ØØ%ð		
ð 	
ð
 ð	
ð 	
ð 	
ð Ôð 	5Ý×2Ò2Ñ4Ô4Ð4ð %&ˆÔ!ð
 (-ˆÔ$ð
 (*ˆÔ$ð $%ˆÔ ð
 ',ˆÔ#ð ˆÔõ ' tÔ'7Ô'>Ñ?Ô?ˆÔÝ$ T¤ZÑ0Ô0ˆÔÐÐó    c                 ó   — | S ©Nr   )r+   Úargsr-   s      r/   ÚshowzBaseFigureWidget.show•   s   € Øˆr0   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_datar8   r7   Úmsg_datas        r/   Ú_send_relayout_msgz#BaseFigureWidget._send_relayout_msgš   sP   € ð Ô2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 )Ø,Ø,ð
ð 
ˆð  (ˆÔØ#ˆÔÐÐr0   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_idr7   r8   N)Ú_normalize_trace_indexesr    r!   r#   r$   Ú_py2js_restyle)r+   r>   Útrace_indexesr8   r7   r@   Úrestyle_msgs          r/   Ú_send_restyle_msgz"BaseFigureWidget._send_restyle_msgº   sˆ   € ð& ×5Ò5°mÑDÔDˆð Ô2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$àÔ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#ð
 )Ø+Ø*Ø,Ø,ð
ð 
ˆð *ˆÔØ"ˆÔÐÐr0   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_datar@   r7   N)r    r!   r#   r$   Ú_py2js_addTraces)r+   Únew_traces_datar7   r@   Úadd_traces_msgs        r/   Ú_send_addTraces_msgz$BaseFigureWidget._send_addTraces_msgè   sm   € ð Ô2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$àÔ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#ð
 *Ø*Ø,ð
ð 
ˆð !/ˆÔØ $ˆÔÐÐr0   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ˆð "*ˆÔØ!%ˆÔÐÐr0   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_datar:   Ústyle_tracesr@   r7   r8   N)rA   r#   r$   r    r!   Ú_py2js_update)r+   r>   r6   rC   r8   r@   r7   Ú
update_msgs           r/   Ú_send_update_msgz!BaseFigureWidget._send_update_msg  s‹   € ð, ×5Ò5°mÑDÔDˆð Ô0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#àÔ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 'Ø(Ø)Ø*Ø,Ø,ð
ð 
ˆ
ð (ˆÔØ!ˆÔÐÐr0   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)rU   r:   rV   Úanimation_optsr@   r7   r8   )rA   r#   r$   r    r!   Ú_py2js_animate)r+   Ústyles_datar6   rC   r[   r@   r7   Úanimate_msgs           r/   Ú_send_animate_msgz"BaseFigureWidget._send_animate_msgP  sŽ   € ð* ×5Ò5°mÑDÔDˆð Ô0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#àÔ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 &Ø(Ø)Ø,Ø*Ø,Ø"ð
ð 
ˆð *ˆÔØ"ˆÔÐÐr0   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_indsr7   r@   N)r#   r$   r    r!   Ú_py2js_deleteTraces)r+   ra   r@   r7   Ú
delete_msgs        r/   Ú_send_deleteTraces_msgz'BaseFigureWidget._send_deleteTraces_msg‚  sm   € ð Ô0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#àÔ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 'Ø,Ø*ð
ð 
ˆ
ð $.ˆÔ Ø#'ˆÔ Ð Ð r0   Ú_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_deltasr@   Úuidc                 ó   — g | ]	}|j         ‘Œ
S r   )ri   )Ú.0Útraces     r/   ú
<listcomp>z?BaseFigureWidget._handler_js2py_traceDeltas.<locals>.<listcomp>¾  s   € Ð?Ð?Ð?¨E˜eœiÐ?Ð?Ð?r0   )Úremove_traceÚremove_propsF)re   r#   r   Úindexr   Ú_transform_dataÚ_prop_defaultsÚ_remove_overlapping_propsr'   Ú_py2js_removeTracePropsÚ _dispatch_trace_change_callbacksr$   r!   r"   Úpop)r+   Úchanger;   rh   r@   ÚdeltaÚ	trace_uidÚ
trace_uidsÚtrace_indexÚ	uid_traceÚdelta_transformro   Ú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ð #'ˆÔÐÐr0   Ú_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
        rg   NÚlayout_deltar7   ro   r   F)r€   r    r   rq   Ú_layout_defaultsrs   r(   Ú_py2js_removeLayoutPropsr,   Ú_subplot_re_matchÚ!_dispatch_layout_change_callbacksr!   r$   r"   rv   )r+   rw   r;   r‚   r7   r}   Úremoved_propsÚremove_props_msgÚproppathÚpropÚmatchs              r/   Ú_handler_js2py_layoutDeltaz+BaseFigureWidget._handler_js2py_layoutDeltaä  sm  € ð ˜%”=ˆØð 	Ø&*ˆDÔ#ØˆFà Ô/ˆØ!Ð"2Ô3ˆð ˜TÔ6Ò6Ð6å.×>Ò>ØÔ% |ñô ˆOð !×:Ò:ØÔ# TÔ%:ñô ˆ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ð #'ˆÔÐÐr0   Ú_js2py_restylec                 óš   — |d         }|s	d| _         dS |d         }|d         }|d         }|                      |||¬¦  «         d| _         dS )zB
        Process Plotly.restyle message from the frontend
        rg   NrU   rV   r8   )r>   rC   r8   )r�   Úplotly_restyle)r+   rw   rD   rU   rV   r8   s         r/   Ú_handler_js2py_restylez'BaseFigureWidget._handler_js2py_restyle#  sy   € ð ˜U”mˆàð 	Ø"&ˆDÔØˆFà  Ô.ˆ
Ø" >Ô2ˆØ$Ð%5Ô6ˆð 	×ÒØ#Ø&Ø)ð 	ñ 	
ô 	
ð 	
ð #ˆÔÐÐr0   Ú_js2py_updatec                 ó¬   — |d         }|s	d| _         dS |d         }|d         }|d         }|d         }|                      ||||¬¦  «         d| _         dS )zA
        Process Plotly.update message from the frontend
        rg   NrU   rV   r:   r8   )r>   r6   rC   r8   )r‘   Úplotly_update)r+   rw   rX   ÚstylerC   r,   r8   s          r/   Ú_handler_js2py_updatez&BaseFigureWidget._handler_js2py_update?  s†   € ð ˜E”]ˆ
àð 	Ø!%ˆDÔØˆFà˜<Ô(ˆØ" >Ô2ˆØ˜MÔ*ˆØ#Ð$4Ô5ˆð 	×ÒØØ Ø'Ø)ð	 	ñ 	
ô 	
ð 	
ð "ˆÔÐÐr0   Ú_js2py_relayoutc                 óº   — |d         }|s	d| _         dS |d         }|d         }d|v r|                     d¦  «         |                      ||¬¦  «         d| _         dS )zC
        Process Plotly.relayout message from the frontend
        rg   Nr6   r8   ÚlastInputTime)r6   r8   )r–   rv   Úplotly_relayout)r+   rw   Úrelayout_msgr6   r8   s        r/   Ú_handler_js2py_relayoutz(BaseFigureWidget._handler_js2py_relayout]  s�   € ð ˜e”}ˆàð 	Ø#'ˆDÔ ØˆFà$ _Ô5ˆØ%Ð&6Ô7ˆà˜mÐ+Ð+ð ×Ò˜oÑ.Ô.Ð.ð 	×Ò¨=ÈÐÑXÔXÐXà#ˆÔÐÐr0   Ú_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
        rg   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_namer{   )Ú
_data_objsÚname)rk   Ú	trace_indr+   s     €r/   ú
<dictcomp>zBBaseFigureWidget._handler_js2py_pointsCallback.<locals>.<dictcomp>¦  sN   ø€ ð 	
ð 	
ð 	
ð ð Ø ØØØ"œo¨iÔ8Ô=Ø(ðð ð	
ð 	
ð 	
r0   r¨   r©   Úpoint_indexesrC   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+   rw   Úcallback_datarž   Úselector_dataÚselector_typer¡   rŸ   Údevice_state_dataÚstateÚpoints_dataÚtrace_pointsÚxÚyÚ	point_indr­   Ú
trace_dictÚtrace_points_datar¥   rl   s   `                   r/   Ú_handler_js2py_pointsCallbackz.BaseFigureWidget._handler_js2py_pointsCallbackz  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øà%)ˆÔ"Ð"Ð"r0   c                 ó   — t           ‚)z/
        Customize html representation
        ©ÚNotImplementedError©r+   s    r/   Ú_repr_html_zBaseFigureWidget._repr_html_Ñ  ó
   € õ "Ð!r0   c                 ó¦   — t          ¦   «          t          | j        j        ¦  «        | _        t          | j        ¦  «        | _        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)r   r   r&   r'   r(   r)   r*   Ú	_model_id)r+   ÚincludeÚexcludeÚvalidater-   s        r/   Ú_repr_mimebundle_z"BaseFigureWidget._repr_mimebundle_×  s\   € õ 	)Ñ*Ô*Ð*õ
 ' tÔ'7Ô'>Ñ?Ô?ˆÔÝ$ T¤ZÑ0Ô0ˆÔà6Ø!"Ø!"Ø œNð9ð 9ð
ð 	
r0   c                 ó   — t           ‚)zD
        Handle rich display of figures in ipython contexts
        rÏ   rÑ   s    r/   Ú_ipython_display_z"BaseFigureWidget._ipython_display_ê  rÓ   r0   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ˆDr0   c                 ó   — | j         S r2   )r   rÑ   s    r/   r   zBaseFigureWidget.frames  s   € ð
 ÔÐr0   c                 ó@   — |rt                                ¦   «          d S d S r2   )r   r   )r+   Ú
new_framess     r/   r   zBaseFigureWidget.frames  s,   € àð 	5Ý×2Ò2Ñ4Ô4Ð4Ð4Ð4ð	5ð 	5r0   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Ðr0   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
        ri   )Ú
isinstanceÚdictr»   r
   Ú_is_dict_listr   rs   Úextendrv   rº   ÚlistÚ	enumerater¸   )
Ú
input_dataÚ
delta_dataÚ	prop_pathÚremovedÚpÚ	delta_valÚ	input_valÚrecur_prop_pathÚrecur_removedÚis
             r/   rs   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øàˆr0   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   rq   r   Ú_vals_equalÚsetÚkeysÚ
differencerv   rí   rî   r¸   rº   )rþ   rû   rü   rý   r6   Ú	from_propÚfrom_valrõ   Úrelayout_path_propÚremove_proprø   s              r/   rq   z BaseFigureWidget._transform_datas  s0  € ð& ˆõ �g�tÑ$Ô$ñ Q	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Ñ&:Ñ;øàÐr0   )NNNFr2   )NN)NNT)r   )Tr   )@Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpathlibÚPathÚ__file__ÚparentÚ_esmr   Útagr   r(   r   r*   Ú_configrH   rB   r9   rW   r\   rb   rO   r„   rt   re   r€   r�   r–   r‘   rœ   r   r    r#   Ú_set_trace_uidÚ_allow_disable_validationr   r4   r<   rE   rK   rS   rY   r_   rd   r   r   rŒ   r�   r•   r›   rÍ   rÒ   rÝ   rß   râ   Úpropertyr   ÚsetterÚstaticmethodr   rs   rq   Ú__classcell__)r.   s   @r/   r   r      s"  ø€ € € € € ðð ð
 ˆ7Œ<˜Ñ!Ô!Ô(¨>Ñ9Ð<MÑM€Dð  �T�T‘V”V”ZÐ@Ð@ TÐ@Ð-?Ð@Ð@€NØ�4�4‘6”6”:Ð>Ð> 4Ð>Ð+=Ð>Ð>€LØˆ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ð91ð 91ð 91ð 91ð 91ð 91ðvð ð ð
$ð $ð $ð $ð@,#ð ,#ð ,#ð ,#ð\%ð %ð %ðB&ð &ð &ð, OSð0"ð 0"ð 0"ð 0"ðd0#ð 0#ð 0#ðd(ð (ð (ðF €WÐ!Ñ"Ô"ð<'ð <'ñ #Ô"ð<'ð| €WÐ!Ñ"Ô"ð<'ð <'ñ #Ô"ð<'ð| €WÐÑÔð#ð #ñ Ôð#ð6 €Wˆ_ÑÔð"ð "ñ Ôð"ð: €WÐÑÔð$ð $ñ  Ôð$ð8 €WÐ$Ñ%Ô%ðR*ð R*ñ &Ô%ðR*ðl"ð "ð "ð
ð 
ð 
ð 
ð&"ð "ð "ðð ð ð* ð ð  ñ „Xð ð „]ð5ð 5ñ „]ð5ð ðð ñ „\ðð" ðKð Kð Kñ „\ðKðZ ðið ið iñ „\ðið ið ið ið ir0   r   )Úcopyr   r  Ú	traitletsr   r   r   r   Úplotly.io._renderersr   Úbasedatatypesr
   r   Ú	callbacksr   r   r   r   Úserializersr   Ú	anywidgetÚ	AnyWidgetr   r   r0   r/   ú<module>r"     só   ðØ Ð Ð Ð Ð Ð Ø €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø AÐ AÐ AÐ AÐ AÐ Aà 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð ðQð Qð Qð Qð Q�z 9Ô#6ñ Qô Qð Qð Qð Qr0   