This commit is contained in:
zadam 2023-11-03 12:23:14 +01:00
parent a45b801a84
commit 6dd466ddaf
9 changed files with 124 additions and 141 deletions

View File

@ -784,7 +784,7 @@ class BNote extends AbstractBeccaEntity {
} else if (a.parentNote?.isHiddenCompletely()) {
return 1;
} else {
return -1;
return 0;
}
});
@ -804,7 +804,7 @@ class BNote extends AbstractBeccaEntity {
const aBranch = becca.getBranchFromChildAndParent(a.noteId, this.noteId);
const bBranch = becca.getBranchFromChildAndParent(b.noteId, this.noteId);
return aBranch?.notePosition < bBranch?.notePosition ? -1 : 1;
return (aBranch?.notePosition - bBranch?.notePosition) || 0;
});
}

View File

@ -310,7 +310,7 @@ For information on using widgets, see the tutorial widget_basics.</div>
<h4 class="name" id="doRender"><span class="type-signature"></span>doRender<span class="signature">()</span><span class="type-signature"> &rarr; {JQuery.&lt;HTMLElement>}</span></h4>
<h4 class="name" id="doRender"><span class="type-signature"></span>doRender<span class="signature">()</span><span class="type-signature"></span></h4>
@ -321,6 +321,7 @@ For information on using widgets, see the tutorial widget_basics.</div>
Method used for rendering the widget.
Your class should override this method.
The method is expected to create a this.$widget containing jQuery object
</div>
@ -364,7 +365,7 @@ Your class should override this method.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="widgets_basic_widget.js.html">widgets/basic_widget.js</a>, <a href="widgets_basic_widget.js.html#line131">line 131</a>
<a href="widgets_basic_widget.js.html">widgets/basic_widget.js</a>, <a href="widgets_basic_widget.js.html#line132">line 132</a>
</li></ul></dd>
@ -389,28 +390,6 @@ Your class should override this method.
<h5>Returns:</h5>
<div class="param-desc">
Your widget.
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">JQuery.&lt;HTMLElement></span>
</dd>
</dl>

View File

@ -628,7 +628,7 @@
<h4 class="name" id="doRender"><span class="type-signature"></span>doRender<span class="signature">()</span><span class="type-signature"> &rarr; {JQuery.&lt;HTMLElement>}</span></h4>
<h4 class="name" id="doRender"><span class="type-signature"></span>doRender<span class="signature">()</span><span class="type-signature"></span></h4>
@ -639,6 +639,7 @@
Method used for rendering the widget.
Your class should override this method.
The method is expected to create a this.$widget containing jQuery object
</div>
@ -687,7 +688,7 @@ Your class should override this method.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="widgets_basic_widget.js.html">widgets/basic_widget.js</a>, <a href="widgets_basic_widget.js.html#line131">line 131</a>
<a href="widgets_basic_widget.js.html">widgets/basic_widget.js</a>, <a href="widgets_basic_widget.js.html#line132">line 132</a>
</li></ul></dd>
@ -712,28 +713,6 @@ Your class should override this method.
<h5>Returns:</h5>
<div class="param-desc">
Your widget.
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">JQuery.&lt;HTMLElement></span>
</dd>
</dl>

View File

