Ë
    {�hp‡  ã                   ó¤   — 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y)é    )Ú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«      j                  d¬«      Z  ed«      j                  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#„ «       Z9e9jt                  d$„ «       Z9e;d%„ «       Z<e;d-d'„«       Z=e;d.d(„«       Z>ˆ xZ?S )/ÚBaseFigureWidgetza
    Base class for FigureWidget. The FigureWidget class is code-generated as a
    subclass
    Úpackage_datazwidgetbundle.jsÚsyncT)Ú
allow_noner   )r   Fc                 óÊ   •— t        t        | �
  d||||dœ|¤Ž | j                  rt        j	                  «        d| _        d| _        g | _        d| _        d| _	        d| _
        y )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         €úO/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/plotly/basewidget.pyr   zBaseFigureWidget.__init__Z   sƒ   ø€ ô 	Ô Ñ.ð 	
ØØ ØØ%ñ		
ð
 ò	
ð ×ÒÜ×2Ñ2Ô4ð %&ˆÔ!ð
 (-ˆÔ$ð
 (*ˆÔ$ð $%ˆÔ ð
 ',ˆÔ#ð ˆÕó    c                 ó   — | S ©Nr   )r&   Úargsr(   s      r*   ÚshowzBaseFigureWidget.show‘   s   € Øˆr+   c                 óf   — | j                   dz   }|| _         d| _        |||dœ}|| _        d| _        y)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_datar3   r2   Úmsg_datas        r*   Ú_send_relayout_msgz#BaseFigureWidget._send_relayout_msg–   sH   € ð ×2Ñ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 )Ø,Ø,ñ
ˆð  (ˆÔØ#ˆÕr+   c                 óÆ   — | j                  |«      }| j                  dz   }|| _        d| _        | j                  dz   }|| _        d| _        |||||dœ}|| _        d| _        y)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_idr2   r3   N)Ú_normalize_trace_indexesr    r!   r#   r$   Ú_py2js_restyle)r&   r9   Útrace_indexesr3   r2   r;   Úrestyle_msgs          r*   Ú_send_restyle_msgz"BaseFigureWidget._send_restyle_msg¶   s€   € ð& ×5Ñ5°mÓDˆð ×2Ñ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$à×0Ñ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#ð
 )Ø+Ø*Ø,Ø,ñ
ˆð *ˆÔØ"ˆÕr+   c                 ó    — | j                   dz   }|| _         d| _        | j                  dz   }|| _        d| _        |||dœ}|| _        d| _        y)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;   r2   N)r    r!   r#   r$   Ú_py2js_addTraces)r&   Únew_traces_datar2   r;   Úadd_traces_msgs        r*   Ú_send_addTraces_msgz$BaseFigureWidget._send_addTraces_msgä   sh   € ð ×2Ñ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$à×0Ñ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#ð
 *Ø*Ø,ñ
ˆð !/ˆÔØ $ˆÕr+   c                 ó*   — ||dœ}|| _         d| _         y)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ˆð "*ˆÔØ!%ˆÕr+   c                 óÈ   — | j                  |«      }| j                  dz   }|| _        d| _        | j                  dz   }|| _        d| _        ||||||dœ}|| _        d| _        y)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_datar5   Ústyle_tracesr;   r2   r3   N)r<   r#   r$   r    r!   Ú_py2js_update)r&   r9   r1   r>   r3   r;   r2   Ú
update_msgs           r*   Ú_send_update_msgz!BaseFigureWidget._send_update_msg  sƒ   € ð, ×5Ñ5°mÓDˆð ×0Ñ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#à×2Ñ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 'Ø(Ø)Ø*Ø,Ø,ñ
ˆ
ð (ˆÔØ!ˆÕr+   c                 óÊ   — | j                  |«      }| j                  dz   }|| _        d| _        | j                  dz   }|| _        d| _        ||||||ddœ}|| _        d| _        y)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)rP   r5   rQ   Úanimation_optsr;   r2   r3   )r<   r#   r$   r    r!   Ú_py2js_animate)r&   Ústyles_datar1   r>   rV   r;   r2   Úanimate_msgs           r*   Ú_send_animate_msgz"BaseFigureWidget._send_animate_msgL  s†   € ð* ×5Ñ5°mÓDˆð ×0Ñ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#à×2Ñ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 &Ø(Ø)Ø,Ø*Ø,Ø"ñ
ˆð *ˆÔØ"ˆÕr+   c                 ó    — | j                   dz   }|| _         d| _        | j                  dz   }|| _        d| _        |||dœ}|| _        d| _        y)z¿
        Send Plotly.deleteTraces message to the frontend

        Parameters
        ----------
        delete_inds : list[int]
            List of trace indexes of traces to delete
        r	   T)Údelete_indsr2   r;   N)r#   r$   r    r!   Ú_py2js_deleteTraces)r&   r\   r;   r2   Ú
