U
    Zfn                     @   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   Zfind_elementdash_entry_locatorZget_attribute)selfattr r   :/tmp/pip-unpacked-wheel-47crqvv_/dash/testing/dash_page.py_get_dash_dom_by_attribute   s     z(DashPageMixin._get_dash_dom_by_attributec                 C   s   dS )Nz.test-devtools-error-countr   r   r   r   r	   devtools_error_count_locator
   s    z*DashPageMixin.devtools_error_count_locatorc                 C   s   dS )Nz#react-entry-pointr   r   r   r   r	   r      s    z DashPageMixin.dash_entry_locatorc                 C   s
   |  dS )NZ	outerHTMLr
   r   r   r   r	   dash_outerhtml_dom   s    z DashPageMixin.dash_outerhtml_domc                 C   s
   |  dS )N	innerHTMLr   r   r   r   r	   dash_innerhtml_dom   s    z DashPageMixin.dash_innerhtml_domc                 C   s   | j dS )Nzp
            var p = window.store.getState().paths;
            return {strs: p.strs, objs: p.objs}
            ZdriverZexecute_scriptr   r   r   r	   redux_state_paths   s    zDashPageMixin.redux_state_pathsc                 C   s   | j dS )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#   s    zDashPageMixin.redux_state_rqsc                 C   s   | j dS )NzC
            return window.store.getState().isLoading;
            r   r   r   r   r	   redux_state_is_loading=   s    z$DashPageMixin.redux_state_is_loadingc                 C   s   | j dS )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   s   | j d| dS )Nz/return JSON.parse(window.localStorage.getItem(''));r   )r   Zstore_idr   r   r	   get_local_storageL   s    
zDashPageMixin.get_local_storagesessionc                 C   s   | j d| dS )Nz1return JSON.parse(window.sessionStorage.getItem('r   r   )r   Z
session_idr   r   r	   get_session_storageQ   s    
z!DashPageMixin.get_session_storagec                 C   s   | j d d S )Nzwindow.localStorage.clear()r   r   r   r   r	   clear_local_storageV   s    z!DashPageMixin.clear_local_storagec                 C   s   | j d d S )Nzwindow.sessionStorage.clear()r   r   r   r   r	   clear_session_storageY   s    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   r   r   r   r   r	   r      s.   









r   N)Zbs4r   r   r   r   r   r	   <module>   s   