mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	Compare commits
	
		
			22 Commits
		
	
	
		
			v0.52.0-be
			...
			v0.52.2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					23e9bcfdc5 | ||
| 
						 | 
					96c4934c00 | ||
| 
						 | 
					31fb02f810 | ||
| 
						 | 
					e206d9cc68 | ||
| 
						 | 
					2d33f570f4 | ||
| 
						 | 
					15f8173add | ||
| 
						 | 
					7609bc78ec | ||
| 
						 | 
					b4ac41eff8 | ||
| 
						 | 
					de1c76ee3c | ||
| 
						 | 
					ec4fac421b | ||
| 
						 | 
					f587e0dfd9 | ||
| 
						 | 
					b5214e6cea | ||
| 
						 | 
					5fbaed61c1 | ||
| 
						 | 
					8fcc76ad6d | ||
| 
						 | 
					15a9ff4450 | ||
| 
						 | 
					0a4f419e5e | ||
| 
						 | 
					7fa531b3d6 | ||
| 
						 | 
					3cfca27b54 | ||
| 
						 | 
					103aa95ccf | ||
| 
						 | 
					339a6d7817 | ||
| 
						 | 
					93dd9274e7 | ||
| 
						 | 
					ca35527aeb | 
@@ -131,6 +131,78 @@
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
<h4 class="name" id="__private"><span class="type-signature"></span>__private<span class="type-signature"> :Object</span></h4>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<div class="description">
 | 
			
		||||
    This object contains "at your risk" and "no BC guarantees" objects for advanced use cases.
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <h5>Type:</h5>
 | 
			
		||||
    <ul>
 | 
			
		||||
        <li>
 | 
			
		||||
            
 | 
			
		||||
<span class="param-type">Object</span>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        </li>
 | 
			
		||||
    </ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line435">line 435</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
<h4 class="name" id="axios"><span class="type-signature"></span>axios<span class="type-signature"></span></h4>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -93,7 +93,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line21">line 21</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line23">line 23</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -204,7 +204,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line92">line 92</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line94">line 94</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -279,7 +279,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line118">line 118</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line120">line 120</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -347,7 +347,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line65">line 65</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line67">line 67</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -415,7 +415,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line67">line 67</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line69">line 69</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -486,7 +486,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line81">line 81</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line83">line 83</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -554,7 +554,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line76">line 76</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line78">line 78</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -622,7 +622,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line59">line 59</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line61">line 61</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -690,7 +690,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line63">line 63</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line65">line 65</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -758,7 +758,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line55">line 55</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line57">line 57</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -833,7 +833,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line123">line 123</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line125">line 125</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -901,7 +901,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line94">line 94</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line96">line 96</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -969,7 +969,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line88">line 88</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line90">line 90</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1037,7 +1037,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line90">line 90</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line92">line 92</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1112,7 +1112,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line128">line 128</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line130">line 130</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1180,7 +1180,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line104">line 104</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line106">line 106</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1248,7 +1248,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line57">line 57</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line59">line 59</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1316,7 +1316,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line61">line 61</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line63">line 63</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1384,7 +1384,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line69">line 69</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line71">line 71</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1452,7 +1452,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line71">line 71</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line73">line 73</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1528,7 +1528,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line405">line 405</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line407">line 407</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1630,7 +1630,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1023">line 1023</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1025">line 1025</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1830,7 +1830,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1135">line 1135</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1137">line 1137</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -1914,7 +1914,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line945">line 945</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line947">line 947</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2020,7 +2020,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line865">line 865</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line867">line 867</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2194,7 +2194,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line523">line 523</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line525">line 525</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2394,7 +2394,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line336">line 336</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line338">line 338</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2572,7 +2572,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line534">line 534</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line536">line 536</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2683,7 +2683,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line150">line 150</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line152">line 152</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2785,7 +2785,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line170">line 170</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line172">line 172</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2887,7 +2887,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line160">line 160</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line162">line 162</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -2989,7 +2989,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line184">line 184</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line186">line 186</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3091,7 +3091,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line218">line 218</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line220">line 220</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3199,7 +3199,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line660">line 660</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line662">line 662</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3305,7 +3305,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line229">line 229</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line231">line 231</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3456,7 +3456,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line465">line 465</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line467">line 467</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3626,7 +3626,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line555">line 555</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line557">line 557</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3781,7 +3781,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line489">line 489</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line491">line 491</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -3951,7 +3951,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line563">line 563</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line565">line 565</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -4057,7 +4057,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line629">line 629</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line631">line 631</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -4259,7 +4259,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line604">line 604</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line606">line 606</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -4437,7 +4437,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line545">line 545</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line547">line 547</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -4595,7 +4595,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line471">line 471</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line473">line 473</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -4765,7 +4765,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line571">line 571</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line573">line 573</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -4920,7 +4920,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line495">line 495</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line497">line 497</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5090,7 +5090,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line579">line 579</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line581">line 581</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5245,7 +5245,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line483">line 483</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line485">line 485</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5415,7 +5415,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line595">line 595</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line597">line 597</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5570,7 +5570,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line507">line 507</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line509">line 509</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5679,7 +5679,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line142">line 142</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line144">line 144</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5781,7 +5781,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line155">line 155</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line157">line 157</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -5932,7 +5932,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line477">line 477</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line479">line 479</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6102,7 +6102,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line587">line 587</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line589">line 589</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6257,7 +6257,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line501">line 501</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line503">line 503</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6366,7 +6366,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line315">line 315</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line317">line 317</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6475,7 +6475,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line808">line 808</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line810">line 810</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6577,7 +6577,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line787">line 787</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line789">line 789</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6679,7 +6679,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line756">line 756</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line758">line 758</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6781,7 +6781,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line907">line 907</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line909">line 909</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6888,7 +6888,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line891">line 891</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line893">line 893</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -6990,7 +6990,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line165">line 165</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line167">line 167</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -7141,7 +7141,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line441">line 441</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line443">line 443</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -7319,7 +7319,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line514">line 514</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line516">line 516</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -7474,7 +7474,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line447">line 447</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line449">line 449</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -7629,7 +7629,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line459">line 459</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line461">line 461</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -7784,7 +7784,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line453">line 453</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line455">line 455</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -7934,7 +7934,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line966">line 966</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line968">line 968</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -8040,7 +8040,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line304">line 304</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line306">line 306</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -8146,7 +8146,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line296">line 296</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line298">line 298</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -8252,7 +8252,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line291">line 291</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line293">line 293</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -8358,7 +8358,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line286">line 286</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line288">line 288</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -8464,7 +8464,7 @@ This method can be significantly faster than the getAttribute()
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line310">line 310</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line312">line 312</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -8856,7 +8856,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1010">line 1010</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1012">line 1012</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -9036,7 +9036,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1101">line 1101</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1103">line 1103</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -9216,7 +9216,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1109">line 1109</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1111">line 1111</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -9363,6 +9363,111 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <h4 class="name" id="saveNoteRevision"><span class="type-signature"></span>saveNoteRevision<span class="signature">()</span><span class="type-signature"> → {<a href="NoteRevision.html">NoteRevision</a>|null}</span></h4>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1172">line 1172</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h5>Returns:</h5>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
    <dt>
 | 
			
		||||
        Type
 | 
			
		||||
    </dt>
 | 
			
		||||
    <dd>
 | 
			
		||||
        
 | 
			
		||||
<span class="param-type"><a href="NoteRevision.html">NoteRevision</a></span>
 | 
			
		||||
|
 | 
			
		||||
 | 
			
		||||
