UNPKG

@rxap/tree

Version:

This package provides a tree component and data source for Angular applications. It includes features such as searching, filtering, and displaying hierarchical data. The package also offers directives for customizing the content of tree nodes.

3,573 lines 141 kB
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>angular-tree</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    </head>
    <body>
          <script>
               // Blocking script to avoid flickering dark mode
               // Dark mode toggle button
               var useDark = window.matchMedia('(prefers-color-scheme: dark)');
               var darkModeState = useDark.matches;
               var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
               var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');

               function checkToggle(check) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].checked = check;
                    }
               }

               function toggleDarkMode(state) {
                    if (window.localStorage) {
                         localStorage.setItem('compodoc_darkmode-state', state);
                    }

                    checkToggle(state);

                    const hasClass = document.body.classList.contains('dark');

                    if (state) {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.add('dark');
                         }
                         if (!hasClass) {
                              document.body.classList.add('dark');
                         }
                    } else {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.remove('dark');
                         }
                         if (hasClass) {
                              document.body.classList.remove('dark');
                         }
                    }
               }

               useDark.addEventListener('change', function (evt) {
                    toggleDarkMode(evt.matches);
               });
               if (darkModeStateLocal) {
                    darkModeState = darkModeStateLocal === 'true';
               }
               toggleDarkMode(darkModeState);
          </script>

        <div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
               <div class="d-flex">
                    <a href="../" class="navbar-brand">angular-tree</a>
                    <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
               </div>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="d-none d-md-block menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content injectable">
                   <div class="content-data">








<ol class="breadcrumb">
  <li class="breadcrumb-item">Injectables</li>
  <li class="breadcrumb-item" >TreeDataSource</li>
</ol>

<ul class="nav nav-tabs" role="tablist">
        <li class="nav-item">
            <a href="#info" 
                class="nav-link"
                class="nav-link active"
                role="tab" id="info-tab" data-bs-toggle="tab" data-link="info">Info</a>
        </li>
        <li class="nav-item">
            <a href="#source" 
                class="nav-link"
                
                role="tab" id="source-tab" data-bs-toggle="tab" data-link="source">Source</a>
        </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="info">
        <p class="comment">
            <h3>File</h3>
        </p>
        <p class="comment">
            <code>src/lib/tree.data-source.ts</code>
        </p>



            <p class="comment">
                <h3>Extends</h3>
            </p>
            <p class="comment">
                        <code>BaseDataSource</code>
            </p>


            <section data-compodoc="block-index">
    <h3 id="index">Index</h3>
    <table class="table table-sm table-bordered index-table">
        <tbody>
                <tr>
                    <td class="col-md-4">
                        <h6><b>Properties</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Protected</span>
                                    <span class="modifier"></span>
                                <a href="#_data$" >_data$</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                    <span class="modifier"></span>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Readonly</span>
                                <a href="#childrenRemoteMethod" >childrenRemoteMethod</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#expanded" >expanded</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getIcon" >getIcon</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getStyle" >getStyle</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getType" >getType</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#hasDetails" >hasDetails</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                <a href="#loading$" >loading$</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#matchFilter" >matchFilter</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Readonly</span>
                                <a href="#rootRemoteMethod" >rootRemoteMethod</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#searchForm" >searchForm</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#selected" >selected</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#toDisplay" >toDisplay</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#tree$" >tree$</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                    <span class="modifier">Public</span>
                                <a href="#treeControl" >treeControl</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Methods</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Protected</span>
                                    <span class="modifier"></span>
                                <a href="#_connect" >_connect</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#collapseNode" >collapseNode</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#deselectNode" >deselectNode</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                <a href="#destroy" >destroy</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#expandNode" >expandNode</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#flatTree" >flatTree</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#getChildren" >getChildren</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getNodeById" >getNodeById</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#getRoot" >getRoot</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#getRootParameters" >getRootParameters</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#getTreeRoot" >getTreeRoot</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                    <span class="modifier">Async</span>
                                <a href="#refresh" >refresh</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#refreshMatchFilter" >refreshMatchFilter</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                <a href="#reset" >reset</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#selectNode" >selectNode</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setGetIcon" >setGetIcon</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setGetStyle" >setGetStyle</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setGetType" >setGetType</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setHasDetails" >setHasDetails</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setMatchFilter" >setMatchFilter</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setToDisplay" >setToDisplay</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#setTreeControl" >setTreeControl</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#toNode" >toNode</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#updateNodes" >updateNodes</a>
                            </li>
                        </ul>
                    </td>
                </tr>





                    <tr>
                        <td class="col-md-4">
                            <h6><b>Accessors</b></h6>
                        </td>
                    </tr>
                    <tr>
                        <td class="col-md-4">
                            <ul class="index-list">
                                <li>
                                    <a href="#nodeParameters" >nodeParameters</a>
                                </li>
                            </ul>
                        </td>
                    </tr>
        </tbody>
    </table>
</section>

            <section data-compodoc="block-constructor">
    <h3 id="constructor">Constructor</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
<code>constructor(rootRemoteMethod: Method<Data | [] | RootParameters>, childrenRemoteMethod: Method<Data[] | Node<Data>> | null, applyFilterMethod: <a href="../interfaces/TreeApplyFilterParameter.html" target="_self">Method&lt;Array&lt;Node&lt;Data&gt;&gt; | TreeApplyFilterParameter&gt; | null</a>, metadata: <a href="../injectables/TreeDataSource.html" target="_self">TreeDataSourceMetadata | null</a>)</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="256" class="link-to-prism">src/lib/tree.data-source.ts:256</a></div>
                            </td>
                        </tr>

                <tr>
                    <td class="col-md-4">
                            <div>
                                    <b>Parameters :</b>
                                    <table class="params">
                                        <thead>
                                            <tr>
                                                <td>Name</td>
                                                    <td>Type</td>
                                                <td>Optional</td>
                                            </tr>
                                        </thead>
                                        <tbody>
                                                <tr>
                                                        <td>rootRemoteMethod</td>
                                                  
                                                        <td>
                                                                    <code>Method&lt;Data | [] | RootParameters&gt;</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>childrenRemoteMethod</td>
                                                  
                                                        <td>
                                                                    <code>Method&lt;Data[] | Node&lt;Data&gt;&gt; | null</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>applyFilterMethod</td>
                                                  
                                                        <td>
                                                                        <code><a href="../interfaces/TreeApplyFilterParameter.html" target="_self" >Method&lt;Array&lt;Node&lt;Data&gt;&gt; | TreeApplyFilterParameter&gt; | null</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>metadata</td>
                                                  
                                                        <td>
                                                                        <code><a href="../injectables/TreeDataSource.html" target="_self" >TreeDataSourceMetadata | null</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                        </tbody>
                                    </table>
                            </div>
                    </td>
                </tr>
            </tbody>
        </table>
