o
    dn                     @   s   d dl mZ G dd dZdS )    )BeautifulSoupc                   @   s   e Zd Zdd Zedd Zedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zdd Zd"ddZd#ddZdd Zdd Zdd  Zd!S )$DashPageMixinc                 C   s   t | | j|dS )Nlxml)r   find_elementdash_entry_locatorget_attribute)selfattr r
   [/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/dash/testing/dash_page.py_get_dash_dom_by_attribute   s   z(DashPageMixin._get_dash_dom_by_attributec                 C      dS )Nz.test-devtools-error-countr
   r   r
   r
   r   devtools_error_count_locator
      z*DashPageMixin.devtools_error_count_locatorc                 C   r   )Nz#react-entry-pointr
   r   r
   r
   r   r      r   z DashPageMixin.dash_entry_locatorc                 C   
   |  dS )N	outerHTMLr   r   r
   r
   r   dash_outerhtml_dom      
z DashPageMixin.dash_outerhtml_domc                 C   r   )N	innerHTMLr   r   r
   r
   r   dash_innerhtml_dom   r   z DashPageMixin.dash_innerhtml_domc                 C      | j dS )Nzp
            var p = window.store.getState().paths;
            return {strs: p.strs, objs: p.objs}
            driverexecute_scriptr   r
   r
   r   redux_state_paths      zDashPageMixin.redux_state_pathsc                 C   r   )NaY  

            // Check for legacy `pendingCallbacks` store prop (compatibility for Dash matrix testing)
            var pendingCallbacks = window.store.getState().pendingCallbacks;
            if (pendingCallbacks) {
                return pendingCallbacks.map(function(cb) {
                    var out = {};
                    for (var key in cb) {
                        if (typeof cb[key] !== 'function') { out[key] = cb[key]; }
                    }
                    return out;
                });
            }

            // Otherwise, use the new `callbacks` store prop
            var callbacksState =  Object.assign({}, window.store.getState().callbacks);
            delete callbacksState.stored;
            delete callbacksState.completed;

            return Array.prototype.concat.apply([], Object.values(callbacksState));
            r   r   r
   r
   r   redux_state_rqs#   r   zDashPageMixin.redux_state_rqsc                 C   r   )NzC
            return window.store.getState().isLoading;
            r   r   r
   r
   r   redux_state_is_loading=   r   z$DashPageMixin.redux_state_is_loadingc                 C   r   )Nzreturn window.storer   r   r
   r
   r   window_storeE   s   zDashPageMixin.window_storec                 C   s   | j  p| jg kS N)r    r   r   r
   r
   r   _wait_for_callbacksI   s   z!DashPageMixin._wait_for_callbackslocalc                 C      | j d| dS )Nz/return JSON.parse(window.localStorage.getItem(''));r   )r   store_idr
   r
   r   get_local_storageL      
zDashPageMixin.get_local_storagesessionc                 C   r$   )Nz1return JSON.parse(window.sessionStorage.getItem('r%   r   )r   
session_idr
   r
   r   get_session_storageQ   r(   z!DashPageMixin.get_session_storagec                 C      | j d d S )Nzwindow.localStorage.clear()r   r   r
   r
   r   clear_local_storageV      z!DashPageMixin.clear_local_storagec                 C   r,   )Nzwindow.sessionStorage.clear()r   r   r
   r
   r   clear_session_storageY   r.   z#DashPageMixin.clear_session_storagec                 C   s   |    |   d S r!   )r-   r/   r   r
   r
   r   clear_storage\   s   zDashPageMixin.clear_storageN)r#   )r)   )__name__
__module____qualname__r   propertyr   r   r   r   r   r   r   r    r"   r'   r+   r-   r/   r0   r
   r
   r
   r   r      s0    









r   N)bs4r   r   r
   r
   r
   r   <module>   s    