<span class="param-type">null</span>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    </dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <h4 class="name" id="setAttribute"><span class="type-signature"></span>setAttribute<span class="signature">(type, name, value<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -9538,7 +9643,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line979">line 979</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line981">line 981</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -9718,7 +9823,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1085">line 1085</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1087">line 1087</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -9878,7 +9983,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1093">line 1093</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1095">line 1095</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -10120,7 +10225,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1052">line 1052</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1054">line 1054</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -10331,7 +10436,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1068">line 1068</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1070">line 1070</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -10542,7 +10647,7 @@ This is a low level method, for notes and branches use `note.deleteNote()` and '
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1077">line 1077</a>
 | 
			
		||||
        <a href="becca_entities_note.js.html">becca/entities/note.js</a>, <a href="becca_entities_note.js.html#line1079">line 1079</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,8 @@ const entityChangesService = require('../../services/entity_changes');
 | 
			
		||||
const AbstractEntity = require("./abstract_entity");
 | 
			
		||||
const NoteRevision = require("./note_revision");
 | 
			
		||||
const TaskContext = require("../../services/task_context.js");
 | 
			
		||||
const optionService = require("../../services/options.js");
 | 
			
		||||
const noteRevisionService = require("../../services/note_revisions.js");
 | 
			
		||||
 | 
			
		||||
const LABEL = 'label';
 | 
			
		||||
const RELATION = 'relation';
 | 
			
		||||
@@ -1192,6 +1194,41 @@ class Note extends AbstractEntity {
 | 
			
		||||
        return !(this.noteId in this.becca.notes);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return {NoteRevision|null}
 | 
			
		||||
     */
 | 
			
		||||
    saveNoteRevision() {
 | 
			
		||||
        const content = this.getContent();
 | 
			
		||||
 | 
			
		||||
        if (!content || (Buffer.isBuffer(content) && content.byteLength === 0)) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const contentMetadata = this.getContentMetadata();
 | 
			
		||||
 | 
			
		||||
        const noteRevision = new NoteRevision({
 | 
			
		||||
            noteId: this.noteId,
 | 
			
		||||
            // title and text should be decrypted now
 | 
			
		||||
            title: this.title,
 | 
			
		||||
            type: this.type,
 | 
			
		||||
            mime: this.mime,
 | 
			
		||||
            isProtected: false, // will be fixed in the protectNoteRevisions() call
 | 
			
		||||
            utcDateLastEdited: this.utcDateModified > contentMetadata.utcDateModified
 | 
			
		||||
                ? this.utcDateModified
 | 
			
		||||
                : contentMetadata.utcDateModified,
 | 
			
		||||
            utcDateCreated: dateUtils.utcNowDateTime(),
 | 
			
		||||
            utcDateModified: dateUtils.utcNowDateTime(),
 | 
			
		||||
            dateLastEdited: this.dateModified > contentMetadata.dateModified
 | 
			
		||||
                ? this.dateModified
 | 
			
		||||
                : contentMetadata.dateModified,
 | 
			
		||||
            dateCreated: dateUtils.localNowDateTime()
 | 
			
		||||
        }).save();
 | 
			
		||||
 | 
			
		||||
        noteRevision.setContent(content);
 | 
			
		||||
 | 
			
		||||
        return noteRevision;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    beforeSaving() {
 | 
			
		||||
        super.beforeSaving();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -454,6 +454,15 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
     * @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
 | 
			
		||||
     */
 | 
			
		||||
    this.getAppInfo = () => appInfo
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This object contains "at your risk" and "no BC guarantees" objects for advanced use cases.
 | 
			
		||||
     *
 | 
			
		||||
     * @type {{becca: Becca}}
 | 
			
		||||
     */
 | 
			
		||||
    this.__private = {
 | 
			
		||||
        becca
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = BackendScriptApi;
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -395,7 +395,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line104">line 104</a>
 | 
			
		||||
        <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line124">line 124</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -129,6 +129,26 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Open a note in a new split.
 | 
			
		||||
     *
 | 
			
		||||
     * @param {string} notePath (or noteId)
 | 
			
		||||
     * @param {boolean} activate - set to true to activate the new split, false to stay on the current split
 | 
			
		||||
     * @return {Promise<void>}
 | 
			
		||||
     */
 | 
			
		||||
    this.openSplitWithNote = async (notePath, activate) => {
 | 
			
		||||
        await ws.waitForMaxKnownEntityChangeId();
 | 
			
		||||
 | 
			
		||||
        const subContexts = appContext.tabManager.getActiveContext().getSubContexts();
 | 
			
		||||
        const {ntxId} = subContexts[subContexts.length - 1];
 | 
			
		||||
 | 
			
		||||
        appContext.triggerCommand("openNewNoteSplit", {ntxId, notePath});
 | 
			
		||||
 | 
			
		||||
        if (activate) {
 | 
			
		||||
            appContext.triggerEvent('focusAndSelectTitle');
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @typedef {Object} ToolbarButtonOptions
 | 
			
		||||
     * @property {string} title
 | 
			
		||||
@@ -412,7 +432,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
 | 
			
		||||
    this.getActiveTabTextEditor = callback => {
 | 
			
		||||
        console.warn("api.getActiveTabTextEditor() is deprecated, use getActiveContextTextEditor() instead.");
 | 
			
		||||
 | 
			
		||||
        return appContext.tabManager.getActiveContextTextEditor(callback);
 | 
			
		||||
        return appContext.tabManager.getActiveContext()?.getTextEditor(callback);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -421,7 +441,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
 | 
			
		||||
     * @method
 | 
			
		||||
     * @returns {Promise<CKEditor>} instance of CKEditor
 | 
			
		||||
     */
 | 
			
		||||
    this.getActiveContextTextEditor = () => appContext.tabManager.getActiveContextTextEditor();
 | 
			
		||||
    this.getActiveContextTextEditor = () => appContext.tabManager.getActiveContext()?.getTextEditor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * See https://codemirror.net/doc/manual.html#api
 | 
			
		||||
@@ -429,7 +449,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
 | 
			
		||||
     * @method
 | 
			
		||||
     * @returns {Promise<CodeMirror>} instance of CodeMirror
 | 
			
		||||
     */
 | 
			
		||||
    this.getActiveContextCodeEditor = () => appContext.tabManager.getActiveContextCodeEditor();
 | 
			
		||||
    this.getActiveContextCodeEditor = () => appContext.tabManager.getActiveContext()?.getCodeEditor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get access to the widget handling note detail. Methods like `getWidgetType()` and `getTypeWidget()` to get to the
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								libraries/ckeditor/ckeditor.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								libraries/ckeditor/ckeditor.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,70 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a function, that, as long as it continues to be invoked, will not
 | 
			
		||||
 * be triggered. The function will be called after it stops being called for
 | 
			
		||||
 * N milliseconds. If `immediate` is passed, trigger the function on the
 | 
			
		||||
 * leading edge, instead of the trailing. The function also has a property 'clear'
 | 
			
		||||
 * that is a function which will clear the timer to prevent previously scheduled executions.
 | 
			
		||||
 *
 | 
			
		||||
 * @source underscore.js
 | 
			
		||||
 * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/
 | 
			
		||||
 * @param {Function} function to wrap
 | 
			
		||||
 * @param {Number} timeout in ms (`100`)
 | 
			
		||||
 * @param {Boolean} whether to execute at the beginning (`false`)
 | 
			
		||||
 * @api public
 | 
			
		||||
 */
 | 
			
		||||
function debounce(func, wait_ms, immediate){
 | 
			
		||||
  var timeout, args, context, timestamp, result;
 | 
			
		||||
  if (null == wait_ms) wait_ms = 100;
 | 
			
		||||
 | 
			
		||||
  function later() {
 | 
			
		||||
    var last = Date.now() - timestamp;
 | 
			
		||||
 | 
			
		||||
    if (last < wait_ms && last >= 0) {
 | 
			
		||||
      timeout = setTimeout(later, wait_ms - last);
 | 
			
		||||
    } else {
 | 
			
		||||
      timeout = null;
 | 
			
		||||
      if (!immediate) {
 | 
			
		||||
        result = func.apply(context, args);
 | 
			
		||||
        context = args = null;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  var debounced = function(){
 | 
			
		||||
    context = this;
 | 
			
		||||
    args = arguments;
 | 
			
		||||
    timestamp = Date.now();
 | 
			
		||||
    var callNow = immediate && !timeout;
 | 
			
		||||
    if (!timeout) timeout = setTimeout(later, wait_ms);
 | 
			
		||||
    if (callNow) {
 | 
			
		||||
      result = func.apply(context, args);
 | 
			
		||||
      context = args = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return result;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  debounced.clear = function() {
 | 
			
		||||
    if (timeout) {
 | 
			
		||||
      clearTimeout(timeout);
 | 
			
		||||
      timeout = null;
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  debounced.flush = function() {
 | 
			
		||||
    if (timeout) {
 | 
			
		||||
      result = func.apply(context, args);
 | 
			
		||||
      context = args = null;
 | 
			
		||||
 | 
			
		||||
      clearTimeout(timeout);
 | 
			
		||||
      timeout = null;
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  return debounced;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Adds compatibility for ES modules
 | 
			
		||||
debounce.debounce = debounce;
 | 
			
		||||
 | 
			
		||||
export default debounce;
 | 
			
		||||
							
								
								
									
										46
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										46
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "trilium",
 | 
			
		||||
  "version": "0.51.2",
 | 
			
		||||
  "version": "0.52.1-beta",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "trilium",
 | 
			
		||||
      "version": "0.51.2",
 | 
			
		||||
      "version": "0.52.1-beta",
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "AGPL-3.0-only",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
        "commonmark": "0.30.0",
 | 
			
		||||
        "cookie-parser": "1.4.6",
 | 
			
		||||
        "csurf": "1.11.0",
 | 
			
		||||
        "dayjs": "1.11.2",
 | 
			
		||||
        "dayjs": "1.11.3",
 | 
			
		||||
        "ejs": "3.1.8",
 | 
			
		||||
        "electron-debug": "3.2.0",
 | 
			
		||||
        "electron-dl": "3.3.1",
 | 
			
		||||
@@ -65,7 +65,7 @@
 | 
			
		||||
        "tmp": "0.2.1",
 | 
			
		||||
        "turndown": "7.1.1",
 | 
			
		||||
        "unescape": "1.0.1",
 | 
			
		||||
        "ws": "8.6.0",
 | 
			
		||||
        "ws": "8.7.0",
 | 
			
		||||
        "yauzl": "2.10.0"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
@@ -82,7 +82,7 @@
 | 
			
		||||
        "jsdoc": "3.6.10",
 | 
			
		||||
        "lorem-ipsum": "2.0.4",
 | 
			
		||||
        "rcedit": "3.0.1",
 | 
			
		||||
        "webpack": "5.72.1",
 | 
			
		||||
        "webpack": "5.73.0",
 | 
			
		||||
        "webpack-cli": "4.9.2"
 | 
			
		||||
      },
 | 
			
		||||
      "optionalDependencies": {
 | 
			
		||||
@@ -3115,9 +3115,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dayjs": {
 | 
			
		||||
      "version": "1.11.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.2.tgz",
 | 
			
		||||
      "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw=="
 | 
			
		||||
      "version": "1.11.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz",
 | 
			
		||||
      "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/debug": {
 | 
			
		||||
      "version": "4.3.4",
 | 
			
		||||
@@ -10252,9 +10252,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/webpack": {
 | 
			
		||||
      "version": "5.72.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
 | 
			
		||||
      "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==",
 | 
			
		||||
      "version": "5.73.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz",
 | 
			
		||||
      "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@types/eslint-scope": "^3.7.3",
 | 
			
		||||
@@ -10594,9 +10594,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ws": {
 | 
			
		||||
      "version": "8.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
 | 
			
		||||
      "version": "8.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz",
 | 
			
		||||
      "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=10.0.0"
 | 
			
		||||
      },
 | 
			
		||||
@@ -13271,9 +13271,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "dayjs": {
 | 
			
		||||
      "version": "1.11.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.2.tgz",
 | 
			
		||||
      "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw=="
 | 
			
		||||
      "version": "1.11.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz",
 | 
			
		||||
      "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
 | 
			
		||||
    },
 | 
			
		||||
    "debug": {
 | 
			
		||||
      "version": "4.3.4",
 | 
			
		||||
@@ -18776,9 +18776,9 @@
 | 
			
		||||
      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
 | 
			
		||||
    },
 | 
			
		||||
    "webpack": {
 | 
			
		||||
      "version": "5.72.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
 | 
			
		||||
      "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==",
 | 
			
		||||
      "version": "5.73.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz",
 | 
			
		||||
      "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@types/eslint-scope": "^3.7.3",
 | 
			
		||||
@@ -19028,9 +19028,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ws": {
 | 
			
		||||
      "version": "8.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
 | 
			
		||||
      "version": "8.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz",
 | 
			
		||||
      "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==",
 | 
			
		||||
      "requires": {}
 | 
			
		||||
    },
 | 
			
		||||
    "xdg-basedir": {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "name": "trilium",
 | 
			
		||||
  "productName": "Trilium Notes",
 | 
			
		||||
  "description": "Trilium Notes",
 | 
			
		||||
  "version": "0.52.0-beta",
 | 
			
		||||
  "version": "0.52.2",
 | 
			
		||||
  "license": "AGPL-3.0-only",
 | 
			
		||||
  "main": "electron.js",
 | 
			
		||||
  "bin": {
 | 
			
		||||
@@ -36,7 +36,7 @@
 | 
			
		||||
    "commonmark": "0.30.0",
 | 
			
		||||
    "cookie-parser": "1.4.6",
 | 
			
		||||
    "csurf": "1.11.0",
 | 
			
		||||
    "dayjs": "1.11.2",
 | 
			
		||||
    "dayjs": "1.11.3",
 | 
			
		||||
    "ejs": "3.1.8",
 | 
			
		||||
    "electron-debug": "3.2.0",
 | 
			
		||||
    "electron-dl": "3.3.1",
 | 
			
		||||
@@ -80,7 +80,7 @@
 | 
			
		||||
    "tmp": "0.2.1",
 | 
			
		||||
    "turndown": "7.1.1",
 | 
			
		||||
    "unescape": "1.0.1",
 | 
			
		||||
    "ws": "8.6.0",
 | 
			
		||||
    "ws": "8.7.0",
 | 
			
		||||
    "yauzl": "2.10.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
@@ -94,7 +94,7 @@
 | 
			
		||||
    "jsdoc": "3.6.10",
 | 
			
		||||
    "lorem-ipsum": "2.0.4",
 | 
			
		||||
    "rcedit": "3.0.1",
 | 
			
		||||
    "webpack": "5.72.1",
 | 
			
		||||
    "webpack": "5.73.0",
 | 
			
		||||
    "webpack-cli": "4.9.2"
 | 
			
		||||
  },
 | 
			
		||||
  "optionalDependencies": {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,9 @@ const AbstractEntity = require("./abstract_entity");
 | 
			
		||||
const sql = require("../../services/sql");
 | 
			
		||||
const dateUtils = require("../../services/date_utils");
 | 
			
		||||
const utils = require("../../services/utils.js");
 | 
			
		||||
const TaskContext = require("../../services/task_context.js");
 | 
			
		||||
const cls = require("../../services/cls.js");
 | 
			
		||||
const log = require("../../services/log.js");
 | 
			
		||||
const TaskContext = require("../../services/task_context");
 | 
			
		||||
const cls = require("../../services/cls");
 | 
			
		||||
const log = require("../../services/log");
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Branch represents a relationship between a child note and its parent note. Trilium allows a note to have multiple
 | 
			
		||||
@@ -137,6 +137,18 @@ class Branch extends AbstractEntity {
 | 
			
		||||
 | 
			
		||||
        taskContext.increaseProgressCount();
 | 
			
		||||
 | 
			
		||||
        const note = this.getNote();
 | 
			
		||||
 | 
			
		||||
        if (!taskContext.noteDeletionHandlerTriggered) {
 | 
			
		||||
            const parentBranches = note.getParentBranches();
 | 
			
		||||
 | 
			
		||||
            if (parentBranches.length === 1 && parentBranches[0] === this) {
 | 
			
		||||
                // needs to be run before branches and attributes are deleted and thus attached relations disappear
 | 
			
		||||
                const handlers = require("../../services/handlers");
 | 
			
		||||
                handlers.runAttachedRelations(note, 'runOnNoteDeletion', note);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.branchId === 'root'
 | 
			
		||||
            || this.noteId === 'root'
 | 
			
		||||
            || this.noteId === cls.getHoistedNoteId()) {
 | 
			
		||||
@@ -146,7 +158,6 @@ class Branch extends AbstractEntity {
 | 
			
		||||
 | 
			
		||||
        this.markAsDeleted(deleteId);
 | 
			
		||||
 | 
			
		||||
        const note = this.getNote();
 | 
			
		||||
        const notDeletedBranches = note.getParentBranches();
 | 
			
		||||
 | 
			
		||||
        if (notDeletedBranches.length === 0) {
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ const dateUtils = require('../../services/date_utils');
 | 
			
		||||
const entityChangesService = require('../../services/entity_changes');
 | 
			
		||||
const AbstractEntity = require("./abstract_entity");
 | 
			
		||||
const NoteRevision = require("./note_revision");
 | 
			
		||||
const TaskContext = require("../../services/task_context.js");
 | 
			
		||||
const TaskContext = require("../../services/task_context");
 | 
			
		||||
 | 
			
		||||
const LABEL = 'label';
 | 
			
		||||
const RELATION = 'relation';
 | 
			
		||||
@@ -1133,6 +1133,10 @@ class Note extends AbstractEntity {
 | 
			
		||||
     * @param {TaskContext} [taskContext]
 | 
			
		||||
     */
 | 
			
		||||
    deleteNote(deleteId, taskContext) {
 | 
			
		||||
        if (this.isDeleted) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!deleteId) {
 | 
			
		||||
            deleteId = utils.randomString(10);
 | 
			
		||||
        }
 | 
			
		||||
@@ -1141,6 +1145,11 @@ class Note extends AbstractEntity {
 | 
			
		||||
            taskContext = new TaskContext('no-progress-reporting');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // needs to be run before branches and attributes are deleted and thus attached relations disappear
 | 
			
		||||
        const handlers = require("../../services/handlers");
 | 
			
		||||
        handlers.runAttachedRelations(this, 'runOnNoteDeletion', this);
 | 
			
		||||
        taskContext.noteDeletionHandlerTriggered = true;
 | 
			
		||||
 | 
			
		||||
        for (const branch of this.getParentBranches()) {
 | 
			
		||||
            branch.deleteBranch(deleteId, taskContext);
 | 
			
		||||
        }
 | 
			
		||||
@@ -1164,6 +1173,41 @@ class Note extends AbstractEntity {
 | 
			
		||||
        return !(this.noteId in this.becca.notes);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return {NoteRevision|null}
 | 
			
		||||
     */
 | 
			
		||||
    saveNoteRevision() {
 | 
			
		||||
        const content = this.getContent();
 | 
			
		||||
 | 
			
		||||
        if (!content || (Buffer.isBuffer(content) && content.byteLength === 0)) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const contentMetadata = this.getContentMetadata();
 | 
			
		||||
 | 
			
		||||
        const noteRevision = new NoteRevision({
 | 
			
		||||
            noteId: this.noteId,
 | 
			
		||||
            // title and text should be decrypted now
 | 
			
		||||
            title: this.title,
 | 
			
		||||
            type: this.type,
 | 
			
		||||
            mime: this.mime,
 | 
			
		||||
            isProtected: false, // will be fixed in the protectNoteRevisions() call
 | 
			
		||||
            utcDateLastEdited: this.utcDateModified > contentMetadata.utcDateModified
 | 
			
		||||
                ? this.utcDateModified
 | 
			
		||||
                : contentMetadata.utcDateModified,
 | 
			
		||||
            utcDateCreated: dateUtils.utcNowDateTime(),
 | 
			
		||||
            utcDateModified: dateUtils.utcNowDateTime(),
 | 
			
		||||
            dateLastEdited: this.dateModified > contentMetadata.dateModified
 | 
			
		||||
                ? this.dateModified
 | 
			
		||||
                : contentMetadata.dateModified,
 | 
			
		||||
            dateCreated: dateUtils.localNowDateTime()
 | 
			
		||||
        }).save();
 | 
			
		||||
 | 
			
		||||
        noteRevision.setContent(content);
 | 
			
		||||
 | 
			
		||||
        return noteRevision;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    beforeSaving() {
 | 
			
		||||
        super.beforeSaving();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								src/public/app/services/debounce.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/public/app/services/debounce.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a function, that, as long as it continues to be invoked, will not
 | 
			
		||||
 * be triggered. The function will be called after it stops being called for
 | 
			
		||||
 * N milliseconds. If `immediate` is passed, trigger the function on the
 | 
			
		||||
 * leading edge, instead of the trailing. The function also has a property 'clear'
 | 
			
		||||
 * that is a function which will clear the timer to prevent previously scheduled executions.
 | 
			
		||||
 *
 | 
			
		||||
 * @source underscore.js
 | 
			
		||||
 * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/
 | 
			
		||||
 * @param {Function} function to wrap
 | 
			
		||||
 * @param {Number} timeout in ms (`100`)
 | 
			
		||||
 * @param {Boolean} whether to execute at the beginning (`false`)
 | 
			
		||||
 * @api public
 | 
			
		||||
 */
 | 
			
		||||
function debounce(func, wait_ms, immediate){
 | 
			
		||||
    var timeout, args, context, timestamp, result;
 | 
			
		||||
    if (null == wait_ms) wait_ms = 100;
 | 
			
		||||
 | 
			
		||||
    function later() {
 | 
			
		||||
        var last = Date.now() - timestamp;
 | 
			
		||||
 | 
			
		||||
        if (last < wait_ms && last >= 0) {
 | 
			
		||||
            timeout = setTimeout(later, wait_ms - last);
 | 
			
		||||
        } else {
 | 
			
		||||
            timeout = null;
 | 
			
		||||
            if (!immediate) {
 | 
			
		||||
                result = func.apply(context, args);
 | 
			
		||||
                context = args = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    var debounced = function(){
 | 
			
		||||
        context = this;
 | 
			
		||||
        args = arguments;
 | 
			
		||||
        timestamp = Date.now();
 | 
			
		||||
        var callNow = immediate && !timeout;
 | 
			
		||||
        if (!timeout) timeout = setTimeout(later, wait_ms);
 | 
			
		||||
        if (callNow) {
 | 
			
		||||
            result = func.apply(context, args);
 | 
			
		||||
            context = args = null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    debounced.clear = function() {
 | 
			
		||||
        if (timeout) {
 | 
			
		||||
            clearTimeout(timeout);
 | 
			
		||||
            timeout = null;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    debounced.flush = function() {
 | 
			
		||||
        if (timeout) {
 | 
			
		||||
            result = func.apply(context, args);
 | 
			
		||||
            context = args = null;
 | 
			
		||||
 | 
			
		||||
            clearTimeout(timeout);
 | 
			
		||||
            timeout = null;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    return debounced;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Adds compatibility for ES modules
 | 
			
		||||
debounce.debounce = debounce;
 | 
			
		||||
 | 
			
		||||
export default debounce;
 | 
			
		||||
@@ -101,6 +101,26 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Open a note in a new split.
 | 
			
		||||
     *
 | 
			
		||||
     * @param {string} notePath (or noteId)
 | 
			
		||||
     * @param {boolean} activate - set to true to activate the new split, false to stay on the current split
 | 
			
		||||
     * @return {Promise<void>}
 | 
			
		||||
     */
 | 
			
		||||
    this.openSplitWithNote = async (notePath, activate) => {
 | 
			
		||||
        await ws.waitForMaxKnownEntityChangeId();
 | 
			
		||||
 | 
			
		||||
        const subContexts = appContext.tabManager.getActiveContext().getSubContexts();
 | 
			
		||||
        const {ntxId} = subContexts[subContexts.length - 1];
 | 
			
		||||
 | 
			
		||||
        appContext.triggerCommand("openNewNoteSplit", {ntxId, notePath});
 | 
			
		||||
 | 
			
		||||
        if (activate) {
 | 
			
		||||
            appContext.triggerEvent('focusAndSelectTitle');
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @typedef {Object} ToolbarButtonOptions
 | 
			
		||||
     * @property {string} title
 | 
			
		||||
 
 | 
			
		||||
@@ -248,6 +248,13 @@ class NoteContext extends Component {
 | 
			
		||||
            ntxId: this.ntxId
 | 
			
		||||
        }));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async getTypeWidget() {
 | 
			
		||||
        return new Promise(resolve => appContext.triggerCommand('executeWithTypeWidget', {
 | 
			
		||||
            resolve,
 | 
			
		||||
            ntxId: this.ntxId
 | 
			
		||||
        }));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default NoteContext;
 | 
			
		||||
 
 | 
			
		||||
@@ -24,8 +24,8 @@ async function createNote(parentNotePath, options = {}) {
 | 
			
		||||
        options.saveSelection = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (options.saveSelection && utils.isCKEditorInitialized()) {
 | 
			
		||||
        [options.title, options.content] = parseSelectedHtml(window.cutToNote.getSelectedHtml());
 | 
			
		||||
    if (options.saveSelection) {
 | 
			
		||||
        [options.title, options.content] = parseSelectedHtml(options.textEditor.getSelectedHtml());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const parentNoteId = treeService.getNoteIdFromNotePath(parentNotePath);
 | 
			
		||||
@@ -46,9 +46,9 @@ async function createNote(parentNotePath, options = {}) {
 | 
			
		||||
        mime: options.mime
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if (options.saveSelection && utils.isCKEditorInitialized()) {
 | 
			
		||||
    if (options.saveSelection) {
 | 
			
		||||
        // we remove the selection only after it was saved to server to make sure we don't lose anything
 | 
			
		||||
        window.cutToNote.removeSelection();
 | 
			
		||||
        options.textEditor.removeSelection();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    await ws.waitForMaxKnownEntityChangeId();
 | 
			
		||||
 
 | 
			
		||||
@@ -306,7 +306,8 @@ export default class TabManager extends Component {
 | 
			
		||||
                const mainNoteContexts = this.getNoteContexts().filter(nc => nc.isMainContext());
 | 
			
		||||
 | 
			
		||||
                if (mainNoteContexts.length === 1) {
 | 
			
		||||
                    mainNoteContexts[0].setEmpty();
 | 
			
		||||
                    await this.clearLastMainNoteContext(noteContextToRemove);
 | 
			
		||||
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -317,7 +318,7 @@ export default class TabManager extends Component {
 | 
			
		||||
            const noteContextsToRemove = noteContextToRemove.getSubContexts();
 | 
			
		||||
            const ntxIdsToRemove = noteContextsToRemove.map(nc => nc.ntxId);
 | 
			
		||||
 | 
			
		||||
            await this.triggerEvent('beforeTabRemove', { ntxIds: ntxIdsToRemove });
 | 
			
		||||
            await this.triggerEvent('beforeNoteContextRemove', { ntxIds: ntxIdsToRemove });
 | 
			
		||||
 | 
			
		||||
            if (!noteContextToRemove.isMainContext()) {
 | 
			
		||||
                await this.activateNoteContext(noteContextToRemove.getMainContext().ntxId);
 | 
			
		||||
@@ -336,6 +337,30 @@ export default class TabManager extends Component {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.removeNoteContexts(noteContextsToRemove);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async clearLastMainNoteContext(noteContextToClear) {
 | 
			
		||||
        noteContextToClear.setEmpty();
 | 
			
		||||
 | 
			
		||||
        // activate main split
 | 
			
		||||
        await this.activateNoteContext(noteContextToClear.ntxId);
 | 
			
		||||
 | 
			
		||||
        // remove all other splits
 | 
			
		||||
        const noteContextsToRemove = noteContextToClear.getSubContexts()
 | 
			
		||||
            .filter(ntx => ntx.ntxId !== noteContextToClear.ntxId);
 | 
			
		||||
 | 
			
		||||
        const ntxIdsToRemove = noteContextsToRemove.map(ntx => ntx.ntxId);
 | 
			
		||||
 | 
			
		||||
        await this.triggerEvent('beforeNoteContextRemove', {ntxIds: ntxIdsToRemove});
 | 
			
		||||
 | 
			
		||||
        this.removeNoteContexts(noteContextsToRemove);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    removeNoteContexts(noteContextsToRemove) {
 | 
			
		||||
        const ntxIdsToRemove = noteContextsToRemove.map(nc => nc.ntxId);
 | 
			
		||||
 | 
			
		||||
        this.children = this.children.filter(nc => !ntxIdsToRemove.includes(nc.ntxId));
 | 
			
		||||
 | 
			
		||||
        this.recentlyClosedTabs.push(noteContextsToRemove);
 | 
			
		||||
@@ -343,7 +368,6 @@ export default class TabManager extends Component {
 | 
			
		||||
        this.triggerEvent('noteContextRemoved', {ntxIds: ntxIdsToRemove});
 | 
			
		||||
 | 
			
		||||
        this.tabsUpdate.scheduleUpdate();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    tabReorderEvent({ntxIdsInOrder}) {
 | 
			
		||||
 
 | 
			
		||||
@@ -292,10 +292,6 @@ function copySelectionToClipboard() {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function isCKEditorInitialized() {
 | 
			
		||||
    return !!(window && window.cutToNote);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function dynamicRequire(moduleName) {
 | 
			
		||||
    if (typeof __non_webpack_require__ !== 'undefined') {
 | 
			
		||||
        return __non_webpack_require__(moduleName);
 | 
			
		||||
@@ -405,7 +401,6 @@ export default {
 | 
			
		||||
    clearBrowserCache,
 | 
			
		||||
    normalizeShortcut,
 | 
			
		||||
    copySelectionToClipboard,
 | 
			
		||||
    isCKEditorInitialized,
 | 
			
		||||
    dynamicRequire,
 | 
			
		||||
    timeLimit,
 | 
			
		||||
    initHelpDropdown,
 | 
			
		||||
 
 | 
			
		||||
@@ -233,6 +233,9 @@ const ATTR_HELP = {
 | 
			
		||||
        "runOnNoteCreation": "executes when note is created on backend",
 | 
			
		||||
        "runOnNoteTitleChange": "executes when note title is changed (includes note creation as well)",
 | 
			
		||||
        "runOnNoteChange": "executes when note is changed (includes note creation as well)",
 | 
			
		||||
        "runOnNoteDeletion": "executes when note is being deleted",
 | 
			
		||||
        "runOnBranchCreation": "executes when a branch is created. Branch is a link between parent note and child note and is created e.g. when cloning or moving note.",
 | 
			
		||||
        "runOnBranchDeletion": "executes when a branch is deleted. Branch is a link between parent note and child note and is deleted e.g. when moving note (old branch/link is deleted).",
 | 
			
		||||
        "runOnChildNoteCreation": "executes when new note is created under this note",
 | 
			
		||||
        "runOnAttributeCreation": "executes when new attribute is created under this note",
 | 
			
		||||
        "runOnAttributeChange": "executes when attribute is changed under this note",
 | 
			
		||||
 
 | 
			
		||||
@@ -216,7 +216,7 @@ export default class NoteDetailWidget extends NoteContextAwareWidget {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async beforeTabRemoveEvent({ntxIds}) {
 | 
			
		||||
    async beforeNoteContextRemoveEvent({ntxIds}) {
 | 
			
		||||
        if (this.isNoteContext(ntxIds)) {
 | 
			
		||||
            await this.spacedUpdate.updateNowIfNecessary();
 | 
			
		||||
        }
 | 
			
		||||
@@ -327,7 +327,8 @@ export default class NoteDetailWidget extends NoteContextAwareWidget {
 | 
			
		||||
        // without await as this otherwise causes deadlock through component mutex
 | 
			
		||||
        noteCreateService.createNote(appContext.tabManager.getActiveContextNotePath(), {
 | 
			
		||||
            isProtected: note.isProtected,
 | 
			
		||||
            saveSelection: true
 | 
			
		||||
            saveSelection: true,
 | 
			
		||||
            textEditor: await this.noteContext.getTextEditor()
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -341,4 +342,16 @@ export default class NoteDetailWidget extends NoteContextAwareWidget {
 | 
			
		||||
            this.refresh();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async executeWithTypeWidgetEvent({resolve, ntxId}) {
 | 
			
		||||
        if (!this.isNoteContext(ntxId)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        await this.initialized;
 | 
			
		||||
 | 
			
		||||
        await this.getWidgetType();
 | 
			
		||||
 | 
			
		||||
        resolve(this.getTypeWidget());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -87,7 +87,7 @@ export default class NoteTitleWidget extends NoteContextAwareWidget {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async beforeTabRemoveEvent({ntxIds}) {
 | 
			
		||||
    async beforeNoteContextRemoveEvent({ntxIds}) {
 | 
			
		||||
        if (this.isNoteContext(ntxIds)) {
 | 
			
		||||
            await this.spacedUpdate.updateNowIfNecessary();
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -134,8 +134,6 @@ const TPL = `
 | 
			
		||||
                            Delete note</a>
 | 
			
		||||
                        <a class="dropdown-item" href="#" data-action-add="deleteNoteRevisions">
 | 
			
		||||
                            Delete note revisions</a>
 | 
			
		||||
                        <a class="dropdown-item" href="#" data-action-add="moveNote">
 | 
			
		||||
                            Delete note revisions</a>
 | 
			
		||||
                        <a class="dropdown-item" href="#" data-action-add="deleteLabel">
 | 
			
		||||
                            Delete label</a>
 | 
			
		||||
                        <a class="dropdown-item" href="#" data-action-add="deleteRelation">
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ import libraryLoader from "../../services/library_loader.js";
 | 
			
		||||
import TypeWidget from "./type_widget.js";
 | 
			
		||||
import utils from '../../services/utils.js';
 | 
			
		||||
import froca from "../../services/froca.js";
 | 
			
		||||
import debounce from "../../../../../libraries/lodash.debounce.js";
 | 
			
		||||
import debounce from "../../services/debounce.js";
 | 
			
		||||
 | 
			
		||||
const {sleep} = utils;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -359,7 +359,9 @@ pre:not(.CodeMirror-line) {
 | 
			
		||||
 | 
			
		||||
.go-to-selected-note-button.disabled, .go-to-selected-note-button.disabled:hover {
 | 
			
		||||
    cursor: inherit;
 | 
			
		||||
    color: var(--button-disabled-background-color) !important;
 | 
			
		||||
    color: var(--button-disabled-text-color) !important;
 | 
			
		||||
    background-color: var(--button-disabled-background-color) !important;
 | 
			
		||||
    text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.note-autocomplete-input {
 | 
			
		||||
@@ -966,3 +968,8 @@ input {
 | 
			
		||||
.note-split.full-content-width {
 | 
			
		||||
    max-width: 999999px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
button.close:hover {
 | 
			
		||||
    text-shadow: none;
 | 
			
		||||
    color: currentColor;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,11 @@
 | 
			
		||||
    --more-accented-background-color: #777;
 | 
			
		||||
 | 
			
		||||
    --button-background-color: transparent;
 | 
			
		||||
    --button-disabled-background-color: #222;
 | 
			
		||||
    --button-border-color: #ccc;
 | 
			
		||||
    --button-text-color: currentColor;
 | 
			
		||||
    --button-border-radius: 5px;
 | 
			
		||||
    --button-disabled-background-color: transparent;
 | 
			
		||||
    --button-disabled-text-color: #999;
 | 
			
		||||
 | 
			
		||||
    --primary-button-background-color: #888;
 | 
			
		||||
    --primary-button-text-color: white;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,10 +25,11 @@ html {
 | 
			
		||||
    --more-accented-background-color: #ddd;
 | 
			
		||||
 | 
			
		||||
    --button-background-color: transparent;
 | 
			
		||||
    --button-disabled-background-color: #ddd;
 | 
			
		||||
    --button-border-color: #ddd;
 | 
			
		||||
    --button-text-color: black;
 | 
			
		||||
    --button-border-radius: 5px;
 | 
			
		||||
    --button-disabled-background-color: #ddd;
 | 
			
		||||
    --button-disabled-text-color: black;
 | 
			
		||||
 | 
			
		||||
    --primary-button-background-color: #6c757d;
 | 
			
		||||
    --primary-button-text-color: white;
 | 
			
		||||
 
 | 
			
		||||
@@ -170,7 +170,6 @@ span.fancytree-active .fancytree-title {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.fancytree-selected {
 | 
			
		||||
    color: var(--hover-item-text-color) !important;
 | 
			
		||||
    border-color: var(--main-border-color) !important;
 | 
			
		||||
    border-radius: 5px;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -206,7 +206,7 @@ function changeTitle(req) {
 | 
			
		||||
    const noteTitleChanged = note.title !== title;
 | 
			
		||||
 | 
			
		||||
    if (noteTitleChanged) {
 | 
			
		||||
        noteService.saveNoteRevision(note);
 | 
			
		||||
        noteService.saveNoteRevisionIfNeeded(note);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    note.title = title;
 | 
			
		||||
 
 | 
			
		||||
@@ -9,15 +9,16 @@ const noteRevisionService = require("../../services/note_revisions");
 | 
			
		||||
const branchService = require("../../services/branches");
 | 
			
		||||
const cloningService = require("../../services/cloning");
 | 
			
		||||
const {formatAttrForSearch} = require("../../services/attribute_formatter");
 | 
			
		||||
const utils = require("../../services/utils.js");
 | 
			
		||||
 | 
			
		||||
async function searchFromNoteInt(note) {
 | 
			
		||||
function searchFromNoteInt(note) {
 | 
			
		||||
    let searchResultNoteIds;
 | 
			
		||||
 | 
			
		||||
    const searchScript = note.getRelationValue('searchScript');
 | 
			
		||||
    const searchString = note.getLabelValue('searchString');
 | 
			
		||||
 | 
			
		||||
    if (searchScript) {
 | 
			
		||||
        searchResultNoteIds = await searchFromRelation(note, 'searchScript');
 | 
			
		||||
        searchResultNoteIds = searchFromRelation(note, 'searchScript');
 | 
			
		||||
    } else {
 | 
			
		||||
        const searchContext = new SearchContext({
 | 
			
		||||
            fastSearch: note.hasLabel('fastSearch'),
 | 
			
		||||
@@ -61,7 +62,9 @@ async function searchFromNote(req) {
 | 
			
		||||
 | 
			
		||||
const ACTION_HANDLERS = {
 | 
			
		||||
    deleteNote: (action, note) => {
 | 
			
		||||
        note.markAsDeleted();
 | 
			
		||||
        const deleteId = 'searchbulkaction-' + utils.randomString(10);
 | 
			
		||||
 | 
			
		||||
        note.deleteNote(deleteId);
 | 
			
		||||
    },
 | 
			
		||||
    deleteNoteRevisions: (action, note) => {
 | 
			
		||||
        noteRevisionService.eraseNoteRevisions(note.getNoteRevisions().map(rev => rev.noteRevisionId));
 | 
			
		||||
@@ -149,7 +152,7 @@ function getActions(note) {
 | 
			
		||||
        .filter(a => !!a);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function searchAndExecute(req) {
 | 
			
		||||
function searchAndExecute(req) {
 | 
			
		||||
    const note = becca.getNote(req.params.noteId);
 | 
			
		||||
 | 
			
		||||
    if (!note) {
 | 
			
		||||
@@ -165,7 +168,7 @@ async function searchAndExecute(req) {
 | 
			
		||||
        return [400, `Note ${req.params.noteId} is not a search note.`]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const searchResultNoteIds = await searchFromNoteInt(note);
 | 
			
		||||
    const searchResultNoteIds = searchFromNoteInt(note);
 | 
			
		||||
 | 
			
		||||
    const actions = getActions(note);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -426,6 +426,15 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
     * @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
 | 
			
		||||
     */
 | 
			
		||||
    this.getAppInfo = () => appInfo
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This object contains "at your risk" and "no BC guarantees" objects for advanced use cases.
 | 
			
		||||
     *
 | 
			
		||||
     * @type {{becca: Becca}}
 | 
			
		||||
     */
 | 
			
		||||
    this.__private = {
 | 
			
		||||
        becca
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = BackendScriptApi;
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
module.exports = { buildDate:"2022-05-27T22:06:07+02:00", buildRevision: "8905148dbcdf0118078a880e295563023ac20783" };
 | 
			
		||||
module.exports = { buildDate:"2022-06-09T23:39:48+02:00", buildRevision: "96c4934c00703a93e4887af1bab20d953823c8ed" };
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ module.exports = [
 | 
			
		||||
    { type: 'label', name: 'shareDisallowRobotIndexing' },
 | 
			
		||||
    { type: 'label', name: 'displayRelations' },
 | 
			
		||||
    { type: 'label', name: 'hideRelations' },
 | 
			
		||||
    { type: 'label', name: 'titleTemplate' },
 | 
			
		||||
    { type: 'label', name: 'titleTemplate', isDangerous: true },
 | 
			
		||||
 | 
			
		||||
    // relation names
 | 
			
		||||
    { type: 'relation', name: 'internalLink' },
 | 
			
		||||
@@ -60,6 +60,9 @@ module.exports = [
 | 
			
		||||
    { type: 'relation', name: 'runOnNoteCreation', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnNoteTitleChange', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnNoteChange', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnNoteDeletion', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnBranchCreation', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnBranchDeletion', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnChildNoteCreation', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnAttributeCreation', isDangerous: true },
 | 
			
		||||
    { type: 'relation', name: 'runOnAttributeChange', isDangerous: true },
 | 
			
		||||
 
 | 
			
		||||
@@ -367,6 +367,9 @@ class ConsistencyChecks {
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        if (sqlInit.getDbSize() < 500000) {
 | 
			
		||||
            // querying for "content IS NULL" is expensive since content is not indexed. See e.g. https://github.com/zadam/trilium/issues/2887
 | 
			
		||||
 | 
			
		||||
            this.findAndFixIssues(`
 | 
			
		||||
                        SELECT notes.noteId, notes.type, notes.mime
 | 
			
		||||
                        FROM notes
 | 
			
		||||
@@ -387,6 +390,7 @@ class ConsistencyChecks {
 | 
			
		||||
                        logError(`Note ${noteId} content is null even though it is not deleted`);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.findAndFixIssues(`
 | 
			
		||||
                    SELECT note_revisions.noteRevisionId
 | 
			
		||||
 
 | 
			
		||||
@@ -49,6 +49,7 @@ eventService.subscribe([ eventService.ENTITY_CHANGED, eventService.ENTITY_DELETE
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if (entityName === 'notes') {
 | 
			
		||||
        // ENTITY_DELETED won't trigger anything since all branches/attributes are already deleted at this point
 | 
			
		||||
        runAttachedRelations(entity, 'runOnNoteChange', entity);
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
@@ -94,6 +95,9 @@ eventService.subscribe(eventService.ENTITY_CREATED, ({ entityName, entity }) =>
 | 
			
		||||
            handleSortedAttribute(entity);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if (entityName === 'branches') {
 | 
			
		||||
        runAttachedRelations(entity.getNote(), 'runOnBranchCreation', entity);
 | 
			
		||||
    }
 | 
			
		||||
    else if (entityName === 'notes') {
 | 
			
		||||
        runAttachedRelations(entity, 'runOnNoteCreation', entity);
 | 
			
		||||
    }
 | 
			
		||||
@@ -167,4 +171,12 @@ eventService.subscribe(eventService.ENTITY_DELETED, ({ entityName, entity }) =>
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if (entityName === 'branches') {
 | 
			
		||||
        runAttachedRelations(entity.getNote(), 'runOnBranchDeletion', entity);
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    runAttachedRelations
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -98,25 +98,25 @@ const DEFAULT_KEYBOARD_ACTIONS = [
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        actionName: "moveNoteUp",
 | 
			
		||||
        defaultShortcuts: ["CommandOrControl+Up"],
 | 
			
		||||
        defaultShortcuts: isMac ? ["Alt+Up"] : ["CommandOrControl+Up"],
 | 
			
		||||
        description: "Move note up",
 | 
			
		||||
        scope: "note-tree"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        actionName: "moveNoteDown",
 | 
			
		||||
        defaultShortcuts: ["CommandOrControl+Down"],
 | 
			
		||||
        defaultShortcuts: isMac ? ["Alt+Down"] : ["CommandOrControl+Down"],
 | 
			
		||||
        description: "Move note down",
 | 
			
		||||
        scope: "note-tree"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        actionName: "moveNoteUpInHierarchy",
 | 
			
		||||
        defaultShortcuts: ["CommandOrControl+Left"],
 | 
			
		||||
        defaultShortcuts: isMac ? ["Alt+Left"] : ["CommandOrControl+Left"],
 | 
			
		||||
        description: "Move note up in hierarchy",
 | 
			
		||||
        scope: "note-tree"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        actionName: "moveNoteDownInHierarchy",
 | 
			
		||||
        defaultShortcuts: ["CommandOrControl+Right"],
 | 
			
		||||
        defaultShortcuts: isMac ? ["Alt+Right"] : ["CommandOrControl+Right"],
 | 
			
		||||
        description: "Move note down in hierarchy",
 | 
			
		||||
        scope: "note-tree"
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -102,7 +102,7 @@ function isDbUpToDate() {
 | 
			
		||||
async function migrateIfNecessary() {
 | 
			
		||||
    const currentDbVersion = getDbVersion();
 | 
			
		||||
 | 
			
		||||
    if (currentDbVersion > appInfo.dbVersion) {
 | 
			
		||||
    if (currentDbVersion > appInfo.dbVersion && process.env.TRILIUM_IGNORE_DB_VERSION !== 'true') {
 | 
			
		||||
        log.error(`Current DB version ${currentDbVersion} is newer than app db version ${appInfo.dbVersion} which means that it was created by newer and incompatible version of Trilium. Upgrade to latest version of Trilium to resolve this issue.`);
 | 
			
		||||
 | 
			
		||||
        utils.crash();
 | 
			
		||||
 
 | 
			
		||||
@@ -30,46 +30,6 @@ function protectNoteRevisions(note) {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Note} note
 | 
			
		||||
 * @return {NoteRevision|null}
 | 
			
		||||
 */
 | 
			
		||||
function createNoteRevision(note) {
 | 
			
		||||
    if (note.hasLabel("disableVersioning")) {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const content = note.getContent();
 | 
			
		||||
 | 
			
		||||
    if (!content || (Buffer.isBuffer(content) && content.byteLength === 0)) {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const contentMetadata = note.getContentMetadata();
 | 
			
		||||
 | 
			
		||||
    const noteRevision = new NoteRevision({
 | 
			
		||||
        noteId: note.noteId,
 | 
			
		||||
        // title and text should be decrypted now
 | 
			
		||||
        title: note.title,
 | 
			
		||||
        type: note.type,
 | 
			
		||||
        mime: note.mime,
 | 
			
		||||
        isProtected: false, // will be fixed in the protectNoteRevisions() call
 | 
			
		||||
        utcDateLastEdited: note.utcDateModified > contentMetadata.utcDateModified
 | 
			
		||||
            ? note.utcDateModified
 | 
			
		||||
            : contentMetadata.utcDateModified,
 | 
			
		||||
        utcDateCreated: dateUtils.utcNowDateTime(),
 | 
			
		||||
        utcDateModified: dateUtils.utcNowDateTime(),
 | 
			
		||||
        dateLastEdited: note.dateModified > contentMetadata.dateModified
 | 
			
		||||
            ? note.dateModified
 | 
			
		||||
            : contentMetadata.dateModified,
 | 
			
		||||
        dateCreated: dateUtils.localNowDateTime()
 | 
			
		||||
    }).save();
 | 
			
		||||
 | 
			
		||||
    noteRevision.setContent(content);
 | 
			
		||||
 | 
			
		||||
    return noteRevision;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function eraseNoteRevisions(noteRevisionIdsToErase) {
 | 
			
		||||
    if (noteRevisionIdsToErase.length === 0) {
 | 
			
		||||
        return;
 | 
			
		||||
@@ -86,6 +46,5 @@ function eraseNoteRevisions(noteRevisionIdsToErase) {
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    protectNoteRevisions,
 | 
			
		||||
    createNoteRevision,
 | 
			
		||||
    eraseNoteRevisions
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -491,7 +491,7 @@ function saveLinks(note, content) {
 | 
			
		||||
    return content;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function saveNoteRevision(note) {
 | 
			
		||||
function saveNoteRevisionIfNeeded(note) {
 | 
			
		||||
    // files and images are versioned separately
 | 
			
		||||
    if (note.type === 'file' || note.type === 'image' || note.hasLabel('disableVersioning')) {
 | 
			
		||||
        return;
 | 
			
		||||
@@ -508,7 +508,7 @@ function saveNoteRevision(note) {
 | 
			
		||||
    const msSinceDateCreated = now.getTime() - dateUtils.parseDateTime(note.utcDateCreated).getTime();
 | 
			
		||||
 | 
			
		||||
    if (!existingNoteRevisionId && msSinceDateCreated >= noteRevisionSnapshotTimeInterval * 1000) {
 | 
			
		||||
        noteRevisionService.createNoteRevision(note);
 | 
			
		||||
        note.saveNoteRevision();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -519,7 +519,7 @@ function updateNote(noteId, noteUpdates) {
 | 
			
		||||
        throw new Error(`Note '${noteId}' is not available for change!`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    saveNoteRevision(note);
 | 
			
		||||
    saveNoteRevisionIfNeeded(note);
 | 
			
		||||
 | 
			
		||||
    // if protected status changed, then we need to encrypt/decrypt the content anyway
 | 
			
		||||
    if (['file', 'image'].includes(note.type) && note.isProtected !== noteUpdates.isProtected) {
 | 
			
		||||
@@ -910,6 +910,6 @@ module.exports = {
 | 
			
		||||
    triggerNoteTitleChanged,
 | 
			
		||||
    eraseDeletedNotesNow,
 | 
			
		||||
    eraseNotesWithDeleteId,
 | 
			
		||||
    saveNoteRevision,
 | 
			
		||||
    saveNoteRevisionIfNeeded,
 | 
			
		||||
    downloadImages
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@ function lex(str) {
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
        else if (!quotes) {
 | 
			
		||||
            if (!fulltextEnded && currentWord === 'note' && chr === '.') {
 | 
			
		||||
            if (!fulltextEnded && currentWord === 'note' && chr === '.' && i + 1 < str.length) {
 | 
			
		||||
                fulltextEnded = true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -78,6 +78,10 @@ function findResultsWithExpression(expression, searchContext) {
 | 
			
		||||
 | 
			
		||||
    const searchResults = noteSet.notes
 | 
			
		||||
        .map(note => {
 | 
			
		||||
            if (note.isDeleted) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const notePathArray = executionContext.noteIdToNotePath[note.noteId] || beccaService.getSomePath(note);
 | 
			
		||||
 | 
			
		||||
            if (!notePathArray) {
 | 
			
		||||
@@ -85,7 +89,8 @@ function findResultsWithExpression(expression, searchContext) {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return new SearchResult(notePathArray);
 | 
			
		||||
        });
 | 
			
		||||
        })
 | 
			
		||||
        .filter(note => !!note);
 | 
			
		||||
 | 
			
		||||
    for (const res of searchResults) {
 | 
			
		||||
        res.computeScore(searchContext.highlightedTokens);
 | 
			
		||||
 
 | 
			
		||||
@@ -242,9 +242,9 @@ function transactional(func) {
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
    catch (e) {
 | 
			
		||||
        const entityChanges = cls.getAndClearEntityChangeIds();
 | 
			
		||||
        const entityChangeIds = cls.getAndClearEntityChangeIds();
 | 
			
		||||
 | 
			
		||||
        if (entityChanges.length > 0) {
 | 
			
		||||
        if (entityChangeIds.length > 0) {
 | 
			
		||||
            log.info("Transaction rollback dirtied the becca, forcing reload.");
 | 
			
		||||
 | 
			
		||||
            require('../becca/becca_loader').load();
 | 
			
		||||
 
 | 
			
		||||
@@ -178,7 +178,11 @@ dbReady.then(() => {
 | 
			
		||||
    setInterval(() => optimize(), 10 * 60 * 60 * 1000);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
log.info("DB size: " + sql.getValue("SELECT page_count * page_size / 1000 as size FROM pragma_page_count(), pragma_page_size()") + " KB");
 | 
			
		||||
function getDbSize() {
 | 
			
		||||
    return sql.getValue("SELECT page_count * page_size / 1000 as size FROM pragma_page_count(), pragma_page_size()");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
log.info(`DB size: ${getDbSize()} KB`);
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    dbReady,
 | 
			
		||||
@@ -186,5 +190,6 @@ module.exports = {
 | 
			
		||||
    isDbInitialized,
 | 
			
		||||
    createInitialDatabase,
 | 
			
		||||
    createDatabaseForSync,
 | 
			
		||||
    setDbAsInitialized
 | 
			
		||||
    setDbAsInitialized,
 | 
			
		||||
    getDbSize
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ class TaskContext {
 | 
			
		||||
        this.taskId = taskId;
 | 
			
		||||
        this.taskType = taskType;
 | 
			
		||||
        this.data = data;
 | 
			
		||||
        this.noteDeletionHandlerTriggered = false;
 | 
			
		||||
 | 
			
		||||
        // progressCount is meant to represent just some progress - to indicate the task is not stuck
 | 
			
		||||
        this.progressCount = -1; // we're incrementing immediatelly
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user