</section>

            <section data-compodoc="block-methods">
    
    <h3 id="methods">
        Methods
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_connect"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                            <span class="modifier"></span>
                        <span ><b>_connect</b></span>
                        <a href="#_connect"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>_connect(collectionViewer: Required<BaseDataSourceViewer>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="622"
                                    class="link-to-prism">src/lib/tree.data-source.ts:622</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>collectionViewer</td>
                                            <td>
                                                        <code>Required&lt;BaseDataSourceViewer&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Observable&lt;Array&lt;Node&lt;Data&gt;&gt;&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="collapseNode"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>collapseNode</b></span>
                        <a href="#collapseNode"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>collapseNode(node: Node<Data>, options?: EventOptions)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="510"
                                    class="link-to-prism">src/lib/tree.data-source.ts:510</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                        <code>EventOptions</code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="deselectNode"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>deselectNode</b></span>
                        <a href="#deselectNode"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>deselectNode(node: Node<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="400"
                                    class="link-to-prism">src/lib/tree.data-source.ts:400</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="destroy"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                        <span ><b>destroy</b></span>
                        <a href="#destroy"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>destroy()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="538"
                                    class="link-to-prism">src/lib/tree.data-source.ts:538</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="expandNode"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>expandNode</b></span>
                        <a href="#expandNode"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>expandNode(node: Node<Data>, options?: EventOptions)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="405"
                                    class="link-to-prism">src/lib/tree.data-source.ts:405</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                        <code>EventOptions</code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="flatTree"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>flatTree</b></span>
                        <a href="#flatTree"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>flatTree(tree: Node<Data>, all)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="534"
                                    class="link-to-prism">src/lib/tree.data-source.ts:534</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Converts the tree structure into a list.</p>
</div>

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                                <td>Description</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>tree</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                            </td>

                                            <td>
                                            </td>
                                        </tr>
                                        <tr>
                                                <td>all</td>
                                            <td>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>false</code>
                                            </td>

                                            <td>
                                                    <p>true - include nodes children that are not expanded</p>

                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Array&lt;Node&lt;Data&gt;&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getChildren"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>getChildren</b></span>
                        <a href="#getChildren"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getChildren(node: Node<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="445"
                                    class="link-to-prism">src/lib/tree.data-source.ts:445</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;Data[]&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getNodeById"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getNodeById</b></span>
                        <a href="#getNodeById"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getNodeById(id: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="465"
                                    class="link-to-prism">src/lib/tree.data-source.ts:465</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>id</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Node | null</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getRoot"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>getRoot</b></span>
                        <a href="#getRoot"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getRoot(options: literal type)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="453"
                                    class="link-to-prism">src/lib/tree.data-source.ts:453</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                        <code>literal type</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>{}</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;Data | []&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getRootParameters"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>getRootParameters</b></span>
                        <a href="#getRootParameters"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getRootParameters(options: literal type)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="458"
                                    class="link-to-prism">src/lib/tree.data-source.ts:458</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                        <code>literal type</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>{}</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;RootParameters&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getTreeRoot"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>getTreeRoot</b></span>
                        <a href="#getTreeRoot"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getTreeRoot(options: literal type)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="326"
                                    class="link-to-prism">src/lib/tree.data-source.ts:326</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                        <code>literal type</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>{}</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;Array&lt;Node&lt;Data&gt;&gt;&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="refresh"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                            <span class="modifier">Async</span>
                        <span ><b>refresh</b></span>
                        <a href="#refresh"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>refresh()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="553"
                                    class="link-to-prism">src/lib/tree.data-source.ts:553</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;any&gt;</code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="refreshMatchFilter"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>refreshMatchFilter</b></span>
                        <a href="#refreshMatchFilter"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>refreshMatchFilter()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="549"
                                    class="link-to-prism">src/lib/tree.data-source.ts:549</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="reset"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                        <span ><b>reset</b></span>
                        <a href="#reset"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>reset()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="595"
                                    class="link-to-prism">src/lib/tree.data-source.ts:595</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="selectNode"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>selectNode</b></span>
                        <a href="#selectNode"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>selectNode(node: Node<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="364"
                                    class="link-to-prism">src/lib/tree.data-source.ts:364</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setGetIcon"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setGetIcon</b></span>
                        <a href="#setGetIcon"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setGetIcon(getIcon: NodeGetIconFunction<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="390"
                                    class="link-to-prism">src/lib/tree.data-source.ts:390</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>getIcon</td>
                                            <td>
                                                        <code>NodeGetIconFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.getIcon</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setGetStyle"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setGetStyle</b></span>
                        <a href="#setGetStyle"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setGetStyle(getStyle: NodeGetStyleFunction<any>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="601"
                                    class="link-to-prism">src/lib/tree.data-source.ts:601</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>getStyle</td>
                                            <td>
                                                        <code>NodeGetStyleFunction&lt;any&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.getStyle</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setGetType"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setGetType</b></span>
                        <a href="#setGetType"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setGetType(getType: NodeGetTypeFunction<any>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="605"
                                    class="link-to-prism">src/lib/tree.data-source.ts:605</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>getType</td>
                                            <td>
                                                        <code>NodeGetTypeFunction&lt;any&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.getType</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setHasDetails"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setHasDetails</b></span>
                        <a href="#setHasDetails"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setHasDetails(hasDetails: NodeHasDetailsFunction<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="394"
                                    class="link-to-prism">src/lib/tree.data-source.ts:394</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>hasDetails</td>
                                            <td>
                                                        <code>NodeHasDetailsFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.hasDetails</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setMatchFilter"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setMatchFilter</b></span>
                        <a href="#setMatchFilter"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setMatchFilter(matchFilter: (node: Node<Data>) => void)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="380"
                                    class="link-to-prism">src/lib/tree.data-source.ts:380</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>matchFilter</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/function" target="_blank" >function</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setToDisplay"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setToDisplay</b></span>
                        <a href="#setToDisplay"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setToDisplay(toDisplay: NodeToDisplayFunction<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="384"
                                    class="link-to-prism">src/lib/tree.data-source.ts:384</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>toDisplay</td>
                                            <td>
                                                        <code>NodeToDisplayFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.toDisplay</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setTreeControl"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>setTreeControl</b></span>
                        <a href="#setTreeControl"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setTreeControl(treeControl: FlatTreeControl<Node<Data>>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="376"
                                    class="link-to-prism">src/lib/tree.data-source.ts:376</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>treeControl</td>
                                            <td>
                                                        <code>FlatTreeControl&lt;Node&lt;Data&gt;&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="toNode"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>toNode</b></span>
                        <a href="#toNode"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>toNode(parent: Node<Data> | null, item: Data, depth: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>, onExpand: ExpandNodeFunction<Data>, onCollapse: ExpandNodeFunction<Data>, onSelect: ExpandNodeFunction<Data>, onDeselect: ExpandNodeFunction<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="484"
                                    class="link-to-prism">src/lib/tree.data-source.ts:484</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>parent</td>
                                            <td>
                                                        <code>Node&lt;Data&gt; | null</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>item</td>
                                            <td>
                                                        <code>Data</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>depth</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>0</code>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>onExpand</td>
                                            <td>
                                                        <code>ExpandNodeFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.expandNode.bind(this)</code>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>onCollapse</td>
                                            <td>
                                                        <code>ExpandNodeFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.collapseNode.bind(this)</code>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>onSelect</td>
                                            <td>
                                                        <code>ExpandNodeFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.selectNode.bind(this)</code>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>onDeselect</td>
                                            <td>
                                                        <code>ExpandNodeFunction&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.deselectNode.bind(this)</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;Node&lt;Data&gt;&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="updateNodes"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>updateNodes</b></span>
                        <a href="#updateNodes"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>updateNodes()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="613"
                                    class="link-to-prism">src/lib/tree.data-source.ts:613</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>recall the getStyle, getIcon and toDisplay methods
and update the node objects</p>
</div>

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
</section>
            <section data-compodoc="block-properties">
    
    <h3 id="inputs">
        Properties
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_data$"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                            <span class="modifier"></span>
                        <span ><b>_data$</b></span>
                        <a href="#_data$"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>new BehaviorSubject&lt;Array&lt;Node&lt;Data&gt;&gt;&gt;([])</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="250" class="link-to-prism">src/lib/tree.data-source.ts:250</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="childrenRemoteMethod"></a>
                    <span class="name">
                            <span class="modifier"></span>
                            <span class="modifier"></span>
                            <span class="modifier">Public</span>
                            <span class="modifier">Readonly</span>
                        <span ><b>childrenRemoteMethod</b></span>
                        <a href="#childrenRemoteMethod"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>Method&lt;Data[] | Node&lt;Data&gt;&gt; | null</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>null</code>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @Optional()<br />@Inject(RXAP_TREE_DATA_SOURCE_CHILDREN_REMOTE_METHOD)<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="263" class="link-to-prism">src/lib/tree.data-source.ts:263</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="expanded"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>expanded</b></span>
                        <a href="#expanded"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>SelectionModel&lt;string&gt;</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="246" class="link-to-prism">src/lib/tree.data-source.ts:246</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getIcon"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getIcon</b></span>
                        <a href="#getIcon"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeGetIconFunction&lt;Data&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="314" class="link-to-prism">src/lib/tree.data-source.ts:314</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getStyle"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getStyle</b></span>
                        <a href="#getStyle"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeGetStyleFunction&lt;Data&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="318" class="link-to-prism">src/lib/tree.data-source.ts:318</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getType"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getType</b></span>
                        <a href="#getType"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeGetTypeFunction&lt;Data&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="316" class="link-to-prism">src/lib/tree.data-source.ts:316</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="hasDetails"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>hasDetails</b></span>
                        <a href="#hasDetails"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeHasDetailsFunction&lt;Data&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="322" class="link-to-prism">src/lib/tree.data-source.ts:322</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="loading$"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                        <span ><b>loading$</b></span>
                        <a href="#loading$"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>new ToggleSubject(true)</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="248" class="link-to-prism">src/lib/tree.data-source.ts:248</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="matchFilter"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>matchFilter</b></span>
                        <a href="#matchFilter"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/function" target="_blank" >function</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="324" class="link-to-prism">src/lib/tree.data-source.ts:324</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="rootRemoteMethod"></a>
                    <span class="name">
                            <span class="modifier"></span>
                            <span class="modifier">Public</span>
                            <span class="modifier">Readonly</span>
                        <span ><b>rootRemoteMethod</b></span>
                        <a href="#rootRemoteMethod"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>Method&lt;Data | [] | RootParameters&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @Inject(RXAP_TREE_DATA_SOURCE_ROOT_REMOTE_METHOD)<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="260" class="link-to-prism">src/lib/tree.data-source.ts:260</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="searchForm"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>searchForm</b></span>
                        <a href="#searchForm"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../injectables/SearchForm.html" target="_self" >SearchForm | null</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>null</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="249" class="link-to-prism">src/lib/tree.data-source.ts:249</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="selected"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>selected</b></span>
                        <a href="#selected"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>SelectionModel&lt;Node&lt;Data&gt;&gt;</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="245" class="link-to-prism">src/lib/tree.data-source.ts:245</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="toDisplay"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>toDisplay</b></span>
                        <a href="#toDisplay"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeToDisplayFunction&lt;Data&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="311" class="link-to-prism">src/lib/tree.data-source.ts:311</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="tree$"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>tree$</b></span>
                        <a href="#tree$"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>new BehaviorSubject&lt;Array&lt;Node&lt;Data&gt;&gt;&gt;([])</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="243" class="link-to-prism">src/lib/tree.data-source.ts:243</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="treeControl"></a>
                    <span class="name">
                            <span class="modifier"></span>
                            <span class="modifier">Public</span>
                        <span ><b>treeControl</b></span>
                        <a href="#treeControl"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>FlatTreeControl&lt;Node&lt;Data&gt;&gt;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @Required()<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="244" class="link-to-prism">src/lib/tree.data-source.ts:244</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
</section>

            <section data-compodoc="block-accessors">
    <h3 id="accessors">
        Accessors
    </h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="nodeParameters"></a>
                        <span class="name"><b>nodeParameters</b><a href="#nodeParameters"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>nodeParameters()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="280" class="link-to-prism">src/lib/tree.data-source.ts:280</a></div>
                                </td>
                            </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>set</b><code>nodeParameters(nodeParameters: NodeParameters | null)</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="284" class="link-to-prism">src/lib/tree.data-source.ts:284</a></div>
                                </td>
                            </tr>
                    <tr>
                        <td class="col-md-4">

                                <div class="io-description">
                                        <b>Parameters :</b>
                                        <table class="params">
                                            <thead>
                                                <tr>
                                                    <td>Name</td>
                                                        <td>Type</td>
                                                    <td>Optional</td>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                    <tr>
                                                            <td>nodeParameters</td>
                                                    
                                                            <td>
                                                                        <code>NodeParameters | null</code>
                                                            </td>
                                                    
                                                        <td>
                                                                No
                                                        </td>
                                                        
                                                    </tr>
                                            </tbody>
                                        </table>
                                </div>
                                <div>
                                </div>
                                <div class="io-description">
                                    <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                                </div>
                        </td>
                    </tr>
            </tbody>
        </table>
</section>
    </div>


    <div class="tab-pane fade  tab-source-code" id="source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
  SelectionChange,
  SelectionModel,
} from &#x27;@angular/cdk/collections&#x27;;
import { FlatTreeControl } from &#x27;@angular/cdk/tree&#x27;;
import {
  Inject,
  Injectable,
  InjectionToken,
  isDevMode,
  OnInit,
  Optional,
} from &#x27;@angular/core&#x27;;
import {
  BaseDataSource,
  BaseDataSourceMetadata,
  BaseDataSourceViewer,
  RXAP_DATA_SOURCE_METADATA,
  RxapDataSource,
} from &#x27;@rxap/data-source&#x27;;
import {
  EventOptions,
  ExpandNodeFunction,
  Node,
  NodeGetIconFunction,
  NodeGetStyleFunction,
  NodeGetTypeFunction,
  NodeHasDetailsFunction,
  NodeToDisplayFunction,
} from &#x27;@rxap/data-structure-tree&#x27;;
import { Method } from &#x27;@rxap/pattern&#x27;;
import { ToggleSubject } from &#x27;@rxap/rxjs&#x27;;
import {
  coerceArray,
  getIdentifierPropertyValue,
  joinPath,
  Required,
  WithChildren,
  WithIdentifier,
} from &#x27;@rxap/utilities&#x27;;
import {
  BehaviorSubject,
  combineLatest,
  debounceTime,
  from,
  merge,
  Observable,
  Subject,
  Subscription,
} from &#x27;rxjs&#x27;;
import {
  map,
  startWith,
  switchMap,
  tap,
} from &#x27;rxjs/operators&#x27;;
import {
  ISearchForm,
  SearchForm,
} from &#x27;./search.form&#x27;;

export function isSelectionChange&lt;T&gt;(obj: any): obj is SelectionChange&lt;T&gt; {
  return !!obj &amp;&amp; obj[&#x27;added&#x27;] !&#x3D;&#x3D; undefined &amp;&amp; obj[&#x27;removed&#x27;] !&#x3D;&#x3D; undefined;
}

export interface TreeDataSourceMetadata extends BaseDataSourceMetadata {
  selectMultiple?: boolean;
  expandMultiple?: boolean;
  scopeTypes?: string[];
  /**
   * If true the tree will be refreshed with caching disbabled after the first load
   */
  autoRefreshWithoutCache?: boolean;
}

export const RXAP_TREE_DATA_SOURCE_ROOT_REMOTE_METHOD     &#x3D; new InjectionToken(
  &#x27;rxap/tree/data-source/root-remote-method&#x27;,
);
export const RXAP_TREE_DATA_SOURCE_CHILDREN_REMOTE_METHOD &#x3D; new InjectionToken(
  &#x27;rxap/tree/data-source/children-remote-method&#x27;,
);

export const RXAP_TREE_DATA_SOURCE_APPLY_FILTER_METHOD &#x3D; new InjectionToken(
  &#x27;rxap/tree/data-source/apply-filter-method&#x27;);

export function flatTree&lt;Data extends WithIdentifier &amp; WithChildren &#x3D; any&gt;(
  tree: Node&lt;Data&gt; | Array&lt;Node&lt;Data&gt;&gt;,
  all &#x3D; false,
): Array&lt;Node&lt;Data&gt;&gt; {
  tree &#x3D; coerceArray(tree);

  function flat(acc: any[], list: any[]) {
    return [ ...acc, ...list ];
  }

  const _flatTree &#x3D; (node: Node&lt;Data&gt;): Array&lt;Node&lt;Data&gt;&gt; &#x3D;&gt; {
    if (!Array.isArray(node.children)) {
      if (isDevMode()) {
        console.log(node);
      }
      throw new Error(&#x27;Node has not defined children&#x27;);
    }

    if (all || node.expanded) {
      return [
        node,
        ...node.children.map((child) &#x3D;&gt; _flatTree(child)).reduce(flat, []),
      ];
    } else {
      return [ node ];
    }
  };

  return tree
  .map((child) &#x3D;&gt; _flatTree(child))
  .reduce((acc, items) &#x3D;&gt; [ ...acc, ...items ], []);
}

export interface TreeApplyFilterParameter&lt;Form extends ISearchForm &#x3D; ISearchForm, Data extends WithIdentifier &amp; WithChildren &#x3D; any&gt; {
  tree: Array&lt;Node&lt;Data&gt;&gt;,
  filter: Form;
  scopeTypes?: string[]
}

@Injectable()
export class DefaultTreeApplyFilterMethod&lt;Data extends WithIdentifier &amp; WithChildren &#x3D; any&gt;
  implements Method&lt;Array&lt;Node&lt;Data&gt;&gt;, TreeApplyFilterParameter&gt; {

  protected lastFilter: ISearchForm | null &#x3D; null;

  call(
    {tree, filter, scopeTypes}: TreeApplyFilterParameter,
  ): Array&lt;Node&lt;Data&gt;&gt; | Promise&lt;Array&lt;Node&lt;Data&gt;&gt;&gt; {

    const nodes &#x3D; flatTree(tree, true);

    // if (this.isEqualToLastFilter(filter)) {
    //   return flatTree(tree, false).filter(node &#x3D;&gt; node.isVisible);
    // }

    const hasScopeFilter &#x3D; (
      filter.scope &amp;&amp;
      Object.keys(filter.scope) &amp;&amp;
      Object.values(filter.scope).some((list) &#x3D;&gt; list.length &gt; 0)
    );

    // if not scope and the search filter is an empty string, collapse all non-root nodes
    if (!filter.search &amp;&amp; filter.search !&#x3D;&#x3D; this.lastFilter?.search) {
      nodes
      .filter(node &#x3D;&gt; node.parent)
      .forEach(node &#x3D;&gt; node.collapse({quite: true}));
    }

    if (filter.search || hasScopeFilter) {

      nodes.forEach(node &#x3D;&gt; node.hide());

      for (const [ type, list ] of Object.entries(filter.scope ?? {})) {
        for (const node of nodes) {
          if (node.type &#x3D;&#x3D;&#x3D; type) {
            if (list.some(item &#x3D;&gt; getIdentifierPropertyValue(item) &#x3D;&#x3D;&#x3D; node.id)) {
              node.show({forEachChildren: true});
            }
          }
        }
      }

      if (filter.search) {
        for (const node of nodes) {
          if (hasScopeFilter &amp;&amp; node.hidden) {
            // if the filter has a scope filter. Only check the search filter on nodes that are shown by the scope
            // filter
            continue;
          }
          const display &#x3D; node.display?.toLowerCase();
          if (display) {
            if (display.includes(filter.search.toLowerCase())) {
              node.show({parents: true});
            } else {
              node.hide();
            }
          } else {
            // if node has no display, it is not shown
            node.hide();
          }
        }
        // hide each node that has no visible children
        // there exists the edge case that a node has visible children, but the node.hide() function is called
        // after the child.show({ parent:true })
        for (const node of nodes.filter(n &#x3D;&gt; n.hidden &amp;&amp; n.hasChildren &amp;&amp; n.children.some(child &#x3D;&gt; child.isVisible))) {
          if (node.hidden) {
            console.warn(&#x27;Edge case detected. Node has visible children but is hidden.&#x27;);
            node.show();
          }
        }
        // expand each node that has visible children
        for (const node of nodes.filter(n &#x3D;&gt; n.hasChildren)) {
          if (node.children.some(child &#x3D;&gt; child.isVisible)) {
            // set quite to true to prevent the tree from reloading -&gt; this would result in a infinite loop
            node.expand({quite: true});
          }
        }
      }

    } else {
      nodes.forEach(node &#x3D;&gt; node.show());
    }

    this.lastFilter &#x3D; filter;

    return flatTree(tree, false).filter(node &#x3D;&gt; node.isVisible);

  }

  protected isEqualToLastFilter(filter: ISearchForm): boolean {
    if (this.lastFilter) {
      if (this.lastFilter.search &#x3D;&#x3D;&#x3D; filter.search) {
        if (this.lastFilter.scope &amp;&amp; filter.scope) {
          if (Object.keys(this.lastFilter.scope).every(key &#x3D;&gt; Object.keys(filter.scope).includes(key))) {
            if (Object.entries(this.lastFilter.scope)
            .every(([ key, scope ]) &#x3D;&gt; scope.some(item &#x3D;&gt; filter.scope[key].includes(item)))) {
              return true;
            }
          }
        }
        if (filter.scope &#x3D;&#x3D;&#x3D; this.lastFilter.scope) {
          return true;
        }
      }
    }
    return false;
  }

}

@RxapDataSource(&#x27;tree&#x27;)
@Injectable()
export class TreeDataSource&lt;
  Data extends WithIdentifier &amp; WithChildren &#x3D; any,
  RootParameters &#x3D; any,
  NodeParameters &#x3D; any,
&gt; extends BaseDataSource&lt;Array&lt;Node&lt;Data&gt;&gt;, TreeDataSourceMetadata&gt; implements OnInit {
  public tree$                                                   &#x3D; new BehaviorSubject&lt;Array&lt;Node&lt;Data&gt;&gt;&gt;([]);
  @Required public treeControl!: FlatTreeControl&lt;Node&lt;Data&gt;&gt;;
  public selected!: SelectionModel&lt;Node&lt;Data&gt;&gt;;
  public expanded!: SelectionModel&lt;string&gt;;
  // TODO : änlich problem wie bei der redundaten expand SelectionModel.
  public override loading$                                       &#x3D; new ToggleSubject(true);
  public searchForm: SearchForm | null                           &#x3D; null;
  protected override _data$                                      &#x3D; new BehaviorSubject&lt;Array&lt;Node&lt;Data&gt;&gt;&gt;([]);
  private _expandedLocalStorageSubscription: Subscription | null &#x3D; null;
  private _selectedLocalStorageSubscription: Subscription | null &#x3D; null;
  // im localStorage wird nur die id gespeichert.
  private _preSelected: string[]                                 &#x3D; [];
  private _refreshMatchFilter                                    &#x3D; new Subject&lt;void&gt;();
  private readonly applyFilterMethod: Method&lt;Array&lt;Node&lt;Data&gt;&gt;, TreeApplyFilterParameter&gt;;

  constructor(
    @Inject(RXAP_TREE_DATA_SOURCE_ROOT_REMOTE_METHOD)
    public readonly rootRemoteMethod: Method&lt;Data | Data[], RootParameters&gt;,
    @Optional()
    @Inject(RXAP_TREE_DATA_SOURCE_CHILDREN_REMOTE_METHOD)
    public readonly childrenRemoteMethod: Method&lt;Data[], Node&lt;Data&gt;&gt; | null         &#x3D; null,
    @Optional()
    @Inject(RXAP_TREE_DATA_SOURCE_APPLY_FILTER_METHOD)
      applyFilterMethod: Method&lt;Array&lt;Node&lt;Data&gt;&gt;, TreeApplyFilterParameter&gt; | null &#x3D; null,
    @Optional()
    @Inject(RXAP_DATA_SOURCE_METADATA)
      metadata: TreeDataSourceMetadata | null                                       &#x3D; null,
  ) {
    super(metadata);
    this.applyFilterMethod &#x3D; applyFilterMethod ?? new DefaultTreeApplyFilterMethod();
    // TODO add new SelectModel class that saves the select model to the localStorage
    this.initSelected();
    this.initExpanded();
  }

  private _nodeParameters: NodeParameters | null &#x3D; null;

  public get nodeParameters(): NodeParameters | null {
    return this._nodeParameters;
  }

  public set nodeParameters(nodeParameters: NodeParameters | null) {
    this._nodeParameters &#x3D; nodeParameters;
    this.tree$.value.forEach(node &#x3D;&gt; node.parameters &#x3D; nodeParameters);
  }

  ngOnInit() {
    if (this.searchForm) {
      combineLatest([
        this.tree$,
        (this.searchForm.rxapFormGroup.value$ as Observable&lt;any&gt;).pipe(debounceTime(1000)),
      ]).pipe(
          switchMap(async ([ tree, filter ]) &#x3D;&gt; await this.applyFilterMethod.call({
            tree,
            filter,
            scopeTypes: this.metadata?.scopeTypes,
          })),
          map(nodes &#x3D;&gt; coerceArray(nodes)),
        )
        .subscribe(data &#x3D;&gt; this._data$.next(data));
    } else {
      this.tree$.pipe(
        map(tree &#x3D;&gt; flatTree(tree).filter(node &#x3D;&gt; node.isVisible)),
        tap(nodes &#x3D;&gt; nodes.forEach(node &#x3D;&gt; node.show())),
      ).subscribe(data &#x3D;&gt; this._data$.next(data));
    }
  }

  public toDisplay: NodeToDisplayFunction&lt;Data&gt; &#x3D; () &#x3D;&gt;
    &#x27;to display function not defined&#x27;;

  public getIcon: NodeGetIconFunction&lt;Data&gt; &#x3D; () &#x3D;&gt; null;

  public getType: NodeGetTypeFunction&lt;Data&gt; &#x3D; () &#x3D;&gt; null;

  public getStyle: NodeGetStyleFunction&lt;Data&gt; &#x3D; () &#x3D;&gt; (
    {}
  );

  public hasDetails: NodeHasDetailsFunction&lt;Data&gt; &#x3D; () &#x3D;&gt; true;

  public matchFilter: (node: Node&lt;Data&gt;) &#x3D;&gt; boolean &#x3D; () &#x3D;&gt; true;

  public async getTreeRoot(options: { cache?: boolean } &#x3D; {}): Promise&lt;Array&lt;Node&lt;Data&gt;&gt;&gt; {
    this.loading$.enable();
    const root: Data | Data[] &#x3D; await this.getRoot(options);

    let rootNodes: Array&lt;Node&lt;Data&gt;&gt;;

    if (Array.isArray(root)) {
      rootNodes &#x3D; await Promise.all(root.map((node) &#x3D;&gt; this.toNode(null, node)));
    } else {
      rootNodes &#x3D; [ await this.toNode(null, root) ];
    }

    const tmpSelectedNodes: Node&lt;Data&gt;[] &#x3D; [];

    const restoreExpandAndSelectedState &#x3D; (node: Node&lt;Data&gt;) &#x3D;&gt; {
      if (this.expanded.isSelected(node.id)) {
        (node as any)._expanded &#x3D; true;
      }
      if (this.selected.selected.some(n &#x3D;&gt; n.id &#x3D;&#x3D;&#x3D; node.id)) {
        console.log(&#x27;restore selected&#x27;, node.display);
        (node as any)._selected &#x3D; true;
        tmpSelectedNodes.push(node);
      }
      node.children.forEach(restoreExpandAndSelectedState);
    };

    rootNodes.forEach(restoreExpandAndSelectedState);

    console.log(&#x27;restore expand and selected state&#x27;, tmpSelectedNodes);
    this.selected.setSelection(...tmpSelectedNodes);

    this.tree$.next(rootNodes);

    this.loading$.disable();

    return rootNodes;
  }

  public selectNode(node: Node&lt;Data&gt;): Promise&lt;void&gt; {
    if (!this.selected.isMultipleSelection()) {
      if (this.selected.hasValue()) {
        const currentSelectedNode &#x3D; this.selected.selected[0];
        currentSelectedNode.deselect();
      }
    }
    this.selected.select(node);
    node.parent?.expand();
    return Promise.resolve();
  }

  public setTreeControl(treeControl: FlatTreeControl&lt;Node&lt;Data&gt;&gt;): void {
    this.treeControl &#x3D; treeControl;
  }

  public setMatchFilter(matchFilter: (node: Node&lt;Data&gt;) &#x3D;&gt; boolean): void {
    this.matchFilter &#x3D; matchFilter;
  }

  public setToDisplay(
    toDisplay: NodeToDisplayFunction&lt;Data&gt; &#x3D; this.toDisplay,
  ): void {
    this.toDisplay &#x3D; toDisplay;
  }

  public setGetIcon(getIcon: NodeGetIconFunction&lt;Data&gt; &#x3D; this.getIcon): void {
    this.getIcon &#x3D; getIcon;
  }

  public setHasDetails(
    hasDetails: NodeHasDetailsFunction&lt;Data&gt; &#x3D; this.hasDetails,
  ): void {
    this.hasDetails &#x3D; hasDetails;
  }

  public deselectNode(node: Node&lt;Data&gt;): Promise&lt;void&gt; {
    this.selected.deselect(node);
    return Promise.resolve();
  }

  public async expandNode(node: Node&lt;Data&gt;, options?: EventOptions): Promise&lt;void&gt; {
    if (node.parent &amp;&amp; !node.parent.expanded) {
      console.log(&#x27;expand parent&#x27;, node.parent.display);
      node.parent?.expand({quite: true});
    }
    if (!options?.onlySelf) {
      // required to sync the expanstion state with the tree control
      // if the collpase is trigged by node.expand this state is not
      // sync with the tree control
      this.treeControl.expansionModel.select(node);
    }

    if (node.item.hasChildren &amp;&amp; !node.item.children?.length) {
      node.isLoading$.enable();

      const children &#x3D; await this.getChildren(node);

      // add the loaded children to the item object
      node.item.children &#x3D; children;

      node.addChildren(
        await Promise.all(children.map((child) &#x3D;&gt;
          this.toNode(node, child, node.depth + 1, node.onExpand, node.onCollapse),
        )),
      );

      node.isLoading$.disable();
    }

    console.log(&#x27;expand node&#x27;, node.display);
    this.expanded.select(node.id);

    // node.parent?.expand({quite: true});

    if (!options?.quite) {
      this.tree$.next(this.tree$.value);
    }

  }

  public async getChildren(node: Node&lt;Data&gt;): Promise&lt;Data[]&gt; {
    if (!this.childrenRemoteMethod) {
      throw new Error(
        &#x60;The node &#x27;${ node.id }&#x27; has unloaded children but the RXAP_TREE_DATA_SOURCE_CHILDREN_REMOTE_METHOD is not provided.&#x60;);
    }
    return this.childrenRemoteMethod.call(node);
  }

  public async getRoot(options: { cache?: boolean } &#x3D; {}): Promise&lt;Data | Data[]&gt; {
    const rootParameters &#x3D; await this.getRootParameters(options);
    return this.rootRemoteMethod.call(rootParameters);
  }

  public async getRootParameters(options: { cache?: boolean } &#x3D; {}): Promise&lt;RootParameters&gt; {
    return options as any;
  }

  // TODO : find better solution to allow the overwrite of the toNode method
  // without losing the custom preselect and preexpand function

  public getNodeById(id: string): Node&lt;Data&gt; | null {
    function getNodeById(node: Node&lt;Data&gt;, nodeId: string) {
      if (node.id &#x3D;&#x3D;&#x3D; nodeId) {
        return node;
      }
      if (node.hasNode(nodeId)) {
        return node.getNode(nodeId);
      } else {
        return null;
      }
    }

    return (
      this.tree$.value
        .map((node) &#x3D;&gt; getNodeById(node, id))
        .filter(Boolean)[0] || null
    );
  }

  public async toNode(
    parent: Node&lt;Data&gt; | null,
    item: Data,
    depth                                &#x3D; 0,
    onExpand: ExpandNodeFunction&lt;Data&gt;   &#x3D; this.expandNode.bind(this),
    onCollapse: ExpandNodeFunction&lt;Data&gt; &#x3D; this.collapseNode.bind(this),
    onSelect: ExpandNodeFunction&lt;Data&gt;   &#x3D; this.selectNode.bind(this),
    onDeselect: ExpandNodeFunction&lt;Data&gt; &#x3D; this.deselectNode.bind(this),
  ): Promise&lt;Node&lt;Data&gt;&gt; {
    return Node.ToNode(
      parent,
      item,
      depth,
      onExpand,
      onCollapse,
      this.toDisplay,
      this.getIcon,
      this.getType,
      onSelect,
      onDeselect,
      this.hasDetails,
      this.getStyle,
      this.nodeParameters,
    );
  }

  public collapseNode(node: Node&lt;Data&gt;, options?: EventOptions): Promise&lt;void&gt; {

    if (!options?.onlySelf) {
      // required to sync the expanstion state with the tree control
      // if the collpase is trigged by node.colapse this state is not
      // sync with the tree control
      this.treeControl.expansionModel.deselect(node);
    }

    this.expanded.deselect(node.id);

    if (!options?.quite) {
      this.tree$.next(this.tree$.value);
    }

    return Promise.resolve();
  }

  /**
   * Converts the tree structure into a list.
   *
   * @param tree
   * @param all true - include nodes children that are not expanded
   */
  public flatTree(tree: Node&lt;Data&gt;, all &#x3D; false): Array&lt;Node&lt;Data&gt;&gt; {
    return flatTree(tree, all);
  }

  public override destroy(): void {
    super.destroy();
    // TODO : add subscription handler to BaseDataSource
    if (this._expandedLocalStorageSubscription) {
      this._expandedLocalStorageSubscription.unsubscribe();
    }
    if (this._selectedLocalStorageSubscription) {
      this._selectedLocalStorageSubscription.unsubscribe();
    }
  }

  public refreshMatchFilter(): void {
    this._refreshMatchFilter.next();
  }

  public override async refresh(): Promise&lt;any&gt; {
    console.log(&#x27;selected&#x27;, this.selected.selected.map((node) &#x3D;&gt; node.id));
    console.log(&#x27;expanded&#x27;, this.expanded.selected.slice());
    await this.getTreeRoot({cache: false});

    // refresh all expanded nodes;

    // const loadExpandedNodes &#x3D; async (children: ReadonlyArray&lt;Node&lt;Data&gt;&gt;) &#x3D;&gt; {
    //   for (const child of children) {
    //     if (this.expanded.isSelected(child.id)) {
    //       // call the node method to ensure that the expanded property of
    //       // Node is set.
    //       await child.expand();
    //     }
    //
    //     if (child.hasChildren) {
    //       await loadExpandedNodes(child.children);
    //     }
    //   }
    // };
    //
    // await Promise.all(
    //   rootNodes
    //   .filter((node) &#x3D;&gt; node.hasChildren)
    //   .map((node) &#x3D;&gt; loadExpandedNodes(node.children)),
    // );

    // console.log(&#x27;selected&#x27;, this.selected.selected.map((node) &#x3D;&gt; node.id));
    //
    // const preSelected &#x3D; this.selected.selected.slice();
    // this.selected.clear();
    // preSelected.forEach(node &#x3D;&gt; {
    //   node?.select();
    // });

    // const selected: Array&lt;Node&lt;Data&gt;&gt; &#x3D; this.selected.selected
    // .map((node) &#x3D;&gt; this.getNodeById(node.id))
    // .filter(Boolean) as any;
    // this.selected.clear();
    // this.selected.select(...selected);
  }

  public override reset(): any {
    this.selected.clear();
    this.expanded.clear();
    return this.getTreeRoot();
  }

  public setGetStyle(getStyle: NodeGetStyleFunction&lt;any&gt; &#x3D; this.getStyle) {
    this.getStyle &#x3D; getStyle;
  }

  public setGetType(getType: NodeGetTypeFunction&lt;any&gt; &#x3D; this.getType) {
    this.getType &#x3D; getType;
  }

  /**
   * recall the getStyle, getIcon and toDisplay methods
   * and update the node objects
   */
  public updateNodes() {
    this._data$.value.forEach(node &#x3D;&gt; {
      node.style   &#x3D; this.getStyle(node.item);
      node.icon    &#x3D; coerceArray(this.getIcon(node.item));
      node.display &#x3D; this.toDisplay(node.item);
    });
    this._data$.next(this._data$.value);
  }

  protected override _connect(
    collectionViewer: Required&lt;BaseDataSourceViewer&gt;,
  ): Observable&lt;Array&lt;Node&lt;Data&gt;&gt;&gt; {
    this.init();
    this.treeControl.expansionModel.changed.pipe(
      tap(async change &#x3D;&gt; {
        if (isSelectionChange&lt;Node&lt;Data&gt;&gt;(change)) {
          const promiseList: Array&lt;Promise&lt;any&gt;&gt; &#x3D; [];
          if (change.added) {
            promiseList.push(...change.added.map((node) &#x3D;&gt; node.expand({onlySelf: true, quite: true})));
          }
          if (change.removed) {
            promiseList.push(...change.removed
              .slice()
              .reverse()
              .map((node) &#x3D;&gt; node.collapse({onlySelf: true, quite: true})));
          }
          await Promise.all(promiseList);
          this.tree$.next(this.tree$.value);
        }
      }),
    ).subscribe();

    let loadRoot: Promise&lt;Array&lt;Node&lt;Data&gt;&gt; | void&gt; &#x3D; Promise.resolve();

    if (this.tree$.value.length &#x3D;&#x3D;&#x3D; 0) {
      loadRoot &#x3D; this.getTreeRoot();
    }

    let autoRefreshExecuted &#x3D; false;

    return from(loadRoot).pipe(
      // tap((rootNodes) &#x3D;&gt; {
      //   if (rootNodes) {
      //     const promises: Promise&lt;any&gt;[] &#x3D; [];
      //     if (this.metadata.selectMultiple) {
      //       // if (!this.selected.hasValue()) {
      //       //   promises.push(
      //       //     ...rootNodes
      //       //     .filter((node) &#x3D;&gt; node.hasDetails)
      //       //     .map((node) &#x3D;&gt; node.select()),
      //       //   );
      //       // }
      //       if (!this.expanded.hasValue()) {
      //         promises.push(
      //           ...rootNodes
      //           .filter((node) &#x3D;&gt; node.hasChildren)
      //           .map((node) &#x3D;&gt; node.expand()),
      //         );
      //       }
      //     } else if (rootNodes.length) {
      //       const rootNode &#x3D; rootNodes[0];
      //       // if (!this.selected.hasValue()) {
      //       //   // TODO : rename hasDetails to isSelectable
      //       //   if (rootNode.hasDetails) {
      //       //     promises.push(rootNode.select());
      //       //   }
      //       // }
      //       if (!this.expanded.hasValue()) {
      //         promises.push(rootNode.expand());
      //       }
      //     }
      //     return Promise.all(promises);
      //   }
      //   return Promise.resolve();
      // }),
      switchMap(() &#x3D;&gt;
        merge(collectionViewer.viewChange, this._data$).pipe(
          map(() &#x3D;&gt; this._data$.value),
        ),
      ),
      switchMap(nodeList &#x3D;&gt; this._refreshMatchFilter.pipe(
        startWith(null),
        map(() &#x3D;&gt; nodeList.filter(node &#x3D;&gt; this.matchFilter(node))),
      )),
      tap(() &#x3D;&gt; {
        if (this._preSelected.length) {
          console.log(&#x27;restore selected&#x27;, this._preSelected);
          this.selected.clear();
          const nodes       &#x3D; this._preSelected.map((id) &#x3D;&gt; this.getNodeById(id));
          this._preSelected &#x3D; [];
          nodes.forEach(node &#x3D;&gt; {
            node?.select();
          });
        }
      }),
      tap(() &#x3D;&gt; {
        if (this.metadata.autoRefreshWithoutCache) {
          if (!autoRefreshExecuted) {
            autoRefreshExecuted &#x3D; true;
            console.log(&#x27;auto refresh&#x27;);
            this.refresh();
          }
        }
      }),
    );
  }

  private initSelected(): void {
    const key &#x3D; joinPath(&#x27;rxap/tree&#x27;, this.id, &#x27;selected&#x27;);
    if (this.metadata[&#x27;cacheSelected&#x27;]) {
      if (localStorage.getItem(key)) {
        try {
          this._preSelected &#x3D; JSON.parse(localStorage.getItem(key)!);
        } catch (e: any) {
          console.error(&#x27;parse expanded tree data source nodes failed&#x27;);
        }
      }
    }

    this.selected &#x3D; new SelectionModel&lt;Node&lt;Data&gt;&gt;(
      !!this.metadata.selectMultiple,
      [],
    );
    if (this.metadata[&#x27;cacheSelected&#x27;]) {
      this._selectedLocalStorageSubscription &#x3D; this.selected.changed
        .pipe(
          tap(() &#x3D;&gt;
            localStorage.setItem(
              key,
              JSON.stringify(this.selected.selected.map((s) &#x3D;&gt; s.id)),
            ),
          ),
        )
        .subscribe();
    }
  }

  private initExpanded(): void {
    const key    &#x3D; joinPath(&#x27;rxap/tree&#x27;, this.id, &#x27;expanded&#x27;);
    let expanded &#x3D; [];
    if (this.metadata[&#x27;cacheExpanded&#x27;]) {
      if (localStorage.getItem(key)) {
        try {
          expanded &#x3D; JSON.parse(localStorage.getItem(key)!);
        } catch (e: any) {
          console.error(&#x27;parse expanded tree data source nodes failed&#x27;);
        }
      }
    }

    this.expanded &#x3D; new SelectionModel&lt;string&gt;(
      this.metadata.expandMultiple !&#x3D;&#x3D; false,
      expanded,
    );
    if (this.metadata[&#x27;cacheExpanded&#x27;]) {
      this._expandedLocalStorageSubscription &#x3D; this.expanded.changed
        .pipe(
          tap(() &#x3D;&gt;
            localStorage.setItem(
              key,
              JSON.stringify(this.expanded.selected),
            ),
          ),
        )
        .subscribe();
    }
  }

}
</code></pre>
    </div>

</div>













                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'injectable';
            var COMPODOC_CURRENT_PAGE_URL = 'TreeDataSource.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script>
               $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               checkToggle(darkModeState);
               if ($darkModeToggleSwitchers.length > 0) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].addEventListener('change', function (event) {
                              darkModeState = !darkModeState;
                              toggleDarkMode(darkModeState);
                         });
                    }
               }
          </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    </body>
</html>