@ -93,7 +93,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line16">line 16</a>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line19">line 19</a>
</li></ul></dd>
@ -172,8 +172,10 @@
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#hoistedNoteId">NoteContextAwareWidget#hoistedNoteId</a>
</li></ul></dd>
@ -194,8 +196,6 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -235,8 +235,10 @@
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#note">NoteContextAwareWidget#note</a>
</li></ul></dd>
@ -257,8 +259,6 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -308,8 +308,10 @@
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#noteContext">NoteContextAwareWidget#noteContext</a>
</li></ul></dd>
@ -330,8 +332,6 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -371,8 +371,10 @@
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#noteId">NoteContextAwareWidget#noteId</a>
</li></ul></dd>
@ -393,8 +395,6 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -434,8 +434,10 @@
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#notePath">NoteContextAwareWidget#notePath</a>
</li></ul></dd>
@ -456,8 +458,6 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -523,7 +523,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line18">line 18</a>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line21">line 21</a>
</li></ul></dd>
@ -630,9 +630,11 @@
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<a href="BasicWidget.html#cssBlock">BasicWidget#cssBlock</a>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#cssBlock">NoteContextAwareWidget#cssBlock</a>
</li></ul></dd>
@ -652,8 +654,6 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -724,6 +724,7 @@
<div class="description">
Do not override this method unless you know what you're doing.
Do not override this method unless you know what you're doing.
</div>
@ -772,7 +773,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line25">line 25</a>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line37">line 37</a>
</li></ul></dd>
@ -808,7 +809,7 @@
<h4 class="name" id="doRenderBody"><span class="type-signature">(async) </span>doRenderBody<span class="signature">()</span><span class="type-signature"> &rarr; {JQuery.&lt;HTMLElement>}</span></h4>
<h4 class="name" id="doRenderBody"><span class="type-signature">(async) </span>doRenderBody<span class="signature">()</span><span class="type-signature"> &rarr; {Promise|undefined}</span></h4>
@ -816,7 +817,7 @@
<div class="description">
Method used for rendering the body of the widget.
Method used for rendering the body of the widget (via existing this.$body)
Your class should override this method.
</div>
@ -862,7 +863,7 @@ Your class should override this method.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line47">line 47</a>
<a href="widgets_right_panel_widget.js.html">widgets/right_panel_widget.js</a>, <a href="widgets_right_panel_widget.js.html#line66">line 66</a>
</li></ul></dd>
@ -891,7 +892,7 @@ Your class should override this method.
<div class="param-desc">
The body of your widget.
if widget needs async operation to initialize, it can return a Promise
</div>
@ -902,7 +903,10 @@ Your class should override this method.
</dt>
<dd>
<span class="param-type">JQuery.&lt;HTMLElement></span>
<span class="param-type">Promise</span>
|
<span class="param-type">undefined</span>
</dd>
@ -946,8 +950,10 @@ Your class should override this method.
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#isEnabled">NoteContextAwareWidget#isEnabled</a>
</li></ul></dd>
@ -968,8 +974,6 @@ Your class should override this method.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
@ -1111,8 +1115,10 @@ widget with each note.
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<dt class="tag-overrides">Overrides:</dt>
<dd class="tag-overrides"><ul class="dummy"><li>
<a href="NoteContextAwareWidget.html#refreshWithNote">NoteContextAwareWidget#refreshWithNote</a>
</li></ul></dd>
@ -1133,8 +1139,6 @@ widget with each note.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>

View File

@ -158,7 +158,7 @@ class FNote {
branchIdPos[branchId] = this.froca.getBranch(branchId).notePosition;
}
this.children.sort((a, b) => branchIdPos[this.childToBranch[a]] &lt; branchIdPos[this.childToBranch[b]] ? -1 : 1);
this.children.sort((a, b) => branchIdPos[this.childToBranch[a]] - branchIdPos[this.childToBranch[b]]);
}
/** @returns {boolean} */
@ -256,7 +256,7 @@ class FNote {
return 1;
}
return -1;
return aNoteId &lt; bNoteId ? -1 : 1;
});
}

View File

