Ë
    Ûvžj£  ã                   ó    — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZ g d	¢Zdad
„ Zdd„Zdd„Zdd„Zd„ Zdd„Zy)zCommunication with the vieweré    )ÚEnumN)Úget_default_sidecarÚget_sidecarÚshow)Údisplay_argsÚviewer_args©Údefaulté   )Úget_user_defaults)Úset_jupyter_portÚget_jupyter_portÚinit_sessionÚ	send_dataÚsend_commandÚsend_backendÚsend_measure_requestÚsend_configc                 óR   — t        j                  «       }|j                  | «       |ay )N)ÚrequestsÚSessionÚgetÚSESSION)ÚurlÚsessions     úg/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_cadquery/comms.pyr   r   -   s!   € ä×ÑÓ €GØ‡K�K�ÔØ�Gó    c                 óP  — g d¢}| d   }| d   }|dk7  rt        d|› �«      ‚| d   } |j                  d«      �4t        |d   t        «      r||d   j                     |d<   n||d      |d<   |j                  d«      �%t        |d   t        «      r|d   j                  |d<   |j                  d«      �|d   rd	nd
|d<   t        |«      }|j                  t        |«      «       t        | f|j                  d«      |j                  d«      dœ|¤Ž}t        |j                  _        |S )zj
    Send data to the viewer

    Called by ocp_vscode.show.show() to send model and config to viewer
    )ÚEÚ1ÚCÚRÚconfigÚtypeÚdatazWrong data type ÚcollapseÚreset_cameraÚorbit_controlÚorbitÚ	trackballÚcontrolÚviewerÚanchor)Útitler-   )Ú	TypeErrorr   Ú
isinstancer   Úvaluer   Úupdater   r   r   ÚwidgetÚmeasure_callback)r%   ÚportÚtimeitÚcollapse_mappingr#   Útype_Úall_argsr,   s           r   r   r   4   sB  € ò ,Ðà�(‰^€FØ�‰L€EØ�‚ÜÐ*¨5¨'Ð2Ó3Ð3à�‰<€Dà‡z�z�*ÓÐ)Ü�f˜ZÑ(¬$Ô/Ø!1°&¸Ñ2D×2JÑ2JÑ!KˆF�:Òà!1°&¸Ñ2DÑ!EˆF�:Ñà‡z�z�.Ó!Ð-Ü�f˜^Ñ,¬dÔ3Ø%+¨NÑ%;×%AÑ%AˆF�>Ñ"à‡z�z�/Ó"Ð.Ø'-¨oÒ'>™GÀKˆˆyÑä˜6Ó"€HØ‡O�O”L Ó(Ô)ÜØðà�j‰j˜Ó"Ø�z‰z˜(Ó#ñð ñ	€Fô &:€F‡M�MÔ"Ø€Mr   c                 óò   — | dk(  rDt        «       }d}|€t        «       }|�t        |«      }nt        |«      }|�|j                  |d<   |S | dk(  rt        |«      }|€i S |j	                  «       S t        d«      ‚)zÂ
    Send command to the viewer.

    With data == "config" called by called by ocp_vscode.config.workspace_config()
    With data == "status" called by called by ocp_vscode.config.status()
    r#   NÚ_splashÚstatuszUnknown data for send_data)r   r   r   r;   r<   Ú
ValueError)r%   r5   r.   r6   r#   r,   s         r   r   r   ]   sŽ   € ð ˆxÒÜ"Ó$ˆØˆØˆ=Ü'Ó)ˆEØÐ Ü$ UÓ+‘ä  Ó'ˆFàÐØ &§¡ˆF�9ÑØˆà	�Ò	Ü˜UÓ#ˆØ�^ˆrÐ8¨¯©«Ð8ô Ð5Ó6Ð6r   c                 óŒ  — t         j                  j                  dd«      }d|› �}t        €t	        |«       t        j
                  j                  d«      t         j                  j                  d«      |t        j                  | t        ¬«      j                  d«      dœ}t        j                  |› d	�|¬
«      }|j                  S )z`
    Send data to the viewer

    Called by ocp_vscode.show.show() to send model to backend
    ÚJUPYTER_PORTÚ8888úhttp://localhost:Ú_xsrfÚJUPYTER_CADQUERY_API_KEYr	   úutf-8©rB   Úapikeyr,   r%   z/objects©r%   )ÚosÚenvironr   r   r   ÚcookiesÚorjsonÚdumpsÚjson_defaultÚdecodeÚpostÚstatus_code)r%   r5   Újcv_idr6   r   ÚmessageÚresponses          r   r   r   z   s    € ô �:‰:�>‰>˜.¨&Ó1€DØ˜d˜VÐ
$€Cä€Ü�SÔô —‘×$Ñ$ WÓ-Ü—*‘*—.‘.Ð!;Ó<ØÜ—‘˜T¬<Ô8×?Ñ?ÀÓHñ	€Gô �|‰|˜s˜e 8Ð,°7ˆ|Ó;€HØ×ÑÐr   c                 ó˜  — t         j                  j                  dd«      }d|› �}t        €t	        |«       t        j
                  j                  d«      t         j                  j                  d«      | t        j                  |«      j                  d«      dœ}t        j                  |› d�|¬	«      }|j                  |j                  fS )
a  
    Retrieve the measurement for a given viewer and shape ids from the backend

    Called as callbacks by cad_viewer_widget.widget.CadViewerWidget.active_tool and
    cad_viewer_widget.widget.CadViewerWidget.selected_shape_ids to retrieve measurements
    r?   r@   rA   rB   rC   rD   rE   z/measurerG   )rH   rI   r   r   r   rJ   rK   rL   rN   rO   rP   Útext)rQ   Ú	shape_idsr5   r   rR   rS   s         r   r   r   �   s§   € ô �:‰:�>‰>˜.¨&Ó1€DØ˜d˜VÐ
$€Cä€Ü�SÔô —‘×$Ñ$ WÓ-Ü—*‘*—.‘.Ð!;Ó<ØÜ—‘˜YÓ'×.Ñ.¨wÓ7ñ	€Gô �|‰|˜s˜e 8Ð,°7ˆ|Ó;€HØ×Ñ §¡Ð.Ð.r   c                 óÆ   — | d   j                  d«      }|€t        «       }|€yt        |«      }|€y| d   j                  «       D ]  \  }}|€Œ	|dvsŒt	        |||«       Œ y)zx
    Send config to the viewer

    Called by ocp_vscode.config.set_viewer_config() to set attributes in the viewer
    r#   r.   N)r5   r.   )r   r   r   ÚitemsÚsetattr)r#   r5   r.   r6   ÚcvÚkÚvs          r   r   r   §   sv   € ð �8Ñ× Ñ  Ó)€Eà€}Ü#Ó%ˆØˆ=Øä	�UÓ	€BØ	€zØà�xÑ ×&Ñ&Ö(‰ˆˆ1Ø‰=ØÐ)Ò)Ü˜˜A˜qÕ!ñ )r   )NF)NNF)Ú__doc__Úenumr   rH   rK   r   Úcad_viewer_widgetr   r   r   Úcad_viewer_widget.utilsr   r   Úocp_vscode.commsr
   rM   r#   r   Ú__all__r   r   r   r   r   r   r   © r   r   Ú<module>rd      sR   ðÙ #õ& Û 	ã Û ß DÑ Dß =Ý 4å %ò	€ð €òó&óR7ó: ò,/ô."r   