delete_msgs        r*   Ú_send_deleteTraces_msgz'BaseFigureWidget._send_deleteTraces_msg~  sh   € ð ×0Ñ0°1Ñ4ˆØ#0ˆÔ Ø&*ˆÔ#à×2Ñ2°QÑ6ˆØ$2ˆÔ!Ø'+ˆÔ$ð
 'Ø,Ø*ñ
ˆ
ð $.ˆÔ Ø#'ˆÕ r+   Ú_js2py_traceDeltasc                 ó~  — |d   }|sd| _         y|d   }|d   }|| j                  k(  �r|D ]¸  }|d   }| j                  D �cg c]  }|j                  ‘Œ }}|j	                  |«      }	| j                  |	   }
t
        j                  |
j                  |«      }| j                  |
j                  |
j                  «      }|r|	|dœ}|| _
        d| _
        | j                  ||	g«       Œº d| _        | j                  s8| j                  r, | j                  j                  «       «        | j                  rŒ,d| _         yc c}w )z@
        Process trace deltas message from the frontend
        ÚnewNÚtrace_deltasr;   Úuid)Úremove_traceÚremove_propsF)r`   r#   r   rd   Úindexr   Ú_transform_dataÚ_prop_defaultsÚ_remove_overlapping_propsÚ_propsÚ_py2js_removeTracePropsÚ _dispatch_trace_change_callbacksr$   r!   r"   Úpop)r&   Úchanger6   rc   r;   ÚdeltaÚ	trace_uidÚtraceÚ
trace_uidsÚtrace_indexÚ	uid_traceÚdelta_transformrf   Úremove_trace_props_msgs                 r*   Ú_handler_js2py_traceDeltasz+BaseFigureWidget._handler_js2py_traceDeltas¡  sb  € ð ˜%‘=ˆÙØ&*ˆDÔ#Øà Ñ/ˆØ  Ñ1ˆð ˜D×4Ñ4Ó4ð &ò V�ð " %™L�	Ø59·Y±YÖ?¨E˜eŸi›iÐ?�
Ð?Ø(×.Ñ.¨yÓ9�Ø ŸI™I kÑ2�	ô #3×"BÑ"BØ×,Ñ,¨eó#�ð  $×=Ñ=Ø×$Ñ$ i×&>Ñ&>ó �ñ
  à(3Ø(4ñ.Ð*ð 4J�DÔ0Ø37�DÔ0ð ×5Ñ5°oÈÀ}ÕUð=VðB +0ˆDÔ'ð ×/Ò/Ø×2Ò2Ø6�D×0Ñ0×4Ñ4Ó6Ô8ð ×2Ó2ð #'ˆÕùòI @s   ÁD:Ú_js2py_layoutDeltac                 ó^  — |d   }|sd| _         y|d   }|d   }|| j                  k(  rþt        j                  | j                  |«      }| j                  | j                  | j                  «      }|rd|i}|| _        d| _        |D ]C  }|d   }	| j                  j                  |	«      }
|
sŒ&|	| j                  vsŒ5i | j                  |	<   ŒE | j                  |«       d| _        | j                  s8| j                  r, | j                  j                  «       «        | j                  rŒ,d| _         y)z@
        Process layout delta message from the frontend
        rb   NÚlayout_deltar2   rf   r   F)ry   r    r   rh   Ú_layout_defaultsrj   Ú_widget_layoutÚ_py2js_removeLayoutPropsr'   Ú_subplot_re_matchÚ!_dispatch_layout_change_callbacksr!   r$   r"   rn   )r&   ro   r6   r{   r2   rv   Úremoved_propsÚremove_props_msgÚproppathÚpropÚmatchs              r*   Ú_handler_js2py_layoutDeltaz+BaseFigureWidget._handler_js2py_layoutDeltaâ  sD  € ð ˜%‘=ˆÙØ&*ˆDÔ#Øà Ñ/ˆØ!Ð"2Ñ3ˆð ˜T×6Ñ6Ò6ô /×>Ñ>Ø×%Ñ% |óˆOð !×:Ñ:Ø×#Ñ# T×%:Ñ%:óˆMñ
 Ø$2°MÐ#BÐ à0@�Ô-Ø04�Ô-ð
 ,ò +�Ø ‘{�ØŸ™×5Ñ5°dÓ;�Ú˜T¨¯©Ò4à(*�D—K‘K Ò%ð+ð ×2Ñ2°?ÔCð ,1ˆDÔ(ð ×.Ò.Ø×2Ò2Ø6�D×0Ñ0×4Ñ4Ó6Ô8ð ×2Ó2ð #'ˆÕr+   Ú_js2py_restylec                 óv   — |d   }|sd| _         y|d   }|d   }|d   }| j                  |||¬«       d| _         y)zB
        Process Plotly.restyle message from the frontend
        rb   NrP   rQ   r3   )r9   r>   r3   )r‡   Úplotly_restyle)r&   ro   r?   rP   rQ   r3   s         r*   Ú_handler_js2py_restylez'BaseFigureWidget._handler_js2py_restyle"  sb   € ð ˜U‘mˆáØ"&ˆDÔØà  Ñ.ˆ
Ø" >Ñ2ˆØ$Ð%5Ñ6ˆð 	×ÑØ#Ø&Ø)ð 	ô 	
ð #ˆÕr+   Ú_js2py_updatec                 ó‚   — |d   }|sd| _         y|d   }|d   }|d   }|d   }| j                  ||||¬«       d| _         y)zA
        Process Plotly.update message from the frontend
        rb   NrP   rQ   r5   r3   )r9   r1   r>   r3   )r‹   Úplotly_update)r&   ro   rS   Ústyler>   r'   r3   s          r*   Ú_handler_js2py_updatez&BaseFigureWidget._handler_js2py_update>  so   € ð ˜E‘]ˆ
áØ!%ˆDÔØà˜<Ñ(ˆØ" >Ñ2ˆØ˜MÑ*ˆØ#Ð$4Ñ5ˆð 	×ÑØØ Ø'Ø)ð	 	ô 	
ð "ˆÕr+   Ú_js2py_relayoutc                 ó”   — |d   }|sd| _         y|d   }|d   }d|v r|j                  d«       | j                  ||¬«       d| _         y)zC
        Process Plotly.relayout message from the frontend
        rb   Nr1   r3   ÚlastInputTime)r1   r3   )r�   rn   Úplotly_relayout)r&   ro   Úrelayout_msgr1   r3   s        r*   Ú_handler_js2py_relayoutz(BaseFigureWidget._handler_js2py_relayout\  se   € ð ˜e‘}ˆáØ#'ˆDÔ Øà$ _Ñ5ˆØ%Ð&6Ñ7ˆà˜mÑ+ð ×Ñ˜oÔ.ð 	×Ñ¨=ÈÐÔXà#ˆÕr+   Ú_js2py_pointsCallbackc           
      óì  — |d   }|sd| _         y|d   }|j                  dd«      r?|d   }|d   }|d   }|dk(  rt        di |¤Ž}n!|dk(  rt        di |¤Ž}nt	        d	|z  «      ‚d}|j                  d
d«      r|d
   }t        di |¤Ž}	nd}	|d   }
t        t        | j                  «      «      D �ci c]"  }|g g g | j                  |   j                  |dœ“Œ$ }}t        |
d   |
d   |
d   |
d   «      D ]H  \  }}}}||   }|d   j                  |«       |d   j                  |«       |d   j                  |«       ŒJ |j                  «       D ]–  \  }}t        di |¤Ž}| j                  |   }|dk(  r|j                  ||	«       Œ8|dk(  r|j!                  ||	«       ŒP|dk(  r|j#                  ||	«       Œh|dk(  r|j%                  ||«       Œ€|dk(  sŒ†|j'                  |«       Œ˜ d| _         yc c}w )zC
        Process points callback message from the frontend
        rb   NÚ
event_typeÚselectorÚtypeÚselector_stateÚboxÚlassozUnsupported selector type: %sÚdevice_stateÚpoints)Ú
point_indsÚxsÚysÚ
trace_namert   r¡   r¢   Úpoint_indexesr>   r    Úplotly_clickÚplotly_hoverÚplotly_unhoverÚplotly_selectedÚplotly_deselectr   )r–   Úgetr   r   Ú
ValueErrorr   ÚrangeÚlenÚ
_data_objsÚnameÚzipÚappendÚitemsr   r   Ú_dispatch_on_clickÚ_dispatch_on_hoverÚ_dispatch_on_unhoverÚ_dispatch_on_selectionÚ_dispatch_on_deselect)r&   ro   Úcallback_datar˜   Úselector_dataÚselector_typer›   r™   Údevice_state_dataÚstateÚpoints_dataÚ	trace_indÚtrace_pointsÚxÚyÚ	point_indÚ
trace_dictÚtrace_points_datarŸ   rr   s                       r*   Ú_handler_js2py_pointsCallbackz.BaseFigureWidget._handler_js2py_pointsCallbacky  st  € ð ˜u™ˆáØ)-ˆDÔ&Øð # <Ñ0ˆ
ð ×Ñ˜Z¨Ô.Ø)¨*Ñ5ˆMØ)¨&Ñ1ˆMØ*Ð+;Ñ<ˆNØ Ò%Ü&Ñ8¨Ñ8‘Ø 'Ò)Ü(Ñ:¨>Ñ:‘ä Ð!@À=Ñ!PÓQÐQàˆHð ×Ñ˜^¨TÔ2Ø -¨nÑ =ÐÜ$Ñ9Ð'8Ñ9‰EàˆEð $ HÑ-ˆô #¤3 t§¡Ó#7Ó8ö	
ð ð Ø ØØØ"Ÿo™o¨iÑ8×=Ñ=Ø(ññ ð	
ˆð 	
ô +.Ø˜ÑØ˜ÑØ˜Ñ(Ø˜Ñ(ó	+
ò 
	7Ñ&ˆAˆq�)˜Yð & iÑ0ˆJØ�tÑ×#Ñ# AÔ&Ø�tÑ×#Ñ# AÔ&Ø�|Ñ$×+Ñ+¨IÕ6ð
	7ð -9×,>Ñ,>Ó,@ò 	4Ñ(ˆIÐ(ÜÑ0Ð/Ñ0ˆFØ—I‘I˜iÑ(ˆEà˜^Ò+Ø×(Ñ(¨°Õ7Ø˜~Ò-Ø×(Ñ(¨°Õ7ØÐ/Ò/Ø×*Ñ*¨6°5Õ9ØÐ0Ò0Ø×,Ñ,¨V°XÕ>ØÐ0Ó0Ø×+Ñ+¨FÕ3ð	4ð &*ˆÕ"ùòQ	
s   Â2'G1c                 ó   — t         ‚)z/
        Customize html representation
        ©ÚNotImplementedError©r&   s    r*   Ú_repr_html_zBaseFigureWidget._repr_html_Ñ  ó
   € ô "Ð!r+   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   Ú_layout_objrk   r}   Ú_dataÚ_widget_dataÚ	_model_id)r&   ÚincludeÚexcludeÚvalidater(   s        r*   Ú_repr_mimebundle_z"BaseFigureWidget._repr_mimebundle_×  sU   € ô 	)Ô*ô
 ' t×'7Ñ'7×'>Ñ'>Ó?ˆÔÜ$ T§Z¡ZÓ0ˆÔà6Ø!"Ø!"Ø ŸN™Nñ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                 óz   — | j                   s| j                  r| j                  j                  |«       y |«        y)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ò  s.   € ð ×'Ò'¨4×+FÒ+FØ×(Ñ(×/Ñ/°Õ3á�Dr+   c                 ó   — | j                   S r-   )r   rÉ   s    r*   r   zBaseFigureWidget.frames  s   € ð
 ×ÑÐr+   c                 ó2   — |rt         j                  «        y y r-   )r   r   )r&   Ú
new_framess     r*   r   zBaseFigureWidget.frames  s   € áÜ×2Ñ2Õ4ð r+   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Ðr+   r   c                 ó,  — g }t        | t        «      ràt        |t        «      sJ ‚|j                  «       D ]¹  \  }}t        |t        «      st        j                  |«      r^|| v sŒ0| |   }||fz   }t
        j                  |||«      }|j                  |«       |rŒf| j                  |«       |j                  |«       Œ‰|| v sŒŽ|dk7  sŒ”| j                  |«       |j                  ||fz   «       Œ» |S t        | t        «      r‘t        |t        «      sJ ‚t        |«      D ]q  \  }	}|	t        | «      k\  r |S | |	   }|�t        |t        «      st        j                  |«      sŒD||	fz   }t
        j                  |||«      }|j                  |«       Œs |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
        rd   )Ú
isinstanceÚdictr²   r
   Ú_is_dict_listr   rj   Úextendrn   r±   ÚlistÚ	enumerater­   )
Ú
input_dataÚ
delta_dataÚ	prop_pathÚremovedÚpÚ	delta_valÚ	input_valÚrecur_prop_pathÚrecur_removedÚis
             r*   rj   z*BaseFigureWidget._remove_overlapping_props%  s—  € ð0 ˆô �j¤$Ô'Ü˜j¬$Ô/Ð/Ð/à *× 0Ñ 0Ó 2ò 5‘��9Ü˜i¬Ô.´*×2JÑ2JÈ9Ô2UØ˜J’à$.¨q¡M˜	Ø*3°q°dÑ*:˜Ü(8×(RÑ(RØ% y°/ó)˜ð  Ÿ™ }Ô5ò  )Ø&ŸN™N¨1Ô-Ø#ŸN™N¨?Õ;à˜*’_¨¨e«à—N‘N 1Ô%Ø—N‘N 9°¨tÑ#3Õ4ð)5ð\ ˆô- ˜
¤DÔ)Ü˜j¬$Ô/Ð/Ð/ä )¨*Ó 5ò 2‘��9Øœ˜J›Ò'Øð" ˆð ' q™M�	àÐ)Ü" 9¬dÔ3Ü!×/Ñ/°	Õ:ð '0°1°$Ñ&6�OÜ$4×$NÑ$NØ! 9¨oó%�Mð —N‘N =Õ1ð#2ð& ˆr+   c           
      ó„  — i }t        | t        «      �r=t        |t        «      st        dj                  | |¬«      «      ‚|j	                  «       D ]¥  \  }}t        |t        «      st        j                  |«      rM|| vrt        |t        «      ri ng | |<   | |   }|j                  t        j                  |||||fz   ¬«      «       Œx|| vst        j                  | |   |«      rŒ–|| |<   ||fz   }|||<   Œ§ |rUt        | j                  «       «      j                  t        |j                  «       «      «      D ]  }	| j                  |	«       Œ |S t        | t         «      rßt        |t         «      st        dj                  | |¬«      «      ‚t#        |«      D ]¥  \  }
}|
t%        | «      k\  r| j'                  d«       | |
   }|�Rt        |t        «      st        j                  |«      r-|j                  t        j                  |||||
fz   ¬«      «       Œ~t        j                  | |
   |«      rŒ˜|| |
<   ||||
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   rh   r   Ú_vals_equalÚsetÚkeysÚ
differencern   rè   ré   r­   r±   )rù   rö   r÷   rø   r1   Ú	from_propÚfrom_valrð   Úrelayout_path_propÚremove_propró   s              r*   rh   z BaseFigureWidget._transform_datat  s  € ð& ˆô �gœtÕ$ô ˜i¬Ô.Ü ØB×IÑIØ '°9ð Jó óð ð (1§¡Ó'8ò EÑ#�	˜8ô ˜h¬Ô-´×1IÑ1IÈ(Ô1Sð !¨Ñ/Ü3=¸hÌÔ3M©RÐSU˜ 	Ñ*ð !(¨	Ñ 2�IØ!×(Ñ(Ü(×8Ñ8Ø%Ø$Ø*7Ø*7¸9¸,Ñ*Fð	 9ó õð !¨Ñ/´~×7QÑ7QØ 	Ñ*¨Hõ8ð .6˜ 	Ñ*Ø-:¸i¸\Ñ-IÐ*Ø<D˜Ð&8Ò9ð9Eñ> Ü#& w§|¡|£~Ó#6×#AÑ#AÜ˜	Ÿ™Ó(Ó)ó$ò -�Kð —K‘K Õ,ð-ð\ ÐôO ˜¤Ô&ô ˜i¬Ô.Ü ØK×RÑRØ '°9ð Só óð ô  )¨Ó3ò G‘��8ð œ˜G›Ò$Ø—N‘N 4Ô(Ø# A™J�	ð Ð(Ü˜x¬Ô.´*×2JÑ2JÈ8Ô2Tð "×(Ñ(Ü(×8Ñ8Ø%Ø$Ø*7Ø*7¸1¸$Ñ*>ð	 9ó õô *×5Ñ5°g¸a±jÀ(ÕKØ%-˜ ™
Ø>F˜ m°q°dÑ&:Ò;ð3Gð6 Ðr+   )NNNFr-   )NN)NNT)r   )Tr   )@Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpathlibÚPathÚ__file__ÚparentÚ_esmr   Útagr   r}   r   rÓ   Ú_configrC   r=   r4   rR   rW   r]   rJ   r~   rl   r`   ry   r‡   r�   r‹   r–   r   r    r#   Ú_set_trace_uidÚ_allow_disable_validationr   r/   r7   r@   rF   rN   rT   rZ   r_   r   rx   r†   rŠ   r�   r•   rÅ   rÊ   rØ   rÚ   rÝ   Úpropertyr   ÚsetterÚstaticmethodr   rj   rh   Ú__classcell__)r)   s   @r*   r   r      s  ø„ ñð
 ˆ7�<‰<˜Ó!×(Ñ(¨>Ñ9Ð<MÑM€Dð  ‘T“V—Z‘ZÑ@ TÐ@Ð-?Ñ@€NØ‘4“6—:‘:Ñ> 4Ð>Ð+=Ñ>€LØ‰d‹f�j‰jÑ9˜dÐ9Ð&8Ñ9€Gð 1‘t tÔ,×0Ñ0ÑQ°dÐQÐ>PÑQÐØ.‘T TÔ*×.Ñ.ÑO°DÐOÐ<NÑO€NØ/‘d dÔ+×/Ñ/ÑP°TÐPÐ=OÑP€OØ-‘D DÔ)×-Ñ-ÑN°4ÐNÐ;MÑN€MØ.‘T TÔ*×.Ñ.ÑO°DÐOÐ<NÑO€Nà3™$¨$Ô/×3Ñ3ÑT¸ÐTÐASÑTÐØ1™¨Ô-×1Ñ1ÑR°tÐRÐ?QÑRÐà8™t¨tÔ4×8Ñ8ñ  Øð Ø'ñ Ðð 8™d¨dÔ3×7Ñ7ÑX¸TÐXÐEWÑXÐð 3™¨Ô.×2Ñ2ÑS¸ÐSÐ@RÑSÐØ2™¨Ô.×2Ñ2ÑS¸ÐSÐ@RÑSÐØ.‘T TÔ*×.Ñ.ÑO°DÐOÐ<NÑO€NØ/‘d dÔ+×/Ñ/ÑP°TÐPÐ=OÑP€OØ-‘D DÔ)×-Ñ-ÑN°4ÐNÐ;MÑN€MØ5™D¨DÔ1×5Ñ5ÑV¸4ÐVÐCUÑVÐñ # 1›:Ÿ>™>¨t˜>Ó4ÐÙ! !›*Ÿ.™.¨d˜.Ó3Ðà€NØ %Ðð
 AFõ5ònó
$ó@,#ò\%òB&ð, OSó0"òd0#òd(ñF Ð!Ó"ñ>'ó #ð>'ñ@ Ð!Ó"ñ='ó #ð='ñ~ ÐÓñ#ó ð#ñ6 ˆ_Óñ"ó ð"ñ: ÐÓñ$ó  ð$ñ8 Ð$Ó%ñS*ó &ðS*òn"ó
ò&"òð* ñ ó ð ð ‡]�]ñ5ó ð5ð ñó ðð" òLó ðLð\ òpó ôpr+   r   )Úcopyr   r  Ú	traitletsr   r   r   r   Úplotly.io._renderersr   Úbasedatatypesr
   r   Ú	callbacksr   r   r   r   Úserializersr   Ú	anywidgetÚ	AnyWidgetr   r   r+   r*   ú<module>r     s9   ðÝ Û ß 2Ó 2Ý Aç 5ß KÓ KÝ +Û ôY�z 9×#6Ñ#6õ Yr+   