@ -61,7 +61,7 @@ class BasicWidget extends Component {
}
}
this.children.sort((a, b) => a.position - b.position &lt; 0 ? -1 : 1);
this.children.sort((a, b) => a.position - b.position);
return this;
}
@ -112,7 +112,8 @@ class BasicWidget extends Component {
this.doRender();
this.$widget.attr('data-component-id', this.componentId);
this.$widget.addClass('component')
this.$widget
.addClass('component')
.prop('component', this);
if (!this.isEnabled()) {
@ -154,7 +155,7 @@ class BasicWidget extends Component {
* Method used for rendering the widget.
*
* Your class should override this method.
* @returns {JQuery&lt;HTMLElement>} Your widget.
* The method is expected to create a this.$widget containing jQuery object
*/
doRender() {}

View File

@ -30,7 +30,10 @@
const WIDGET_TPL = `
&lt;div class="card widget">
&lt;div class="card-header">&lt;/div>
&lt;div class="card-header">
&lt;div class="card-header-title">&lt;/div>
&lt;div class="card-header-buttons">&lt;/div>
&lt;/div>
&lt;div id="[to be set]" class="body-wrapper">
&lt;div class="card-body">&lt;/div>
@ -45,9 +48,18 @@ class RightPanelWidget extends NoteContextAwareWidget {
/** Title to show in the panel. */
get widgetTitle() { return "Untitled widget"; }
get widgetButtons() { return []; }
get help() { return {}; }
constructor() {
super();
this.child(...this.widgetButtons);
}
/**
* Do not override this method unless you know what you're doing.
* Do not override this method unless you know what you're doing.
*/
doRender() {
@ -60,22 +72,30 @@ class RightPanelWidget extends NoteContextAwareWidget {
this.$body = this.$bodyWrapper.find('.card-body');
this.$title = this.$widget.find('.card-header');
this.$title = this.$widget.find('.card-header .card-header-title');
this.$title.text(this.widgetTitle);
this.$buttons = this.$widget.find('.card-header .card-header-buttons');
this.$buttons.empty();
for (const buttonWidget of this.children) {
this.$buttons.append(buttonWidget.render());
}
this.initialized = this.doRenderBody();
}
/**
* Method used for rendering the body of the widget.
* Method used for rendering the body of the widget (via existing this.$body)
*
* Your class should override this method.
* @returns {JQuery&lt;HTMLElement>} The body of your widget.
* @returns {Promise|undefined} if widget needs async operation to initialize, it can return a Promise
*/
async doRenderBody() {}
}
export default RightPanelWidget;</code></pre>
export default RightPanelWidget;
</code></pre>
</article>
</section>

62
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "trilium",
"version": "0.61.10-beta",
"version": "0.61.11",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "trilium",
"version": "0.61.10-beta",
"version": "0.61.11",
"hasInstallScript": true,
"license": "AGPL-3.0-only",
"dependencies": {
@ -15,7 +15,7 @@
"@excalidraw/excalidraw": "0.16.1",
"archiver": "6.0.1",
"async-mutex": "0.4.0",
"axios": "1.5.1",
"axios": "1.6.0",
"better-sqlite3": "8.4.0",
"chokidar": "3.5.3",
"cls-hooked": "4.2.2",
@ -32,7 +32,7 @@
"escape-html": "1.0.3",
"express": "4.18.2",
"express-partial-content": "1.0.2",
"express-rate-limit": "7.1.2",
"express-rate-limit": "7.1.3",
"express-session": "1.17.3",
"fs-extra": "11.1.1",
"helmet": "7.0.0",
@ -47,7 +47,7 @@
"jimp": "0.22.10",
"joplin-turndown-plugin-gfm": "1.0.12",
"jsdom": "22.1.0",
"marked": "9.1.2",
"marked": "9.1.5",
"mime-types": "2.1.35",
"multer": "1.4.5-lts.1",
"node-abi": "3.51.0",
@ -94,7 +94,7 @@
"husky": "8.0.3",
"jasmine": "5.1.0",
"jsdoc": "4.0.2",
"jsonc-eslint-parser": "2.3.0",
"jsonc-eslint-parser": "2.4.0",
"lint-staged": "15.0.2",
"lorem-ipsum": "2.0.8",
"nodemon": "3.0.1",
@ -2474,9 +2474,9 @@
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"node_modules/axios": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
"integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
"integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@ -5751,14 +5751,14 @@
}
},
"node_modules/express-rate-limit": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.1.2.tgz",
"integrity": "sha512-uvkFt5JooXDhUhrfgqXLyIsAMRCtU1o8W/p0Q2p5U2ude7fEOfFaP0kSYbHOHmPbA9ZEm1JqrRne3vL9pVCBXA==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.1.3.tgz",
"integrity": "sha512-BDes6WeNYSGRRGQU8QDNwUnwqaBro28HN/TTweM3RlxXRHDld8RLoH7tbfCxAc0hamQyn6aL0KrfR45+ZxknYg==",
"engines": {
"node": ">= 16"
},
"peerDependencies": {
"express": "^4 || ^5"
"express": "4 || 5 || ^5.0.0-beta.1"
}
},
"node_modules/express-session": {
@ -8240,9 +8240,9 @@
}
},
"node_modules/jsonc-eslint-parser": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz",
"integrity": "sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==",
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz",
"integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==",
"dev": true,
"dependencies": {
"acorn": "^8.5.0",
@ -9062,9 +9062,9 @@
}
},
"node_modules/marked": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-9.1.2.tgz",
"integrity": "sha512-qoKMJqK0w6vkLk8+KnKZAH6neUZSNaQqVZ/h2yZ9S7CbLuFHyS2viB0jnqcWF9UKjwsAbMrQtnQhdmdvOVOw9w==",
"version": "9.1.5",
"resolved": "https://registry.npmjs.org/marked/-/marked-9.1.5.tgz",
"integrity": "sha512-14QG3shv8Kg/xc0Yh6TNkMj90wXH9mmldi5941I2OevfJ/FQAFLEwtwU2/FfgSAOMlWHrEukWSGQf8MiVYNG2A==",
"bin": {
"marked": "bin/marked.js"
},
@ -15498,9 +15498,9 @@
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"axios": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
"integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
"integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
"requires": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@ -18015,9 +18015,9 @@
"requires": {}
},
"express-rate-limit": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.1.2.tgz",
"integrity": "sha512-uvkFt5JooXDhUhrfgqXLyIsAMRCtU1o8W/p0Q2p5U2ude7fEOfFaP0kSYbHOHmPbA9ZEm1JqrRne3vL9pVCBXA==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.1.3.tgz",
"integrity": "sha512-BDes6WeNYSGRRGQU8QDNwUnwqaBro28HN/TTweM3RlxXRHDld8RLoH7tbfCxAc0hamQyn6aL0KrfR45+ZxknYg==",
"requires": {}
},
"express-session": {
@ -19799,9 +19799,9 @@
"dev": true
},
"jsonc-eslint-parser": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz",
"integrity": "sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==",
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz",
"integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==",
"dev": true,
"requires": {
"acorn": "^8.5.0",
@ -20392,9 +20392,9 @@
"requires": {}
},
"marked": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-9.1.2.tgz",
"integrity": "sha512-qoKMJqK0w6vkLk8+KnKZAH6neUZSNaQqVZ/h2yZ9S7CbLuFHyS2viB0jnqcWF9UKjwsAbMrQtnQhdmdvOVOw9w=="
"version": "9.1.5",
"resolved": "https://registry.npmjs.org/marked/-/marked-9.1.5.tgz",
"integrity": "sha512-14QG3shv8Kg/xc0Yh6TNkMj90wXH9mmldi5941I2OevfJ/FQAFLEwtwU2/FfgSAOMlWHrEukWSGQf8MiVYNG2A=="
},
"matcher": {
"version": "3.0.0",

View File

@ -41,7 +41,7 @@
"@excalidraw/excalidraw": "0.16.1",
"archiver": "6.0.1",
"async-mutex": "0.4.0",
"axios": "1.5.1",
"axios": "1.6.0",
"better-sqlite3": "8.4.0",
"chokidar": "3.5.3",
"cls-hooked": "4.2.2",
@ -58,7 +58,7 @@
"escape-html": "1.0.3",
"express": "4.18.2",
"express-partial-content": "1.0.2",
"express-rate-limit": "7.1.2",
"express-rate-limit": "7.1.3",
"express-session": "1.17.3",
"fs-extra": "11.1.1",
"helmet": "7.0.0",
@ -73,7 +73,7 @@
"jimp": "0.22.10",
"joplin-turndown-plugin-gfm": "1.0.12",
"jsdom": "22.1.0",
"marked": "9.1.2",
"marked": "9.1.5",
"mime-types": "2.1.35",
"multer": "1.4.5-lts.1",
"node-abi": "3.51.0",
@ -117,7 +117,7 @@
"husky": "8.0.3",
"jasmine": "5.1.0",
"jsdoc": "4.0.2",
"jsonc-eslint-parser": "2.3.0",
"jsonc-eslint-parser": "2.4.0",
"lint-staged": "15.0.2",
"lorem-ipsum": "2.0.8",
"nodemon": "3.0.1",