mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 01:48:32 +02:00
refactored layouts for extra window
This commit is contained in:
parent
87a1e98fa2
commit
75c58cbf79
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<dataSource name="document.db">
|
<dataSource name="document.db">
|
||||||
<database-model serializer="dbm" dbms="SQLITE" family-id="SQLITE" format-version="4.17">
|
<database-model serializer="dbm" dbms="SQLITE" family-id="SQLITE" format-version="4.18">
|
||||||
<root id="1">
|
<root id="1">
|
||||||
<ServerVersion>3.25.1</ServerVersion>
|
<ServerVersion>3.16.1</ServerVersion>
|
||||||
</root>
|
</root>
|
||||||
<schema id="2" parent="1" name="main">
|
<schema id="2" parent="1" name="main">
|
||||||
<Current>1</Current>
|
<Current>1</Current>
|
||||||
@ -57,6 +57,7 @@
|
|||||||
<index id="24" parent="6" name="sqlite_autoindex_api_tokens_1">
|
<index id="24" parent="6" name="sqlite_autoindex_api_tokens_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>apiTokenId</ColNames>
|
<ColNames>apiTokenId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<key id="25" parent="6">
|
<key id="25" parent="6">
|
||||||
@ -130,17 +131,21 @@
|
|||||||
<index id="38" parent="7" name="sqlite_autoindex_attributes_1">
|
<index id="38" parent="7" name="sqlite_autoindex_attributes_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>attributeId</ColNames>
|
<ColNames>attributeId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<index id="39" parent="7" name="IDX_attributes_noteId_index">
|
<index id="39" parent="7" name="IDX_attributes_noteId_index">
|
||||||
<ColNames>noteId</ColNames>
|
<ColNames>noteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="40" parent="7" name="IDX_attributes_name_value">
|
<index id="40" parent="7" name="IDX_attributes_name_value">
|
||||||
<ColNames>name
|
<ColNames>name
|
||||||
value</ColNames>
|
value</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="41" parent="7" name="IDX_attributes_value_index">
|
<index id="41" parent="7" name="IDX_attributes_value_index">
|
||||||
<ColNames>value</ColNames>
|
<ColNames>value</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<key id="42" parent="7">
|
<key id="42" parent="7">
|
||||||
<ColNames>attributeId</ColNames>
|
<ColNames>attributeId</ColNames>
|
||||||
@ -207,14 +212,17 @@ value</ColNames>
|
|||||||
<index id="54" parent="8" name="sqlite_autoindex_branches_1">
|
<index id="54" parent="8" name="sqlite_autoindex_branches_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>branchId</ColNames>
|
<ColNames>branchId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<index id="55" parent="8" name="IDX_branches_noteId_parentNoteId">
|
<index id="55" parent="8" name="IDX_branches_noteId_parentNoteId">
|
||||||
<ColNames>noteId
|
<ColNames>noteId
|
||||||
parentNoteId</ColNames>
|
parentNoteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="56" parent="8" name="IDX_branches_parentNoteId">
|
<index id="56" parent="8" name="IDX_branches_parentNoteId">
|
||||||
<ColNames>parentNoteId</ColNames>
|
<ColNames>parentNoteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<key id="57" parent="8">
|
<key id="57" parent="8">
|
||||||
<ColNames>branchId</ColNames>
|
<ColNames>branchId</ColNames>
|
||||||
@ -245,6 +253,7 @@ parentNoteId</ColNames>
|
|||||||
<index id="62" parent="9" name="sqlite_autoindex_note_contents_1">
|
<index id="62" parent="9" name="sqlite_autoindex_note_contents_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>noteId</ColNames>
|
<ColNames>noteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<key id="63" parent="9">
|
<key id="63" parent="9">
|
||||||
@ -275,6 +284,7 @@ parentNoteId</ColNames>
|
|||||||
<index id="68" parent="10" name="sqlite_autoindex_note_revision_contents_1">
|
<index id="68" parent="10" name="sqlite_autoindex_note_revision_contents_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>noteRevisionId</ColNames>
|
<ColNames>noteRevisionId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<key id="69" parent="10">
|
<key id="69" parent="10">
|
||||||
@ -359,22 +369,28 @@ parentNoteId</ColNames>
|
|||||||
<index id="84" parent="11" name="sqlite_autoindex_note_revisions_1">
|
<index id="84" parent="11" name="sqlite_autoindex_note_revisions_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>noteRevisionId</ColNames>
|
<ColNames>noteRevisionId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<index id="85" parent="11" name="IDX_note_revisions_noteId">
|
<index id="85" parent="11" name="IDX_note_revisions_noteId">
|
||||||
<ColNames>noteId</ColNames>
|
<ColNames>noteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="86" parent="11" name="IDX_note_revisions_utcDateLastEdited">
|
<index id="86" parent="11" name="IDX_note_revisions_utcDateLastEdited">
|
||||||
<ColNames>utcDateLastEdited</ColNames>
|
<ColNames>utcDateLastEdited</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="87" parent="11" name="IDX_note_revisions_utcDateCreated">
|
<index id="87" parent="11" name="IDX_note_revisions_utcDateCreated">
|
||||||
<ColNames>utcDateCreated</ColNames>
|
<ColNames>utcDateCreated</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="88" parent="11" name="IDX_note_revisions_dateLastEdited">
|
<index id="88" parent="11" name="IDX_note_revisions_dateLastEdited">
|
||||||
<ColNames>dateLastEdited</ColNames>
|
<ColNames>dateLastEdited</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="89" parent="11" name="IDX_note_revisions_dateCreated">
|
<index id="89" parent="11" name="IDX_note_revisions_dateCreated">
|
||||||
<ColNames>dateCreated</ColNames>
|
<ColNames>dateCreated</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<key id="90" parent="11">
|
<key id="90" parent="11">
|
||||||
<ColNames>noteRevisionId</ColNames>
|
<ColNames>noteRevisionId</ColNames>
|
||||||
@ -461,28 +477,36 @@ parentNoteId</ColNames>
|
|||||||
<index id="105" parent="12" name="sqlite_autoindex_notes_1">
|
<index id="105" parent="12" name="sqlite_autoindex_notes_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>noteId</ColNames>
|
<ColNames>noteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<index id="106" parent="12" name="IDX_notes_title">
|
<index id="106" parent="12" name="IDX_notes_title">
|
||||||
<ColNames>title</ColNames>
|
<ColNames>title</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="107" parent="12" name="IDX_notes_type">
|
<index id="107" parent="12" name="IDX_notes_type">
|
||||||
<ColNames>type</ColNames>
|
<ColNames>type</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="108" parent="12" name="IDX_notes_isDeleted">
|
<index id="108" parent="12" name="IDX_notes_isDeleted">
|
||||||
<ColNames>isDeleted</ColNames>
|
<ColNames>isDeleted</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="109" parent="12" name="IDX_notes_dateCreated">
|
<index id="109" parent="12" name="IDX_notes_dateCreated">
|
||||||
<ColNames>dateCreated</ColNames>
|
<ColNames>dateCreated</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="110" parent="12" name="IDX_notes_dateModified">
|
<index id="110" parent="12" name="IDX_notes_dateModified">
|
||||||
<ColNames>dateModified</ColNames>
|
<ColNames>dateModified</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="111" parent="12" name="IDX_notes_utcDateCreated">
|
<index id="111" parent="12" name="IDX_notes_utcDateCreated">
|
||||||
<ColNames>utcDateCreated</ColNames>
|
<ColNames>utcDateCreated</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<index id="112" parent="12" name="IDX_notes_utcDateModified">
|
<index id="112" parent="12" name="IDX_notes_utcDateModified">
|
||||||
<ColNames>utcDateModified</ColNames>
|
<ColNames>utcDateModified</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<key id="113" parent="12">
|
<key id="113" parent="12">
|
||||||
<ColNames>noteId</ColNames>
|
<ColNames>noteId</ColNames>
|
||||||
@ -523,6 +547,7 @@ parentNoteId</ColNames>
|
|||||||
<index id="120" parent="13" name="sqlite_autoindex_options_1">
|
<index id="120" parent="13" name="sqlite_autoindex_options_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>name</ColNames>
|
<ColNames>name</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<key id="121" parent="13">
|
<key id="121" parent="13">
|
||||||
@ -558,6 +583,7 @@ parentNoteId</ColNames>
|
|||||||
<index id="127" parent="14" name="sqlite_autoindex_recent_notes_1">
|
<index id="127" parent="14" name="sqlite_autoindex_recent_notes_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>noteId</ColNames>
|
<ColNames>noteId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<key id="128" parent="14">
|
<key id="128" parent="14">
|
||||||
@ -578,10 +604,12 @@ parentNoteId</ColNames>
|
|||||||
<index id="131" parent="15" name="sqlite_autoindex_source_ids_1">
|
<index id="131" parent="15" name="sqlite_autoindex_source_ids_1">
|
||||||
<NameSurrogate>1</NameSurrogate>
|
<NameSurrogate>1</NameSurrogate>
|
||||||
<ColNames>sourceId</ColNames>
|
<ColNames>sourceId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<index id="132" parent="15" name="IDX_source_ids_utcDateCreated">
|
<index id="132" parent="15" name="IDX_source_ids_utcDateCreated">
|
||||||
<ColNames>utcDateCreated</ColNames>
|
<ColNames>utcDateCreated</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<key id="133" parent="15">
|
<key id="133" parent="15">
|
||||||
<ColNames>sourceId</ColNames>
|
<ColNames>sourceId</ColNames>
|
||||||
@ -602,7 +630,7 @@ parentNoteId</ColNames>
|
|||||||
</column>
|
</column>
|
||||||
<column id="137" parent="16" name="rootpage">
|
<column id="137" parent="16" name="rootpage">
|
||||||
<Position>4</Position>
|
<Position>4</Position>
|
||||||
<DataType>int|0s</DataType>
|
<DataType>integer|0s</DataType>
|
||||||
</column>
|
</column>
|
||||||
<column id="138" parent="16" name="sql">
|
<column id="138" parent="16" name="sql">
|
||||||
<Position>5</Position>
|
<Position>5</Position>
|
||||||
@ -649,10 +677,12 @@ parentNoteId</ColNames>
|
|||||||
<index id="147" parent="18" name="IDX_sync_entityName_entityId">
|
<index id="147" parent="18" name="IDX_sync_entityName_entityId">
|
||||||
<ColNames>entityName
|
<ColNames>entityName
|
||||||
entityId</ColNames>
|
entityId</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
<Unique>1</Unique>
|
<Unique>1</Unique>
|
||||||
</index>
|
</index>
|
||||||
<index id="148" parent="18" name="IDX_sync_utcSyncDate">
|
<index id="148" parent="18" name="IDX_sync_utcSyncDate">
|
||||||
<ColNames>utcSyncDate</ColNames>
|
<ColNames>utcSyncDate</ColNames>
|
||||||
|
<ColumnCollations></ColumnCollations>
|
||||||
</index>
|
</index>
|
||||||
<key id="149" parent="18">
|
<key id="149" parent="18">
|
||||||
<ColNames>id</ColNames>
|
<ColNames>id</ColNames>
|
||||||
|
86
package-lock.json
generated
86
package-lock.json
generated
@ -3327,9 +3327,12 @@
|
|||||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||||
},
|
},
|
||||||
"ejs": {
|
"ejs": {
|
||||||
"version": "3.0.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.2.tgz",
|
||||||
"integrity": "sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA=="
|
"integrity": "sha512-zFuywxrAWtX5Mk2KAuoJNkXXbfezpNA0v7i+YC971QORguPekpjpAgeOv99YWSdKXwj7JxI2QAWDeDkE8fWtXw==",
|
||||||
|
"requires": {
|
||||||
|
"jake": "^10.6.1"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"electron": {
|
"electron": {
|
||||||
"version": "9.0.0-beta.18",
|
"version": "9.0.0-beta.18",
|
||||||
@ -4445,6 +4448,14 @@
|
|||||||
"typedarray-to-buffer": "^3.1.5"
|
"typedarray-to-buffer": "^3.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"filelist": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
|
||||||
|
"requires": {
|
||||||
|
"minimatch": "^3.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"filename-regex": {
|
"filename-regex": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
|
||||||
@ -6146,6 +6157,55 @@
|
|||||||
"is-object": "^1.0.1"
|
"is-object": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"jake": {
|
||||||
|
"version": "10.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jake/-/jake-10.6.1.tgz",
|
||||||
|
"integrity": "sha512-pHUK3+V0BjOb1XSi95rbBksrMdIqLVC9bJqDnshVyleYsET3H0XAq+3VB2E3notcYvv4wRdRHn13p7vobG+wfQ==",
|
||||||
|
"requires": {
|
||||||
|
"async": "0.9.x",
|
||||||
|
"chalk": "^2.4.2",
|
||||||
|
"filelist": "^1.0.1",
|
||||||
|
"minimatch": "^3.0.4"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^1.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"async": {
|
||||||
|
"version": "0.9.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||||
|
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^3.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.5",
|
||||||
|
"supports-color": "^5.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "5.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"jest-worker": {
|
"jest-worker": {
|
||||||
"version": "25.4.0",
|
"version": "25.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.4.0.tgz",
|
||||||
@ -7017,17 +7077,17 @@
|
|||||||
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
|
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
|
||||||
},
|
},
|
||||||
"mime-types": {
|
"mime-types": {
|
||||||
"version": "2.1.26",
|
"version": "2.1.27",
|
||||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
|
||||||
"integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
|
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"mime-db": "1.43.0"
|
"mime-db": "1.44.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.43.0",
|
"version": "1.44.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
||||||
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
|
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -11850,9 +11910,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "7.2.3",
|
"version": "7.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz",
|
||||||
"integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ=="
|
"integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA=="
|
||||||
},
|
},
|
||||||
"x-xss-protection": {
|
"x-xss-protection": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
"csurf": "1.11.0",
|
"csurf": "1.11.0",
|
||||||
"dayjs": "1.8.25",
|
"dayjs": "1.8.25",
|
||||||
"debug": "4.1.1",
|
"debug": "4.1.1",
|
||||||
"ejs": "3.0.2",
|
"ejs": "3.1.2",
|
||||||
"electron-debug": "3.0.1",
|
"electron-debug": "3.0.1",
|
||||||
"electron-dl": "3.0.0",
|
"electron-dl": "3.0.0",
|
||||||
"electron-find": "1.0.6",
|
"electron-find": "1.0.6",
|
||||||
@ -52,7 +52,7 @@
|
|||||||
"ini": "1.3.5",
|
"ini": "1.3.5",
|
||||||
"is-svg": "4.2.1",
|
"is-svg": "4.2.1",
|
||||||
"jimp": "0.10.3",
|
"jimp": "0.10.3",
|
||||||
"mime-types": "2.1.26",
|
"mime-types": "2.1.27",
|
||||||
"multer": "1.4.2",
|
"multer": "1.4.2",
|
||||||
"node-abi": "2.16.0",
|
"node-abi": "2.16.0",
|
||||||
"open": "7.0.3",
|
"open": "7.0.3",
|
||||||
@ -73,7 +73,7 @@
|
|||||||
"turndown": "6.0.0",
|
"turndown": "6.0.0",
|
||||||
"turndown-plugin-gfm": "1.0.2",
|
"turndown-plugin-gfm": "1.0.2",
|
||||||
"unescape": "1.0.1",
|
"unescape": "1.0.1",
|
||||||
"ws": "7.2.3",
|
"ws": "7.2.5",
|
||||||
"yauzl": "^2.10.0",
|
"yauzl": "^2.10.0",
|
||||||
"yazl": "^2.5.1"
|
"yazl": "^2.5.1"
|
||||||
},
|
},
|
||||||
|
@ -5,8 +5,9 @@ import bundleService from "./services/bundle.js";
|
|||||||
import noteAutocompleteService from './services/note_autocomplete.js';
|
import noteAutocompleteService from './services/note_autocomplete.js';
|
||||||
import macInit from './services/mac_init.js';
|
import macInit from './services/mac_init.js';
|
||||||
import contextMenu from "./services/context_menu.js";
|
import contextMenu from "./services/context_menu.js";
|
||||||
import DesktopLayout from "./widgets/desktop_layout.js";
|
import DesktopMainWindowLayout from "./layouts/desktop_main_window_layout.js";
|
||||||
import glob from "./services/glob.js";
|
import glob from "./services/glob.js";
|
||||||
|
import DesktopExtraWindowLayout from "./layouts/desktop_extra_window_layout.js";
|
||||||
|
|
||||||
glob.setupGlobs();
|
glob.setupGlobs();
|
||||||
|
|
||||||
@ -23,9 +24,11 @@ $('[data-toggle="tooltip"]').tooltip({
|
|||||||
macInit.init();
|
macInit.init();
|
||||||
|
|
||||||
bundleService.getWidgetBundlesByParent().then(widgetBundles => {
|
bundleService.getWidgetBundlesByParent().then(widgetBundles => {
|
||||||
const desktopLayout = new DesktopLayout(widgetBundles);
|
const layout = window.glob.isMainWindow
|
||||||
|
? new DesktopMainWindowLayout(widgetBundles)
|
||||||
|
: new DesktopExtraWindowLayout(widgetBundles);
|
||||||
|
|
||||||
appContext.setLayout(desktopLayout);
|
appContext.setLayout(layout);
|
||||||
appContext.start();
|
appContext.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,144 +0,0 @@
|
|||||||
import appContext from "./services/app_context.js";
|
|
||||||
import utils from './services/utils.js';
|
|
||||||
import noteTooltipService from './services/note_tooltip.js';
|
|
||||||
import bundleService from "./services/bundle.js";
|
|
||||||
import noteAutocompleteService from './services/note_autocomplete.js';
|
|
||||||
import macInit from './services/mac_init.js';
|
|
||||||
import contextMenu from "./services/context_menu.js";
|
|
||||||
import ExtraLayout from "./widgets/extra_layout.js";
|
|
||||||
import glob from "./services/glob.js";
|
|
||||||
|
|
||||||
glob.setupGlobs();
|
|
||||||
|
|
||||||
if (utils.isElectron()) {
|
|
||||||
utils.dynamicRequire('electron').ipcRenderer.on('globalShortcut', async function(event, actionName) {
|
|
||||||
appContext.triggerCommand(actionName);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$('[data-toggle="tooltip"]').tooltip({
|
|
||||||
html: true
|
|
||||||
});
|
|
||||||
|
|
||||||
macInit.init();
|
|
||||||
|
|
||||||
bundleService.getWidgetBundlesByParent().then(widgetBundles => {
|
|
||||||
const extraLayout = new ExtraLayout(widgetBundles);
|
|
||||||
|
|
||||||
appContext.setLayout(extraLayout);
|
|
||||||
appContext.start(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
noteTooltipService.setupGlobalTooltip();
|
|
||||||
|
|
||||||
noteAutocompleteService.init();
|
|
||||||
|
|
||||||
if (utils.isElectron()) {
|
|
||||||
const electron = utils.dynamicRequire('electron');
|
|
||||||
const {webContents} = electron.remote.getCurrentWindow();
|
|
||||||
|
|
||||||
webContents.on('context-menu', (event, params) => {
|
|
||||||
const {editFlags} = params;
|
|
||||||
const hasText = params.selectionText.trim().length > 0;
|
|
||||||
const isMac = process.platform === "darwin";
|
|
||||||
const platformModifier = isMac ? 'Meta' : 'Ctrl';
|
|
||||||
|
|
||||||
const items = [];
|
|
||||||
|
|
||||||
if (params.misspelledWord) {
|
|
||||||
for (const suggestion of params.dictionarySuggestions) {
|
|
||||||
items.push({
|
|
||||||
title: suggestion,
|
|
||||||
command: "replaceMisspelling",
|
|
||||||
spellingSuggestion: suggestion,
|
|
||||||
uiIcon: "empty"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
items.push({
|
|
||||||
title: `Add "${params.misspelledWord}" to dictionary`,
|
|
||||||
uiIcon: "plus",
|
|
||||||
handler: () => webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord)
|
|
||||||
});
|
|
||||||
|
|
||||||
items.push({ title: `----` });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.isEditable) {
|
|
||||||
items.push({
|
|
||||||
enabled: editFlags.canCut && hasText,
|
|
||||||
title: `Cut <kbd>${platformModifier}+X`,
|
|
||||||
uiIcon: "cut",
|
|
||||||
handler: () => webContents.cut()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.isEditable || hasText) {
|
|
||||||
items.push({
|
|
||||||
enabled: editFlags.canCopy && hasText,
|
|
||||||
title: `Copy <kbd>${platformModifier}+C`,
|
|
||||||
uiIcon: "copy",
|
|
||||||
handler: () => webContents.copy()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.linkURL.length !== 0 && params.mediaType === 'none') {
|
|
||||||
items.push({
|
|
||||||
title: `Copy link`,
|
|
||||||
uiIcon: "copy",
|
|
||||||
handler: () => {
|
|
||||||
electron.clipboard.write({
|
|
||||||
bookmark: params.linkText,
|
|
||||||
text: params.linkURL
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.isEditable) {
|
|
||||||
items.push({
|
|
||||||
enabled: editFlags.canPaste,
|
|
||||||
title: `Paste <kbd>${platformModifier}+V`,
|
|
||||||
uiIcon: "paste",
|
|
||||||
handler: () => webContents.paste()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.isEditable) {
|
|
||||||
items.push({
|
|
||||||
enabled: editFlags.canPaste,
|
|
||||||
title: `Paste as plain text <kbd>${platformModifier}+Shift+V`,
|
|
||||||
uiIcon: "paste",
|
|
||||||
handler: () => webContents.pasteAndMatchStyle()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasText) {
|
|
||||||
const shortenedSelection = params.selectionText.length > 15
|
|
||||||
? (params.selectionText.substr(0, 13) + "…")
|
|
||||||
: params.selectionText;
|
|
||||||
|
|
||||||
items.push({
|
|
||||||
enabled: editFlags.canPaste,
|
|
||||||
title: `Search for "${shortenedSelection}" with DuckDuckGo`,
|
|
||||||
uiIcon: "search-alt",
|
|
||||||
handler: () => electron.shell.openExternal(`https://duckduckgo.com/?q=${encodeURIComponent(params.selectionText)}`)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (items.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
contextMenu.show({
|
|
||||||
x: params.x,
|
|
||||||
y: params.y,
|
|
||||||
items,
|
|
||||||
selectMenuItemHandler: ({command, spellingSuggestion}) => {
|
|
||||||
if (command === 'replaceMisspelling') {
|
|
||||||
webContents.insertText(spellingSuggestion);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,18 +1,18 @@
|
|||||||
import FlexContainer from "./flex_container.js";
|
import FlexContainer from "../widgets/flex_container.js";
|
||||||
import GlobalMenuWidget from "./global_menu.js";
|
import GlobalMenuWidget from "../widgets/global_menu.js";
|
||||||
import TabRowWidget from "./tab_row.js";
|
import TabRowWidget from "../widgets/tab_row.js";
|
||||||
import TitleBarButtonsWidget from "./title_bar_buttons.js";
|
import TitleBarButtonsWidget from "../widgets/title_bar_buttons.js";
|
||||||
import NoteTreeWidget from "./note_tree.js";
|
import NoteTreeWidget from "../widgets/note_tree.js";
|
||||||
import TabCachingWidget from "./tab_caching_widget.js";
|
import TabCachingWidget from "../widgets/tab_caching_widget.js";
|
||||||
import NoteTitleWidget from "./note_title.js";
|
import NoteTitleWidget from "../widgets/note_title.js";
|
||||||
import RunScriptButtonsWidget from "./run_script_buttons.js";
|
import RunScriptButtonsWidget from "../widgets/run_script_buttons.js";
|
||||||
import ProtectedNoteSwitchWidget from "./protected_note_switch.js";
|
import ProtectedNoteSwitchWidget from "../widgets/protected_note_switch.js";
|
||||||
import NoteTypeWidget from "./note_type.js";
|
import NoteTypeWidget from "../widgets/note_type.js";
|
||||||
import NoteActionsWidget from "./note_actions.js";
|
import NoteActionsWidget from "../widgets/note_actions.js";
|
||||||
import PromotedAttributesWidget from "./promoted_attributes.js";
|
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
||||||
import NoteDetailWidget from "./note_detail.js";
|
import NoteDetailWidget from "../widgets/note_detail.js";
|
||||||
|
|
||||||
export default class ExtraLayout {
|
export default class DesktopExtraWindowLayout {
|
||||||
constructor(customWidgets) {
|
constructor(customWidgets) {
|
||||||
this.customWidgets = customWidgets;
|
this.customWidgets = customWidgets;
|
||||||
}
|
}
|
@ -1,30 +1,30 @@
|
|||||||
import FlexContainer from "./flex_container.js";
|
import FlexContainer from "../widgets/flex_container.js";
|
||||||
import GlobalMenuWidget from "./global_menu.js";
|
import GlobalMenuWidget from "../widgets/global_menu.js";
|
||||||
import TabRowWidget from "./tab_row.js";
|
import TabRowWidget from "../widgets/tab_row.js";
|
||||||
import TitleBarButtonsWidget from "./title_bar_buttons.js";
|
import TitleBarButtonsWidget from "../widgets/title_bar_buttons.js";
|
||||||
import StandardTopWidget from "./standard_top_widget.js";
|
import StandardTopWidget from "../widgets/standard_top_widget.js";
|
||||||
import SidePaneContainer from "./side_pane_container.js";
|
import SidePaneContainer from "../widgets/side_pane_container.js";
|
||||||
import GlobalButtonsWidget from "./global_buttons.js";
|
import GlobalButtonsWidget from "../widgets/global_buttons.js";
|
||||||
import SearchBoxWidget from "./search_box.js";
|
import SearchBoxWidget from "../widgets/search_box.js";
|
||||||
import SearchResultsWidget from "./search_results.js";
|
import SearchResultsWidget from "../widgets/search_results.js";
|
||||||
import NoteTreeWidget from "./note_tree.js";
|
import NoteTreeWidget from "../widgets/note_tree.js";
|
||||||
import TabCachingWidget from "./tab_caching_widget.js";
|
import TabCachingWidget from "../widgets/tab_caching_widget.js";
|
||||||
import NotePathsWidget from "./note_paths.js";
|
import NotePathsWidget from "../widgets/note_paths.js";
|
||||||
import NoteTitleWidget from "./note_title.js";
|
import NoteTitleWidget from "../widgets/note_title.js";
|
||||||
import RunScriptButtonsWidget from "./run_script_buttons.js";
|
import RunScriptButtonsWidget from "../widgets/run_script_buttons.js";
|
||||||
import ProtectedNoteSwitchWidget from "./protected_note_switch.js";
|
import ProtectedNoteSwitchWidget from "../widgets/protected_note_switch.js";
|
||||||
import NoteTypeWidget from "./note_type.js";
|
import NoteTypeWidget from "../widgets/note_type.js";
|
||||||
import NoteActionsWidget from "./note_actions.js";
|
import NoteActionsWidget from "../widgets/note_actions.js";
|
||||||
import PromotedAttributesWidget from "./promoted_attributes.js";
|
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
||||||
import NoteDetailWidget from "./note_detail.js";
|
import NoteDetailWidget from "../widgets/note_detail.js";
|
||||||
import NoteInfoWidget from "./note_info.js";
|
import NoteInfoWidget from "../widgets/note_info.js";
|
||||||
import CalendarWidget from "./calendar.js";
|
import CalendarWidget from "../widgets/calendar.js";
|
||||||
import AttributesWidget from "./attributes.js";
|
import AttributesWidget from "../widgets/attributes.js";
|
||||||
import LinkMapWidget from "./link_map.js";
|
import LinkMapWidget from "../widgets/link_map.js";
|
||||||
import NoteRevisionsWidget from "./note_revisions.js";
|
import NoteRevisionsWidget from "../widgets/note_revisions.js";
|
||||||
import SimilarNotesWidget from "./similar_notes.js";
|
import SimilarNotesWidget from "../widgets/similar_notes.js";
|
||||||
import WhatLinksHereWidget from "./what_links_here.js";
|
import WhatLinksHereWidget from "../widgets/what_links_here.js";
|
||||||
import SidePaneToggles from "./side_pane_toggles.js";
|
import SidePaneToggles from "../widgets/side_pane_toggles.js";
|
||||||
import appContext from "../services/app_context.js";
|
import appContext from "../services/app_context.js";
|
||||||
|
|
||||||
const RIGHT_PANE_CSS = `
|
const RIGHT_PANE_CSS = `
|
||||||
@ -98,7 +98,7 @@ const RIGHT_PANE_CSS = `
|
|||||||
}
|
}
|
||||||
</style>`;
|
</style>`;
|
||||||
|
|
||||||
export default class DesktopLayout {
|
export default class DesktopMainWindowLayout {
|
||||||
constructor(customWidgets) {
|
constructor(customWidgets) {
|
||||||
this.customWidgets = customWidgets;
|
this.customWidgets = customWidgets;
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
import FlexContainer from "./flex_container.js";
|
import FlexContainer from "../widgets/flex_container.js";
|
||||||
import NoteTitleWidget from "./note_title.js";
|
import NoteTitleWidget from "../widgets/note_title.js";
|
||||||
import NoteDetailWidget from "./note_detail.js";
|
import NoteDetailWidget from "../widgets/note_detail.js";
|
||||||
import NoteTreeWidget from "./note_tree.js";
|
import NoteTreeWidget from "../widgets/note_tree.js";
|
||||||
import MobileGlobalButtonsWidget from "./mobile_global_buttons.js";
|
import MobileGlobalButtonsWidget from "../widgets/mobile_global_buttons.js";
|
||||||
import CloseDetailButtonWidget from "./close_detail_button.js";
|
import CloseDetailButtonWidget from "../widgets/close_detail_button.js";
|
||||||
import MobileDetailMenuWidget from "./mobile_detail_menu.js";
|
import MobileDetailMenuWidget from "../widgets/mobile_detail_menu.js";
|
||||||
import ScreenContainer from "./screen_container.js";
|
import ScreenContainer from "../widgets/screen_container.js";
|
||||||
|
|
||||||
const MOBILE_CSS = `
|
const MOBILE_CSS = `
|
||||||
<style>
|
<style>
|
@ -1,5 +1,5 @@
|
|||||||
import appContext from "./services/app_context.js";
|
import appContext from "./services/app_context.js";
|
||||||
import MobileLayout from "./widgets/mobile_layout.js";
|
import MobileLayout from "./layouts/mobile_layout.js";
|
||||||
import glob from "./services/glob.js";
|
import glob from "./services/glob.js";
|
||||||
|
|
||||||
glob.setupGlobs();
|
glob.setupGlobs();
|
||||||
|
@ -13,18 +13,24 @@ import MobileScreenSwitcherExecutor from "../widgets/mobile_screen_switcher.js";
|
|||||||
import MainTreeExecutors from "./main_tree_executors.js";
|
import MainTreeExecutors from "./main_tree_executors.js";
|
||||||
|
|
||||||
class AppContext extends Component {
|
class AppContext extends Component {
|
||||||
|
constructor(isMainWindow) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.isMainWindow = isMainWindow;
|
||||||
|
}
|
||||||
|
|
||||||
setLayout(layout) {
|
setLayout(layout) {
|
||||||
this.layout = layout;
|
this.layout = layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
async start(loadExistingTabs = true) {
|
async start() {
|
||||||
await Promise.all([treeCache.initializedPromise, options.initializedPromise]);
|
await Promise.all([treeCache.initializedPromise, options.initializedPromise]);
|
||||||
|
|
||||||
$("#loading-indicator").hide();
|
$("#loading-indicator").hide();
|
||||||
|
|
||||||
this.showWidgets();
|
this.showWidgets();
|
||||||
|
|
||||||
this.tabManager.loadTabs(loadExistingTabs);
|
this.tabManager.loadTabs();
|
||||||
|
|
||||||
if (utils.isDesktop()) {
|
if (utils.isDesktop()) {
|
||||||
setTimeout(() => bundleService.executeStartupBundles(), 2000);
|
setTimeout(() => bundleService.executeStartupBundles(), 2000);
|
||||||
@ -115,7 +121,7 @@ class AppContext extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const appContext = new AppContext();
|
const appContext = new AppContext(window.glob.isMainWindow);
|
||||||
|
|
||||||
// we should save all outstanding changes before the page/app is closed
|
// we should save all outstanding changes before the page/app is closed
|
||||||
$(window).on('beforeunload', () => {
|
$(window).on('beforeunload', () => {
|
||||||
|
@ -6,6 +6,7 @@ import treeCache from "./tree_cache.js";
|
|||||||
import treeService from "./tree.js";
|
import treeService from "./tree.js";
|
||||||
import utils from "./utils.js";
|
import utils from "./utils.js";
|
||||||
import TabContext from "./tab_context.js";
|
import TabContext from "./tab_context.js";
|
||||||
|
import appContext from "./app_context.js";
|
||||||
|
|
||||||
export default class TabManager extends Component {
|
export default class TabManager extends Component {
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -14,6 +15,10 @@ export default class TabManager extends Component {
|
|||||||
this.activeTabId = null;
|
this.activeTabId = null;
|
||||||
|
|
||||||
this.tabsUpdate = new SpacedUpdate(async () => {
|
this.tabsUpdate = new SpacedUpdate(async () => {
|
||||||
|
if (!appContext.isMainWindow) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const openTabs = this.tabContexts
|
const openTabs = this.tabContexts
|
||||||
.map(tc => tc.getTabState())
|
.map(tc => tc.getTabState())
|
||||||
.filter(t => !!t);
|
.filter(t => !!t);
|
||||||
@ -29,8 +34,8 @@ export default class TabManager extends Component {
|
|||||||
return this.children;
|
return this.children;
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadTabs(loadExistingTabs) {
|
async loadTabs() {
|
||||||
const openTabs = loadExistingTabs
|
const tabsToOpen = appContext.isMainWindow
|
||||||
? (options.getJson('openTabs') || [])
|
? (options.getJson('openTabs') || [])
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
@ -41,17 +46,17 @@ export default class TabManager extends Component {
|
|||||||
const noteId = treeService.getNoteIdFromNotePath(notePath);
|
const noteId = treeService.getNoteIdFromNotePath(notePath);
|
||||||
|
|
||||||
if (noteId && await treeCache.noteExists(noteId)) {
|
if (noteId && await treeCache.noteExists(noteId)) {
|
||||||
for (const tab of openTabs) {
|
for (const tab of tabsToOpen) {
|
||||||
tab.active = false;
|
tab.active = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const foundTab = openTabs.find(tab => noteId === treeService.getNoteIdFromNotePath(tab.notePath));
|
const foundTab = tabsToOpen.find(tab => noteId === treeService.getNoteIdFromNotePath(tab.notePath));
|
||||||
|
|
||||||
if (foundTab) {
|
if (foundTab) {
|
||||||
foundTab.active = true;
|
foundTab.active = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
openTabs.push({
|
tabsToOpen.push({
|
||||||
notePath: notePath,
|
notePath: notePath,
|
||||||
active: true
|
active: true
|
||||||
});
|
});
|
||||||
@ -61,7 +66,7 @@ export default class TabManager extends Component {
|
|||||||
|
|
||||||
let filteredTabs = [];
|
let filteredTabs = [];
|
||||||
|
|
||||||
for (const openTab of openTabs) {
|
for (const openTab of tabsToOpen) {
|
||||||
const noteId = treeService.getNoteIdFromNotePath(openTab.notePath);
|
const noteId = treeService.getNoteIdFromNotePath(openTab.notePath);
|
||||||
|
|
||||||
if (await treeCache.noteExists(noteId)) {
|
if (await treeCache.noteExists(noteId)) {
|
||||||
|
@ -13,10 +13,6 @@ async function index(req, res) {
|
|||||||
|
|
||||||
let view = req.cookies['trilium-device'] === 'mobile' ? 'mobile' : 'desktop';
|
let view = req.cookies['trilium-device'] === 'mobile' ? 'mobile' : 'desktop';
|
||||||
|
|
||||||
if (req.query.extra) {
|
|
||||||
view = 'extra';
|
|
||||||
}
|
|
||||||
|
|
||||||
const csrfToken = req.csrfToken();
|
const csrfToken = req.csrfToken();
|
||||||
log.info(`Generated CSRF token ${csrfToken} with secret ${res.getHeader('set-cookie')}`);
|
log.info(`Generated CSRF token ${csrfToken} with secret ${res.getHeader('set-cookie')}`);
|
||||||
|
|
||||||
@ -30,7 +26,8 @@ async function index(req, res) {
|
|||||||
maxSyncIdAtLoad: await sql.getValue("SELECT MAX(id) FROM sync"),
|
maxSyncIdAtLoad: await sql.getValue("SELECT MAX(id) FROM sync"),
|
||||||
instanceName: config.General ? config.General.instanceName : null,
|
instanceName: config.General ? config.General.instanceName : null,
|
||||||
appCssNoteIds: await getAppCssNoteIds(),
|
appCssNoteIds: await getAppCssNoteIds(),
|
||||||
isDev: env.isDev()
|
isDev: env.isDev(),
|
||||||
|
isMainWindow: !req.query.extra
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ module.exports = function(filters, selectedColumns = 'notes.*') {
|
|||||||
|
|
||||||
// forcing to use particular index since SQLite query planner would often choose something pretty bad
|
// forcing to use particular index since SQLite query planner would often choose something pretty bad
|
||||||
joins[alias] = `LEFT JOIN attributes AS ${alias} INDEXED BY IDX_attributes_noteId_index `
|
joins[alias] = `LEFT JOIN attributes AS ${alias} INDEXED BY IDX_attributes_noteId_index `
|
||||||
+ `ON ${alias}.noteId = notes.noteId AND ${alias}.isDeleted = 0`
|
+ `ON ${alias}.noteId = notes.noteId AND ${alias}.isDeleted = 0 `
|
||||||
+ `AND ${alias}.name = '${property}' `;
|
+ `AND ${alias}.name = '${property}' `;
|
||||||
|
|
||||||
accessor = `${alias}.value`;
|
accessor = `${alias}.value`;
|
||||||
|
@ -46,8 +46,9 @@
|
|||||||
maxSyncIdAtLoad: <%= maxSyncIdAtLoad %>,
|
maxSyncIdAtLoad: <%= maxSyncIdAtLoad %>,
|
||||||
instanceName: '<%= instanceName %>',
|
instanceName: '<%= instanceName %>',
|
||||||
csrfToken: '<%= csrfToken %>',
|
csrfToken: '<%= csrfToken %>',
|
||||||
isDev: '<%= isDev %>',
|
isDev: <%= isDev %>,
|
||||||
appCssNoteIds: <%- JSON.stringify(appCssNoteIds) %>
|
appCssNoteIds: <%- JSON.stringify(appCssNoteIds) %>,
|
||||||
|
isMainWindow: <%= isMainWindow %>
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="shortcut icon" href="favicon.ico">
|
|
||||||
<title>Trilium Notes</title>
|
|
||||||
</head>
|
|
||||||
<body class="desktop theme-<%= theme %>" style="display: none; --main-font-size: <%= mainFontSize %>%; --tree-font-size: <%= treeFontSize %>%; --detail-font-size: <%= detailFontSize %>%;">
|
|
||||||
<noscript>Trilium requires JavaScript to be enabled.</noscript>
|
|
||||||
|
|
||||||
<div id="toast-container" class="d-flex flex-column justify-content-center align-items-center"></div>
|
|
||||||
|
|
||||||
<div class="dropdown-menu dropdown-menu-sm" id="context-menu-container"></div>
|
|
||||||
|
|
||||||
<%- include('dialogs/about.ejs') %>
|
|
||||||
<%- include('dialogs/add_link.ejs') %>
|
|
||||||
<%- include('dialogs/attributes.ejs') %>
|
|
||||||
<%- include('dialogs/branch_prefix.ejs') %>
|
|
||||||
<%- include('dialogs/export.ejs') %>
|
|
||||||
<%- include('dialogs/import.ejs') %>
|
|
||||||
<%- include('dialogs/jump_to_note.ejs') %>
|
|
||||||
<%- include('dialogs/markdown_import.ejs') %>
|
|
||||||
<%- include('dialogs/note_revisions.ejs') %>
|
|
||||||
<%- include('dialogs/note_source.ejs') %>
|
|
||||||
<%- include('dialogs/options.ejs') %>
|
|
||||||
<%- include('dialogs/protected_session_password.ejs') %>
|
|
||||||
<%- include('dialogs/recent_changes.ejs') %>
|
|
||||||
<%- include('dialogs/sql_console.ejs') %>
|
|
||||||
<%- include('dialogs/info.ejs') %>
|
|
||||||
<%- include('dialogs/prompt.ejs') %>
|
|
||||||
<%- include('dialogs/confirm.ejs') %>
|
|
||||||
<%- include('dialogs/help.ejs') %>
|
|
||||||
<%- include('dialogs/note_info.ejs') %>
|
|
||||||
<%- include('dialogs/link_map.ejs') %>
|
|
||||||
<%- include('dialogs/clone_to.ejs') %>
|
|
||||||
<%- include('dialogs/move_to.ejs') %>
|
|
||||||
<%- include('dialogs/backend_log.ejs') %>
|
|
||||||
<%- include('dialogs/include_note.ejs') %>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
window.baseApiUrl = 'api/';
|
|
||||||
window.device = "desktop";
|
|
||||||
window.glob = {
|
|
||||||
activeDialog: null,
|
|
||||||
sourceId: '<%= sourceId %>',
|
|
||||||
maxSyncIdAtLoad: <%= maxSyncIdAtLoad %>,
|
|
||||||
instanceName: '<%= instanceName %>',
|
|
||||||
csrfToken: '<%= csrfToken %>',
|
|
||||||
isDev: '<%= isDev %>',
|
|
||||||
appCssNoteIds: <%- JSON.stringify(appCssNoteIds) %>
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Required for correct loading of scripts in Electron -->
|
|
||||||
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
|
|
||||||
|
|
||||||
<script src="libraries/jquery.min.js"></script>
|
|
||||||
|
|
||||||
<link href="libraries/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
<script src="libraries/bootstrap/js/bootstrap.bundle.min.js"></script>
|
|
||||||
|
|
||||||
<link href="libraries/ckeditor/ckeditor-content.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<script src="libraries/jquery.hotkeys.js"></script>
|
|
||||||
|
|
||||||
<script src="libraries/autocomplete.jquery.min.js"></script>
|
|
||||||
|
|
||||||
<script src="libraries/dayjs.min.js"></script>
|
|
||||||
|
|
||||||
<link href="stylesheets/themes.css" rel="stylesheet">
|
|
||||||
<link href="stylesheets/style.css" rel="stylesheet">
|
|
||||||
<link href="stylesheets/detail.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<script src="app/extra.js" crossorigin type="module"></script>
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="libraries/boxicons/css/boxicons.min.css">
|
|
||||||
|
|
||||||
<script>
|
|
||||||
$("body").show();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -114,7 +114,7 @@
|
|||||||
maxSyncIdAtLoad: <%= maxSyncIdAtLoad %>,
|
maxSyncIdAtLoad: <%= maxSyncIdAtLoad %>,
|
||||||
instanceName: '<%= instanceName %>',
|
instanceName: '<%= instanceName %>',
|
||||||
csrfToken: '<%= csrfToken %>',
|
csrfToken: '<%= csrfToken %>',
|
||||||
isDev: '<%= isDev %>',
|
isDev: <%= isDev %>,
|
||||||
appCssNoteIds: <%- JSON.stringify(appCssNoteIds) %>
|
appCssNoteIds: <%- JSON.stringify(appCssNoteIds) %>
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user