mirror of
https://github.com/zadam/trilium.git
synced 2025-11-10 23:35:50 +01:00
Compare commits
1652 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
118e11c3fd | ||
|
|
b54765113e | ||
|
|
ed08893996 | ||
|
|
20286d53c8 | ||
|
|
9c1a34fe7c | ||
|
|
e70c6b69b8 | ||
|
|
9b69b0ad0d | ||
|
|
3776c40b8d | ||
|
|
c7369bc9b3 | ||
|
|
b741662fde | ||
|
|
624610b17c | ||
|
|
de004bd8ba | ||
|
|
06eb30c69d | ||
|
|
b9b5c13d9c | ||
|
|
8e697d0578 | ||
|
|
6f245ec8d5 | ||
|
|
532df6559a | ||
|
|
8589f7f164 | ||
|
|
4eadf40e20 | ||
|
|
7b9303b392 | ||
|
|
521152ec0e | ||
|
|
2ff746253d | ||
|
|
c270aef738 | ||
|
|
d0881c09ed | ||
|
|
b905c1d03a | ||
|
|
f03448bae4 | ||
|
|
f8ac09df38 | ||
|
|
15c329c331 | ||
|
|
f6afc0b718 | ||
|
|
ecfa333491 | ||
|
|
21b0ef9554 | ||
|
|
2f3be96dff | ||
|
|
4ba7907bee | ||
|
|
afa92551ea | ||
|
|
cc0646e79c | ||
|
|
4c8f20be9a | ||
|
|
3407528c03 | ||
|
|
70575a00cb | ||
|
|
74ba4b9ee5 | ||
|
|
706abeb307 | ||
|
|
7158c48831 | ||
|
|
78e2814068 | ||
|
|
7659224e3a | ||
|
|
baff349fa2 | ||
|
|
50869d29db | ||
|
|
c4603fce25 | ||
|
|
220aab2b76 | ||
|
|
285a7253e3 | ||
|
|
d8d80ed936 | ||
|
|
3463cb83a0 | ||
|
|
b0bd60b9a4 | ||
|
|
3d70a0534b | ||
|
|
53805e9c49 | ||
|
|
0e95610d4e | ||
|
|
051e2b4eef | ||
|
|
1d750bde64 | ||
|
|
4476615d33 | ||
|
|
bbcc16daab | ||
|
|
457dd070c6 | ||
|
|
ce229dd6f5 | ||
|
|
2e59d9d7bc | ||
|
|
bbe96c3967 | ||
|
|
d95eb9f5d3 | ||
|
|
d75279316a | ||
|
|
7f6be13a18 | ||
|
|
2f74b40095 | ||
|
|
a844e1faab | ||
|
|
f629f564cd | ||
|
|
9a5f2f8d3b | ||
|
|
9bccc72668 | ||
|
|
a29597a4bf | ||
|
|
44b34d1ea0 | ||
|
|
c617c84d86 | ||
|
|
b38780755a | ||
|
|
78a54fa9f7 | ||
|
|
fa64ca2c93 | ||
|
|
71d7403690 | ||
|
|
e4cd946ea8 | ||
|
|
cedd1c4789 | ||
|
|
7a677cff5f | ||
|
|
2d03dd22e3 | ||
|
|
e28da416ba | ||
|
|
28c0ef52f3 | ||
|
|
9464a64d64 | ||
|
|
c3af6a6aa2 | ||
|
|
a4281fe26f | ||
|
|
5c0d6e1fef | ||
|
|
23f1103822 | ||
|
|
b45ee6879c | ||
|
|
a8116aa264 | ||
|
|
db3960a23e | ||
|
|
a43e08500e | ||
|
|
9011d648b5 | ||
|
|
30c1708979 | ||
|
|
1a55d3433d | ||
|
|
bec47c0bb2 | ||
|
|
4fdb502a19 | ||
|
|
e9ccd52fd5 | ||
|
|
dcd30972bd | ||
|
|
4578541fa8 | ||
|
|
914fa3625f | ||
|
|
5e3ffc12ce | ||
|
|
aa3a8d19ae | ||
|
|
a57c237c69 | ||
|
|
b52e615f0c | ||
|
|
95e5c2563e | ||
|
|
33be7f828b | ||
|
|
d23d37baac | ||
|
|
dda8b2795b | ||
|
|
0b9eb6c532 | ||
|
|
728f574eac | ||
|
|
8e90826aef | ||
|
|
5e5e0afcf0 | ||
|
|
de85d1f0df | ||
|
|
b287b892e1 | ||
|
|
a0edf00caa | ||
|
|
218b9404fc | ||
|
|
54af120e96 | ||
|
|
ba61ab18ff | ||
|
|
2e14522f86 | ||
|
|
4ae38ac5d6 | ||
|
|
d5cb6a86c8 | ||
|
|
a577fd45e2 | ||
|
|
977284fe57 | ||
|
|
26ea43d604 | ||
|
|
4cb328bdb3 | ||
|
|
16785a5c0b | ||
|
|
d271fe7fdd | ||
|
|
88b9709f15 | ||
|
|
f55edabe92 | ||
|
|
2b983f871e | ||
|
|
ab298cbb3b | ||
|
|
abeeea584f | ||
|
|
4d5597cc75 | ||
|
|
c684712141 | ||
|
|
a8bb301296 | ||
|
|
d5bfa466a2 | ||
|
|
7651c58c47 | ||
|
|
c2ce36d963 | ||
|
|
3359ff5470 | ||
|
|
421c1f257e | ||
|
|
97e87741ee | ||
|
|
193caf8c21 | ||
|
|
d521bda6ab | ||
|
|
b80cb22985 | ||
|
|
7131d44d03 | ||
|
|
7369f9d532 | ||
|
|
58ac325634 | ||
|
|
579b2ce76e | ||
|
|
0494032fb5 | ||
|
|
48853555f5 | ||
|
|
0cd6f0d267 | ||
|
|
0ae4defc6d | ||
|
|
db644f20ed | ||
|
|
59a2ef7527 | ||
|
|
757a046474 | ||
|
|
aeb0f44a43 | ||
|
|
5186ea3fff | ||
|
|
70a4feff50 | ||
|
|
91f85e6675 | ||
|
|
0cb989e74f | ||
|
|
d4e31e9d98 | ||
|
|
6c3b5314c8 | ||
|
|
3faac9f26e | ||
|
|
c31ac1a6ee | ||
|
|
9eff6ad4c2 | ||
|
|
9deb7ba4e9 | ||
|
|
93d77ca06e | ||
|
|
a42daccc2e | ||
|
|
33c64b604e | ||
|
|
f89c14b35a | ||
|
|
1fa3420abe | ||
|
|
f8b8edd5aa | ||
|
|
4c90319c9e | ||
|
|
3b531544a3 | ||
|
|
25d9695db0 | ||
|
|
caf88473f6 | ||
|
|
b32dc18cf6 | ||
|
|
5a7349121a | ||
|
|
dcc5b9f422 | ||
|
|
0b01890a11 | ||
|
|
686c8936cb | ||
|
|
d9071f2d8e | ||
|
|
2a0472ae42 | ||
|
|
4a47ff2ea0 | ||
|
|
d784acaf13 | ||
|
|
e893c2f17a | ||
|
|
aa526d9735 | ||
|
|
53e459d0d5 | ||
|
|
c54befa8a1 | ||
|
|
87c055913f | ||
|
|
8c2354df71 | ||
|
|
d650b801e6 | ||
|
|
fbb27b512e | ||
|
|
3ae7bd59ec | ||
|
|
55f7a26634 | ||
|
|
e3e5109270 | ||
|
|
aa7f01313a | ||
|
|
6f82c283e9 | ||
|
|
aa7ecaf684 | ||
|
|
056c07591e | ||
|
|
0df15a02ba | ||
|
|
02404a5f5b | ||
|
|
50a69248a7 | ||
|
|
ed146f71c5 | ||
|
|
4492876293 | ||
|
|
51779cf218 | ||
|
|
5536284826 | ||
|
|
e4d74108c6 | ||
|
|
faf67f5da2 | ||
|
|
021d1ba0fb | ||
|
|
5782e58db1 | ||
|
|
ffead56a1d | ||
|
|
b644701983 | ||
|
|
e8bf12c4ab | ||
|
|
18810bb86f | ||
|
|
4f442551a9 | ||
|
|
a8f565d912 | ||
|
|
344f2d819e | ||
|
|
0c6a57d3bb | ||
|
|
d2e9101675 | ||
|
|
82e5de2261 | ||
|
|
ff4cd7eae5 | ||
|
|
a62c9a1a2f | ||
|
|
cf406383c3 | ||
|
|
07fe42d04e | ||
|
|
5b8bb8587d | ||
|
|
154492e454 | ||
|
|
b1729ad7ec | ||
|
|
01deab9c79 | ||
|
|
daec11b981 | ||
|
|
7cdd8ffbe2 | ||
|
|
25ac9e2aa1 | ||
|
|
4fc434a52e | ||
|
|
3e0d1bfa44 | ||
|
|
3b02eb8851 | ||
|
|
4c5b2a7c75 | ||
|
|
a5a90b582a | ||
|
|
e6d2009605 | ||
|
|
5d706a88d8 | ||
|
|
510601037d | ||
|
|
b312b6f3bc | ||
|
|
0c1efd3402 | ||
|
|
69182a1a42 | ||
|
|
8a63f2028c | ||
|
|
947330ed73 | ||
|
|
4526455486 | ||
|
|
c7c7e05106 | ||
|
|
e250107202 | ||
|
|
1d259aab9d | ||
|
|
5171675dee | ||
|
|
6bc54892a3 | ||
|
|
0a6670ce5e | ||
|
|
beb7c66ff5 | ||
|
|
c141cbcf07 | ||
|
|
8e83562e6a | ||
|
|
966e5a2ef3 | ||
|
|
4f5be54030 | ||
|
|
08197f56d0 | ||
|
|
68c6260e45 | ||
|
|
ff0d8a70ad | ||
|
|
85bfd49d1c | ||
|
|
605b317f29 | ||
|
|
6f0a264869 | ||
|
|
6a89e096e5 | ||
|
|
e4e0f7619b | ||
|
|
f3f07cdd28 | ||
|
|
23f2e1eb45 | ||
|
|
9bbd6d146b | ||
|
|
37aa8ec176 | ||
|
|
05f3f9627d | ||
|
|
a9fa99cadf | ||
|
|
d5c1604a58 | ||
|
|
e99f821e88 | ||
|
|
6571ff9d84 | ||
|
|
9d63ef20fb | ||
|
|
71a3cf0cfe | ||
|
|
e5e55e1cf1 | ||
|
|
83b13cae92 | ||
|
|
6663c3abc1 | ||
|
|
738b28c2b3 | ||
|
|
4eec6021c3 | ||
|
|
39bda30853 | ||
|
|
6adcaca5e0 | ||
|
|
5a5f71fc71 | ||
|
|
f3765f95b5 | ||
|
|
6ebb0eb03e | ||
|
|
b42aa32b72 | ||
|
|
11e1ea7ea5 | ||
|
|
5f6fac994f | ||
|
|
d7460e9fe5 | ||
|
|
ef82c3d48b | ||
|
|
89585e38ce | ||
|
|
938c6e356b | ||
|
|
b7dd806d07 | ||
|
|
a1d86cef58 | ||
|
|
1fec5bb564 | ||
|
|
35e98addc8 | ||
|
|
79290633b1 | ||
|
|
ffc9e715ef | ||
|
|
8f8302c4a3 | ||
|
|
136b449f60 | ||
|
|
61319c3a14 | ||
|
|
104a1f0c3a | ||
|
|
16200312ce | ||
|
|
664de68d53 | ||
|
|
6190949dcc | ||
|
|
3ac248169f | ||
|
|
15e240ac33 | ||
|
|
d30fc09e73 | ||
|
|
6a2b9b748f | ||
|
|
b5e2187c0d | ||
|
|
d9a349a531 | ||
|
|
2c1cebfbc3 | ||
|
|
c6738ac52f | ||
|
|
604f2abf5a | ||
|
|
617703899f | ||
|
|
6322ca11c9 | ||
|
|
d62aecc551 | ||
|
|
953b376ce3 | ||
|
|
80f1707d8b | ||
|
|
4f9f8652e2 | ||
|
|
6e06d7169f | ||
|
|
ecf12a4063 | ||
|
|
64428ae761 | ||
|
|
3524c34ff9 | ||
|
|
3f99c8b337 | ||
|
|
27d9ae885f | ||
|
|
214ba5265a | ||
|
|
35efd2a680 | ||
|
|
19c6ae6fe5 | ||
|
|
bf0761a303 | ||
|
|
8391fd7534 | ||
|
|
6d4b87888a | ||
|
|
3f0b0f9b62 | ||
|
|
859d9dcd04 | ||
|
|
ecb6dc7923 | ||
|
|
76dd9baea8 | ||
|
|
82ff5f6660 | ||
|
|
b52d30c55a | ||
|
|
99fd088ff5 | ||
|
|
945f29c759 | ||
|
|
98f42887d8 | ||
|
|
a1b589148b | ||
|
|
66bb639a15 | ||
|
|
1784b50990 | ||
|
|
5e9c271bfd | ||
|
|
70837fdc69 | ||
|
|
67d80512f6 | ||
|
|
dd8a1e8aca | ||
|
|
99f43e2280 | ||
|
|
bcffa77c90 | ||
|
|
8ab2069411 | ||
|
|
21fc61d132 | ||
|
|
552df50fe4 | ||
|
|
c058b663ee | ||
|
|
6c19370235 | ||
|
|
d332bb57ba | ||
|
|
3ef38e7f4e | ||
|
|
1abc3b5534 | ||
|
|
ddcd27ddf6 | ||
|
|
ff385c8c88 | ||
|
|
a641e452ce | ||
|
|
5f4fa25da5 | ||
|
|
ea177e972e | ||
|
|
7e3013bfdc | ||
|
|
5115baeb21 | ||
|
|
35a924a05a | ||
|
|
78f067965f | ||
|
|
413b16b51c | ||
|
|
59586c53b2 | ||
|
|
70ed1d7abb | ||
|
|
67de6c614c | ||
|
|
faf030ab3a | ||
|
|
6e20d4b5dd | ||
|
|
10e809af75 | ||
|
|
f1478f8149 | ||
|
|
9087adf254 | ||
|
|
f944c6d8e2 | ||
|
|
131fb43ab7 | ||
|
|
8a76fdb8d1 | ||
|
|
8e3dbb2f65 | ||
|
|
8b4fee1680 | ||
|
|
a370b52614 | ||
|
|
4063229982 | ||
|
|
1ef03b7a77 | ||
|
|
e510653edb | ||
|
|
444e103047 | ||
|
|
1d6ab64ae5 | ||
|
|
0bc86d7c75 | ||
|
|
cfd55147df | ||
|
|
754bb61a52 | ||
|
|
a2c523def1 | ||
|
|
4f103375b5 | ||
|
|
496091677b | ||
|
|
618b67f551 | ||
|
|
e3604edad7 | ||
|
|
9c791df0ed | ||
|
|
ce4f46c226 | ||
|
|
44cfbcf7f4 | ||
|
|
a317331551 | ||
|
|
eeec3e440d | ||
|
|
b06aa29ea3 | ||
|
|
9c3f9a524e | ||
|
|
1c832182d6 | ||
|
|
b58e1f146c | ||
|
|
bc86fb95b5 | ||
|
|
6c43db692e | ||
|
|
6ffce824d1 | ||
|
|
f1f8f34ef8 | ||
|
|
a0b19ce526 | ||
|
|
4cc9ba824d | ||
|
|
08e66c18e7 | ||
|
|
cf8089b07f | ||
|
|
426d8296be | ||
|
|
f8c61ecde9 | ||
|
|
6d51da9b88 | ||
|
|
0ad95d00dc | ||
|
|
947e43a615 | ||
|
|
0424fe4fba | ||
|
|
f789b69506 | ||
|
|
5df512a69c | ||
|
|
2a5f329ada | ||
|
|
4fe3944585 | ||
|
|
98b8e97fd9 | ||
|
|
38a1cd0d35 | ||
|
|
ae544a80c2 | ||
|
|
9819a92b48 | ||
|
|
55a7017e92 | ||
|
|
1581568741 | ||
|
|
d7982c65dd | ||
|
|
39608a2815 | ||
|
|
f656c2caaa | ||
|
|
bd3e92f091 | ||
|
|
7ce7c66463 | ||
|
|
61d26fec60 | ||
|
|
1822eea77c | ||
|
|
28c0e4e802 | ||
|
|
5b7e9d4c12 | ||
|
|
bee2fdb22f | ||
|
|
5c46a0dfa8 | ||
|
|
88d90fdedd | ||
|
|
2a1ecdbdca | ||
|
|
5772046674 | ||
|
|
1e2c8b2ac4 | ||
|
|
955b202b8a | ||
|
|
be98a27439 | ||
|
|
8d88411fda | ||
|
|
54200fa0cb | ||
|
|
5d82a26c87 | ||
|
|
e51070e389 | ||
|
|
e0dc4fee20 | ||
|
|
e683dc1d66 | ||
|
|
14a3438a20 | ||
|
|
dd483fccbc | ||
|
|
5620e7f4a7 | ||
|
|
187e9b57de | ||
|
|
d6d67e7957 | ||
|
|
bde03e8378 | ||
|
|
4c3fcdba4a | ||
|
|
7a5c1277f1 | ||
|
|
69b262040a | ||
|
|
8731fa6c31 | ||
|
|
f4e8fc4d83 | ||
|
|
dd5b3a3c1c | ||
|
|
17319d25e8 | ||
|
|
2f189b6961 | ||
|
|
b1f8d44576 | ||
|
|
7f22532a0a | ||
|
|
c7beb87980 | ||
|
|
5cd1fd53d4 | ||
|
|
2eadbe3f01 | ||
|
|
4e7493f648 | ||
|
|
b9d54a44f6 | ||
|
|
a1ad8be02b | ||
|
|
b02514f395 | ||
|
|
dcef3f2be5 | ||
|
|
585fdabd27 | ||
|
|
71fcb77a22 | ||
|
|
33ecf6aa6d | ||
|
|
1f75de83c6 | ||
|
|
31b52f72d2 | ||
|
|
01aaf81196 | ||
|
|
3ecfdd62e8 | ||
|
|
3c74d0714a | ||
|
|
f58d9adff2 | ||
|
|
0eecf5b132 | ||
|
|
9e3cca333a | ||
|
|
81c233463e | ||
|
|
87946e7e85 | ||
|
|
c3768a051d | ||
|
|
c579cd3ce7 | ||
|
|
945e2625d3 | ||
|
|
ea45024559 | ||
|
|
ff36414a55 | ||
|
|
8f184c5b10 | ||
|
|
c027a2bbfa | ||
|
|
91adc2258d | ||
|
|
6701e83927 | ||
|
|
3f54e589d8 | ||
|
|
f65be73f71 | ||
|
|
346e9282bd | ||
|
|
8f8ea7adc3 | ||
|
|
4affd3a955 | ||
|
|
bcce05cc4d | ||
|
|
ac16c42e23 | ||
|
|
5025329e92 | ||
|
|
507910b0ce | ||
|
|
b59fab9dba | ||
|
|
ac7e4580f6 | ||
|
|
27d1044ba8 | ||
|
|
96c949b2fc | ||
|
|
927cd0255e | ||
|
|
c2c8417c42 | ||
|
|
3bb224e682 | ||
|
|
6f126ea17b | ||
|
|
61a5cf1452 | ||
|
|
14b8d0a47e | ||
|
|
12df6a0d6e | ||
|
|
21d243eec1 | ||
|
|
161238ca11 | ||
|
|
4d5267e18b | ||
|
|
0fa52907b3 | ||
|
|
c4f57f3d15 | ||
|
|
6bde264156 | ||
|
|
4f72f81a95 | ||
|
|
c212c5d6ff | ||
|
|
f24880d42c | ||
|
|
ee9bf1d47b | ||
|
|
b069fab82f | ||
|
|
d5ce01a65b | ||
|
|
dbfa94a9ee | ||
|
|
86aaa97809 | ||
|
|
c4c8fe23a9 | ||
|
|
715fe77db3 | ||
|
|
40f5abd6e3 | ||
|
|
f3f7e5900b | ||
|
|
f4402a6d81 | ||
|
|
6966efd374 | ||
|
|
cd3e025fdc | ||
|
|
a224b774d3 | ||
|
|
f20078f3b0 | ||
|
|
56019e5449 | ||
|
|
7dd517d8f7 | ||
|
|
b2f1b3c910 | ||
|
|
2197fae700 | ||
|
|
3661733f07 | ||
|
|
52a6f2597e | ||
|
|
d8e9cad23d | ||
|
|
6ed333d222 | ||
|
|
ba26c478d6 | ||
|
|
055fcb7b2a | ||
|
|
f4468706ef | ||
|
|
212956201a | ||
|
|
1182592fc5 | ||
|
|
d534db29c9 | ||
|
|
40edd42740 | ||
|
|
d2c7011735 | ||
|
|
a050d1741b | ||
|
|
18982865da | ||
|
|
3aa810fed7 | ||
|
|
c5ecc22c67 | ||
|
|
252f8ccb1f | ||
|
|
e1bb704383 | ||
|
|
dce0d9400b | ||
|
|
615c783fe3 | ||
|
|
f29411baf7 | ||
|
|
64d3589b40 | ||
|
|
be5e70130c | ||
|
|
9ba1e9d732 | ||
|
|
e1dc4d1433 | ||
|
|
d0d268496c | ||
|
|
8a6950c945 | ||
|
|
477592d176 | ||
|
|
7e5c2ed79d | ||
|
|
bc580f2a88 | ||
|
|
71cd92e0b5 | ||
|
|
a4d92e12be | ||
|
|
c40279b480 | ||
|
|
4c7e7c157c | ||
|
|
c08386450a | ||
|
|
eb93762ecc | ||
|
|
2697f9a25d | ||
|
|
9515e2099b | ||
|
|
966c08da87 | ||
|
|
ea04446e81 | ||
|
|
e4f806ed14 | ||
|
|
49cf7ae1a3 | ||
|
|
1a6f5a027f | ||
|
|
f4796f0f9e | ||
|
|
30480b2c23 | ||
|
|
b7b1d17817 | ||
|
|
c4e5494c14 | ||
|
|
b0f63c02c9 | ||
|
|
2480509811 | ||
|
|
7872193ed0 | ||
|
|
638cb4281e | ||
|
|
1568908982 | ||
|
|
1a68bdfe02 | ||
|
|
4459561308 | ||
|
|
14e06c4555 | ||
|
|
b8e17959ae | ||
|
|
c16a135efc | ||
|
|
cbc756ba06 | ||
|
|
64daeb0826 | ||
|
|
e15839db47 | ||
|
|
dcdffed003 | ||
|
|
48e85fad43 | ||
|
|
189071deb8 | ||
|
|
354f1d65c1 | ||
|
|
b78893b106 | ||
|
|
9310315c6a | ||
|
|
1794f8546d | ||
|
|
b3bc0572e5 | ||
|
|
253ce1f223 | ||
|
|
2f3bf94b47 | ||
|
|
d802caa03b | ||
|
|
e69751a8b3 | ||
|
|
0760ea22fb | ||
|
|
8a8f407e99 | ||
|
|
e030dd96da | ||
|
|
01abfc2528 | ||
|
|
042b929dc5 | ||
|
|
ab1d5e31fb | ||
|
|
d073e4c37f | ||
|
|
d60d965a42 | ||
|
|
1c87cfbbd9 | ||
|
|
fee333512a | ||
|
|
38a3f46506 | ||
|
|
bf7506fcd8 | ||
|
|
6fbba426de | ||
|
|
d5bdec13b5 | ||
|
|
cc1b6eb42d | ||
|
|
8baf496f96 | ||
|
|
23a20c4490 | ||
|
|
c8b98f2db6 | ||
|
|
3f36f515db | ||
|
|
892eb5b95d | ||
|
|
62a69a0da0 | ||
|
|
3588e38543 | ||
|
|
41450ab85a | ||
|
|
0526d99560 | ||
|
|
557d576b85 | ||
|
|
041c961cfa | ||
|
|
dcc35bd507 | ||
|
|
09c3e5b56e | ||
|
|
950793377d | ||
|
|
7dac61dc26 | ||
|
|
42dcb8f141 | ||
|
|
43dc8a4b87 | ||
|
|
35316a4c45 | ||
|
|
1366489f99 | ||
|
|
0c399a676a | ||
|
|
31ee78b1aa | ||
|
|
808ba75ee0 | ||
|
|
ac1399a139 | ||
|
|
1e4793351a | ||
|
|
f502fe41c7 | ||
|
|
0ec0091357 | ||
|
|
0e2196f872 | ||
|
|
32dee254cd | ||
|
|
d4a6a297f4 | ||
|
|
a64d8cd8e2 | ||
|
|
bf4cfb9c02 | ||
|
|
a99dfecf43 | ||
|
|
1530d96eca | ||
|
|
5dc066f4c6 | ||
|
|
395f33cd5b | ||
|
|
21b20cf575 | ||
|
|
e3dd25b591 | ||
|
|
b9a4e7ab11 | ||
|
|
6ae67c410c | ||
|
|
4ef7667484 | ||
|
|
3660e2f127 | ||
|
|
357d294f2d | ||
|
|
bb636128b0 | ||
|
|
aa102ab393 | ||
|
|
ea53665e64 | ||
|
|
3341e59a80 | ||
|
|
74a805056b | ||
|
|
1e8f179f81 | ||
|
|
54c906de8d | ||
|
|
114b3ef4d1 | ||
|
|
f6fa1e69b3 | ||
|
|
fcc8086f9c | ||
|
|
f42e870de1 | ||
|
|
7eefff0a74 | ||
|
|
1b842e35ff | ||
|
|
c9021ca742 | ||
|
|
b229ab3c02 | ||
|
|
6825f28ba0 | ||
|
|
5e72f271ea | ||
|
|
9ad6dfd5e9 | ||
|
|
81031673c3 | ||
|
|
1a6423fd36 | ||
|
|
9b872617e6 | ||
|
|
57be2e2474 | ||
|
|
1d65afef53 | ||
|
|
b6385618d1 | ||
|
|
e3d7c7419f | ||
|
|
2a6c295967 | ||
|
|
f5f32df847 | ||
|
|
1f350b2730 | ||
|
|
386992255e | ||
|
|
eb505c4615 | ||
|
|
003d2b5354 | ||
|
|
b452f78242 | ||
|
|
ca3964f8b7 | ||
|
|
7d1abee8e4 | ||
|
|
d503993a74 | ||
|
|
ddafda5f4e | ||
|
|
40b08e1828 | ||
|
|
5141f0a0d5 | ||
|
|
fe98ba8c8c | ||
|
|
18608ecb34 | ||
|
|
ab6da26a25 | ||
|
|
f95082ccdb | ||
|
|
e94b5ac07a | ||
|
|
5d0669b464 | ||
|
|
af95d85b73 | ||
|
|
aae90ede19 | ||
|
|
0fa1c0f5c4 | ||
|
|
d2b6014b49 | ||
|
|
94d62f810a | ||
|
|
e953f0cc1a | ||
|
|
8c165c0401 | ||
|
|
b4dd40e128 | ||
|
|
535b960b76 | ||
|
|
b58f37cd4a | ||
|
|
a01fb39599 | ||
|
|
be15934b22 | ||
|
|
347da8abde | ||
|
|
5ff07820d3 | ||
|
|
6eccaac4bb | ||
|
|
f5038a08e5 | ||
|
|
96b3464f00 | ||
|
|
d1e6bd9c3a | ||
|
|
7911973a83 | ||
|
|
968b595aec | ||
|
|
2470b0b334 | ||
|
|
4344687303 | ||
|
|
b4fe46eba3 | ||
|
|
704f2c2238 | ||
|
|
f6b86d725c | ||
|
|
a7e0866e0d | ||
|
|
2cb3b877d1 | ||
|
|
0b808b8db3 | ||
|
|
f02af893bb | ||
|
|
cb3f941760 | ||
|
|
93f145a20f | ||
|
|
d34e2a0246 | ||
|
|
9a0b4f67ed | ||
|
|
651e158e3a | ||
|
|
d11784a894 | ||
|
|
14db789b7f | ||
|
|
c4a4995da0 | ||
|
|
45de9da893 | ||
|
|
a6fce1b4c8 | ||
|
|
1d28a5e5b8 | ||
|
|
d4b05fa0a0 | ||
|
|
4bcf209072 | ||
|
|
4b34ae3fd4 | ||
|
|
8590ff1f46 | ||
|
|
8e227a6146 | ||
|
|
c4e2c003de | ||
|
|
b03cb1ce1b | ||
|
|
eee3aa2bb4 | ||
|
|
ce9f703e0c | ||
|
|
fb0d971e48 | ||
|
|
279ccec3ab | ||
|
|
ab3852678e | ||
|
|
65f7aaeee8 | ||
|
|
7a76b9dd0b | ||
|
|
e7b7afabea | ||
|
|
c072c1fd9d | ||
|
|
1f3d9db161 | ||
|
|
62852b8978 | ||
|
|
429767e45c | ||
|
|
87d6771c47 | ||
|
|
68033580a5 | ||
|
|
8a3b6ea694 | ||
|
|
ac269bb51e | ||
|
|
1d583a2d1f | ||
|
|
cdde69cc7c | ||
|
|
9e1e300c72 | ||
|
|
797741c7d0 | ||
|
|
10f844f232 | ||
|
|
5291649c50 | ||
|
|
fc57314905 | ||
|
|
1df0e7b2b0 | ||
|
|
6486c741a2 | ||
|
|
2aa9ddc026 | ||
|
|
d45177042c | ||
|
|
b24dbc6462 | ||
|
|
5dc2630d2a | ||
|
|
800c668962 | ||
|
|
b2955afa61 | ||
|
|
052f4f65cd | ||
|
|
f3df1c2f15 | ||
|
|
272ac1b990 | ||
|
|
c4af60480a | ||
|
|
ef94033908 | ||
|
|
78bb10b1df | ||
|
|
43ac3ac0fe | ||
|
|
bdc274ebba | ||
|
|
2baaf12d24 | ||
|
|
11e2632b61 | ||
|
|
70bc09b306 | ||
|
|
0f73cbeec3 | ||
|
|
ac28411b36 | ||
|
|
1dbfe0950b | ||
|
|
f02c499168 | ||
|
|
f9db642abb | ||
|
|
bd243e36e5 | ||
|
|
deb7eb4476 | ||
|
|
f64d52e9ca | ||
|
|
dddbbe64ea | ||
|
|
adfb268dd6 | ||
|
|
bc0750947e | ||
|
|
ad8135c2a9 | ||
|
|
bcb2daf9b6 | ||
|
|
8fc7a20220 | ||
|
|
00720ae58f | ||
|
|
51f559b332 | ||
|
|
a7a8f806e8 | ||
|
|
25e1c45562 | ||
|
|
d90e02d8f4 | ||
|
|
d4a46ed4da | ||
|
|
a664a58076 | ||
|
|
ca2cc38bad | ||
|
|
1c6b3fba03 | ||
|
|
77b0d541b1 | ||
|
|
e72dc5c5c3 | ||
|
|
d81fcef1f3 | ||
|
|
77ac0bfbdd | ||
|
|
434e3f6035 | ||
|
|
0d2dc86fb9 | ||
|
|
fa57966b01 | ||
|
|
29682cef49 | ||
|
|
b224267e3b | ||
|
|
6d09c7116f | ||
|
|
f36535d061 | ||
|
|
95987d474d | ||
|
|
1d8b55be5e | ||
|
|
5d66b7e66f | ||
|
|
f8066417d9 | ||
|
|
ee9c3f49da | ||
|
|
3743fff21c | ||
|
|
8939fac447 | ||
|
|
c7224bc0d1 | ||
|
|
929eee1350 | ||
|
|
e904feb179 | ||
|
|
44c379fce1 | ||
|
|
0ea7e9fc04 | ||
|
|
66896d6457 | ||
|
|
fffb8317cb | ||
|
|
cc09a450c9 | ||
|
|
04f6777627 | ||
|
|
3daa39cff8 | ||
|
|
8c6a497b79 | ||
|
|
274e1440d4 | ||
|
|
2cd6c01d1e | ||
|
|
0ce8fa1115 | ||
|
|
73c35111e0 | ||
|
|
942125d236 | ||
|
|
2296e5a089 | ||
|
|
453c29c160 | ||
|
|
e0aa49b36d | ||
|
|
551e54a958 | ||
|
|
acae069b9e | ||
|
|
29d6784c59 | ||
|
|
e6c8f238f9 | ||
|
|
e069d87fe8 | ||
|
|
1ae32c4547 | ||
|
|
7c08864444 | ||
|
|
74c26b42da | ||
|
|
f0fa55715c | ||
|
|
1514432f77 | ||
|
|
08d2cc2ae5 | ||
|
|
7a0a3182eb | ||
|
|
f6bd7035e6 | ||
|
|
7c7de37cfc | ||
|
|
ddbf12fa70 | ||
|
|
a63254ab12 | ||
|
|
9499e68132 | ||
|
|
2edf7c6fae | ||
|
|
593a415d2a | ||
|
|
d71250b38b | ||
|
|
994a9de378 | ||
|
|
7e6c391dc5 | ||
|
|
6cbac06267 | ||
|
|
07677b2784 | ||
|
|
21fcc544fd | ||
|
|
f88c0415af | ||
|
|
7ddecf3253 | ||
|
|
7fbff43f17 | ||
|
|
89de946254 | ||
|
|
7d521218cf | ||
|
|
bb7cde786f | ||
|
|
2d2e52f47b | ||
|
|
51e8c25236 | ||
|
|
f1774efce8 | ||
|
|
5d40921a38 | ||
|
|
b7f39899c0 | ||
|
|
e5db40c789 | ||
|
|
82d2894f5c | ||
|
|
b6284b1830 | ||
|
|
9b998a5b00 | ||
|
|
6d4a213800 | ||
|
|
bfcd11988b | ||
|
|
6e692afa1c | ||
|
|
f31be66730 | ||
|
|
d87fa7a7ed | ||
|
|
380b14d7df | ||
|
|
678018585f | ||
|
|
5957ce26f1 | ||
|
|
3cf7e709fc | ||
|
|
d1854d85ce | ||
|
|
fb0c3be7fa | ||
|
|
6404b2c7fd | ||
|
|
921dfe9cc5 | ||
|
|
c5abeafc70 | ||
|
|
de9314a271 | ||
|
|
d999d60302 | ||
|
|
61bdcf2a53 | ||
|
|
c160ab4721 | ||
|
|
76c337602b | ||
|
|
64576458b7 | ||
|
|
89dac52f49 | ||
|
|
44b9c6e0f6 | ||
|
|
c58c18d688 | ||
|
|
e04bd36dfe | ||
|
|
1aad2d8c09 | ||
|
|
75a79775f4 | ||
|
|
c95577c478 | ||
|
|
e0614d14f3 | ||
|
|
5b75d20c80 | ||
|
|
87f1cb23be | ||
|
|
f079c7aad2 | ||
|
|
21581c78f9 | ||
|
|
49cd8b2a24 | ||
|
|
b0234a75f8 | ||
|
|
df176c4e4a | ||
|
|
750c4104f7 | ||
|
|
55fde593a3 | ||
|
|
f6d7ecab40 | ||
|
|
0ae5270f5b | ||
|
|
a59f5ebc24 | ||
|
|
e374b31a1c | ||
|
|
177577e80f | ||
|
|
0390fadf34 | ||
|
|
93c7b8dea7 | ||
|
|
e416caffe3 | ||
|
|
62855f4bb1 | ||
|
|
2b460be63a | ||
|
|
54724b8c58 | ||
|
|
e83eacb18b | ||
|
|
63bcd80375 | ||
|
|
fac31ff8be | ||
|
|
0d94ae9f61 | ||
|
|
e5c7feb2aa | ||
|
|
27cc858b67 | ||
|
|
bfa1c2a2dd | ||
|
|
c04c38e61d | ||
|
|
82f4ea2dea | ||
|
|
0c3d225379 | ||
|
|
7e6231698c | ||
|
|
13f2061e75 | ||
|
|
e188702df8 | ||
|
|
566ff95540 | ||
|
|
d7a0255185 | ||
|
|
d10a4aed6a | ||
|
|
3e99648fb6 | ||
|
|
c7c8300979 | ||
|
|
70ff36a281 | ||
|
|
c5b878965b | ||
|
|
3e5cb7c423 | ||
|
|
addd8dc78d | ||
|
|
3ff5ba79f6 | ||
|
|
ceedcb1a2c | ||
|
|
9403ea2028 | ||
|
|
0f52e42017 | ||
|
|
7ce223451c | ||
|
|
cb275e5031 | ||
|
|
3194d848e1 | ||
|
|
3ec7ccd6dc | ||
|
|
bf53744609 | ||
|
|
0dd8be1599 | ||
|
|
d9b4f7345b | ||
|
|
bbda8d3357 | ||
|
|
f377df32ed | ||
|
|
3f3b8893a3 | ||
|
|
45a93d58c9 | ||
|
|
55b16872e4 | ||
|
|
cbba8e6933 | ||
|
|
867215c276 | ||
|
|
fba15ff16e | ||
|
|
8424c6d615 | ||
|
|
82bb86036e | ||
|
|
e6faac07c3 | ||
|
|
464aa71efb | ||
|
|
7b88d89868 | ||
|
|
5b1a066e2c | ||
|
|
4c4e5750ef | ||
|
|
cbd06b81ff | ||
|
|
9cc5b98551 | ||
|
|
cd6b4f2428 | ||
|
|
e3178f6984 | ||
|
|
460d168d37 | ||
|
|
085b6fb0d0 | ||
|
|
b7f43e06e4 | ||
|
|
b728e1b288 | ||
|
|
fe7e301797 | ||
|
|
1ccbedd91d | ||
|
|
1e9bcf28c9 | ||
|
|
44b6533ceb | ||
|
|
489a6ec2b1 | ||
|
|
9713fa3bab | ||
|
|
519df30590 | ||
|
|
1f44c36590 | ||
|
|
6a738d12b7 | ||
|
|
56d5db79a9 | ||
|
|
be31fe310e | ||
|
|
f9a009c446 | ||
|
|
307591e9c1 | ||
|
|
414121d422 | ||
|
|
2f49d315c1 | ||
|
|
2d7f4290b7 | ||
|
|
d27d9bf7dc | ||
|
|
0a72133ca3 | ||
|
|
5d8ca1ecf7 | ||
|
|
04eeb28c09 | ||
|
|
88689f2987 | ||
|
|
60cee1f7dc | ||
|
|
7c2c89d4e2 | ||
|
|
8a86fdcd43 | ||
|
|
d801d8a053 | ||
|
|
6c4dcc6486 | ||
|
|
f9a24bf601 | ||
|
|
113061902e | ||
|
|
96f5b55d9f | ||
|
|
90e5193a97 | ||
|
|
c2d2ecc1d5 | ||
|
|
6ba729fd52 | ||
|
|
c8926a768c | ||
|
|
253ef633dc | ||
|
|
0958204779 | ||
|
|
5d961e1a9a | ||
|
|
4abd32b032 | ||
|
|
ca5ffd64ab | ||
|
|
b6788298b5 | ||
|
|
2aad4ce81b | ||
|
|
11ef486a70 | ||
|
|
dee22c4de9 | ||
|
|
54ea785a60 | ||
|
|
e5b18da35c | ||
|
|
2094ceab26 | ||
|
|
04c24fa64c | ||
|
|
02ed73828a | ||
|
|
278b889a4d | ||
|
|
487433f454 | ||
|
|
01442a93c5 | ||
|
|
18ad595300 | ||
|
|
022dbe78a2 | ||
|
|
856951690d | ||
|
|
4a359ffa0e | ||
|
|
ea0da91dbd | ||
|
|
24809d8bf5 | ||
|
|
b5f0aed7f4 | ||
|
|
f085e8048d | ||
|
|
6e1a502057 | ||
|
|
8af811ddcf | ||
|
|
e94f9ff0d9 | ||
|
|
5380945e3b | ||
|
|
fa976b63b3 | ||
|
|
b751175b95 | ||
|
|
79ffa17641 | ||
|
|
319e753e7e | ||
|
|
f9c0b94ecb | ||
|
|
be076a6609 | ||
|
|
55f9a3712c | ||
|
|
7f074390af | ||
|
|
3c5e0855d7 | ||
|
|
f33fe4266a | ||
|
|
4d772ab48d | ||
|
|
66ba4a596c | ||
|
|
c8b7322f1e | ||
|
|
b1babd62aa | ||
|
|
502e9b86bc | ||
|
|
c71cab4951 | ||
|
|
c5e68c8e80 | ||
|
|
a2f0ec6445 | ||
|
|
0c971cd4cc | ||
|
|
7ed82f9527 | ||
|
|
8a85edf2db | ||
|
|
3495ed82fb | ||
|
|
cd7a1af729 | ||
|
|
89c81f74b4 | ||
|
|
b9db6128cf | ||
|
|
8f9ee3c1a9 | ||
|
|
15fc98fca1 | ||
|
|
9f993363d7 | ||
|
|
9281cc9290 | ||
|
|
1a000fdb33 | ||
|
|
f9754cd82d | ||
|
|
6ba4b063f6 | ||
|
|
ecf29fa0e8 | ||
|
|
499c190632 | ||
|
|
c736fba1b7 | ||
|
|
b6045e0831 | ||
|
|
343f103126 | ||
|
|
56b8381680 | ||
|
|
e9aa37d049 | ||
|
|
81b2b18eb7 | ||
|
|
79a31421a4 | ||
|
|
92e43f5210 | ||
|
|
025f22553f | ||
|
|
e0e791d9b4 | ||
|
|
d9906a4a47 | ||
|
|
1e377df6da | ||
|
|
48c7411ce4 | ||
|
|
d4fa6153c4 | ||
|
|
210e001586 | ||
|
|
4b4d128856 | ||
|
|
9411f44e33 | ||
|
|
9ba6f0c202 | ||
|
|
33e22b6b94 | ||
|
|
6bf9caa253 | ||
|
|
508eb9e379 | ||
|
|
fcf6af2a4f | ||
|
|
772ff2d8e6 | ||
|
|
e8946d8d5e | ||
|
|
eb47170c7f | ||
|
|
8268a28997 | ||
|
|
c082b5eb38 | ||
|
|
46901cf3fb | ||
|
|
93af4f24e5 | ||
|
|
0cc05a8cba | ||
|
|
5fd7896e1e | ||
|
|
c5d494fbee | ||
|
|
400ff05a0b | ||
|
|
944b6993fa | ||
|
|
17f4e2a14a | ||
|
|
fcbcef8766 | ||
|
|
d7b085cfa0 | ||
|
|
bde658d2ac | ||
|
|
c9ae1445a4 | ||
|
|
e6a88ddb04 | ||
|
|
b3abd479ad | ||
|
|
755ec9ce96 | ||
|
|
db260547ad | ||
|
|
439e796074 | ||
|
|
04c0cdb048 | ||
|
|
5951072f03 | ||
|
|
7b24f7f57d | ||
|
|
8ef88f5e83 | ||
|
|
a68e4bdbec | ||
|
|
dd9d13b175 | ||
|
|
5693b59318 | ||
|
|
0c2b186e50 | ||
|
|
1cc0e686ea | ||
|
|
fa017fde62 | ||
|
|
067383a87d | ||
|
|
7e871c3b04 | ||
|
|
e0ef8bf1aa | ||
|
|
3c1f7baaae | ||
|
|
e992744101 | ||
|
|
f29b50ae41 | ||
|
|
ae1c5ebe47 | ||
|
|
140efce96f | ||
|
|
7c618ff33b | ||
|
|
555bda98d7 | ||
|
|
198308cd2a | ||
|
|
a5bdadd1f2 | ||
|
|
c968c13ae4 | ||
|
|
0022a135f6 | ||
|
|
893ab4539b | ||
|
|
502c60884d | ||
|
|
8788079599 | ||
|
|
d5c0134897 | ||
|
|
794521dcbd | ||
|
|
b475efb2d4 | ||
|
|
f1143c96c5 | ||
|
|
5aca1e72df | ||
|
|
b7f128ed20 | ||
|
|
a2345239d4 | ||
|
|
7f75e2738e | ||
|
|
8719cc414a | ||
|
|
32ea4844d2 | ||
|
|
71ac47b930 | ||
|
|
44ac3fb81f | ||
|
|
7e67cbdbc6 | ||
|
|
c4ea93f663 | ||
|
|
495415e631 | ||
|
|
499d07b713 | ||
|
|
ef01e3a363 | ||
|
|
9cebae5fd9 | ||
|
|
620748c7fc | ||
|
|
5cf3975686 | ||
|
|
4b054db235 | ||
|
|
fa66baa20b | ||
|
|
fb78807a02 | ||
|
|
0ac4b87ffb | ||
|
|
3a406a0de0 | ||
|
|
82f5fb3195 | ||
|
|
7ccf0428d6 | ||
|
|
fb2de3d149 | ||
|
|
754c2980f8 | ||
|
|
f89b1bd2e4 | ||
|
|
9bc91b31d3 | ||
|
|
08efa10f95 | ||
|
|
6aa21397e0 | ||
|
|
b98bde5eed | ||
|
|
a9def845df | ||
|
|
bf6d0e128f | ||
|
|
ccd4bf553b | ||
|
|
f83ce81cc8 | ||
|
|
b1715b60fb | ||
|
|
0b7e8e8efc | ||
|
|
6b7c71ba18 | ||
|
|
a072920f80 | ||
|
|
2ffda9e8ef | ||
|
|
04c4257dee | ||
|
|
e892b79f10 | ||
|
|
ab98e86fde | ||
|
|
cce927b6ec | ||
|
|
c7a9e585f8 | ||
|
|
7a44bdbe87 | ||
|
|
5c51891959 | ||
|
|
b003033f87 | ||
|
|
d87f626975 | ||
|
|
8d3c64dc54 | ||
|
|
86bc4a6046 | ||
|
|
fcc2e00f03 | ||
|
|
a68f351797 | ||
|
|
a95a2ea7dc | ||
|
|
fba51f2cd0 | ||
|
|
6fd37c4c8d | ||
|
|
2ef4aeb884 | ||
|
|
016ba1e617 | ||
|
|
51b00a5407 | ||
|
|
c28cf4da16 | ||
|
|
2b915a1217 | ||
|
|
d978c38b80 | ||
|
|
b129349236 | ||
|
|
d20ebd6b2d | ||
|
|
b9e1b46884 | ||
|
|
828ad79de2 | ||
|
|
d45e3a7a43 | ||
|
|
296b63d855 | ||
|
|
1fb95c5128 | ||
|
|
3b5c253672 | ||
|
|
3dcd176f35 | ||
|
|
e4d673e14e | ||
|
|
38c9b64bec | ||
|
|
fd11b34fe1 | ||
|
|
4f568d2870 | ||
|
|
36f5060855 | ||
|
|
5071f61174 | ||
|
|
985a54edd1 | ||
|
|
8c1914359a | ||
|
|
ef225704c3 | ||
|
|
1d95205503 | ||
|
|
6d5ff42225 | ||
|
|
41e395f1d7 | ||
|
|
901bbfeeaf | ||
|
|
2daa991c9d | ||
|
|
4a0afe68e9 | ||
|
|
22e6b96daa | ||
|
|
dcb086d203 | ||
|
|
f185eb1f5a | ||
|
|
0a6325cf8e | ||
|
|
a3cc54e199 | ||
|
|
804fd35774 | ||
|
|
e4b8c8caa2 | ||
|
|
5c2f5e92eb | ||
|
|
76ad386c70 | ||
|
|
c6b2044492 | ||
|
|
4a953fad72 | ||
|
|
f06d8f27a1 | ||
|
|
ffd4201a73 | ||
|
|
bc529e7089 | ||
|
|
f143cac61e | ||
|
|
e7657d4eb1 | ||
|
|
b6ad98e9ff | ||
|
|
128120ad12 | ||
|
|
efa8fef4cf | ||
|
|
f5db38950a | ||
|
|
d187da46a0 | ||
|
|
fb2afb5794 | ||
|
|
6fe261836e | ||
|
|
fc9f2bceb0 | ||
|
|
ce88afee1b | ||
|
|
07eb3f64e3 | ||
|
|
e32ba61a3c | ||
|
|
43e66fa4a6 | ||
|
|
ee9de82203 | ||
|
|
df3baf1a67 | ||
|
|
6968d213bd | ||
|
|
ffaa011c3e | ||
|
|
d56debaa9f | ||
|
|
2c71e995f2 | ||
|
|
4da47979d1 | ||
|
|
2751aecab9 | ||
|
|
1dccb6da31 | ||
|
|
8557bad242 | ||
|
|
4fa4112840 | ||
|
|
f43dfc23c0 | ||
|
|
e2984ec2ab | ||
|
|
2e14d73c5b | ||
|
|
1afd00f7e8 | ||
|
|
23f5f57c92 | ||
|
|
d80d637cc2 | ||
|
|
50f0b88eff | ||
|
|
b25ab3a988 | ||
|
|
62e978068a | ||
|
|
89879a6851 | ||
|
|
e1a0452448 | ||
|
|
c9f7d2a457 | ||
|
|
fd71a90a8e | ||
|
|
f06d6a4e92 | ||
|
|
6bb98c3eae | ||
|
|
cf21706f26 | ||
|
|
d0fbda50fc | ||
|
|
9abef88177 | ||
|
|
1a94e9637d | ||
|
|
e15ff806e5 | ||
|
|
7b01165970 | ||
|
|
fc3cc6ffec | ||
|
|
6d99ccefdb | ||
|
|
b055c7e2ef | ||
|
|
e488845d29 | ||
|
|
fcd71052c5 | ||
|
|
b465336d0a | ||
|
|
23e4fef078 | ||
|
|
32f360979c | ||
|
|
c1cc187a88 | ||
|
|
f7dbcfb77a | ||
|
|
52916a8bbb | ||
|
|
c8e311744a | ||
|
|
b87f0c1a57 | ||
|
|
3ebb4c3c9c | ||
|
|
10350b1a42 | ||
|
|
a5beb2ae41 | ||
|
|
b081d3fb2d | ||
|
|
7bc4c530e8 | ||
|
|
1002f01e57 | ||
|
|
f9bcc99bf9 | ||
|
|
2956c97983 | ||
|
|
8bf9544bea | ||
|
|
4ea2fdf471 | ||
|
|
492f481999 | ||
|
|
00b215c093 | ||
|
|
b84010318d | ||
|
|
63a08c4bd3 | ||
|
|
b34fbff6d1 | ||
|
|
e08a9e1915 | ||
|
|
519ada3a48 | ||
|
|
90524d99dc | ||
|
|
2936a537cf | ||
|
|
6f51d82f82 | ||
|
|
ea4fe3f290 | ||
|
|
6d9bdd5c6f | ||
|
|
3c2642e822 | ||
|
|
f4df7c1eec | ||
|
|
74d7191222 | ||
|
|
2c71a56324 | ||
|
|
3ab8627db8 | ||
|
|
9d7c513fb7 | ||
|
|
f880aa769c | ||
|
|
c64e695036 | ||
|
|
a500dc9067 | ||
|
|
08d6a49cb6 | ||
|
|
315f8b4503 | ||
|
|
9dc4de1366 | ||
|
|
a22796397a | ||
|
|
372297f829 | ||
|
|
f0908045f1 | ||
|
|
b431a70792 | ||
|
|
c14cdb618b | ||
|
|
f596080d06 | ||
|
|
c88f03f4fd | ||
|
|
8ca65edc70 | ||
|
|
5131c1d72c | ||
|
|
8fab4dd94d | ||
|
|
583c488b96 | ||
|
|
d16598c03d | ||
|
|
e6e8cdcec1 | ||
|
|
7561bd471b | ||
|
|
b9cc8015fe | ||
|
|
853be9000b | ||
|
|
9a7638cc73 | ||
|
|
10448a9f36 | ||
|
|
360a7f530d | ||
|
|
f457dbf7d4 | ||
|
|
3f6d93230e | ||
|
|
1b2be2c345 | ||
|
|
6d1faac772 | ||
|
|
a9fe48aa0a | ||
|
|
e2e58fee56 | ||
|
|
95ac70518b | ||
|
|
e95949e4d6 | ||
|
|
ae87b9e027 | ||
|
|
fe4e5286f7 | ||
|
|
b43a5252b1 | ||
|
|
a732487e7f | ||
|
|
112b847869 | ||
|
|
2fdcbc4726 | ||
|
|
e9aa215b95 | ||
|
|
6b6322798e | ||
|
|
a8011e4755 | ||
|
|
b2fcf5fa6c | ||
|
|
8ac0425ca5 | ||
|
|
f9a841245c | ||
|
|
a377a0ef15 | ||
|
|
ea3cf8078e | ||
|
|
13d2721696 | ||
|
|
b8f0fc722c | ||
|
|
3e54e0fc42 | ||
|
|
06d87dc94b | ||
|
|
d35f97d99a | ||
|
|
c4358d52d5 | ||
|
|
b8ffb004ce | ||
|
|
3a3cb0c68d | ||
|
|
d98e6fe88a | ||
|
|
b5f73874cb | ||
|
|
9d1e89268f | ||
|
|
d9bfa08672 | ||
|
|
8a8727e6df | ||
|
|
d19d05ec7b | ||
|
|
b0bb93975a | ||
|
|
09c5686cb7 | ||
|
|
42b1dcebcd | ||
|
|
1e78dd8296 | ||
|
|
3d9861f904 | ||
|
|
668e1dff4b | ||
|
|
c91a03834d | ||
|
|
20e293f5df | ||
|
|
87fb3c1e82 | ||
|
|
db1bcfda45 | ||
|
|
a8e44afd6d | ||
|
|
1b1bceebfe | ||
|
|
6faccd3b14 | ||
|
|
34117fa9ad | ||
|
|
6b93013674 | ||
|
|
247ab1aec3 | ||
|
|
adff36cf22 | ||
|
|
034ac59c9a | ||
|
|
80d805a807 | ||
|
|
39ca136c5d | ||
|
|
29dbfa6fc4 | ||
|
|
3e30870c87 | ||
|
|
ee1a11975c | ||
|
|
f0fc3e96ce | ||
|
|
cd75ff9a8a | ||
|
|
f196140210 | ||
|
|
a77c4e6dfa | ||
|
|
1d4d193552 | ||
|
|
3225f4c8f5 | ||
|
|
800c4dc012 | ||
|
|
d662882c03 | ||
|
|
31c8e96d70 | ||
|
|
1191421388 | ||
|
|
831a184c2a | ||
|
|
c671f91bca | ||
|
|
fa436c7ce6 | ||
|
|
d1367286c9 | ||
|
|
d10b0fa823 | ||
|
|
545c8648b7 | ||
|
|
d6e9acc149 | ||
|
|
26e14aff7b | ||
|
|
280ec5b406 | ||
|
|
26081ffd36 | ||
|
|
f106cbf6c0 | ||
|
|
f3877a52ab | ||
|
|
5becf60a63 | ||
|
|
2ea96dc8f8 | ||
|
|
e48724662e | ||
|
|
745ce7de76 | ||
|
|
997217861c | ||
|
|
44f8e8b833 | ||
|
|
99e2b63ff0 | ||
|
|
0139d90ac7 | ||
|
|
5b7484c27c | ||
|
|
71e64be44c | ||
|
|
639651329a | ||
|
|
a7a0d3584a | ||
|
|
f765441f1e | ||
|
|
10cd5bf130 | ||
|
|
d93c5dfeea | ||
|
|
b58aac1298 | ||
|
|
d662718a4a | ||
|
|
bebd3d430b | ||
|
|
2fca995725 | ||
|
|
caa1ea12f1 | ||
|
|
f25e4ea391 | ||
|
|
6c106300d4 | ||
|
|
05b433edb5 | ||
|
|
69a59f0935 | ||
|
|
fa7575ed00 | ||
|
|
b2174549c7 | ||
|
|
19f16274ab | ||
|
|
7f88ae5494 | ||
|
|
c820b5caa4 | ||
|
|
b1638e1ffc | ||
|
|
f2e60f52d2 | ||
|
|
d845343e97 | ||
|
|
ee2edc92e7 | ||
|
|
332216f5f5 | ||
|
|
4d4cd7d130 | ||
|
|
b3cc51ce63 | ||
|
|
05645d93ef | ||
|
|
a2d09efca4 | ||
|
|
1212f9a9e9 | ||
|
|
75f7986e36 | ||
|
|
2447a6fc8d | ||
|
|
38a4a3e7b6 | ||
|
|
28240d549d | ||
|
|
5da46a1678 | ||
|
|
e592a37799 | ||
|
|
15d00b61dd | ||
|
|
5d0b6f9fad | ||
|
|
2a40ffd164 | ||
|
|
8c687de3c6 | ||
|
|
27415b4e16 | ||
|
|
ce0b39765e | ||
|
|
fafc4af237 | ||
|
|
76a283ed77 | ||
|
|
99500bca8f | ||
|
|
a982fc326f | ||
|
|
b16309d01a | ||
|
|
1bfc3d450f | ||
|
|
37b63d4ea9 | ||
|
|
e7315e7d35 | ||
|
|
718dffa672 | ||
|
|
c3dd9865e7 | ||
|
|
1702ec5644 | ||
|
|
dfddf044cf | ||
|
|
24a632056a | ||
|
|
dc7f4a6cf3 | ||
|
|
cd100f37fe | ||
|
|
984e8bbba0 | ||
|
|
fcc22cc212 | ||
|
|
4101acc2e3 | ||
|
|
f30bdd54b1 | ||
|
|
b8851565eb | ||
|
|
888d0d1084 | ||
|
|
0a25d4db0d | ||
|
|
d483b6e840 | ||
|
|
9cf7fa1997 | ||
|
|
fded714f18 | ||
|
|
06de06b501 | ||
|
|
9abdbbbc5b | ||
|
|
3ebfee8bd2 | ||
|
|
6d446c5b27 | ||
|
|
3a55490bbf | ||
|
|
bc4643fed2 | ||
|
|
a2110ca631 | ||
|
|
413137ac64 | ||
|
|
9bc966491d | ||
|
|
61dbc15fc6 | ||
|
|
b475037127 | ||
|
|
35622a2122 | ||
|
|
77e4c3d0ec | ||
|
|
8523050ab2 | ||
|
|
0efdf65202 | ||
|
|
acb0991d05 | ||
|
|
a9f68f5487 | ||
|
|
55bb2fdb9b | ||
|
|
e529633b8b | ||
|
|
dfd575b6eb | ||
|
|
c5196721d4 | ||
|
|
968c75b618 | ||
|
|
01beebf660 | ||
|
|
d3115e834a | ||
|
|
01a552ceb5 | ||
|
|
d8958adea5 | ||
|
|
4d5e866db6 | ||
|
|
f189deb415 | ||
|
|
9c460dbc87 | ||
|
|
2c6ba9ba2c | ||
|
|
a1ef80f5ae | ||
|
|
d9a350a003 | ||
|
|
3b9bb98d8d | ||
|
|
87e7449da2 | ||
|
|
a2c8695a6d | ||
|
|
2f74e84777 | ||
|
|
db9591a011 | ||
|
|
e56e29fd64 | ||
|
|
06e4a8bc50 | ||
|
|
d4a1905e73 | ||
|
|
bc583b0ceb | ||
|
|
d5b8666dee | ||
|
|
905e311e42 | ||
|
|
d3d4c88b47 | ||
|
|
7cdad71a8e | ||
|
|
4e2b331ba0 | ||
|
|
f0c0c6ec67 | ||
|
|
57656efacc | ||
|
|
a8b26cbe27 | ||
|
|
1c9ffe5378 | ||
|
|
47d3bb7575 | ||
|
|
03d6cb58db | ||
|
|
5d0f64db46 | ||
|
|
76a973ac8a | ||
|
|
0491f27d55 | ||
|
|
3caa7fcfa5 | ||
|
|
bfdb3caa50 | ||
|
|
f815c2ff8d | ||
|
|
7c654903f6 | ||
|
|
27bfaba5ec | ||
|
|
c2548cb4fa | ||
|
|
086fe79dd9 | ||
|
|
e8dfce7421 | ||
|
|
c55da9de12 | ||
|
|
ed5763d89a | ||
|
|
e49912e83c | ||
|
|
0b90bf460a | ||
|
|
cf5f5476df | ||
|
|
a12ba57de7 | ||
|
|
4574a233e6 | ||
|
|
6e9ebf75ad | ||
|
|
1e720d4810 | ||
|
|
2e2c20f8a3 | ||
|
|
f1b976d4e4 | ||
|
|
071e8a0cc1 | ||
|
|
c0006e961b | ||
|
|
7754829e1a | ||
|
|
a752e75409 | ||
|
|
61a9706b6a | ||
|
|
12a510c9c8 | ||
|
|
936d274f5a | ||
|
|
42fac91aed | ||
|
|
b934045cbd | ||
|
|
b77ebedf78 | ||
|
|
3c09f27676 | ||
|
|
c545a4c685 | ||
|
|
9f0c5bf123 | ||
|
|
22a1c4cc65 | ||
|
|
dcd51d64fb | ||
|
|
92f95e7288 | ||
|
|
31cbe99224 | ||
|
|
45aad74b01 | ||
|
|
f1b8a1b7f2 | ||
|
|
4356adcdfe | ||
|
|
8c1d9c27c2 | ||
|
|
52c593c54e | ||
|
|
977615aa2b | ||
|
|
58cc1280ce | ||
|
|
eaeb2f1bb2 | ||
|
|
f1d912e4bd | ||
|
|
7c3619675a |
4
.github/actions/build-server/action.yml
vendored
4
.github/actions/build-server/action.yml
vendored
@@ -10,9 +10,9 @@ runs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: "pnpm"
|
cache: "pnpm"
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@@ -67,7 +67,7 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v4
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
build-mode: ${{ matrix.build-mode }}
|
build-mode: ${{ matrix.build-mode }}
|
||||||
@@ -95,6 +95,6 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v3
|
uses: github/codeql-action/analyze@v4
|
||||||
with:
|
with:
|
||||||
category: "/language:${{matrix.language}}"
|
category: "/language:${{matrix.language}}"
|
||||||
|
|||||||
82
.github/workflows/deploy-docs.yml
vendored
82
.github/workflows/deploy-docs.yml
vendored
@@ -1,6 +1,4 @@
|
|||||||
# GitHub Actions workflow for deploying MkDocs documentation to Cloudflare Pages
|
name: Deploy Documentation
|
||||||
# This workflow builds and deploys your MkDocs site when changes are pushed to main
|
|
||||||
name: Deploy MkDocs Documentation
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Trigger on push to main branch
|
# Trigger on push to main branch
|
||||||
@@ -11,11 +9,9 @@ on:
|
|||||||
# Only run when docs files change
|
# Only run when docs files change
|
||||||
paths:
|
paths:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'README.md' # README is synced to docs/index.md
|
- 'apps/edit-docs/**'
|
||||||
- 'mkdocs.yml'
|
- 'apps/build-docs/**'
|
||||||
- 'requirements-docs.txt'
|
- 'packages/share-theme/**'
|
||||||
- '.github/workflows/deploy-docs.yml'
|
|
||||||
- 'scripts/fix-mkdocs-structure.ts'
|
|
||||||
|
|
||||||
# Allow manual triggering from Actions tab
|
# Allow manual triggering from Actions tab
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -27,15 +23,13 @@ on:
|
|||||||
- master
|
- master
|
||||||
paths:
|
paths:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'README.md' # README is synced to docs/index.md
|
- 'apps/edit-docs/**'
|
||||||
- 'mkdocs.yml'
|
- 'apps/build-docs/**'
|
||||||
- 'requirements-docs.txt'
|
- 'packages/share-theme/**'
|
||||||
- '.github/workflows/deploy-docs.yml'
|
|
||||||
- 'scripts/fix-mkdocs-structure.ts'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-deploy:
|
build-and-deploy:
|
||||||
name: Build and Deploy MkDocs
|
name: Build and Deploy Documentation
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
|
|
||||||
@@ -49,75 +43,31 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
with:
|
|
||||||
fetch-depth: 0 # Fetch all history for git info and mkdocs-git-revision-date plugin
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: '3.13'
|
|
||||||
cache: 'pip'
|
|
||||||
cache-dependency-path: 'requirements-docs.txt'
|
|
||||||
|
|
||||||
- name: Install MkDocs and Dependencies
|
|
||||||
run: |
|
|
||||||
pip install --upgrade pip
|
|
||||||
pip install -r requirements-docs.txt
|
|
||||||
env:
|
|
||||||
PIP_DISABLE_PIP_VERSION_CHECK: 1
|
|
||||||
|
|
||||||
# Setup pnpm before fixing docs structure
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
# Setup Node.js with pnpm
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '22'
|
node-version: '24'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
# Install Node.js dependencies for the TypeScript script
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: |
|
run: pnpm install --frozen-lockfile
|
||||||
pnpm install --frozen-lockfile
|
|
||||||
|
|
||||||
- name: Fix Documentation Structure
|
- name: Trigger build of documentation
|
||||||
run: |
|
run: pnpm docs:build
|
||||||
# Fix duplicate navigation entries by moving overview pages to index.md
|
|
||||||
pnpm run chore:fix-mkdocs-structure
|
|
||||||
|
|
||||||
- name: Build MkDocs Site
|
|
||||||
run: |
|
|
||||||
# Build with strict mode but allow expected warnings
|
|
||||||
mkdocs build --verbose || {
|
|
||||||
EXIT_CODE=$?
|
|
||||||
# Check if the only issue is expected warnings
|
|
||||||
if mkdocs build 2>&1 | grep -E "WARNING.*(README|not found)" && \
|
|
||||||
[ $(mkdocs build 2>&1 | grep -c "ERROR") -eq 0 ]; then
|
|
||||||
echo "✅ Build succeeded with expected warnings"
|
|
||||||
mkdocs build --verbose
|
|
||||||
else
|
|
||||||
echo "❌ Build failed with unexpected errors"
|
|
||||||
exit $EXIT_CODE
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
- name: Fix HTML Links
|
|
||||||
run: |
|
|
||||||
# Remove .md extensions from links in generated HTML
|
|
||||||
pnpm tsx ./scripts/fix-html-links.ts site
|
|
||||||
|
|
||||||
- name: Validate Built Site
|
- name: Validate Built Site
|
||||||
run: |
|
run: |
|
||||||
# Basic validation that important files exist
|
|
||||||
test -f site/index.html || (echo "ERROR: site/index.html not found" && exit 1)
|
test -f site/index.html || (echo "ERROR: site/index.html not found" && exit 1)
|
||||||
test -f site/sitemap.xml || (echo "ERROR: site/sitemap.xml not found" && exit 1)
|
test -f site/developer-guide/index.html || (echo "ERROR: site/developer-guide/index.html not found" && exit 1)
|
||||||
test -d site/assets || (echo "ERROR: site/assets directory not found" && exit 1)
|
echo "✓ User Guide and Developer Guide built successfully"
|
||||||
echo "✅ Site validation passed"
|
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
uses: ./.github/actions/deploy-to-cloudflare-pages
|
uses: ./.github/actions/deploy-to-cloudflare-pages
|
||||||
|
if: github.repository == ${{ vars.REPO_MAIN }}
|
||||||
with:
|
with:
|
||||||
project_name: "trilium-docs"
|
project_name: "trilium-docs"
|
||||||
comment_body: "📚 Documentation preview is ready"
|
comment_body: "📚 Documentation preview is ready"
|
||||||
|
|||||||
4
.github/workflows/dev.yml
vendored
4
.github/workflows/dev.yml
vendored
@@ -28,9 +28,9 @@ jobs:
|
|||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: "pnpm"
|
cache: "pnpm"
|
||||||
- run: pnpm install --frozen-lockfile
|
- run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
|||||||
20
.github/workflows/main-docker.yml
vendored
20
.github/workflows/main-docker.yml
vendored
@@ -44,9 +44,9 @@ jobs:
|
|||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: "pnpm"
|
cache: "pnpm"
|
||||||
|
|
||||||
- name: Install npm dependencies
|
- name: Install npm dependencies
|
||||||
@@ -86,12 +86,12 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload Playwright trace
|
- name: Upload Playwright trace
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: Playwright trace (${{ matrix.dockerfile }})
|
name: Playwright trace (${{ matrix.dockerfile }})
|
||||||
path: test-output/playwright/output
|
path: test-output/playwright/output
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v5
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
with:
|
with:
|
||||||
name: Playwright report (${{ matrix.dockerfile }})
|
name: Playwright report (${{ matrix.dockerfile }})
|
||||||
@@ -116,10 +116,10 @@ jobs:
|
|||||||
- dockerfile: Dockerfile
|
- dockerfile: Dockerfile
|
||||||
platform: linux/arm64
|
platform: linux/arm64
|
||||||
image: ubuntu-24.04-arm
|
image: ubuntu-24.04-arm
|
||||||
- dockerfile: Dockerfile
|
- dockerfile: Dockerfile.legacy
|
||||||
platform: linux/arm/v7
|
platform: linux/arm/v7
|
||||||
image: ubuntu-24.04-arm
|
image: ubuntu-24.04-arm
|
||||||
- dockerfile: Dockerfile
|
- dockerfile: Dockerfile.legacy
|
||||||
platform: linux/arm/v8
|
platform: linux/arm/v8
|
||||||
image: ubuntu-24.04-arm
|
image: ubuntu-24.04-arm
|
||||||
runs-on: ${{ matrix.image }}
|
runs-on: ${{ matrix.image }}
|
||||||
@@ -144,9 +144,9 @@ jobs:
|
|||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
@@ -209,7 +209,7 @@ jobs:
|
|||||||
touch "/tmp/digests/${digest#sha256:}"
|
touch "/tmp/digests/${digest#sha256:}"
|
||||||
|
|
||||||
- name: Upload digest
|
- name: Upload digest
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: digests-${{ env.PLATFORM_PAIR }}-${{ matrix.dockerfile }}
|
name: digests-${{ env.PLATFORM_PAIR }}-${{ matrix.dockerfile }}
|
||||||
path: /tmp/digests/*
|
path: /tmp/digests/*
|
||||||
@@ -223,7 +223,7 @@ jobs:
|
|||||||
- build
|
- build
|
||||||
steps:
|
steps:
|
||||||
- name: Download digests
|
- name: Download digests
|
||||||
uses: actions/download-artifact@v5
|
uses: actions/download-artifact@v6
|
||||||
with:
|
with:
|
||||||
path: /tmp/digests
|
path: /tmp/digests
|
||||||
pattern: digests-*
|
pattern: digests-*
|
||||||
|
|||||||
10
.github/workflows/nightly.yml
vendored
10
.github/workflows/nightly.yml
vendored
@@ -50,9 +50,9 @@ jobs:
|
|||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
|
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
|
||||||
|
|
||||||
- name: Publish release
|
- name: Publish release
|
||||||
uses: softprops/action-gh-release@v2.3.4
|
uses: softprops/action-gh-release@v2.4.2
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
with:
|
with:
|
||||||
make_latest: false
|
make_latest: false
|
||||||
@@ -89,7 +89,7 @@ jobs:
|
|||||||
name: Nightly Build
|
name: Nightly Build
|
||||||
|
|
||||||
- name: Publish artifacts
|
- name: Publish artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
if: ${{ github.event_name == 'pull_request' }}
|
||||||
with:
|
with:
|
||||||
name: TriliumNotes ${{ matrix.os.name }} ${{ matrix.arch }}
|
name: TriliumNotes ${{ matrix.os.name }} ${{ matrix.arch }}
|
||||||
@@ -118,7 +118,7 @@ jobs:
|
|||||||
arch: ${{ matrix.arch }}
|
arch: ${{ matrix.arch }}
|
||||||
|
|
||||||
- name: Publish release
|
- name: Publish release
|
||||||
uses: softprops/action-gh-release@v2.3.4
|
uses: softprops/action-gh-release@v2.4.2
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
with:
|
with:
|
||||||
make_latest: false
|
make_latest: false
|
||||||
|
|||||||
60
.github/workflows/playwright.yml
vendored
60
.github/workflows/playwright.yml
vendored
@@ -4,6 +4,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- hotfix
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "apps/website/**"
|
- "apps/website/**"
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -13,8 +14,24 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
e2e:
|
||||||
runs-on: ubuntu-latest
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: linux-x64
|
||||||
|
os: ubuntu-22.04
|
||||||
|
arch: x64
|
||||||
|
- name: linux-arm64
|
||||||
|
os: ubuntu-24.04-arm
|
||||||
|
arch: arm64
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
name: E2E tests on ${{ matrix.name }}
|
||||||
|
env:
|
||||||
|
TRILIUM_DOCKER: 1
|
||||||
|
TRILIUM_PORT: 8082
|
||||||
|
TRILIUM_DATA_DIR: "${{ github.workspace }}/apps/server/spec/db"
|
||||||
|
TRILIUM_INTEGRATION_TEST: memory
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
@@ -22,20 +39,49 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v5
|
- uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
- run: pnpm exec playwright install --with-deps
|
|
||||||
|
|
||||||
- run: pnpm --filter server-e2e e2e
|
- name: Install Playwright browsers
|
||||||
|
run: pnpm exec playwright install --with-deps
|
||||||
|
|
||||||
|
- name: Build the server
|
||||||
|
uses: ./.github/actions/build-server
|
||||||
|
with:
|
||||||
|
os: linux
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Unpack and start the server
|
||||||
|
run: |
|
||||||
|
version=$(node --eval "console.log(require('./package.json').version)")
|
||||||
|
file=$(find ./upload -name '*.tar.xz' -print -quit)
|
||||||
|
name=$(basename "$file" .tar.xz)
|
||||||
|
mkdir -p ./server-dist
|
||||||
|
tar -xvf "$file" -C ./server-dist
|
||||||
|
server_dir="./server-dist/TriliumNotes-Server-$version-linux-${{ matrix.arch }}"
|
||||||
|
if [ ! -d "$server_dir" ]; then
|
||||||
|
echo Missing dir.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd "$server_dir"
|
||||||
|
"./trilium.sh" &
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
- name: Server end-to-end tests
|
||||||
|
run: pnpm --filter server-e2e e2e
|
||||||
|
|
||||||
- name: Upload test report
|
- name: Upload test report
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: e2e report
|
name: e2e report
|
||||||
path: apps/server-e2e/test-output
|
path: apps/server-e2e/test-output
|
||||||
|
|
||||||
|
- name: Kill the server
|
||||||
|
if: always()
|
||||||
|
run: pkill -f trilium || true
|
||||||
|
|||||||
12
.github/workflows/release.yml
vendored
12
.github/workflows/release.yml
vendored
@@ -48,9 +48,9 @@ jobs:
|
|||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -73,7 +73,7 @@ jobs:
|
|||||||
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
|
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
|
||||||
|
|
||||||
- name: Upload the artifact
|
- name: Upload the artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: release-desktop-${{ matrix.os.name }}-${{ matrix.arch }}
|
name: release-desktop-${{ matrix.os.name }}-${{ matrix.arch }}
|
||||||
path: apps/desktop/upload/*.*
|
path: apps/desktop/upload/*.*
|
||||||
@@ -100,7 +100,7 @@ jobs:
|
|||||||
arch: ${{ matrix.arch }}
|
arch: ${{ matrix.arch }}
|
||||||
|
|
||||||
- name: Upload the artifact
|
- name: Upload the artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: release-server-linux-${{ matrix.arch }}
|
name: release-server-linux-${{ matrix.arch }}
|
||||||
path: upload/*.*
|
path: upload/*.*
|
||||||
@@ -120,14 +120,14 @@ jobs:
|
|||||||
docs/Release Notes
|
docs/Release Notes
|
||||||
|
|
||||||
- name: Download all artifacts
|
- name: Download all artifacts
|
||||||
uses: actions/download-artifact@v5
|
uses: actions/download-artifact@v6
|
||||||
with:
|
with:
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
pattern: release-*
|
pattern: release-*
|
||||||
path: upload
|
path: upload
|
||||||
|
|
||||||
- name: Publish stable release
|
- name: Publish stable release
|
||||||
uses: softprops/action-gh-release@v2.3.4
|
uses: softprops/action-gh-release@v2.4.2
|
||||||
with:
|
with:
|
||||||
draft: false
|
draft: false
|
||||||
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md
|
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md
|
||||||
|
|||||||
7
.github/workflows/website.yml
vendored
7
.github/workflows/website.yml
vendored
@@ -11,6 +11,9 @@ on:
|
|||||||
paths:
|
paths:
|
||||||
- "apps/website/**"
|
- "apps/website/**"
|
||||||
|
|
||||||
|
release:
|
||||||
|
types: [ released ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-deploy:
|
build-and-deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -25,9 +28,9 @@ jobs:
|
|||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- name: Set up node & dependencies
|
- name: Set up node & dependencies
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
cache: "pnpm"
|
cache: "pnpm"
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
|
|||||||
1
.vscode/i18n-ally-custom-framework.yml
vendored
1
.vscode/i18n-ally-custom-framework.yml
vendored
@@ -14,6 +14,7 @@ usageMatchRegex:
|
|||||||
# the `{key}` will be placed by a proper keypath matching regex,
|
# the `{key}` will be placed by a proper keypath matching regex,
|
||||||
# you can ignore it and use your own matching rules as well
|
# you can ignore it and use your own matching rules as well
|
||||||
- "[^\\w\\d]t\\(['\"`]({key})['\"`]"
|
- "[^\\w\\d]t\\(['\"`]({key})['\"`]"
|
||||||
|
- <Trans\s*i18nKey="({key})"[^>]*>
|
||||||
|
|
||||||
# A RegEx to set a custom scope range. This scope will be used as a prefix when detecting keys
|
# A RegEx to set a custom scope range. This scope will be used as a prefix when detecting keys
|
||||||
# and works like how the i18next framework identifies the namespace scope from the
|
# and works like how the i18next framework identifies the namespace scope from the
|
||||||
|
|||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -5,7 +5,8 @@
|
|||||||
"i18n-ally.keystyle": "nested",
|
"i18n-ally.keystyle": "nested",
|
||||||
"i18n-ally.localesPaths": [
|
"i18n-ally.localesPaths": [
|
||||||
"apps/server/src/assets/translations",
|
"apps/server/src/assets/translations",
|
||||||
"apps/client/src/translations"
|
"apps/client/src/translations",
|
||||||
|
"apps/website/public/translations"
|
||||||
],
|
],
|
||||||
"npm.exclude": [
|
"npm.exclude": [
|
||||||
"**/dist",
|
"**/dist",
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -1,3 +1,14 @@
|
|||||||
|
<div align="center">
|
||||||
|
<sup>Special thanks to:</sup><br />
|
||||||
|
<a href="https://go.warp.dev/Trilium" target="_blank">
|
||||||
|
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
|
||||||
|
Warp, built for coding with multiple AI agents<br />
|
||||||
|
</a>
|
||||||
|
<sup>Available for macOS, Linux and Windows</sup>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
# Trilium Notes
|
# Trilium Notes
|
||||||
|
|
||||||
 
|
 
|
||||||
@@ -13,6 +24,10 @@ See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for q
|
|||||||
|
|
||||||
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
|
## ⏬ Download
|
||||||
|
- [Latest release](https://github.com/TriliumNext/Trilium/releases/latest) – stable version, recommended for most users.
|
||||||
|
- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) – unstable development version, updated daily with the latest features and fixes.
|
||||||
|
|
||||||
## 📚 Documentation
|
## 📚 Documentation
|
||||||
|
|
||||||
**Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)**
|
**Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)**
|
||||||
@@ -167,7 +182,7 @@ Please view the [documentation guide](https://github.com/TriliumNext/Trilium/blo
|
|||||||
## 👏 Shoutouts
|
## 👏 Shoutouts
|
||||||
|
|
||||||
* [zadam](https://github.com/zadam) for the original concept and implementation of the application.
|
* [zadam](https://github.com/zadam) for the original concept and implementation of the application.
|
||||||
* [Larsa](https://github.com/LarsaSara) for designing the application icon.
|
* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the application icon.
|
||||||
* [nriver](https://github.com/nriver) for his work on internationalization.
|
* [nriver](https://github.com/nriver) for his work on internationalization.
|
||||||
* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas.
|
* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas.
|
||||||
* [antoniotejada](https://github.com/nriver) for the original syntax highlight widget.
|
* [antoniotejada](https://github.com/nriver) for the original syntax highlight widget.
|
||||||
|
|||||||
@@ -35,22 +35,20 @@
|
|||||||
"chore:generate-openapi": "tsx bin/generate-openapi.js"
|
"chore:generate-openapi": "tsx bin/generate-openapi.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@playwright/test": "1.55.1",
|
"@playwright/test": "1.56.1",
|
||||||
"@stylistic/eslint-plugin": "5.4.0",
|
"@stylistic/eslint-plugin": "5.5.0",
|
||||||
"@types/express": "5.0.3",
|
"@types/express": "5.0.5",
|
||||||
"@types/node": "22.18.8",
|
"@types/node": "24.10.0",
|
||||||
"@types/yargs": "17.0.33",
|
"@types/yargs": "17.0.34",
|
||||||
"@vitest/coverage-v8": "3.2.4",
|
"@vitest/coverage-v8": "3.2.4",
|
||||||
"eslint": "9.37.0",
|
"eslint": "9.39.1",
|
||||||
"eslint-plugin-simple-import-sort": "12.1.1",
|
"eslint-plugin-simple-import-sort": "12.1.1",
|
||||||
"esm": "3.2.25",
|
"esm": "3.2.25",
|
||||||
"jsdoc": "4.0.4",
|
"jsdoc": "4.0.5",
|
||||||
"lorem-ipsum": "2.0.8",
|
"lorem-ipsum": "2.0.8",
|
||||||
"rcedit": "4.0.1",
|
"rcedit": "5.0.0",
|
||||||
"rimraf": "6.0.1",
|
"rimraf": "6.1.0",
|
||||||
"tslib": "2.8.1",
|
"tslib": "2.8.1"
|
||||||
"typedoc": "0.28.13",
|
|
||||||
"typedoc-plugin-missing-exports": "4.1.0"
|
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"appdmg": "0.6.6"
|
"appdmg": "0.6.6"
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import type child_process from "child_process";
|
|
||||||
import { describe, beforeAll, afterAll } from "vitest";
|
import { describe, beforeAll, afterAll } from "vitest";
|
||||||
|
|
||||||
let etapiAuthToken: string | undefined;
|
let etapiAuthToken: string | undefined;
|
||||||
@@ -12,8 +11,6 @@ type SpecDefinitionsFunc = () => void;
|
|||||||
|
|
||||||
function describeEtapi(description: string, specDefinitions: SpecDefinitionsFunc): void {
|
function describeEtapi(description: string, specDefinitions: SpecDefinitionsFunc): void {
|
||||||
describe(description, () => {
|
describe(description, () => {
|
||||||
let appProcess: ReturnType<typeof child_process.spawn>;
|
|
||||||
|
|
||||||
beforeAll(async () => {});
|
beforeAll(async () => {});
|
||||||
|
|
||||||
afterAll(() => {});
|
afterAll(() => {});
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"entryPoints": [
|
|
||||||
"src/services/backend_script_entrypoint.ts",
|
|
||||||
"src/public/app/services/frontend_script_entrypoint.ts"
|
|
||||||
],
|
|
||||||
"plugin": [
|
|
||||||
"typedoc-plugin-missing-exports"
|
|
||||||
],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "html",
|
|
||||||
"path": "./docs/Script API"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
22
apps/build-docs/package.json
Normal file
22
apps/build-docs/package.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "build-docs",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "src/main.ts",
|
||||||
|
"scripts": {
|
||||||
|
"start": "tsx ."
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "Elian Doran <contact@eliandoran.me>",
|
||||||
|
"license": "AGPL-3.0-only",
|
||||||
|
"packageManager": "pnpm@10.20.0",
|
||||||
|
"devDependencies": {
|
||||||
|
"@redocly/cli": "2.11.0",
|
||||||
|
"archiver": "7.0.1",
|
||||||
|
"fs-extra": "11.3.2",
|
||||||
|
"react": "19.2.0",
|
||||||
|
"react-dom": "19.2.0",
|
||||||
|
"typedoc": "0.28.14",
|
||||||
|
"typedoc-plugin-missing-exports": "4.1.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
36
apps/build-docs/src/backend_script_entrypoint.ts
Normal file
36
apps/build-docs/src/backend_script_entrypoint.ts
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* The backend script API is accessible to code notes with the "JS (backend)" language.
|
||||||
|
*
|
||||||
|
* The entire API is exposed as a single global: {@link api}
|
||||||
|
*
|
||||||
|
* @module Backend Script API
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file creates the entrypoint for TypeDoc that simulates the context from within a
|
||||||
|
* script note on the server side.
|
||||||
|
*
|
||||||
|
* Make sure to keep in line with backend's `script_context.ts`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type { default as AbstractBeccaEntity } from "../../server/src/becca/entities/abstract_becca_entity.js";
|
||||||
|
export type { default as BAttachment } from "../../server/src/becca/entities/battachment.js";
|
||||||
|
export type { default as BAttribute } from "../../server/src/becca/entities/battribute.js";
|
||||||
|
export type { default as BBranch } from "../../server/src/becca/entities/bbranch.js";
|
||||||
|
export type { default as BEtapiToken } from "../../server/src/becca/entities/betapi_token.js";
|
||||||
|
export type { BNote };
|
||||||
|
export type { default as BOption } from "../../server/src/becca/entities/boption.js";
|
||||||
|
export type { default as BRecentNote } from "../../server/src/becca/entities/brecent_note.js";
|
||||||
|
export type { default as BRevision } from "../../server/src/becca/entities/brevision.js";
|
||||||
|
|
||||||
|
import BNote from "../../server/src/becca/entities/bnote.js";
|
||||||
|
import BackendScriptApi, { type Api } from "../../server/src/services/backend_script_api.js";
|
||||||
|
|
||||||
|
export type { Api };
|
||||||
|
|
||||||
|
const fakeNote = new BNote();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `api` global variable allows access to the backend script API, which is documented in {@link Api}.
|
||||||
|
*/
|
||||||
|
export const api: Api = new BackendScriptApi(fakeNote, {});
|
||||||
147
apps/build-docs/src/build-docs.ts
Normal file
147
apps/build-docs/src/build-docs.ts
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
process.env.TRILIUM_INTEGRATION_TEST = "memory-no-store";
|
||||||
|
process.env.TRILIUM_RESOURCE_DIR = "../server/src";
|
||||||
|
process.env.NODE_ENV = "development";
|
||||||
|
|
||||||
|
import cls from "@triliumnext/server/src/services/cls.js";
|
||||||
|
import { dirname, join, resolve } from "path";
|
||||||
|
import * as fs from "fs/promises";
|
||||||
|
import * as fsExtra from "fs-extra";
|
||||||
|
import archiver from "archiver";
|
||||||
|
import { WriteStream } from "fs";
|
||||||
|
import { execSync } from "child_process";
|
||||||
|
import BuildContext from "./context.js";
|
||||||
|
|
||||||
|
const DOCS_ROOT = "../../../docs";
|
||||||
|
const OUTPUT_DIR = "../../site";
|
||||||
|
|
||||||
|
async function importAndExportDocs(sourcePath: string, outputSubDir: string) {
|
||||||
|
const note = await importData(sourcePath);
|
||||||
|
|
||||||
|
// Use a meaningful name for the temporary zip file
|
||||||
|
const zipName = outputSubDir || "user-guide";
|
||||||
|
const zipFilePath = `output-${zipName}.zip`;
|
||||||
|
try {
|
||||||
|
const { exportToZip } = (await import("@triliumnext/server/src/services/export/zip.js")).default;
|
||||||
|
const branch = note.getParentBranches()[0];
|
||||||
|
const taskContext = new (await import("@triliumnext/server/src/services/task_context.js")).default(
|
||||||
|
"no-progress-reporting",
|
||||||
|
"export",
|
||||||
|
null
|
||||||
|
);
|
||||||
|
const fileOutputStream = fsExtra.createWriteStream(zipFilePath);
|
||||||
|
await exportToZip(taskContext, branch, "share", fileOutputStream);
|
||||||
|
await waitForStreamToFinish(fileOutputStream);
|
||||||
|
|
||||||
|
// Output to root directory if outputSubDir is empty, otherwise to subdirectory
|
||||||
|
const outputPath = outputSubDir ? join(OUTPUT_DIR, outputSubDir) : OUTPUT_DIR;
|
||||||
|
await extractZip(zipFilePath, outputPath);
|
||||||
|
} finally {
|
||||||
|
if (await fsExtra.exists(zipFilePath)) {
|
||||||
|
await fsExtra.rm(zipFilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function buildDocsInner() {
|
||||||
|
const i18n = await import("@triliumnext/server/src/services/i18n.js");
|
||||||
|
await i18n.initializeTranslations();
|
||||||
|
|
||||||
|
const sqlInit = (await import("../../server/src/services/sql_init.js")).default;
|
||||||
|
await sqlInit.createInitialDatabase(true);
|
||||||
|
|
||||||
|
// Wait for becca to be loaded before importing data
|
||||||
|
const beccaLoader = await import("../../server/src/becca/becca_loader.js");
|
||||||
|
await beccaLoader.beccaLoaded;
|
||||||
|
|
||||||
|
// Build User Guide
|
||||||
|
console.log("Building User Guide...");
|
||||||
|
await importAndExportDocs(join(__dirname, DOCS_ROOT, "User Guide"), "user-guide");
|
||||||
|
|
||||||
|
// Build Developer Guide
|
||||||
|
console.log("Building Developer Guide...");
|
||||||
|
await importAndExportDocs(join(__dirname, DOCS_ROOT, "Developer Guide"), "developer-guide");
|
||||||
|
|
||||||
|
// Copy favicon.
|
||||||
|
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "favicon.ico"));
|
||||||
|
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "user-guide", "favicon.ico"));
|
||||||
|
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "developer-guide", "favicon.ico"));
|
||||||
|
|
||||||
|
console.log("Documentation built successfully!");
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function importData(path: string) {
|
||||||
|
const buffer = await createImportZip(path);
|
||||||
|
const importService = (await import("../../server/src/services/import/zip.js")).default;
|
||||||
|
const TaskContext = (await import("../../server/src/services/task_context.js")).default;
|
||||||
|
const context = new TaskContext("no-progress-reporting", "importNotes", null);
|
||||||
|
const becca = (await import("../../server/src/becca/becca.js")).default;
|
||||||
|
|
||||||
|
const rootNote = becca.getRoot();
|
||||||
|
if (!rootNote) {
|
||||||
|
throw new Error("Missing root note for import.");
|
||||||
|
}
|
||||||
|
return await importService.importZip(context, buffer, rootNote, {
|
||||||
|
preserveIds: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createImportZip(path: string) {
|
||||||
|
const inputFile = "input.zip";
|
||||||
|
const archive = archiver("zip", {
|
||||||
|
zlib: { level: 0 }
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("Archive path is ", resolve(path))
|
||||||
|
archive.directory(path, "/");
|
||||||
|
|
||||||
|
const outputStream = fsExtra.createWriteStream(inputFile);
|
||||||
|
archive.pipe(outputStream);
|
||||||
|
archive.finalize();
|
||||||
|
await waitForStreamToFinish(outputStream);
|
||||||
|
|
||||||
|
try {
|
||||||
|
return await fsExtra.readFile(inputFile);
|
||||||
|
} finally {
|
||||||
|
await fsExtra.rm(inputFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function waitForStreamToFinish(stream: WriteStream) {
|
||||||
|
return new Promise<void>((res, rej) => {
|
||||||
|
stream.on("finish", () => res());
|
||||||
|
stream.on("error", (err) => rej(err));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function extractZip(zipFilePath: string, outputPath: string, ignoredFiles?: Set<string>) {
|
||||||
|
const { readZipFile, readContent } = (await import("@triliumnext/server/src/services/import/zip.js"));
|
||||||
|
await readZipFile(await fs.readFile(zipFilePath), async (zip, entry) => {
|
||||||
|
// We ignore directories since they can appear out of order anyway.
|
||||||
|
if (!entry.fileName.endsWith("/") && !ignoredFiles?.has(entry.fileName)) {
|
||||||
|
const destPath = join(outputPath, entry.fileName);
|
||||||
|
const fileContent = await readContent(zip, entry);
|
||||||
|
|
||||||
|
await fsExtra.mkdirs(dirname(destPath));
|
||||||
|
await fs.writeFile(destPath, fileContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
zip.readEntry();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function buildDocs({ gitRootDir }: BuildContext) {
|
||||||
|
// Build the share theme.
|
||||||
|
execSync(`pnpm run --filter share-theme build`, {
|
||||||
|
stdio: "inherit",
|
||||||
|
cwd: gitRootDir
|
||||||
|
});
|
||||||
|
|
||||||
|
// Trigger the actual build.
|
||||||
|
await new Promise((res, rej) => {
|
||||||
|
cls.init(() => {
|
||||||
|
buildDocsInner()
|
||||||
|
.catch(rej)
|
||||||
|
.then(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
4
apps/build-docs/src/context.ts
Normal file
4
apps/build-docs/src/context.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
export default interface BuildContext {
|
||||||
|
gitRootDir: string;
|
||||||
|
baseDir: string;
|
||||||
|
}
|
||||||
28
apps/build-docs/src/frontend_script_entrypoint.ts
Normal file
28
apps/build-docs/src/frontend_script_entrypoint.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* The front script API is accessible to code notes with the "JS (frontend)" language.
|
||||||
|
*
|
||||||
|
* The entire API is exposed as a single global: {@link api}
|
||||||
|
*
|
||||||
|
* @module Frontend Script API
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file creates the entrypoint for TypeDoc that simulates the context from within a
|
||||||
|
* script note.
|
||||||
|
*
|
||||||
|
* Make sure to keep in line with frontend's `script_context.ts`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type { default as BasicWidget } from "../../client/src/widgets/basic_widget.js";
|
||||||
|
export type { default as FAttachment } from "../../client/src/entities/fattachment.js";
|
||||||
|
export type { default as FAttribute } from "../../client/src/entities/fattribute.js";
|
||||||
|
export type { default as FBranch } from "../../client/src/entities/fbranch.js";
|
||||||
|
export type { default as FNote } from "../../client/src/entities/fnote.js";
|
||||||
|
export type { Api } from "../../client/src/services/frontend_script_api.js";
|
||||||
|
export type { default as NoteContextAwareWidget } from "../../client/src/widgets/note_context_aware_widget.js";
|
||||||
|
export type { default as RightPanelWidget } from "../../client/src/widgets/right_panel_widget.js";
|
||||||
|
|
||||||
|
import FrontendScriptApi, { type Api } from "../../client/src/services/frontend_script_api.js";
|
||||||
|
|
||||||
|
//@ts-expect-error
|
||||||
|
export const api: Api = new FrontendScriptApi();
|
||||||
10
apps/build-docs/src/index.html
Normal file
10
apps/build-docs/src/index.html
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="refresh" content="0; url=/user-guide">
|
||||||
|
<title>Redirecting...</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>If you are not redirected automatically, <a href="/user-guide">click here</a>.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
30
apps/build-docs/src/main.ts
Normal file
30
apps/build-docs/src/main.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import { join } from "path";
|
||||||
|
import BuildContext from "./context";
|
||||||
|
import buildSwagger from "./swagger";
|
||||||
|
import { cpSync, existsSync, mkdirSync, rmSync } from "fs";
|
||||||
|
import buildDocs from "./build-docs";
|
||||||
|
import buildScriptApi from "./script-api";
|
||||||
|
|
||||||
|
const context: BuildContext = {
|
||||||
|
gitRootDir: join(__dirname, "../../../"),
|
||||||
|
baseDir: join(__dirname, "../../../site")
|
||||||
|
};
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
// Clean input dir.
|
||||||
|
if (existsSync(context.baseDir)) {
|
||||||
|
rmSync(context.baseDir, { recursive: true });
|
||||||
|
}
|
||||||
|
mkdirSync(context.baseDir);
|
||||||
|
|
||||||
|
// Start building.
|
||||||
|
await buildDocs(context);
|
||||||
|
buildSwagger(context);
|
||||||
|
buildScriptApi(context);
|
||||||
|
|
||||||
|
// Copy index and 404 files.
|
||||||
|
cpSync(join(__dirname, "index.html"), join(context.baseDir, "index.html"));
|
||||||
|
cpSync(join(context.baseDir, "user-guide/404.html"), join(context.baseDir, "404.html"));
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
15
apps/build-docs/src/script-api.ts
Normal file
15
apps/build-docs/src/script-api.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { execSync } from "child_process";
|
||||||
|
import BuildContext from "./context";
|
||||||
|
import { join } from "path";
|
||||||
|
|
||||||
|
export default function buildScriptApi({ baseDir, gitRootDir }: BuildContext) {
|
||||||
|
// Generate types
|
||||||
|
execSync(`pnpm typecheck`, { stdio: "inherit", cwd: gitRootDir });
|
||||||
|
|
||||||
|
for (const config of [ "backend", "frontend" ]) {
|
||||||
|
const outDir = join(baseDir, "script-api", config);
|
||||||
|
execSync(`pnpm typedoc --options typedoc.${config}.json --html "${outDir}"`, {
|
||||||
|
stdio: "inherit"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
32
apps/build-docs/src/swagger.ts
Normal file
32
apps/build-docs/src/swagger.ts
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import BuildContext from "./context";
|
||||||
|
import { join } from "path";
|
||||||
|
import { execSync } from "child_process";
|
||||||
|
import { mkdirSync } from "fs";
|
||||||
|
|
||||||
|
interface BuildInfo {
|
||||||
|
specPath: string;
|
||||||
|
outDir: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const DIR_PREFIX = "rest-api";
|
||||||
|
|
||||||
|
const buildInfos: BuildInfo[] = [
|
||||||
|
{
|
||||||
|
// Paths are relative to Git root.
|
||||||
|
specPath: "apps/server/internal.openapi.yaml",
|
||||||
|
outDir: `${DIR_PREFIX}/internal`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
specPath: "apps/server/etapi.openapi.yaml",
|
||||||
|
outDir: `${DIR_PREFIX}/etapi`
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function buildSwagger({ baseDir, gitRootDir }: BuildContext) {
|
||||||
|
for (const { specPath, outDir } of buildInfos) {
|
||||||
|
const absSpecPath = join(gitRootDir, specPath);
|
||||||
|
const targetDir = join(baseDir, outDir);
|
||||||
|
mkdirSync(targetDir, { recursive: true });
|
||||||
|
execSync(`pnpm redocly build-docs ${absSpecPath} -o ${targetDir}/index.html`, { stdio: "inherit" });
|
||||||
|
}
|
||||||
|
}
|
||||||
36
apps/build-docs/tsconfig.app.json
Normal file
36
apps/build-docs/tsconfig.app.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"target": "ES2020",
|
||||||
|
"outDir": "dist",
|
||||||
|
"strict": false,
|
||||||
|
"types": [
|
||||||
|
"node",
|
||||||
|
"express"
|
||||||
|
],
|
||||||
|
"rootDir": "src",
|
||||||
|
"tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts",
|
||||||
|
"../server/src/*.d.ts"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"eslint.config.js",
|
||||||
|
"eslint.config.cjs",
|
||||||
|
"eslint.config.mjs"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "../server/tsconfig.app.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../desktop/tsconfig.app.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../client/tsconfig.app.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
apps/build-docs/tsconfig.json
Normal file
15
apps/build-docs/tsconfig.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.base.json",
|
||||||
|
"include": [],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "../server"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../client"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "./tsconfig.app.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
10
apps/build-docs/typedoc.backend.json
Normal file
10
apps/build-docs/typedoc.backend.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://typedoc.org/schema.json",
|
||||||
|
"name": "Trilium Backend API",
|
||||||
|
"entryPoints": [
|
||||||
|
"src/backend_script_entrypoint.ts"
|
||||||
|
],
|
||||||
|
"plugin": [
|
||||||
|
"typedoc-plugin-missing-exports"
|
||||||
|
]
|
||||||
|
}
|
||||||
10
apps/build-docs/typedoc.frontend.json
Normal file
10
apps/build-docs/typedoc.frontend.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://typedoc.org/schema.json",
|
||||||
|
"name": "Trilium Frontend API",
|
||||||
|
"entryPoints": [
|
||||||
|
"src/frontend_script_entrypoint.ts"
|
||||||
|
],
|
||||||
|
"plugin": [
|
||||||
|
"typedoc-plugin-missing-exports"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@triliumnext/client",
|
"name": "@triliumnext/client",
|
||||||
"version": "0.99.1",
|
"version": "0.99.4",
|
||||||
"description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)",
|
"description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
|
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/js": "9.37.0",
|
"@eslint/js": "9.39.1",
|
||||||
"@excalidraw/excalidraw": "0.18.0",
|
"@excalidraw/excalidraw": "0.18.0",
|
||||||
"@fullcalendar/core": "6.1.19",
|
"@fullcalendar/core": "6.1.19",
|
||||||
"@fullcalendar/daygrid": "6.1.19",
|
"@fullcalendar/daygrid": "6.1.19",
|
||||||
@@ -32,33 +32,35 @@
|
|||||||
"@triliumnext/commons": "workspace:*",
|
"@triliumnext/commons": "workspace:*",
|
||||||
"@triliumnext/highlightjs": "workspace:*",
|
"@triliumnext/highlightjs": "workspace:*",
|
||||||
"@triliumnext/share-theme": "workspace:*",
|
"@triliumnext/share-theme": "workspace:*",
|
||||||
|
"@triliumnext/split.js": "workspace:*",
|
||||||
"autocomplete.js": "0.38.1",
|
"autocomplete.js": "0.38.1",
|
||||||
"bootstrap": "5.3.8",
|
"bootstrap": "5.3.8",
|
||||||
"boxicons": "2.1.4",
|
"boxicons": "2.1.4",
|
||||||
"dayjs": "1.11.18",
|
"color": "5.0.2",
|
||||||
|
"dayjs": "1.11.19",
|
||||||
"dayjs-plugin-utc": "0.1.2",
|
"dayjs-plugin-utc": "0.1.2",
|
||||||
"debounce": "2.2.0",
|
"debounce": "3.0.0",
|
||||||
"draggabilly": "3.0.0",
|
"draggabilly": "3.0.0",
|
||||||
"force-graph": "1.51.0",
|
"force-graph": "1.51.0",
|
||||||
"globals": "16.4.0",
|
"globals": "16.5.0",
|
||||||
"i18next": "25.5.3",
|
"i18next": "25.6.1",
|
||||||
"i18next-http-backend": "3.0.2",
|
"i18next-http-backend": "3.0.2",
|
||||||
"jquery": "3.7.1",
|
"jquery": "3.7.1",
|
||||||
"jquery.fancytree": "2.38.5",
|
"jquery.fancytree": "2.38.5",
|
||||||
"jsplumb": "2.15.6",
|
"jsplumb": "2.15.6",
|
||||||
"katex": "0.16.23",
|
"katex": "0.16.25",
|
||||||
"knockout": "3.5.1",
|
"knockout": "3.5.1",
|
||||||
"leaflet": "1.9.4",
|
"leaflet": "1.9.4",
|
||||||
"leaflet-gpx": "2.2.0",
|
"leaflet-gpx": "2.2.0",
|
||||||
"mark.js": "8.11.1",
|
"mark.js": "8.11.1",
|
||||||
"marked": "16.3.0",
|
"marked": "16.4.2",
|
||||||
"mermaid": "11.12.0",
|
"mermaid": "11.12.1",
|
||||||
"mind-elixir": "5.1.1",
|
"mind-elixir": "5.3.5",
|
||||||
"normalize.css": "8.0.1",
|
"normalize.css": "8.0.1",
|
||||||
"panzoom": "9.4.3",
|
"panzoom": "9.4.3",
|
||||||
"preact": "10.27.2",
|
"preact": "10.27.2",
|
||||||
"react-i18next": "16.0.0",
|
"react-i18next": "16.2.4",
|
||||||
"split.js": "1.6.5",
|
"reveal.js": "5.2.1",
|
||||||
"svg-pan-zoom": "3.6.2",
|
"svg-pan-zoom": "3.6.2",
|
||||||
"tabulator-tables": "6.3.1",
|
"tabulator-tables": "6.3.1",
|
||||||
"vanilla-js-wheel-zoom": "9.0.4"
|
"vanilla-js-wheel-zoom": "9.0.4"
|
||||||
@@ -68,13 +70,14 @@
|
|||||||
"@preact/preset-vite": "2.10.2",
|
"@preact/preset-vite": "2.10.2",
|
||||||
"@types/bootstrap": "5.2.10",
|
"@types/bootstrap": "5.2.10",
|
||||||
"@types/jquery": "3.5.33",
|
"@types/jquery": "3.5.33",
|
||||||
"@types/leaflet": "1.9.20",
|
"@types/leaflet": "1.9.21",
|
||||||
"@types/leaflet-gpx": "1.3.8",
|
"@types/leaflet-gpx": "1.3.8",
|
||||||
"@types/mark.js": "8.11.12",
|
"@types/mark.js": "8.11.12",
|
||||||
"@types/tabulator-tables": "6.2.11",
|
"@types/reveal.js": "5.2.1",
|
||||||
|
"@types/tabulator-tables": "6.3.0",
|
||||||
"copy-webpack-plugin": "13.0.1",
|
"copy-webpack-plugin": "13.0.1",
|
||||||
"happy-dom": "19.0.2",
|
"happy-dom": "20.0.10",
|
||||||
"script-loader": "0.7.2",
|
"script-loader": "0.7.2",
|
||||||
"vite-plugin-static-copy": "3.1.3"
|
"vite-plugin-static-copy": "3.1.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,12 +218,12 @@ export type CommandMappings = {
|
|||||||
/** Works only in the electron context menu. */
|
/** Works only in the electron context menu. */
|
||||||
replaceMisspelling: CommandData;
|
replaceMisspelling: CommandData;
|
||||||
|
|
||||||
importMarkdownInline: CommandData;
|
|
||||||
showPasswordNotSet: CommandData;
|
showPasswordNotSet: CommandData;
|
||||||
showProtectedSessionPasswordDialog: CommandData;
|
showProtectedSessionPasswordDialog: CommandData;
|
||||||
showUploadAttachmentsDialog: CommandData & { noteId: string };
|
showUploadAttachmentsDialog: CommandData & { noteId: string };
|
||||||
showIncludeNoteDialog: CommandData & { textTypeWidget: EditableTextTypeWidget };
|
showIncludeNoteDialog: CommandData & { textTypeWidget: EditableTextTypeWidget };
|
||||||
showAddLinkDialog: CommandData & { textTypeWidget: EditableTextTypeWidget, text: string };
|
showAddLinkDialog: CommandData & { textTypeWidget: EditableTextTypeWidget, text: string };
|
||||||
|
showPasteMarkdownDialog: CommandData & { textTypeWidget: EditableTextTypeWidget };
|
||||||
closeProtectedSessionPasswordDialog: CommandData;
|
closeProtectedSessionPasswordDialog: CommandData;
|
||||||
copyImageReferenceToClipboard: CommandData;
|
copyImageReferenceToClipboard: CommandData;
|
||||||
copyImageToClipboard: CommandData;
|
copyImageToClipboard: CommandData;
|
||||||
@@ -270,6 +270,7 @@ export type CommandMappings = {
|
|||||||
closeThisNoteSplit: CommandData;
|
closeThisNoteSplit: CommandData;
|
||||||
moveThisNoteSplit: CommandData & { isMovingLeft: boolean };
|
moveThisNoteSplit: CommandData & { isMovingLeft: boolean };
|
||||||
jumpToNote: CommandData;
|
jumpToNote: CommandData;
|
||||||
|
openTodayNote: CommandData;
|
||||||
commandPalette: CommandData;
|
commandPalette: CommandData;
|
||||||
|
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
@@ -498,6 +499,10 @@ type EventMappings = {
|
|||||||
noteIds: string[];
|
noteIds: string[];
|
||||||
};
|
};
|
||||||
refreshData: { ntxId: string | null | undefined };
|
refreshData: { ntxId: string | null | undefined };
|
||||||
|
contentSafeMarginChanged: {
|
||||||
|
top: number;
|
||||||
|
noteContext: NoteContext;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export type EventListener<T extends EventNames> = {
|
export type EventListener<T extends EventNames> = {
|
||||||
|
|||||||
@@ -159,6 +159,16 @@ export default class Entrypoints extends Component {
|
|||||||
this.openInWindowCommand({ notePath: "", hoistedNoteId: "root" });
|
this.openInWindowCommand({ notePath: "", hoistedNoteId: "root" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async openTodayNoteCommand() {
|
||||||
|
const todayNote = await dateNoteService.getTodayNote();
|
||||||
|
if (!todayNote) {
|
||||||
|
console.warn("Missing today note.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await appContext.tabManager.openInSameTab(todayNote.noteId);
|
||||||
|
}
|
||||||
|
|
||||||
async runActiveNoteCommand() {
|
async runActiveNoteCommand() {
|
||||||
const noteContext = appContext.tabManager.getActiveContext();
|
const noteContext = appContext.tabManager.getActiveContext();
|
||||||
if (!noteContext) {
|
if (!noteContext) {
|
||||||
|
|||||||
@@ -326,9 +326,11 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Collections must always display a note list, even if no children.
|
// Collections must always display a note list, even if no children.
|
||||||
const viewType = note.getLabelValue("viewType") ?? "grid";
|
if (note.type === "book") {
|
||||||
if (!["list", "grid"].includes(viewType)) {
|
const viewType = note.getLabelValue("viewType") ?? "grid";
|
||||||
return true;
|
if (!["list", "grid"].includes(viewType)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!note.hasChildren()) {
|
if (!note.hasChildren()) {
|
||||||
@@ -438,4 +440,22 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function openInCurrentNoteContext(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent | React.PointerEvent<HTMLCanvasElement> | null, notePath: string, viewScope?: ViewScope) {
|
||||||
|
const ntxId = $(evt?.target as Element)
|
||||||
|
.closest("[data-ntx-id]")
|
||||||
|
.attr("data-ntx-id");
|
||||||
|
|
||||||
|
const noteContext = ntxId ? appContext.tabManager.getNoteContextById(ntxId) : appContext.tabManager.getActiveContext();
|
||||||
|
|
||||||
|
if (noteContext) {
|
||||||
|
noteContext.setNote(notePath, { viewScope }).then(() => {
|
||||||
|
if (noteContext !== appContext.tabManager.getActiveContext()) {
|
||||||
|
appContext.tabManager.activateNoteContext(noteContext.ntxId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
appContext.tabManager.openContextWithNote(notePath, { viewScope, activate: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default NoteContext;
|
export default NoteContext;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import protectedSessionService from "../services/protected_session.js";
|
|||||||
import options from "../services/options.js";
|
import options from "../services/options.js";
|
||||||
import froca from "../services/froca.js";
|
import froca from "../services/froca.js";
|
||||||
import utils from "../services/utils.js";
|
import utils from "../services/utils.js";
|
||||||
import LlmChatPanel from "../widgets/llm_chat_panel.js";
|
|
||||||
import toastService from "../services/toast.js";
|
import toastService from "../services/toast.js";
|
||||||
import noteCreateService from "../services/note_create.js";
|
import noteCreateService from "../services/note_create.js";
|
||||||
|
|
||||||
@@ -171,7 +170,8 @@ export default class RootCommandExecutor extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
toggleTrayCommand() {
|
toggleTrayCommand() {
|
||||||
if (!utils.isElectron()) return;
|
if (!utils.isElectron() || options.is("disableTray")) return;
|
||||||
|
|
||||||
const { BrowserWindow } = utils.dynamicRequire("@electron/remote");
|
const { BrowserWindow } = utils.dynamicRequire("@electron/remote");
|
||||||
const windows = BrowserWindow.getAllWindows() as Electron.BaseWindow[];
|
const windows = BrowserWindow.getAllWindows() as Electron.BaseWindow[];
|
||||||
const isVisible = windows.every((w) => w.isVisible());
|
const isVisible = windows.every((w) => w.isVisible());
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import { t } from "./services/i18n.js";
|
|||||||
import options from "./services/options.js";
|
import options from "./services/options.js";
|
||||||
import type ElectronRemote from "@electron/remote";
|
import type ElectronRemote from "@electron/remote";
|
||||||
import type Electron from "electron";
|
import type Electron from "electron";
|
||||||
import "bootstrap/dist/css/bootstrap.min.css";
|
|
||||||
import "boxicons/css/boxicons.min.css";
|
import "boxicons/css/boxicons.min.css";
|
||||||
import "autocomplete.js/index_jquery.js";
|
import "autocomplete.js/index_jquery.js";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import server from "../services/server.js";
|
import server from "../services/server.js";
|
||||||
import noteAttributeCache from "../services/note_attribute_cache.js";
|
import noteAttributeCache from "../services/note_attribute_cache.js";
|
||||||
import ws from "../services/ws.js";
|
|
||||||
import protectedSessionHolder from "../services/protected_session_holder.js";
|
import protectedSessionHolder from "../services/protected_session_holder.js";
|
||||||
import cssClassManager from "../services/css_class_manager.js";
|
import cssClassManager from "../services/css_class_manager.js";
|
||||||
import type { Froca } from "../services/froca-interface.js";
|
import type { Froca } from "../services/froca-interface.js";
|
||||||
@@ -418,7 +417,7 @@ export default class FNote {
|
|||||||
return notePaths;
|
return notePaths;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSortedNotePathRecords(hoistedNoteId = "root"): NotePathRecord[] {
|
getSortedNotePathRecords(hoistedNoteId = "root", activeNotePath: string | null = null): NotePathRecord[] {
|
||||||
const isHoistedRoot = hoistedNoteId === "root";
|
const isHoistedRoot = hoistedNoteId === "root";
|
||||||
|
|
||||||
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
|
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
|
||||||
@@ -429,7 +428,23 @@ export default class FNote {
|
|||||||
isHidden: path.includes("_hidden")
|
isHidden: path.includes("_hidden")
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// Calculate the length of the prefix match between two arrays
|
||||||
|
const prefixMatchLength = (path: string[], target: string[]) => {
|
||||||
|
const diffIndex = path.findIndex((seg, i) => seg !== target[i]);
|
||||||
|
return diffIndex === -1 ? Math.min(path.length, target.length) : diffIndex;
|
||||||
|
};
|
||||||
|
|
||||||
notePaths.sort((a, b) => {
|
notePaths.sort((a, b) => {
|
||||||
|
if (activeNotePath) {
|
||||||
|
const activeSegments = activeNotePath.split('/');
|
||||||
|
const aOverlap = prefixMatchLength(a.notePath, activeSegments);
|
||||||
|
const bOverlap = prefixMatchLength(b.notePath, activeSegments);
|
||||||
|
// Paths with more matching prefix segments are prioritized
|
||||||
|
// when the match count is equal, other criteria are used for sorting
|
||||||
|
if (bOverlap !== aOverlap) {
|
||||||
|
return bOverlap - aOverlap;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (a.isInHoistedSubTree !== b.isInHoistedSubTree) {
|
if (a.isInHoistedSubTree !== b.isInHoistedSubTree) {
|
||||||
return a.isInHoistedSubTree ? -1 : 1;
|
return a.isInHoistedSubTree ? -1 : 1;
|
||||||
} else if (a.isArchived !== b.isArchived) {
|
} else if (a.isArchived !== b.isArchived) {
|
||||||
@@ -450,10 +465,11 @@ export default class FNote {
|
|||||||
* Returns the note path considered to be the "best"
|
* Returns the note path considered to be the "best"
|
||||||
*
|
*
|
||||||
* @param {string} [hoistedNoteId='root']
|
* @param {string} [hoistedNoteId='root']
|
||||||
|
* @param {string|null} [activeNotePath=null]
|
||||||
* @return {string[]} array of noteIds constituting the particular note path
|
* @return {string[]} array of noteIds constituting the particular note path
|
||||||
*/
|
*/
|
||||||
getBestNotePath(hoistedNoteId = "root") {
|
getBestNotePath(hoistedNoteId = "root", activeNotePath: string | null = null) {
|
||||||
return this.getSortedNotePathRecords(hoistedNoteId)[0]?.notePath;
|
return this.getSortedNotePathRecords(hoistedNoteId, activeNotePath)[0]?.notePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -586,7 +602,7 @@ export default class FNote {
|
|||||||
let childBranches = this.getChildBranches();
|
let childBranches = this.getChildBranches();
|
||||||
|
|
||||||
if (!childBranches) {
|
if (!childBranches) {
|
||||||
ws.logError(`No children for '${this.noteId}'. This shouldn't happen.`);
|
console.error(`No children for '${this.noteId}'. This shouldn't happen.`);
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,47 +1,49 @@
|
|||||||
import FlexContainer from "../widgets/containers/flex_container.js";
|
|
||||||
import TabRowWidget from "../widgets/tab_row.js";
|
|
||||||
import LeftPaneContainer from "../widgets/containers/left_pane_container.js";
|
|
||||||
import NoteTreeWidget from "../widgets/note_tree.js";
|
|
||||||
import NoteTitleWidget from "../widgets/note_title.jsx";
|
|
||||||
import NoteDetailWidget from "../widgets/note_detail.js";
|
|
||||||
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
|
||||||
import NoteIconWidget from "../widgets/note_icon.jsx";
|
|
||||||
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
|
|
||||||
import RootContainer from "../widgets/containers/root_container.js";
|
|
||||||
import WatchedFileUpdateStatusWidget from "../widgets/watched_file_update_status.js";
|
|
||||||
import SpacerWidget from "../widgets/spacer.js";
|
|
||||||
import QuickSearchWidget from "../widgets/quick_search.js";
|
|
||||||
import SplitNoteContainer from "../widgets/containers/split_note_container.js";
|
|
||||||
import CreatePaneButton from "../widgets/buttons/create_pane_button.js";
|
|
||||||
import ClosePaneButton from "../widgets/buttons/close_pane_button.js";
|
|
||||||
import RightPaneContainer from "../widgets/containers/right_pane_container.js";
|
|
||||||
import NoteWrapperWidget from "../widgets/note_wrapper.js";
|
|
||||||
import FindWidget from "../widgets/find.js";
|
|
||||||
import TocWidget from "../widgets/toc.js";
|
|
||||||
import HighlightsListWidget from "../widgets/highlights_list.js";
|
|
||||||
import PasswordNoteSetDialog from "../widgets/dialogs/password_not_set.js";
|
|
||||||
import LauncherContainer from "../widgets/containers/launcher_container.js";
|
|
||||||
import MovePaneButton from "../widgets/buttons/move_pane_button.js";
|
|
||||||
import UploadAttachmentsDialog from "../widgets/dialogs/upload_attachments.js";
|
|
||||||
import ScrollPadding from "../widgets/scroll_padding.js";
|
|
||||||
import options from "../services/options.js";
|
|
||||||
import utils from "../services/utils.js";
|
|
||||||
import type { AppContext } from "../components/app_context.js";
|
|
||||||
import type { WidgetsByParent } from "../services/bundle.js";
|
|
||||||
import { applyModals } from "./layout_commons.js";
|
import { applyModals } from "./layout_commons.js";
|
||||||
import Ribbon from "../widgets/ribbon/Ribbon.jsx";
|
|
||||||
import FloatingButtons from "../widgets/FloatingButtons.jsx";
|
|
||||||
import { DESKTOP_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx";
|
import { DESKTOP_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx";
|
||||||
import SearchResult from "../widgets/search_result.jsx";
|
import ApiLog from "../widgets/api_log.jsx";
|
||||||
|
import ClosePaneButton from "../widgets/buttons/close_pane_button.js";
|
||||||
|
import CloseZenModeButton from "../widgets/close_zen_button.jsx";
|
||||||
|
import ContentHeader from "../widgets/containers/content-header.js";
|
||||||
|
import CreatePaneButton from "../widgets/buttons/create_pane_button.js";
|
||||||
|
import FindWidget from "../widgets/find.js";
|
||||||
|
import FlexContainer from "../widgets/containers/flex_container.js";
|
||||||
|
import FloatingButtons from "../widgets/FloatingButtons.jsx";
|
||||||
import GlobalMenu from "../widgets/buttons/global_menu.jsx";
|
import GlobalMenu from "../widgets/buttons/global_menu.jsx";
|
||||||
|
import HighlightsListWidget from "../widgets/highlights_list.js";
|
||||||
|
import LauncherContainer from "../widgets/containers/launcher_container.js";
|
||||||
|
import LeftPaneContainer from "../widgets/containers/left_pane_container.js";
|
||||||
|
import LeftPaneToggle from "../widgets/buttons/left_pane_toggle.js";
|
||||||
|
import MovePaneButton from "../widgets/buttons/move_pane_button.js";
|
||||||
|
import NoteDetailWidget from "../widgets/note_detail.js";
|
||||||
|
import NoteIconWidget from "../widgets/note_icon.jsx";
|
||||||
|
import NoteList from "../widgets/collections/NoteList.jsx";
|
||||||
|
import NoteTitleWidget from "../widgets/note_title.jsx";
|
||||||
|
import NoteTreeWidget from "../widgets/note_tree.js";
|
||||||
|
import NoteWrapperWidget from "../widgets/note_wrapper.js";
|
||||||
|
import options from "../services/options.js";
|
||||||
|
import PasswordNoteSetDialog from "../widgets/dialogs/password_not_set.js";
|
||||||
|
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
||||||
|
import QuickSearchWidget from "../widgets/quick_search.js";
|
||||||
|
import ReadOnlyNoteInfoBar from "../widgets/ReadOnlyNoteInfoBar.jsx";
|
||||||
|
import Ribbon from "../widgets/ribbon/Ribbon.jsx";
|
||||||
|
import RightPaneContainer from "../widgets/containers/right_pane_container.js";
|
||||||
|
import RootContainer from "../widgets/containers/root_container.js";
|
||||||
|
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
|
||||||
|
import ScrollPadding from "../widgets/scroll_padding.js";
|
||||||
|
import SearchResult from "../widgets/search_result.jsx";
|
||||||
|
import SharedInfo from "../widgets/shared_info.jsx";
|
||||||
|
import SpacerWidget from "../widgets/spacer.js";
|
||||||
|
import SplitNoteContainer from "../widgets/containers/split_note_container.js";
|
||||||
import SqlResults from "../widgets/sql_result.js";
|
import SqlResults from "../widgets/sql_result.js";
|
||||||
import SqlTableSchemas from "../widgets/sql_table_schemas.js";
|
import SqlTableSchemas from "../widgets/sql_table_schemas.js";
|
||||||
|
import TabRowWidget from "../widgets/tab_row.js";
|
||||||
import TitleBarButtons from "../widgets/title_bar_buttons.jsx";
|
import TitleBarButtons from "../widgets/title_bar_buttons.jsx";
|
||||||
import LeftPaneToggle from "../widgets/buttons/left_pane_toggle.js";
|
import TocWidget from "../widgets/toc.js";
|
||||||
import ApiLog from "../widgets/api_log.jsx";
|
import type { AppContext } from "../components/app_context.js";
|
||||||
import CloseZenModeButton from "../widgets/close_zen_button.jsx";
|
import type { WidgetsByParent } from "../services/bundle.js";
|
||||||
import SharedInfo from "../widgets/shared_info.jsx";
|
import UploadAttachmentsDialog from "../widgets/dialogs/upload_attachments.js";
|
||||||
import NoteList from "../widgets/collections/NoteList.jsx";
|
import utils from "../services/utils.js";
|
||||||
|
import WatchedFileUpdateStatusWidget from "../widgets/watched_file_update_status.js";
|
||||||
|
|
||||||
export default class DesktopLayout {
|
export default class DesktopLayout {
|
||||||
|
|
||||||
@@ -129,16 +131,19 @@ export default class DesktopLayout {
|
|||||||
.child(<CreatePaneButton />)
|
.child(<CreatePaneButton />)
|
||||||
)
|
)
|
||||||
.child(<Ribbon />)
|
.child(<Ribbon />)
|
||||||
.child(<SharedInfo />)
|
|
||||||
.child(new WatchedFileUpdateStatusWidget())
|
.child(new WatchedFileUpdateStatusWidget())
|
||||||
.child(<FloatingButtons items={DESKTOP_FLOATING_BUTTONS} />)
|
.child(<FloatingButtons items={DESKTOP_FLOATING_BUTTONS} />)
|
||||||
.child(
|
.child(
|
||||||
new ScrollingContainer()
|
new ScrollingContainer()
|
||||||
.filling()
|
.filling()
|
||||||
|
.child(new ContentHeader()
|
||||||
|
.child(<ReadOnlyNoteInfoBar />)
|
||||||
|
.child(<SharedInfo />)
|
||||||
|
)
|
||||||
.child(new PromotedAttributesWidget())
|
.child(new PromotedAttributesWidget())
|
||||||
.child(<SqlTableSchemas />)
|
.child(<SqlTableSchemas />)
|
||||||
.child(new NoteDetailWidget())
|
.child(new NoteDetailWidget())
|
||||||
.child(<NoteList />)
|
.child(<NoteList media="screen" />)
|
||||||
.child(<SearchResult />)
|
.child(<SearchResult />)
|
||||||
.child(<SqlResults />)
|
.child(<SqlResults />)
|
||||||
.child(<ScrollPadding />)
|
.child(<ScrollPadding />)
|
||||||
|
|||||||
@@ -29,8 +29,9 @@ import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
|||||||
import NoteDetailWidget from "../widgets/note_detail.js";
|
import NoteDetailWidget from "../widgets/note_detail.js";
|
||||||
import CallToActionDialog from "../widgets/dialogs/call_to_action.jsx";
|
import CallToActionDialog from "../widgets/dialogs/call_to_action.jsx";
|
||||||
import NoteTitleWidget from "../widgets/note_title.jsx";
|
import NoteTitleWidget from "../widgets/note_title.jsx";
|
||||||
import { PopupEditorFormattingToolbar } from "../widgets/ribbon/FormattingToolbar.js";
|
import FormattingToolbar from "../widgets/ribbon/FormattingToolbar.js";
|
||||||
import NoteList from "../widgets/collections/NoteList.jsx";
|
import NoteList from "../widgets/collections/NoteList.jsx";
|
||||||
|
import StandaloneRibbonAdapter from "../widgets/ribbon/components/StandaloneRibbonAdapter.jsx";
|
||||||
|
|
||||||
export function applyModals(rootContainer: RootContainer) {
|
export function applyModals(rootContainer: RootContainer) {
|
||||||
rootContainer
|
rootContainer
|
||||||
@@ -63,9 +64,9 @@ export function applyModals(rootContainer: RootContainer) {
|
|||||||
.cssBlock(".title-row > * { margin: 5px; }")
|
.cssBlock(".title-row > * { margin: 5px; }")
|
||||||
.child(<NoteIconWidget />)
|
.child(<NoteIconWidget />)
|
||||||
.child(<NoteTitleWidget />))
|
.child(<NoteTitleWidget />))
|
||||||
.child(<PopupEditorFormattingToolbar />)
|
.child(<StandaloneRibbonAdapter component={FormattingToolbar} />)
|
||||||
.child(new PromotedAttributesWidget())
|
.child(new PromotedAttributesWidget())
|
||||||
.child(new NoteDetailWidget())
|
.child(new NoteDetailWidget())
|
||||||
.child(<NoteList displayOnlyCollections />))
|
.child(<NoteList media="screen" displayOnlyCollections />))
|
||||||
.child(<CallToActionDialog />);
|
.child(<CallToActionDialog />);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,34 @@
|
|||||||
|
import { applyModals } from "./layout_commons.js";
|
||||||
|
import { MOBILE_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx";
|
||||||
|
import { useNoteContext } from "../widgets/react/hooks.jsx";
|
||||||
|
import CloseZenModeButton from "../widgets/close_zen_button.js";
|
||||||
|
import FilePropertiesTab from "../widgets/ribbon/FilePropertiesTab.jsx";
|
||||||
import FlexContainer from "../widgets/containers/flex_container.js";
|
import FlexContainer from "../widgets/containers/flex_container.js";
|
||||||
import NoteTitleWidget from "../widgets/note_title.js";
|
import FloatingButtons from "../widgets/FloatingButtons.jsx";
|
||||||
import NoteDetailWidget from "../widgets/note_detail.js";
|
|
||||||
import QuickSearchWidget from "../widgets/quick_search.js";
|
|
||||||
import NoteTreeWidget from "../widgets/note_tree.js";
|
|
||||||
import ScreenContainer from "../widgets/mobile_widgets/screen_container.js";
|
|
||||||
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
|
|
||||||
import GlobalMenuWidget from "../widgets/buttons/global_menu.js";
|
import GlobalMenuWidget from "../widgets/buttons/global_menu.js";
|
||||||
import LauncherContainer from "../widgets/containers/launcher_container.js";
|
import LauncherContainer from "../widgets/containers/launcher_container.js";
|
||||||
import RootContainer from "../widgets/containers/root_container.js";
|
|
||||||
import SharedInfoWidget from "../widgets/shared_info.js";
|
|
||||||
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
|
||||||
import SidebarContainer from "../widgets/mobile_widgets/sidebar_container.js";
|
|
||||||
import type AppContext from "../components/app_context.js";
|
|
||||||
import TabRowWidget from "../widgets/tab_row.js";
|
|
||||||
import MobileEditorToolbar from "../widgets/type_widgets/ckeditor/mobile_editor_toolbar.js";
|
|
||||||
import { applyModals } from "./layout_commons.js";
|
|
||||||
import FilePropertiesTab from "../widgets/ribbon/FilePropertiesTab.jsx";
|
|
||||||
import { useNoteContext } from "../widgets/react/hooks.jsx";
|
|
||||||
import FloatingButtons from "../widgets/FloatingButtons.jsx";
|
|
||||||
import { MOBILE_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx";
|
|
||||||
import ToggleSidebarButton from "../widgets/mobile_widgets/toggle_sidebar_button.jsx";
|
|
||||||
import CloseZenModeButton from "../widgets/close_zen_button.js";
|
|
||||||
import NoteWrapperWidget from "../widgets/note_wrapper.js";
|
|
||||||
import MobileDetailMenu from "../widgets/mobile_widgets/mobile_detail_menu.js";
|
import MobileDetailMenu from "../widgets/mobile_widgets/mobile_detail_menu.js";
|
||||||
|
import MobileEditorToolbar from "../widgets/type_widgets/ckeditor/mobile_editor_toolbar.js";
|
||||||
|
import NoteDetailWidget from "../widgets/note_detail.js";
|
||||||
import NoteList from "../widgets/collections/NoteList.jsx";
|
import NoteList from "../widgets/collections/NoteList.jsx";
|
||||||
|
import NoteTitleWidget from "../widgets/note_title.js";
|
||||||
|
import ContentHeader from "../widgets/containers/content-header.js";
|
||||||
|
import NoteTreeWidget from "../widgets/note_tree.js";
|
||||||
|
import NoteWrapperWidget from "../widgets/note_wrapper.js";
|
||||||
|
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
|
||||||
|
import QuickSearchWidget from "../widgets/quick_search.js";
|
||||||
|
import ReadOnlyNoteInfoBar from "../widgets/ReadOnlyNoteInfoBar.jsx";
|
||||||
|
import RootContainer from "../widgets/containers/root_container.js";
|
||||||
|
import ScreenContainer from "../widgets/mobile_widgets/screen_container.js";
|
||||||
|
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
|
||||||
|
import SearchDefinitionTab from "../widgets/ribbon/SearchDefinitionTab.jsx";
|
||||||
|
import SearchResult from "../widgets/search_result.jsx";
|
||||||
|
import SharedInfoWidget from "../widgets/shared_info.js";
|
||||||
|
import SidebarContainer from "../widgets/mobile_widgets/sidebar_container.js";
|
||||||
|
import StandaloneRibbonAdapter from "../widgets/ribbon/components/StandaloneRibbonAdapter.jsx";
|
||||||
|
import TabRowWidget from "../widgets/tab_row.js";
|
||||||
|
import ToggleSidebarButton from "../widgets/mobile_widgets/toggle_sidebar_button.jsx";
|
||||||
|
import type AppContext from "../components/app_context.js";
|
||||||
|
|
||||||
const MOBILE_CSS = `
|
const MOBILE_CSS = `
|
||||||
<style>
|
<style>
|
||||||
@@ -40,8 +45,8 @@ kbd {
|
|||||||
border: none;
|
border: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.25em;
|
font-size: 1.25em;
|
||||||
padding-left: 0.5em;
|
padding-inline-start: 0.5em;
|
||||||
padding-right: 0.5em;
|
padding-inline-end: 0.5em;
|
||||||
color: var(--main-text-color);
|
color: var(--main-text-color);
|
||||||
}
|
}
|
||||||
.quick-search {
|
.quick-search {
|
||||||
@@ -59,7 +64,7 @@ const FANCYTREE_CSS = `
|
|||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
contain: content;
|
contain: content;
|
||||||
padding-left: 10px;
|
padding-inline-start: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fancytree-custom-icon {
|
.fancytree-custom-icon {
|
||||||
@@ -68,7 +73,7 @@ const FANCYTREE_CSS = `
|
|||||||
|
|
||||||
.fancytree-title {
|
.fancytree-title {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
margin-left: 0.6em !important;
|
margin-inline-start: 0.6em !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fancytree-node {
|
.fancytree-node {
|
||||||
@@ -81,7 +86,7 @@ const FANCYTREE_CSS = `
|
|||||||
|
|
||||||
span.fancytree-expander {
|
span.fancytree-expander {
|
||||||
width: 24px !important;
|
width: 24px !important;
|
||||||
margin-right: 5px;
|
margin-inline-end: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fancytree-loading span.fancytree-expander {
|
.fancytree-loading span.fancytree-expander {
|
||||||
@@ -101,7 +106,7 @@ span.fancytree-expander {
|
|||||||
.tree-wrapper .scroll-to-active-note-button,
|
.tree-wrapper .scroll-to-active-note-button,
|
||||||
.tree-wrapper .tree-settings-button {
|
.tree-wrapper .tree-settings-button {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
margin-right: 16px;
|
margin-inline-end: 16px;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,8 +131,8 @@ export default class MobileLayout {
|
|||||||
.class("d-md-flex d-lg-flex d-xl-flex col-12 col-sm-5 col-md-4 col-lg-3 col-xl-3")
|
.class("d-md-flex d-lg-flex d-xl-flex col-12 col-sm-5 col-md-4 col-lg-3 col-xl-3")
|
||||||
.id("mobile-sidebar-wrapper")
|
.id("mobile-sidebar-wrapper")
|
||||||
.css("max-height", "100%")
|
.css("max-height", "100%")
|
||||||
.css("padding-left", "0")
|
.css("padding-inline-start", "0")
|
||||||
.css("padding-right", "0")
|
.css("padding-inline-end", "0")
|
||||||
.css("contain", "content")
|
.css("contain", "content")
|
||||||
.child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget().cssBlock(FANCYTREE_CSS)))
|
.child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget().cssBlock(FANCYTREE_CSS)))
|
||||||
)
|
)
|
||||||
@@ -146,15 +151,20 @@ export default class MobileLayout {
|
|||||||
.child(<NoteTitleWidget />)
|
.child(<NoteTitleWidget />)
|
||||||
.child(<MobileDetailMenu />)
|
.child(<MobileDetailMenu />)
|
||||||
)
|
)
|
||||||
.child(<SharedInfoWidget />)
|
|
||||||
.child(<FloatingButtons items={MOBILE_FLOATING_BUTTONS} />)
|
.child(<FloatingButtons items={MOBILE_FLOATING_BUTTONS} />)
|
||||||
.child(new PromotedAttributesWidget())
|
.child(new PromotedAttributesWidget())
|
||||||
.child(
|
.child(
|
||||||
new ScrollingContainer()
|
new ScrollingContainer()
|
||||||
.filling()
|
.filling()
|
||||||
.contentSized()
|
.contentSized()
|
||||||
|
.child(new ContentHeader()
|
||||||
|
.child(<ReadOnlyNoteInfoBar />)
|
||||||
|
.child(<SharedInfoWidget />)
|
||||||
|
)
|
||||||
.child(new NoteDetailWidget())
|
.child(new NoteDetailWidget())
|
||||||
.child(<NoteList />)
|
.child(<NoteList media="screen" />)
|
||||||
|
.child(<StandaloneRibbonAdapter component={SearchDefinitionTab} />)
|
||||||
|
.child(<SearchResult />)
|
||||||
.child(<FilePropertiesWrapper />)
|
.child(<FilePropertiesWrapper />)
|
||||||
)
|
)
|
||||||
.child(<MobileEditorToolbar />)
|
.child(<MobileEditorToolbar />)
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import "bootstrap/dist/css/bootstrap.min.css";
|
|
||||||
|
|
||||||
// @ts-ignore - module = undefined
|
// @ts-ignore - module = undefined
|
||||||
// Required for correct loading of scripts in Electron
|
// Required for correct loading of scripts in Electron
|
||||||
if (typeof module === 'object') {window.module = module; module = undefined;}
|
if (typeof module === 'object') {window.module = module; module = undefined;}
|
||||||
|
|||||||
@@ -150,8 +150,8 @@ class ContextMenu {
|
|||||||
this.$widget
|
this.$widget
|
||||||
.css({
|
.css({
|
||||||
display: "block",
|
display: "block",
|
||||||
top: top,
|
top,
|
||||||
left: left
|
left
|
||||||
})
|
})
|
||||||
.addClass("show");
|
.addClass("show");
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,7 @@ class ContextMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create a new group to avoid column breaks before and after the seaparator / header.
|
// Create a new group to avoid column breaks before and after the seaparator / header.
|
||||||
// This is a workaround for Firefox not supporting break-before / break-after: avoid
|
// This is a workaround for Firefox not supporting break-before / break-after: avoid
|
||||||
// for columns.
|
// for columns.
|
||||||
if (shouldStartNewGroup) {
|
if (shouldStartNewGroup) {
|
||||||
$group = $("<div class='dropdown-no-break'>");
|
$group = $("<div class='dropdown-no-break'>");
|
||||||
@@ -313,7 +313,7 @@ class ContextMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$group.append($item);
|
$group.append($item);
|
||||||
|
|
||||||
// After adding a menu item, if the previous item was a separator or header,
|
// After adding a menu item, if the previous item was a separator or header,
|
||||||
// reset the group so that the next item will be appended directly to the parent.
|
// reset the group so that the next item will be appended directly to the parent.
|
||||||
if (shouldResetGroup) {
|
if (shouldResetGroup) {
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
|
|||||||
command: "editBranchPrefix",
|
command: "editBranchPrefix",
|
||||||
keyboardShortcut: "editBranchPrefix",
|
keyboardShortcut: "editBranchPrefix",
|
||||||
uiIcon: "bx bx-rename",
|
uiIcon: "bx bx-rename",
|
||||||
enabled: isNotRoot && parentNotSearch && noSelectedNotes && notOptionsOrHelp
|
enabled: isNotRoot && parentNotSearch && notOptionsOrHelp
|
||||||
},
|
},
|
||||||
{ title: t("tree-context-menu.convert-to-attachment"), command: "convertNoteToAttachment", uiIcon: "bx bx-paperclip", enabled: isNotRoot && !isHoisted && notOptionsOrHelp },
|
{ title: t("tree-context-menu.convert-to-attachment"), command: "convertNoteToAttachment", uiIcon: "bx bx-paperclip", enabled: isNotRoot && !isHoisted && notOptionsOrHelp },
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import appContext from "./components/app_context.js";
|
import appContext from "./components/app_context.js";
|
||||||
import noteAutocompleteService from "./services/note_autocomplete.js";
|
import noteAutocompleteService from "./services/note_autocomplete.js";
|
||||||
import glob from "./services/glob.js";
|
import glob from "./services/glob.js";
|
||||||
import "bootstrap/dist/css/bootstrap.min.css";
|
|
||||||
import "boxicons/css/boxicons.min.css";
|
import "boxicons/css/boxicons.min.css";
|
||||||
import "autocomplete.js/index_jquery.js";
|
import "autocomplete.js/index_jquery.js";
|
||||||
|
|
||||||
|
|||||||
157
apps/client/src/print.css
Normal file
157
apps/client/src/print.css
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
@import "boxicons/css/boxicons.min.css";
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--print-font-size: 11pt;
|
||||||
|
--ck-content-color-image-caption-background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
@page {
|
||||||
|
margin: 2cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note-list-widget.full-height,
|
||||||
|
.note-list-widget.full-height .note-list-widget-content {
|
||||||
|
height: unset !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component {
|
||||||
|
contain: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body[data-note-type="text"] .ck-content {
|
||||||
|
font-size: var(--print-font-size);
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content figcaption {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content a:not([href^="#root/"]) {
|
||||||
|
text-decoration: underline;
|
||||||
|
color: #374a75;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content .todo-list__label * {
|
||||||
|
-webkit-print-color-adjust: exact;
|
||||||
|
print-color-adjust: exact;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports selector(.todo-list__label__description:has(*)) and (height: 1lh) {
|
||||||
|
.ck-content .todo-list__label__description {
|
||||||
|
/* The percentage of the line height that the check box occupies */
|
||||||
|
--box-ratio: 0.75;
|
||||||
|
/* The size of the gap between the check box and the caption */
|
||||||
|
--box-text-gap: 0.25em;
|
||||||
|
|
||||||
|
--box-size: calc(1lh * var(--box-ratio));
|
||||||
|
--box-vert-offset: calc((1lh - var(--box-size)) / 2);
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
|
padding-inline-start: calc(var(--box-size) + var(--box-text-gap));
|
||||||
|
/* Source: https://pictogrammers.com/library/mdi/icon/checkbox-blank-outline/ */
|
||||||
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3e%3cpath d='M19%2c3H5C3.89%2c3 3%2c3.89 3%2c5V19A2%2c2 0 0%2c0 5%2c21H19A2%2c2 0 0%2c0 21%2c19V5C21%2c3.89 20.1%2c3 19%2c3M19%2c5V19H5V5H19Z' /%3e%3c/svg%3e");
|
||||||
|
background-position: 0 var(--box-vert-offset);
|
||||||
|
background-size: var(--box-size);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content .todo-list__label:has(input[type="checkbox"]:checked) .todo-list__label__description {
|
||||||
|
/* Source: https://pictogrammers.com/library/mdi/icon/checkbox-outline/ */
|
||||||
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3e%3cpath d='M19%2c3H5A2%2c2 0 0%2c0 3%2c5V19A2%2c2 0 0%2c0 5%2c21H19A2%2c2 0 0%2c0 21%2c19V5A2%2c2 0 0%2c0 19%2c3M19%2c5V19H5V5H19M10%2c17L6%2c13L7.41%2c11.58L10%2c14.17L16.59%2c7.58L18%2c9' /%3e%3c/svg%3e");
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content .todo-list__label input[type="checkbox"] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* #region Footnotes */
|
||||||
|
.footnote-reference a,
|
||||||
|
.footnote-back-link a {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.footnote-item {
|
||||||
|
position: relative;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content .footnote-back-link {
|
||||||
|
margin-right: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content .footnote-content {
|
||||||
|
display: inline-block;
|
||||||
|
width: unset;
|
||||||
|
}
|
||||||
|
/* #endregion */
|
||||||
|
|
||||||
|
/* #region Widows and orphans */
|
||||||
|
p,
|
||||||
|
blockquote {
|
||||||
|
widows: 4;
|
||||||
|
orphans: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre > code {
|
||||||
|
widows: 6;
|
||||||
|
orphans: 6;
|
||||||
|
overflow: auto;
|
||||||
|
white-space: pre-wrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
page-break-after: avoid;
|
||||||
|
break-after: avoid;
|
||||||
|
}
|
||||||
|
/* #endregion */
|
||||||
|
|
||||||
|
/* #region Tables */
|
||||||
|
.table thead th,
|
||||||
|
.table td,
|
||||||
|
.table th {
|
||||||
|
/* Fix center vertical alignment of table cells */
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
box-shadow: unset !important;
|
||||||
|
border: 0.75pt solid gray !important;
|
||||||
|
border-radius: 2pt !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
span[style] {
|
||||||
|
print-color-adjust: exact;
|
||||||
|
-webkit-print-color-adjust: exact;
|
||||||
|
}
|
||||||
|
/* #endregion */
|
||||||
|
|
||||||
|
/* #region Page breaks */
|
||||||
|
.page-break {
|
||||||
|
page-break-after: always;
|
||||||
|
break-after: always;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-break > *,
|
||||||
|
.page-break::after {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
/* #endregion */
|
||||||
132
apps/client/src/print.tsx
Normal file
132
apps/client/src/print.tsx
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
import FNote from "./entities/fnote";
|
||||||
|
import { render } from "preact";
|
||||||
|
import { CustomNoteList } from "./widgets/collections/NoteList";
|
||||||
|
import { useCallback, useLayoutEffect, useRef } from "preact/hooks";
|
||||||
|
import content_renderer from "./services/content_renderer";
|
||||||
|
|
||||||
|
interface RendererProps {
|
||||||
|
note: FNote;
|
||||||
|
onReady: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const notePath = window.location.hash.substring(1);
|
||||||
|
const noteId = notePath.split("/").at(-1);
|
||||||
|
if (!noteId) return;
|
||||||
|
|
||||||
|
await import("./print.css");
|
||||||
|
const froca = (await import("./services/froca")).default;
|
||||||
|
const note = await froca.getNote(noteId);
|
||||||
|
|
||||||
|
render(<App note={note} noteId={noteId} />, document.body);
|
||||||
|
}
|
||||||
|
|
||||||
|
function App({ note, noteId }: { note: FNote | null | undefined, noteId: string }) {
|
||||||
|
const sentReadyEvent = useRef(false);
|
||||||
|
const onReady = useCallback(() => {
|
||||||
|
if (sentReadyEvent.current) return;
|
||||||
|
window.dispatchEvent(new Event("note-ready"));
|
||||||
|
window._noteReady = true;
|
||||||
|
sentReadyEvent.current = true;
|
||||||
|
}, []);
|
||||||
|
const props: RendererProps | undefined | null = note && { note, onReady };
|
||||||
|
|
||||||
|
if (!note || !props) return <Error404 noteId={noteId} />
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
document.body.dataset.noteType = note.type;
|
||||||
|
}, [ note ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{note.type === "book"
|
||||||
|
? <CollectionRenderer {...props} />
|
||||||
|
: <SingleNoteRenderer {...props} />
|
||||||
|
}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function SingleNoteRenderer({ note, onReady }: RendererProps) {
|
||||||
|
const containerRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
async function load() {
|
||||||
|
if (note.type === "text") {
|
||||||
|
await import("@triliumnext/ckeditor5/src/theme/ck-content.css");
|
||||||
|
}
|
||||||
|
const { $renderedContent } = await content_renderer.getRenderedContent(note, { noChildrenList: true });
|
||||||
|
const container = containerRef.current!;
|
||||||
|
container.replaceChildren(...$renderedContent);
|
||||||
|
|
||||||
|
// Wait for all images to load.
|
||||||
|
const images = Array.from(container.querySelectorAll("img"));
|
||||||
|
await Promise.all(
|
||||||
|
images.map(img => {
|
||||||
|
if (img.complete) return Promise.resolve();
|
||||||
|
return new Promise<void>(resolve => {
|
||||||
|
img.addEventListener("load", () => resolve(), { once: true });
|
||||||
|
img.addEventListener("error", () => resolve(), { once: true });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check custom CSS.
|
||||||
|
await loadCustomCss(note);
|
||||||
|
}
|
||||||
|
|
||||||
|
load().then(() => requestAnimationFrame(onReady))
|
||||||
|
}, [ note ]);
|
||||||
|
|
||||||
|
return <>
|
||||||
|
<h1>{note.title}</h1>
|
||||||
|
<main ref={containerRef} />
|
||||||
|
</>;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CollectionRenderer({ note, onReady }: RendererProps) {
|
||||||
|
return <CustomNoteList
|
||||||
|
isEnabled
|
||||||
|
note={note}
|
||||||
|
notePath={note.getBestNotePath().join("/")}
|
||||||
|
ntxId="print"
|
||||||
|
highlightedTokens={null}
|
||||||
|
media="print"
|
||||||
|
onReady={async () => {
|
||||||
|
await loadCustomCss(note);
|
||||||
|
onReady();
|
||||||
|
}}
|
||||||
|
/>;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Error404({ noteId }: { noteId: string }) {
|
||||||
|
return (
|
||||||
|
<main>
|
||||||
|
<p>The note you are trying to print could not be found.</p>
|
||||||
|
<small>{noteId}</small>
|
||||||
|
</main>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function loadCustomCss(note: FNote) {
|
||||||
|
const printCssNotes = await note.getRelationTargets("printCss");
|
||||||
|
let loadPromises: JQueryPromise<void>[] = [];
|
||||||
|
|
||||||
|
for (const printCssNote of printCssNotes) {
|
||||||
|
if (!printCssNote || (printCssNote.type !== "code" && printCssNote.mime !== "text/css")) continue;
|
||||||
|
|
||||||
|
const linkEl = document.createElement("link");
|
||||||
|
linkEl.href = `/api/notes/${printCssNote.noteId}/download`;
|
||||||
|
linkEl.rel = "stylesheet";
|
||||||
|
|
||||||
|
const promise = $.Deferred();
|
||||||
|
loadPromises.push(promise.promise());
|
||||||
|
linkEl.onload = () => promise.resolve();
|
||||||
|
|
||||||
|
document.head.appendChild(linkEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.allSettled(loadPromises);
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
@@ -1,5 +1,15 @@
|
|||||||
import $ from "jquery";
|
import $ from "jquery";
|
||||||
|
|
||||||
|
async function loadBootstrap() {
|
||||||
|
if (document.body.dir === "rtl") {
|
||||||
|
await import("bootstrap/dist/css/bootstrap.rtl.min.css");
|
||||||
|
} else {
|
||||||
|
await import("bootstrap/dist/css/bootstrap.min.css");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
(window as any).$ = $;
|
(window as any).$ = $;
|
||||||
(window as any).jQuery = $;
|
(window as any).jQuery = $;
|
||||||
|
await loadBootstrap();
|
||||||
|
|
||||||
$("body").show();
|
$("body").show();
|
||||||
|
|||||||
@@ -23,11 +23,13 @@ interface Options {
|
|||||||
tooltip?: boolean;
|
tooltip?: boolean;
|
||||||
trim?: boolean;
|
trim?: boolean;
|
||||||
imageHasZoom?: boolean;
|
imageHasZoom?: boolean;
|
||||||
|
/** If enabled, it will prevent the default behavior in which an empty note would display a list of children. */
|
||||||
|
noChildrenList?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CODE_MIME_TYPES = new Set(["application/json"]);
|
const CODE_MIME_TYPES = new Set(["application/json"]);
|
||||||
|
|
||||||
async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FAttachment, options: Options = {}) {
|
export async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FAttachment, options: Options = {}) {
|
||||||
|
|
||||||
options = Object.assign(
|
options = Object.assign(
|
||||||
{
|
{
|
||||||
@@ -42,7 +44,7 @@ async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FA
|
|||||||
const $renderedContent = $('<div class="rendered-content">');
|
const $renderedContent = $('<div class="rendered-content">');
|
||||||
|
|
||||||
if (type === "text" || type === "book") {
|
if (type === "text" || type === "book") {
|
||||||
await renderText(entity, $renderedContent);
|
await renderText(entity, $renderedContent, options);
|
||||||
} else if (type === "code") {
|
} else if (type === "code") {
|
||||||
await renderCode(entity, $renderedContent);
|
await renderCode(entity, $renderedContent);
|
||||||
} else if (["image", "canvas", "mindMap"].includes(type)) {
|
} else if (["image", "canvas", "mindMap"].includes(type)) {
|
||||||
@@ -114,7 +116,7 @@ async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FA
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderText(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>) {
|
async function renderText(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>, options: Options = {}) {
|
||||||
// entity must be FNote
|
// entity must be FNote
|
||||||
const blob = await note.getBlob();
|
const blob = await note.getBlob();
|
||||||
|
|
||||||
@@ -135,7 +137,7 @@ async function renderText(note: FNote | FAttachment, $renderedContent: JQuery<HT
|
|||||||
}
|
}
|
||||||
|
|
||||||
await formatCodeBlocks($renderedContent);
|
await formatCodeBlocks($renderedContent);
|
||||||
} else if (note instanceof FNote) {
|
} else if (note instanceof FNote && !options.noChildrenList) {
|
||||||
await renderChildrenList($renderedContent, note);
|
await renderChildrenList($renderedContent, note);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,39 @@
|
|||||||
|
import {readCssVar} from "../utils/css-var";
|
||||||
|
import Color, { ColorInstance } from "color";
|
||||||
|
|
||||||
const registeredClasses = new Set<string>();
|
const registeredClasses = new Set<string>();
|
||||||
|
|
||||||
function createClassForColor(color: string | null) {
|
// Read the color lightness limits defined in the theme as CSS variables
|
||||||
if (!color?.trim()) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
const normalizedColorName = color.replace(/[^a-z0-9]/gi, "");
|
const lightThemeColorMaxLightness = readCssVar(
|
||||||
|
document.documentElement,
|
||||||
|
"tree-item-light-theme-max-color-lightness"
|
||||||
|
).asNumber(70);
|
||||||
|
|
||||||
if (!normalizedColorName.trim()) {
|
const darkThemeColorMinLightness = readCssVar(
|
||||||
return "";
|
document.documentElement,
|
||||||
}
|
"tree-item-dark-theme-min-color-lightness"
|
||||||
|
).asNumber(50);
|
||||||
|
|
||||||
const className = `color-${normalizedColorName}`;
|
function createClassForColor(colorString: string | null) {
|
||||||
|
if (!colorString?.trim()) return "";
|
||||||
|
|
||||||
|
const color = parseColor(colorString);
|
||||||
|
if (!color) return "";
|
||||||
|
|
||||||
|
const className = `color-${color.hex().substring(1)}`;
|
||||||
|
|
||||||
if (!registeredClasses.has(className)) {
|
if (!registeredClasses.has(className)) {
|
||||||
// make the active fancytree selector more specific than the normal color setting
|
const adjustedColor = adjustColorLightness(color, lightThemeColorMaxLightness!,
|
||||||
$("head").append(`<style>.${className}, span.fancytree-active.${className} { color: ${color} !important; }</style>`);
|
darkThemeColorMinLightness!);
|
||||||
|
|
||||||
|
$("head").append(`<style>
|
||||||
|
.${className}, span.fancytree-active.${className} {
|
||||||
|
--light-theme-custom-color: ${adjustedColor.lightThemeColor};
|
||||||
|
--dark-theme-custom-color: ${adjustedColor.darkThemeColor};
|
||||||
|
--custom-color-hue: ${getHue(color) ?? 'unset'};
|
||||||
|
}
|
||||||
|
</style>`);
|
||||||
|
|
||||||
registeredClasses.add(className);
|
registeredClasses.add(className);
|
||||||
}
|
}
|
||||||
@@ -23,6 +41,41 @@ function createClassForColor(color: string | null) {
|
|||||||
return className;
|
return className;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseColor(color: string) {
|
||||||
|
try {
|
||||||
|
return Color(color);
|
||||||
|
} catch (ex) {
|
||||||
|
console.error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a pair of colors — one optimized for light themes and the other for dark themes, derived
|
||||||
|
* from the specified color to maintain sufficient contrast with each theme.
|
||||||
|
* The adjustment is performed by limiting the color’s lightness in the CIELAB color space,
|
||||||
|
* according to the lightThemeMaxLightness and darkThemeMinLightness parameters.
|
||||||
|
*/
|
||||||
|
function adjustColorLightness(color: ColorInstance, lightThemeMaxLightness: number, darkThemeMinLightness: number) {
|
||||||
|
const labColor = color.lab();
|
||||||
|
const lightness = labColor.l();
|
||||||
|
|
||||||
|
// For the light theme, limit the maximum lightness
|
||||||
|
const lightThemeColor = labColor.l(Math.min(lightness, lightThemeMaxLightness)).hex();
|
||||||
|
|
||||||
|
// For the dark theme, limit the minimum lightness
|
||||||
|
const darkThemeColor = labColor.l(Math.max(lightness, darkThemeMinLightness)).hex();
|
||||||
|
|
||||||
|
return {lightThemeColor, darkThemeColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the hue of the specified color, or undefined if the color is grayscale. */
|
||||||
|
function getHue(color: ColorInstance) {
|
||||||
|
const hslColor = color.hsl();
|
||||||
|
if (hslColor.saturationl() > 0) {
|
||||||
|
return hslColor.hue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
createClassForColor
|
createClassForColor
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -40,20 +40,23 @@ class FrocaImpl implements Froca {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.initializedPromise = this.loadInitialTree();
|
this.initializedPromise = this.loadInitialTree();
|
||||||
|
this.#clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadInitialTree() {
|
async loadInitialTree() {
|
||||||
const resp = await server.get<SubtreeResponse>("tree");
|
const resp = await server.get<SubtreeResponse>("tree");
|
||||||
|
|
||||||
// clear the cache only directly before adding new content which is important for e.g., switching to protected session
|
// clear the cache only directly before adding new content which is important for e.g., switching to protected session
|
||||||
|
this.#clear();
|
||||||
|
this.addResp(resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#clear() {
|
||||||
this.notes = {};
|
this.notes = {};
|
||||||
this.branches = {};
|
this.branches = {};
|
||||||
this.attributes = {};
|
this.attributes = {};
|
||||||
this.attachments = {};
|
this.attachments = {};
|
||||||
this.blobPromises = {};
|
this.blobPromises = {};
|
||||||
|
|
||||||
this.addResp(resp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadSubTree(subTreeNoteId: string) {
|
async loadSubTree(subTreeNoteId: string) {
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
/**
|
|
||||||
* The front script API is accessible to code notes with the "JS (frontend)" language.
|
|
||||||
*
|
|
||||||
* The entire API is exposed as a single global: {@link api}
|
|
||||||
*
|
|
||||||
* @module Frontend Script API
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This file creates the entrypoint for TypeDoc that simulates the context from within a
|
|
||||||
* script note.
|
|
||||||
*
|
|
||||||
* Make sure to keep in line with frontend's `script_context.ts`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export type { default as BasicWidget } from "../widgets/basic_widget.js";
|
|
||||||
export type { default as FAttachment } from "../entities/fattachment.js";
|
|
||||||
export type { default as FAttribute } from "../entities/fattribute.js";
|
|
||||||
export type { default as FBranch } from "../entities/fbranch.js";
|
|
||||||
export type { default as FNote } from "../entities/fnote.js";
|
|
||||||
export type { Api } from "./frontend_script_api.js";
|
|
||||||
export type { default as NoteContextAwareWidget } from "../widgets/note_context_aware_widget.js";
|
|
||||||
export type { default as RightPanelWidget } from "../widgets/right_panel_widget.js";
|
|
||||||
|
|
||||||
import FrontendScriptApi, { type Api } from "./frontend_script_api.js";
|
|
||||||
|
|
||||||
//@ts-expect-error
|
|
||||||
export const api: Api = new FrontendScriptApi();
|
|
||||||
@@ -20,9 +20,6 @@ function setupGlobs() {
|
|||||||
window.glob.froca = froca;
|
window.glob.froca = froca;
|
||||||
window.glob.treeCache = froca; // compatibility for CKEditor builds for a while
|
window.glob.treeCache = froca; // compatibility for CKEditor builds for a while
|
||||||
|
|
||||||
// for CKEditor integration (button on block toolbar)
|
|
||||||
window.glob.importMarkdownInline = async () => appContext.triggerCommand("importMarkdownInline");
|
|
||||||
|
|
||||||
window.onerror = function (msg, url, lineNo, columnNo, error) {
|
window.onerror = function (msg, url, lineNo, columnNo, error) {
|
||||||
const string = String(msg).toLowerCase();
|
const string = String(msg).toLowerCase();
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { describe, expect, it } from "vitest";
|
|||||||
describe("i18n", () => {
|
describe("i18n", () => {
|
||||||
it("translations are valid JSON", () => {
|
it("translations are valid JSON", () => {
|
||||||
for (const locale of LOCALES) {
|
for (const locale of LOCALES) {
|
||||||
if (locale.contentOnly) {
|
if (locale.contentOnly || locale.id === "en_rtl") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export const byNoteType: Record<Exclude<NoteType, "book">, string | null> = {
|
|||||||
file: null,
|
file: null,
|
||||||
image: null,
|
image: null,
|
||||||
launcher: null,
|
launcher: null,
|
||||||
mermaid: null,
|
mermaid: "s1aBHPd79XYj",
|
||||||
mindMap: null,
|
mindMap: null,
|
||||||
noteMap: null,
|
noteMap: null,
|
||||||
relationMap: null,
|
relationMap: null,
|
||||||
@@ -27,7 +27,8 @@ export const byBookType: Record<ViewTypeOptions, string | null> = {
|
|||||||
calendar: "xWbu3jpNWapp",
|
calendar: "xWbu3jpNWapp",
|
||||||
table: "2FvYrpmOXm29",
|
table: "2FvYrpmOXm29",
|
||||||
geoMap: "81SGnPGMk7Xc",
|
geoMap: "81SGnPGMk7Xc",
|
||||||
board: "CtBQqbwXDx1w"
|
board: "CtBQqbwXDx1w",
|
||||||
|
presentation: null
|
||||||
};
|
};
|
||||||
|
|
||||||
export function getHelpUrlForNote(note: FNote | null | undefined) {
|
export function getHelpUrlForNote(note: FNote | null | undefined) {
|
||||||
|
|||||||
@@ -3,16 +3,8 @@ import linkContextMenuService from "../menus/link_context_menu.js";
|
|||||||
import appContext, { type NoteCommandData } from "../components/app_context.js";
|
import appContext, { type NoteCommandData } from "../components/app_context.js";
|
||||||
import froca from "./froca.js";
|
import froca from "./froca.js";
|
||||||
import utils from "./utils.js";
|
import utils from "./utils.js";
|
||||||
|
import { ALLOWED_PROTOCOLS } from "@triliumnext/commons";
|
||||||
// Be consistent with `allowedSchemes` in `src\services\html_sanitizer.ts`
|
import { openInCurrentNoteContext } from "../components/note_context.js";
|
||||||
// TODO: Deduplicate with server once we can.
|
|
||||||
export const ALLOWED_PROTOCOLS = [
|
|
||||||
'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'gemini', 'git',
|
|
||||||
'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message',
|
|
||||||
'mumble', 'nfs', 'onenote', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp',
|
|
||||||
'view-source', 'vlc', 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack', 'tel', 'smb', 'zotero', 'geo',
|
|
||||||
'mid'
|
|
||||||
];
|
|
||||||
|
|
||||||
function getNotePathFromUrl(url: string) {
|
function getNotePathFromUrl(url: string) {
|
||||||
const notePathMatch = /#(root[A-Za-z0-9_/]*)$/.exec(url);
|
const notePathMatch = /#(root[A-Za-z0-9_/]*)$/.exec(url);
|
||||||
@@ -325,21 +317,7 @@ function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent
|
|||||||
viewScope
|
viewScope
|
||||||
});
|
});
|
||||||
} else if (isLeftClick) {
|
} else if (isLeftClick) {
|
||||||
const ntxId = $(evt?.target as any)
|
openInCurrentNoteContext(evt, notePath, viewScope);
|
||||||
.closest("[data-ntx-id]")
|
|
||||||
.attr("data-ntx-id");
|
|
||||||
|
|
||||||
const noteContext = ntxId ? appContext.tabManager.getNoteContextById(ntxId) : appContext.tabManager.getActiveContext();
|
|
||||||
|
|
||||||
if (noteContext) {
|
|
||||||
noteContext.setNote(notePath, { viewScope }).then(() => {
|
|
||||||
if (noteContext !== appContext.tabManager.getActiveContext()) {
|
|
||||||
appContext.tabManager.activateNoteContext(noteContext.ntxId);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
appContext.tabManager.openContextWithNote(notePath, { viewScope, activate: true });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (hrefLink) {
|
} else if (hrefLink) {
|
||||||
const withinEditLink = $link?.hasClass("ck-link-actions__preview");
|
const withinEditLink = $link?.hasClass("ck-link-actions__preview");
|
||||||
|
|||||||
@@ -168,7 +168,8 @@ async function getBuiltInTemplates(title: string | null, command: TreeCommandNam
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const templateNote of childNotes) {
|
for (const templateNote of childNotes) {
|
||||||
if (templateNote.hasLabel("collection") !== filterCollections) {
|
if (templateNote.hasLabel("collection") !== filterCollections ||
|
||||||
|
!templateNote.hasLabel("template")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import options from "./options.js";
|
import options from "./options.js";
|
||||||
import Split from "split.js"
|
import Split from "@triliumnext/split.js";
|
||||||
|
|
||||||
export const DEFAULT_GUTTER_SIZE = 5;
|
export const DEFAULT_GUTTER_SIZE = 5;
|
||||||
|
|
||||||
@@ -46,6 +46,7 @@ function setupLeftPaneResizer(leftPaneVisible: boolean) {
|
|||||||
sizes: [leftPaneWidth, restPaneWidth],
|
sizes: [leftPaneWidth, restPaneWidth],
|
||||||
gutterSize: DEFAULT_GUTTER_SIZE,
|
gutterSize: DEFAULT_GUTTER_SIZE,
|
||||||
minSize: [150, 300],
|
minSize: [150, 300],
|
||||||
|
rtl: glob.isRtl,
|
||||||
onDragEnd: (sizes) => {
|
onDragEnd: (sizes) => {
|
||||||
leftPaneWidth = Math.round(sizes[0]);
|
leftPaneWidth = Math.round(sizes[0]);
|
||||||
options.save("leftPaneWidth", Math.round(sizes[0]));
|
options.save("leftPaneWidth", Math.round(sizes[0]));
|
||||||
@@ -79,6 +80,7 @@ function setupRightPaneResizer() {
|
|||||||
sizes: [100 - rightPaneWidth, rightPaneWidth],
|
sizes: [100 - rightPaneWidth, rightPaneWidth],
|
||||||
gutterSize: DEFAULT_GUTTER_SIZE,
|
gutterSize: DEFAULT_GUTTER_SIZE,
|
||||||
minSize: [300, 180],
|
minSize: [300, 180],
|
||||||
|
rtl: glob.isRtl,
|
||||||
onDragEnd: (sizes) => {
|
onDragEnd: (sizes) => {
|
||||||
rightPaneWidth = Math.round(sizes[1]);
|
rightPaneWidth = Math.round(sizes[1]);
|
||||||
options.save("rightPaneWidth", Math.round(sizes[1]));
|
options.save("rightPaneWidth", Math.round(sizes[1]));
|
||||||
@@ -99,7 +101,7 @@ function setupNoteSplitResizer(ntxIds: string[]) {
|
|||||||
let targetNtxIds: string[] | undefined;
|
let targetNtxIds: string[] | undefined;
|
||||||
for (const ntxId of ntxIds) {
|
for (const ntxId of ntxIds) {
|
||||||
targetNtxIds = findKeyByNtxId(ntxId);
|
targetNtxIds = findKeyByNtxId(ntxId);
|
||||||
if (targetNtxIds) break;
|
if (targetNtxIds) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetNtxIds) {
|
if (targetNtxIds) {
|
||||||
@@ -154,6 +156,7 @@ function createSplitInstance(targetNtxIds: string[]) {
|
|||||||
const splitPanels = [...splitNoteContainer.querySelectorAll<HTMLElement>(':scope > .note-split')]
|
const splitPanels = [...splitNoteContainer.querySelectorAll<HTMLElement>(':scope > .note-split')]
|
||||||
.filter(el => targetNtxIds.includes(el.getAttribute('data-ntx-id') ?? ""));
|
.filter(el => targetNtxIds.includes(el.getAttribute('data-ntx-id') ?? ""));
|
||||||
const splitInstance = Split(splitPanels, {
|
const splitInstance = Split(splitPanels, {
|
||||||
|
rtl: glob.isRtl,
|
||||||
gutterSize: DEFAULT_GUTTER_SIZE,
|
gutterSize: DEFAULT_GUTTER_SIZE,
|
||||||
minSize: 150,
|
minSize: 150,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ describe("shortcuts", () => {
|
|||||||
expect(matchesShortcut(event, "Shift+F1")).toBeTruthy();
|
expect(matchesShortcut(event, "Shift+F1")).toBeTruthy();
|
||||||
|
|
||||||
// Special keys
|
// Special keys
|
||||||
for (const keyCode of [ "Delete", "Enter" ]) {
|
for (const keyCode of [ "Delete", "Enter", "NumpadEnter" ]) {
|
||||||
event = createKeyboardEvent({ key: keyCode, code: keyCode });
|
event = createKeyboardEvent({ key: keyCode, code: keyCode });
|
||||||
expect(matchesShortcut(event, keyCode), `Key ${keyCode}`).toBeTruthy();
|
expect(matchesShortcut(event, keyCode), `Key ${keyCode}`).toBeTruthy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ for (let i = 1; i <= 19; i++) {
|
|||||||
const KEYCODES_WITH_NO_MODIFIER = new Set([
|
const KEYCODES_WITH_NO_MODIFIER = new Set([
|
||||||
"Delete",
|
"Delete",
|
||||||
"Enter",
|
"Enter",
|
||||||
|
"NumpadEnter",
|
||||||
...functionKeyCodes
|
...functionKeyCodes
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ export async function formatCodeBlocks($container: JQuery<HTMLElement>) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
applyCopyToClipboardButton($(codeBlock));
|
if (glob.device !== "print") {
|
||||||
|
applyCopyToClipboardButton($(codeBlock));
|
||||||
|
}
|
||||||
|
|
||||||
if (syntaxHighlightingEnabled) {
|
if (syntaxHighlightingEnabled) {
|
||||||
applySingleBlockSyntaxHighlight($(codeBlock), normalizedMimeType);
|
applySingleBlockSyntaxHighlight($(codeBlock), normalizedMimeType);
|
||||||
@@ -61,7 +63,11 @@ export async function applySingleBlockSyntaxHighlight($codeBlock: JQuery<HTMLEle
|
|||||||
highlightedText = highlightAuto(text);
|
highlightedText = highlightAuto(text);
|
||||||
} else if (normalizedMimeType) {
|
} else if (normalizedMimeType) {
|
||||||
await ensureMimeTypesForHighlighting(normalizedMimeType);
|
await ensureMimeTypesForHighlighting(normalizedMimeType);
|
||||||
highlightedText = highlight(text, { language: normalizedMimeType });
|
try {
|
||||||
|
highlightedText = highlight(text, { language: normalizedMimeType });
|
||||||
|
} catch (e) {
|
||||||
|
console.warn("Unable to apply syntax highlight.", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (highlightedText) {
|
if (highlightedText) {
|
||||||
@@ -76,7 +82,7 @@ export async function ensureMimeTypesForHighlighting(mimeTypeHint?: string) {
|
|||||||
|
|
||||||
// Load theme.
|
// Load theme.
|
||||||
const currentThemeName = String(options.get("codeBlockTheme"));
|
const currentThemeName = String(options.get("codeBlockTheme"));
|
||||||
loadHighlightingTheme(currentThemeName);
|
await loadHighlightingTheme(currentThemeName);
|
||||||
|
|
||||||
// Load mime types.
|
// Load mime types.
|
||||||
let mimeTypes: MimeType[];
|
let mimeTypes: MimeType[];
|
||||||
@@ -98,17 +104,16 @@ export async function ensureMimeTypesForHighlighting(mimeTypeHint?: string) {
|
|||||||
highlightingLoaded = true;
|
highlightingLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function loadHighlightingTheme(themeName: string) {
|
export async function loadHighlightingTheme(themeName: string) {
|
||||||
const themePrefix = "default:";
|
const themePrefix = "default:";
|
||||||
let theme: Theme | null = null;
|
let theme: Theme | null = null;
|
||||||
if (themeName.includes(themePrefix)) {
|
if (glob.device === "print") {
|
||||||
|
theme = Themes.vs;
|
||||||
|
} else if (themeName.includes(themePrefix)) {
|
||||||
theme = Themes[themeName.substring(themePrefix.length)];
|
theme = Themes[themeName.substring(themePrefix.length)];
|
||||||
}
|
}
|
||||||
if (!theme) {
|
|
||||||
theme = Themes.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
loadTheme(theme);
|
await loadTheme(theme ?? Themes.default);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ import froca from "./froca.js";
|
|||||||
import hoistedNoteService from "./hoisted_note.js";
|
import hoistedNoteService from "./hoisted_note.js";
|
||||||
import appContext from "../components/app_context.js";
|
import appContext from "../components/app_context.js";
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {string|null}
|
|
||||||
*/
|
|
||||||
async function resolveNotePath(notePath: string, hoistedNoteId = "root") {
|
async function resolveNotePath(notePath: string, hoistedNoteId = "root") {
|
||||||
const runPath = await resolveNotePathToSegments(notePath, hoistedNoteId);
|
const runPath = await resolveNotePathToSegments(notePath, hoistedNoteId);
|
||||||
|
|
||||||
@@ -29,21 +26,12 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
}
|
}
|
||||||
|
|
||||||
const path = notePath.split("/").reverse();
|
const path = notePath.split("/").reverse();
|
||||||
|
|
||||||
if (!path.includes("root")) {
|
|
||||||
path.push("root");
|
|
||||||
}
|
|
||||||
|
|
||||||
const effectivePathSegments: string[] = [];
|
const effectivePathSegments: string[] = [];
|
||||||
let childNoteId: string | null = null;
|
let childNoteId: string | null = null;
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
|
||||||
while (true) {
|
for (let i = 0; i < path.length; i++) {
|
||||||
if (i >= path.length) {
|
const parentNoteId = path[i];
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const parentNoteId = path[i++];
|
|
||||||
|
|
||||||
if (childNoteId !== null) {
|
if (childNoteId !== null) {
|
||||||
const child = await froca.getNote(childNoteId, !logErrors);
|
const child = await froca.getNote(childNoteId, !logErrors);
|
||||||
@@ -68,7 +56,7 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!parents.some((p) => p.noteId === parentNoteId)) {
|
if (!parents.some(p => p.noteId === parentNoteId) || (i === path.length - 1 && parentNoteId !== 'root')) {
|
||||||
if (logErrors) {
|
if (logErrors) {
|
||||||
const parent = froca.getNoteFromCache(parentNoteId);
|
const parent = froca.getNoteFromCache(parentNoteId);
|
||||||
|
|
||||||
@@ -80,7 +68,8 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bestNotePath = child.getBestNotePath(hoistedNoteId);
|
const activeNotePath = appContext.tabManager.getActiveContextNotePath();
|
||||||
|
const bestNotePath = child.getBestNotePath(hoistedNoteId, activeNotePath);
|
||||||
|
|
||||||
if (bestNotePath) {
|
if (bestNotePath) {
|
||||||
const pathToRoot = bestNotePath.reverse().slice(1);
|
const pathToRoot = bestNotePath.reverse().slice(1);
|
||||||
@@ -111,7 +100,9 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
if (!note) {
|
if (!note) {
|
||||||
throw new Error(`Unable to find note: ${notePath}.`);
|
throw new Error(`Unable to find note: ${notePath}.`);
|
||||||
}
|
}
|
||||||
const bestNotePath = note.getBestNotePath(hoistedNoteId);
|
|
||||||
|
const activeNotePath = appContext.tabManager.getActiveContextNotePath();
|
||||||
|
const bestNotePath = note.getBestNotePath(hoistedNoteId, activeNotePath);
|
||||||
|
|
||||||
if (!bestNotePath) {
|
if (!bestNotePath) {
|
||||||
throw new Error(`Did not find any path segments for '${note.toString()}', hoisted note '${hoistedNoteId}'`);
|
throw new Error(`Did not find any path segments for '${note.toString()}', hoisted note '${hoistedNoteId}'`);
|
||||||
|
|||||||
@@ -11,7 +11,11 @@ export function reloadFrontendApp(reason?: string) {
|
|||||||
logInfo(`Frontend app reload: ${reason}`);
|
logInfo(`Frontend app reload: ${reason}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.location.reload();
|
if (isElectron()) {
|
||||||
|
dynamicRequire("@electron/remote").BrowserWindow.getFocusedWindow()?.reload();
|
||||||
|
} else {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function restartDesktopApp() {
|
export function restartDesktopApp() {
|
||||||
@@ -837,7 +841,7 @@ export function arrayEqual<T>(a: T[], b: T[]) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
type Indexed<T extends object> = T & { index: number };
|
export type Indexed<T extends object> = T & { index: number };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an object array, alters every object in the array to have an index field assigned to it.
|
* Given an object array, alters every object in the array to have an index field assigned to it.
|
||||||
@@ -869,6 +873,18 @@ export function getErrorMessage(e: unknown) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles left or right placement of e.g. tooltips in case of right-to-left languages. If the current language is a RTL one, then left and right are swapped. Other directions are unaffected.
|
||||||
|
* @param placement a string optionally containing a "left" or "right" value.
|
||||||
|
* @returns a left/right value swapped if needed, or the same as input otherwise.
|
||||||
|
*/
|
||||||
|
export function handleRightToLeftPlacement<T extends string>(placement: T) {
|
||||||
|
if (!glob.isRtl) return placement;
|
||||||
|
if (placement === "left") return "right";
|
||||||
|
if (placement === "right") return "left";
|
||||||
|
return placement;
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
reloadFrontendApp,
|
reloadFrontendApp,
|
||||||
restartDesktopApp,
|
restartDesktopApp,
|
||||||
|
|||||||
@@ -304,6 +304,8 @@ async function sendPing() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
if (glob.device === "print") return;
|
||||||
|
|
||||||
ws = connectWebSocket();
|
ws = connectWebSocket();
|
||||||
|
|
||||||
lastPingTs = Date.now();
|
lastPingTs = Date.now();
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import "bootstrap/dist/css/bootstrap.min.css";
|
|
||||||
import "./stylesheets/auth.css";
|
import "./stylesheets/auth.css";
|
||||||
|
|
||||||
// @TriliumNextTODO: is this even needed anymore?
|
// @TriliumNextTODO: is this even needed anymore?
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import "jquery";
|
import "jquery";
|
||||||
import utils from "./services/utils.js";
|
import utils from "./services/utils.js";
|
||||||
import ko from "knockout";
|
import ko from "knockout";
|
||||||
import "bootstrap/dist/css/bootstrap.min.css";
|
|
||||||
|
|
||||||
// TriliumNextTODO: properly make use of below types
|
// TriliumNextTODO: properly make use of below types
|
||||||
// type SetupModelSetupType = "new-document" | "sync-from-desktop" | "sync-from-server" | "";
|
// type SetupModelSetupType = "new-document" | "sync-from-desktop" | "sync-from-server" | "";
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
import "normalize.css";
|
|
||||||
import "boxicons/css/boxicons.min.css";
|
|
||||||
import "@triliumnext/ckeditor5/src/theme/ck-content.css";
|
|
||||||
import "@triliumnext/share-theme/styles/index.css";
|
|
||||||
import "@triliumnext/share-theme/scripts/index.js";
|
|
||||||
|
|
||||||
async function ensureJQuery() {
|
|
||||||
const $ = (await import("jquery")).default;
|
|
||||||
(window as any).$ = $;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function applyMath() {
|
|
||||||
const anyMathBlock = document.querySelector("#content .math-tex");
|
|
||||||
if (!anyMathBlock) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const renderMathInElement = (await import("./services/math.js")).renderMathInElement;
|
|
||||||
renderMathInElement(document.getElementById("content"));
|
|
||||||
}
|
|
||||||
|
|
||||||
async function formatCodeBlocks() {
|
|
||||||
const anyCodeBlock = document.querySelector("#content pre");
|
|
||||||
if (!anyCodeBlock) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
await ensureJQuery();
|
|
||||||
const { formatCodeBlocks } = await import("./services/syntax_highlight.js");
|
|
||||||
await formatCodeBlocks($("#content"));
|
|
||||||
}
|
|
||||||
|
|
||||||
async function setupTextNote() {
|
|
||||||
formatCodeBlocks();
|
|
||||||
applyMath();
|
|
||||||
|
|
||||||
const setupMermaid = (await import("./share/mermaid.js")).default;
|
|
||||||
setupMermaid();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch note with given ID from backend
|
|
||||||
*
|
|
||||||
* @param noteId of the given note to be fetched. If false, fetches current note.
|
|
||||||
*/
|
|
||||||
async function fetchNote(noteId: string | null = null) {
|
|
||||||
if (!noteId) {
|
|
||||||
noteId = document.body.getAttribute("data-note-id");
|
|
||||||
}
|
|
||||||
|
|
||||||
const resp = await fetch(`api/notes/${noteId}`);
|
|
||||||
|
|
||||||
return await resp.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener(
|
|
||||||
"DOMContentLoaded",
|
|
||||||
() => {
|
|
||||||
const noteType = determineNoteType();
|
|
||||||
|
|
||||||
if (noteType === "text") {
|
|
||||||
setupTextNote();
|
|
||||||
}
|
|
||||||
|
|
||||||
const toggleMenuButton = document.getElementById("toggleMenuButton");
|
|
||||||
const layout = document.getElementById("layout");
|
|
||||||
|
|
||||||
if (toggleMenuButton && layout) {
|
|
||||||
toggleMenuButton.addEventListener("click", () => layout.classList.toggle("showMenu"));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
false
|
|
||||||
);
|
|
||||||
|
|
||||||
function determineNoteType() {
|
|
||||||
const bodyClass = document.body.className;
|
|
||||||
const match = bodyClass.match(/type-([^\s]+)/);
|
|
||||||
return match ? match[1] : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// workaround to prevent webpack from removing "fetchNote" as dead code:
|
|
||||||
// add fetchNote as property to the window object
|
|
||||||
Object.defineProperty(window, "fetchNote", {
|
|
||||||
value: fetchNote
|
|
||||||
});
|
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
appearance: none;
|
appearance: none;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-left: unset;
|
border-inline-start: unset;
|
||||||
background-color: var(--menu-background-color);
|
background-color: var(--menu-background-color);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
background-color: var(--main-border-color);
|
background-color: var(--main-border-color);
|
||||||
|
|||||||
@@ -299,7 +299,7 @@
|
|||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: -100%;
|
inset-inline-start: -100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: linear-gradient(90deg, transparent, var(--hover-item-background-color, rgba(0, 0, 0, 0.03)), transparent);
|
background: linear-gradient(90deg, transparent, var(--hover-item-background-color, rgba(0, 0, 0, 0.03)), transparent);
|
||||||
@@ -406,10 +406,10 @@
|
|||||||
|
|
||||||
@keyframes shimmer {
|
@keyframes shimmer {
|
||||||
0% {
|
0% {
|
||||||
left: -100%;
|
inset-inline-start: -100%;
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
left: 100%;
|
inset-inline-start: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,322 +0,0 @@
|
|||||||
:root {
|
|
||||||
--main-background-color: white;
|
|
||||||
--root-background: var(--main-background-color);
|
|
||||||
--launcher-pane-background-color: var(--main-background-color);
|
|
||||||
--main-text-color: black;
|
|
||||||
--input-text-color: var(--main-text-color);
|
|
||||||
|
|
||||||
--print-font-size: 11pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
@page {
|
|
||||||
margin: 2cm;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ck-content {
|
|
||||||
font-size: var(--print-font-size);
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-readonly-text {
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-print,
|
|
||||||
.no-print *,
|
|
||||||
.tab-row-container,
|
|
||||||
.tab-row-widget,
|
|
||||||
.title-bar-buttons,
|
|
||||||
#launcher-pane,
|
|
||||||
#left-pane,
|
|
||||||
#center-pane > *:not(.split-note-container-widget),
|
|
||||||
#right-pane,
|
|
||||||
.title-row .note-icon-widget,
|
|
||||||
.title-row .icon-action,
|
|
||||||
.ribbon-container,
|
|
||||||
.promoted-attributes-widget,
|
|
||||||
.scroll-padding-widget,
|
|
||||||
.note-list-widget,
|
|
||||||
.spacer {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.mobile #mobile-sidebar-wrapper,
|
|
||||||
body.mobile .classic-toolbar-widget,
|
|
||||||
body.mobile .action-button {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.mobile #detail-container {
|
|
||||||
max-height: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.mobile .note-title-widget {
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body,
|
|
||||||
#root-widget,
|
|
||||||
#rest-pane > div.component:first-child,
|
|
||||||
.note-detail-printable,
|
|
||||||
.note-detail-editable-text-editor {
|
|
||||||
height: unset !important;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ck.ck-editor__editable_inline {
|
|
||||||
overflow: hidden !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-title-widget input,
|
|
||||||
.note-detail-editable-text,
|
|
||||||
.note-detail-editable-text-editor {
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
width: unset !important;
|
|
||||||
height: unset !important;
|
|
||||||
overflow: visible;
|
|
||||||
position: unset;
|
|
||||||
/* https://github.com/zadam/trilium/issues/3202 */
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#root-widget,
|
|
||||||
#horizontal-main-container,
|
|
||||||
#rest-pane,
|
|
||||||
#vertical-main-container,
|
|
||||||
#center-pane,
|
|
||||||
.split-note-container-widget,
|
|
||||||
.note-split:not(.hidden-ext),
|
|
||||||
body.mobile #mobile-rest-container {
|
|
||||||
display: block !important;
|
|
||||||
overflow: auto;
|
|
||||||
border-radius: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#center-pane,
|
|
||||||
#rest-pane,
|
|
||||||
.note-split,
|
|
||||||
body.mobile #detail-container {
|
|
||||||
width: unset !important;
|
|
||||||
max-width: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.component {
|
|
||||||
contain: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Respect page breaks */
|
|
||||||
.page-break {
|
|
||||||
page-break-after: always;
|
|
||||||
break-after: always;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-break > * {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relation-map-wrapper {
|
|
||||||
height: 100vh !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table thead th,
|
|
||||||
.table td,
|
|
||||||
.table th {
|
|
||||||
/* Fix center vertical alignment of table cells */
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
box-shadow: unset !important;
|
|
||||||
border: 0.75pt solid gray !important;
|
|
||||||
border-radius: 2pt !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
th,
|
|
||||||
span[style] {
|
|
||||||
print-color-adjust: exact;
|
|
||||||
-webkit-print-color-adjust: exact;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Text note specific fixes
|
|
||||||
*/
|
|
||||||
.ck-widget {
|
|
||||||
outline: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ck-placeholder,
|
|
||||||
.ck-widget__type-around,
|
|
||||||
.ck-widget__selection-handle {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,
|
|
||||||
.ck-widget.table td.ck-editor__nested-editable:focus,
|
|
||||||
.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,
|
|
||||||
.ck-widget.table th.ck-editor__nested-editable:focus {
|
|
||||||
background: unset !important;
|
|
||||||
outline: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.include-note .include-note-content {
|
|
||||||
max-height: unset !important;
|
|
||||||
overflow: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: This will break once we translate the language */
|
|
||||||
.ck-content pre[data-language="Auto-detected"]:after {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Code note specific fixes.
|
|
||||||
*/
|
|
||||||
.note-detail-code pre {
|
|
||||||
border: unset !important;
|
|
||||||
border-radius: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Links
|
|
||||||
*/
|
|
||||||
|
|
||||||
.note-detail-printable a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable a:not([href^="#root/"]) {
|
|
||||||
text-decoration: underline;
|
|
||||||
color: #374a75;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable a::after {
|
|
||||||
/* Hide the external link trailing arrow */
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO list check boxes
|
|
||||||
*/
|
|
||||||
|
|
||||||
.note-detail-printable .todo-list__label * {
|
|
||||||
-webkit-print-color-adjust: exact;
|
|
||||||
print-color-adjust: exact;
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports selector(.todo-list__label__description:has(*)) and (height: 1lh) {
|
|
||||||
.note-detail-printable .todo-list__label__description {
|
|
||||||
/* The percentage of the line height that the check box occupies */
|
|
||||||
--box-ratio: 0.75;
|
|
||||||
/* The size of the gap between the check box and the caption */
|
|
||||||
--box-text-gap: 0.25em;
|
|
||||||
|
|
||||||
--box-size: calc(1lh * var(--box-ratio));
|
|
||||||
--box-vert-offset: calc((1lh - var(--box-size)) / 2);
|
|
||||||
|
|
||||||
display: inline-block;
|
|
||||||
padding-left: calc(var(--box-size) + var(--box-text-gap));
|
|
||||||
/* Source: https://pictogrammers.com/library/mdi/icon/checkbox-blank-outline/ */
|
|
||||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3e%3cpath d='M19%2c3H5C3.89%2c3 3%2c3.89 3%2c5V19A2%2c2 0 0%2c0 5%2c21H19A2%2c2 0 0%2c0 21%2c19V5C21%2c3.89 20.1%2c3 19%2c3M19%2c5V19H5V5H19Z' /%3e%3c/svg%3e");
|
|
||||||
background-position: 0 var(--box-vert-offset);
|
|
||||||
background-size: var(--box-size);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable .todo-list__label:has(input[type="checkbox"]:checked) .todo-list__label__description {
|
|
||||||
/* Source: https://pictogrammers.com/library/mdi/icon/checkbox-outline/ */
|
|
||||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3e%3cpath d='M19%2c3H5A2%2c2 0 0%2c0 3%2c5V19A2%2c2 0 0%2c0 5%2c21H19A2%2c2 0 0%2c0 21%2c19V5A2%2c2 0 0%2c0 19%2c3M19%2c5V19H5V5H19M10%2c17L6%2c13L7.41%2c11.58L10%2c14.17L16.59%2c7.58L18%2c9' /%3e%3c/svg%3e");
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable .todo-list__label input[type="checkbox"] {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Blockquotes
|
|
||||||
*/
|
|
||||||
|
|
||||||
.note-detail-printable blockquote {
|
|
||||||
box-shadow: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Figures
|
|
||||||
*/
|
|
||||||
|
|
||||||
.note-detail-printable figcaption {
|
|
||||||
--accented-background-color: transparent;
|
|
||||||
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Footnotes
|
|
||||||
*/
|
|
||||||
|
|
||||||
.note-detail-printable .footnote-reference a,
|
|
||||||
.footnote-back-link a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make the "^" link cover the whole area of the footnote item */
|
|
||||||
|
|
||||||
.footnote-section {
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable li.footnote-item {
|
|
||||||
position: relative;
|
|
||||||
width: fit-content;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable .footnote-back-link,
|
|
||||||
.note-detail-printable .footnote-back-link *,
|
|
||||||
.note-detail-printable .footnote-back-link a {
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable .footnote-back-link a {
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-detail-printable .footnote-content {
|
|
||||||
display: inline-block;
|
|
||||||
width: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Widows and orphans
|
|
||||||
*/
|
|
||||||
p,
|
|
||||||
blockquote {
|
|
||||||
widows: 4;
|
|
||||||
orphans: 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre > code {
|
|
||||||
widows: 6;
|
|
||||||
orphans: 6;
|
|
||||||
overflow: auto;
|
|
||||||
white-space: pre-wrap !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6 {
|
|
||||||
page-break-after: avoid;
|
|
||||||
break-after: avoid;
|
|
||||||
}
|
|
||||||
@@ -5,7 +5,6 @@
|
|||||||
.note-detail-relation-map {
|
.note-detail-relation-map {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden !important;
|
overflow: hidden !important;
|
||||||
padding: 10px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +61,7 @@
|
|||||||
.note-detail-relation-map .endpoint {
|
.note-detail-relation-map .endpoint {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 37%;
|
bottom: 37%;
|
||||||
right: 5px;
|
inset-inline-end: 5px;
|
||||||
width: 1em;
|
width: 1em;
|
||||||
height: 1em;
|
height: 1em;
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
|
|||||||
@@ -174,12 +174,12 @@ textarea,
|
|||||||
/* Add a gap between consecutive radios / check boxes */
|
/* Add a gap between consecutive radios / check boxes */
|
||||||
label.tn-radio + label.tn-radio,
|
label.tn-radio + label.tn-radio,
|
||||||
label.tn-checkbox + label.tn-checkbox {
|
label.tn-checkbox + label.tn-checkbox {
|
||||||
margin-left: 12px;
|
margin-inline-start: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
label.tn-radio input[type="radio"],
|
label.tn-radio input[type="radio"],
|
||||||
label.tn-checkbox input[type="checkbox"] {
|
label.tn-checkbox input[type="checkbox"] {
|
||||||
margin-right: .5em;
|
margin-inline-end: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#left-pane input,
|
#left-pane input,
|
||||||
@@ -226,7 +226,7 @@ samp {
|
|||||||
.badge {
|
.badge {
|
||||||
--bs-badge-color: var(--muted-text-color);
|
--bs-badge-color: var(--muted-text-color);
|
||||||
|
|
||||||
margin-left: 8px;
|
margin-inline-start: 8px;
|
||||||
background: var(--accented-background-color);
|
background: var(--accented-background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,8 +338,8 @@ button kbd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ui-menu kbd {
|
.ui-menu kbd {
|
||||||
margin-left: 30px;
|
margin-inline-start: 30px;
|
||||||
float: right;
|
float: inline-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.suppressed {
|
.suppressed {
|
||||||
@@ -360,7 +360,8 @@ button kbd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu,
|
.dropdown-menu,
|
||||||
.tabulator-popup-container {
|
.tabulator-popup-container,
|
||||||
|
:root .excalidraw .popover {
|
||||||
color: var(--menu-text-color) !important;
|
color: var(--menu-text-color) !important;
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
background: var(--menu-background-color) !important;
|
background: var(--menu-background-color) !important;
|
||||||
@@ -371,7 +372,9 @@ button kbd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body.desktop .dropdown-menu,
|
body.desktop .dropdown-menu,
|
||||||
body.desktop .tabulator-popup-container {
|
body.desktop .tabulator-popup-container,
|
||||||
|
:root .excalidraw .dropdown-menu .dropdown-menu-container,
|
||||||
|
:root .excalidraw .popover {
|
||||||
border: 1px solid var(--dropdown-border-color);
|
border: 1px solid var(--dropdown-border-color);
|
||||||
column-rule: 1px solid var(--dropdown-border-color);
|
column-rule: 1px solid var(--dropdown-border-color);
|
||||||
box-shadow: 0px 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity));
|
box-shadow: 0px 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity));
|
||||||
@@ -392,7 +395,7 @@ body.desktop .tabulator-popup-container {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropend .dropdown-toggle::after {
|
.dropend .dropdown-toggle::after {
|
||||||
margin-left: 0.5em;
|
margin-inline-start: 0.5em;
|
||||||
color: var(--muted-text-color);
|
color: var(--muted-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,7 +406,7 @@ body.desktop .tabulator-popup-container {
|
|||||||
|
|
||||||
.dropdown-menu .disabled .disabled-tooltip {
|
.dropdown-menu .disabled .disabled-tooltip {
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
margin-left: 8px;
|
margin-inline-start: 8px;
|
||||||
font-size: 0.5em;
|
font-size: 0.5em;
|
||||||
color: var(--disabled-tooltip-icon-color);
|
color: var(--disabled-tooltip-icon-color);
|
||||||
cursor: help;
|
cursor: help;
|
||||||
@@ -416,7 +419,8 @@ body.desktop .tabulator-popup-container {
|
|||||||
|
|
||||||
.dropdown-menu a:hover:not(.disabled),
|
.dropdown-menu a:hover:not(.disabled),
|
||||||
.dropdown-item:hover:not(.disabled, .dropdown-container-item),
|
.dropdown-item:hover:not(.disabled, .dropdown-container-item),
|
||||||
.tabulator-menu-item:hover {
|
.tabulator-menu-item:hover,
|
||||||
|
:root .excalidraw .context-menu .context-menu-item:hover {
|
||||||
color: var(--hover-item-text-color) !important;
|
color: var(--hover-item-text-color) !important;
|
||||||
background-color: var(--hover-item-background-color) !important;
|
background-color: var(--hover-item-background-color) !important;
|
||||||
border-color: var(--hover-item-border-color) !important;
|
border-color: var(--hover-item-border-color) !important;
|
||||||
@@ -443,7 +447,7 @@ body #context-menu-container .dropdown-item > span {
|
|||||||
.dropdown-item span.keyboard-shortcut,
|
.dropdown-item span.keyboard-shortcut,
|
||||||
.dropdown-item *:not(.keyboard-shortcut) > kbd {
|
.dropdown-item *:not(.keyboard-shortcut) > kbd {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
text-align: right;
|
text-align: end;
|
||||||
padding-inline-start: 12px;
|
padding-inline-start: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -457,7 +461,8 @@ body #context-menu-container .dropdown-item > span {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-item,
|
.dropdown-item,
|
||||||
.dropdown-header {
|
.dropdown-header,
|
||||||
|
:root .excalidraw .context-menu .context-menu-item:hover {
|
||||||
color: var(--menu-text-color) !important;
|
color: var(--menu-text-color) !important;
|
||||||
border: 1px solid transparent !important;
|
border: 1px solid transparent !important;
|
||||||
}
|
}
|
||||||
@@ -504,7 +509,7 @@ body #context-menu-container .dropdown-item > span {
|
|||||||
|
|
||||||
body .cm-editor .cm-gutters {
|
body .cm-editor .cm-gutters {
|
||||||
background-color: inherit !important;
|
background-color: inherit !important;
|
||||||
border-right: none;
|
border-inline-end: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
body .cm-editor .cm-placeholder {
|
body .cm-editor .cm-placeholder {
|
||||||
@@ -586,6 +591,10 @@ button.btn-sm {
|
|||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] .ck.ck-block-toolbar-button {
|
||||||
|
transform: translateX(-7px);
|
||||||
|
}
|
||||||
|
|
||||||
pre:not(.hljs) {
|
pre:not(.hljs) {
|
||||||
color: var(--main-text-color) !important;
|
color: var(--main-text-color) !important;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
@@ -604,11 +613,11 @@ pre:not(.hljs) {
|
|||||||
pre > button.copy-button {
|
pre > button.copy-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: var(--copy-button-margin-size);
|
top: var(--copy-button-margin-size);
|
||||||
right: var(--copy-button-margin-size);
|
inset-inline-end: var(--copy-button-margin-size);
|
||||||
}
|
}
|
||||||
|
|
||||||
:root pre:has(> button.copy-button) {
|
:root pre:has(> button.copy-button) {
|
||||||
padding-right: calc(var(--copy-button-width) + (var(--copy-button-margin-size) * 2));
|
padding-inline-end: calc(var(--copy-button-width) + (var(--copy-button-margin-size) * 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
pre > button.copy-button:hover {
|
pre > button.copy-button:hover {
|
||||||
@@ -634,31 +643,31 @@ pre > button.copy-button:active {
|
|||||||
.full-text-search-button {
|
.full-text-search-button {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
padding-left: 5px;
|
padding-inline-start: 5px;
|
||||||
padding-right: 5px;
|
padding-inline-end: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-clearer-button {
|
.input-clearer-button {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
background: inherit !important;
|
background: inherit !important;
|
||||||
padding-left: 5px;
|
padding-inline-start: 5px;
|
||||||
padding-right: 5px;
|
padding-inline-end: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.open-external-link-button {
|
.open-external-link-button {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
padding-left: 5px;
|
padding-inline-start: 5px;
|
||||||
padding-right: 5px;
|
padding-inline-end: 5px;
|
||||||
padding-top: 8px;
|
padding-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.go-to-selected-note-button {
|
.go-to-selected-note-button {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
padding-left: 4px;
|
padding-inline-start: 4px;
|
||||||
padding-right: 3px;
|
padding-inline-end: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.go-to-selected-note-button.disabled,
|
.go-to-selected-note-button.disabled,
|
||||||
@@ -671,7 +680,7 @@ pre > button.copy-button:active {
|
|||||||
|
|
||||||
.note-autocomplete-input {
|
.note-autocomplete-input {
|
||||||
/* this is for seamless integration of "input clearer" button */
|
/* this is for seamless integration of "input clearer" button */
|
||||||
border-right: 0;
|
border-inline-end: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.promoted-attributes-in-tooltip {
|
table.promoted-attributes-in-tooltip {
|
||||||
@@ -704,10 +713,10 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
border-top-color: var(--main-border-color) !important;
|
border-top-color: var(--main-border-color) !important;
|
||||||
}
|
}
|
||||||
.bs-tooltip-left .tooltip-arrow::before {
|
.bs-tooltip-left .tooltip-arrow::before {
|
||||||
border-left-color: var(--main-border-color) !important;
|
border-inline-start-color: var(--main-border-color) !important;
|
||||||
}
|
}
|
||||||
.bs-tooltip-right .tooltip-arrow::before {
|
.bs-tooltip-right .tooltip-arrow::before {
|
||||||
border-right-color: var(--main-border-color) !important;
|
border-inline-end-color: var(--main-border-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bs-tooltip-bottom .tooltip-arrow::after {
|
.bs-tooltip-bottom .tooltip-arrow::after {
|
||||||
@@ -717,17 +726,17 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
border-top-color: var(--tooltip-background-color) !important;
|
border-top-color: var(--tooltip-background-color) !important;
|
||||||
}
|
}
|
||||||
.bs-tooltip-left .tooltip-arrow::after {
|
.bs-tooltip-left .tooltip-arrow::after {
|
||||||
border-left-color: var(--tooltip-background-color) !important;
|
border-inline-start-color: var(--tooltip-background-color) !important;
|
||||||
}
|
}
|
||||||
.bs-tooltip-right .tooltip-arrow::after {
|
.bs-tooltip-right .tooltip-arrow::after {
|
||||||
border-right-color: var(--tooltip-background-color) !important;
|
border-inline-end-color: var(--tooltip-background-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before,
|
.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before,
|
||||||
.bs-tooltip-left .tooltip-arrow::before {
|
.bs-tooltip-left .tooltip-arrow::before {
|
||||||
left: -1px;
|
inset-inline-start: -1px;
|
||||||
border-width: 0.4rem 0 0.4rem 0.4rem;
|
border-width: 0.4rem 0 0.4rem 0.4rem;
|
||||||
border-left-color: var(--main-border-color) !important;
|
border-inline-start-color: var(--main-border-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before,
|
.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before,
|
||||||
@@ -739,9 +748,9 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before,
|
.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before,
|
||||||
.bs-tooltip-right .tooltip-arrow::before {
|
.bs-tooltip-right .tooltip-arrow::before {
|
||||||
right: -1px;
|
inset-inline-end: -1px;
|
||||||
border-width: 0.4rem 0.4rem 0.4rem 0;
|
border-width: 0.4rem 0.4rem 0.4rem 0;
|
||||||
border-right-color: var(--main-border-color) !important;
|
border-inline-end-color: var(--main-border-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before,
|
.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before,
|
||||||
@@ -753,9 +762,9 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::after,
|
.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::after,
|
||||||
.bs-tooltip-left .tooltip-arrow::after {
|
.bs-tooltip-left .tooltip-arrow::after {
|
||||||
left: -1px;
|
inset-inline-start: -1px;
|
||||||
border-width: 0.4rem 0 0.4rem 0.4rem;
|
border-width: 0.4rem 0 0.4rem 0.4rem;
|
||||||
border-left-color: var(--tooltip-background-color) !important;
|
border-inline-start-color: var(--tooltip-background-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::after,
|
.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::after,
|
||||||
@@ -767,9 +776,9 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::after,
|
.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::after,
|
||||||
.bs-tooltip-right .tooltip-arrow::after {
|
.bs-tooltip-right .tooltip-arrow::after {
|
||||||
right: -1px;
|
inset-inline-end: -1px;
|
||||||
border-width: 0.4rem 0.4rem 0.4rem 0;
|
border-width: 0.4rem 0.4rem 0.4rem 0;
|
||||||
border-right-color: var(--tooltip-background-color) !important;
|
border-inline-end-color: var(--tooltip-background-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::after,
|
.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::after,
|
||||||
@@ -788,7 +797,7 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
background-color: var(--tooltip-background-color) !important;
|
background-color: var(--tooltip-background-color) !important;
|
||||||
border: 1px solid var(--main-border-color);
|
border: 1px solid var(--main-border-color);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
text-align: left;
|
text-align: start;
|
||||||
color: var(--main-text-color) !important;
|
color: var(--main-text-color) !important;
|
||||||
max-width: 500px;
|
max-width: 500px;
|
||||||
box-shadow: 10px 10px 93px -25px #aaaaaa;
|
box-shadow: 10px 10px 93px -25px #aaaaaa;
|
||||||
@@ -821,7 +830,7 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
|
|
||||||
.note-tooltip-content .open-popup-button {
|
.note-tooltip-content .open-popup-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 15px;
|
inset-inline-end: 15px;
|
||||||
bottom: 8px;
|
bottom: 8px;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
@@ -841,7 +850,7 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tooltip-inner figure.image-style-side {
|
.tooltip-inner figure.image-style-side {
|
||||||
float: right;
|
float: inline-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip.show {
|
.tooltip.show {
|
||||||
@@ -890,7 +899,7 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
.aa-dropdown-menu .aa-suggestion .text {
|
.aa-dropdown-menu .aa-suggestion .text {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: calc(100% - 20px);
|
width: calc(100% - 20px);
|
||||||
padding-left: 4px;
|
padding-inline-start: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aa-dropdown-menu .aa-suggestion .search-result-title {
|
.aa-dropdown-menu .aa-suggestion .search-result-title {
|
||||||
@@ -916,7 +925,7 @@ table.promoted-attributes-in-tooltip th {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.help-button {
|
.help-button {
|
||||||
float: right;
|
float: inline-end;
|
||||||
background: none;
|
background: none;
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
color: orange;
|
color: orange;
|
||||||
@@ -1004,7 +1013,7 @@ svg.ck-icon .note-icon {
|
|||||||
--ck-content-line-height: var(--bs-body-line-height);
|
--ck-content-line-height: var(--bs-body-line-height);
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content .table table th {
|
:root .ck-content .table table:not(.layout-table) th {
|
||||||
background-color: var(--accented-background-color);
|
background-color: var(--accented-background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1033,7 +1042,7 @@ svg.ck-icon .note-icon {
|
|||||||
counter-increment: footnote-counter;
|
counter-increment: footnote-counter;
|
||||||
display: flex;
|
display: flex;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin-left: 0.5em;
|
margin-inline-start: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content .footnote-item > * {
|
.ck-content .footnote-item > * {
|
||||||
@@ -1041,13 +1050,13 @@ svg.ck-icon .note-icon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ck-content .footnote-back-link {
|
.ck-content .footnote-back-link {
|
||||||
margin-right: 0.1em;
|
margin-inline-end: 0.1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -0.2em;
|
top: -0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content .footnotes .footnote-back-link > sup {
|
.ck-content .footnotes .footnote-back-link > sup {
|
||||||
margin-right: 0;
|
margin-inline-end: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content .footnote-item:before {
|
.ck-content .footnote-item:before {
|
||||||
@@ -1055,8 +1064,8 @@ svg.ck-icon .note-icon {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
min-width: fit-content;
|
min-width: fit-content;
|
||||||
position: relative;
|
position: relative;
|
||||||
right: 0.2em;
|
inset-inline-end: 0.2em;
|
||||||
text-align: right;
|
text-align: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content .footnote-content {
|
.ck-content .footnote-content {
|
||||||
@@ -1072,11 +1081,11 @@ svg.ck-icon .note-icon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#options-dialog input[type="number"] {
|
#options-dialog input[type="number"] {
|
||||||
text-align: right;
|
text-align: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.help-cards ul {
|
.help-cards ul {
|
||||||
padding-left: 20px;
|
padding-inline-start: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.help-cards kbd {
|
.help-cards kbd {
|
||||||
@@ -1095,7 +1104,6 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href
|
|||||||
|
|
||||||
.card {
|
.card {
|
||||||
color: inherit !important;
|
color: inherit !important;
|
||||||
background-color: inherit !important;
|
|
||||||
border-color: var(--main-border-color) !important;
|
border-color: var(--main-border-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1153,8 +1161,8 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href
|
|||||||
}
|
}
|
||||||
|
|
||||||
.toast.no-title .toast-body {
|
.toast.no-title .toast-body {
|
||||||
padding-left: 0;
|
padding-inline-start: 0;
|
||||||
padding-right: 0;
|
padding-inline-end: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toast.no-title .toast-header {
|
.toast.no-title .toast-header {
|
||||||
@@ -1274,8 +1282,8 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href
|
|||||||
#context-menu-cover.show {
|
#context-menu-cover.show {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
background: rgba(0, 0, 0, 0.1);
|
background: rgba(0, 0, 0, 0.1);
|
||||||
@@ -1288,8 +1296,8 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href
|
|||||||
|
|
||||||
body.mobile #context-menu-container.mobile-bottom-menu {
|
body.mobile #context-menu-container.mobile-bottom-menu {
|
||||||
position: fixed !important;
|
position: fixed !important;
|
||||||
left: 0 !important;
|
inset-inline-start: 0 !important;
|
||||||
right: 0 !important;
|
inset-inline-end: 0 !important;
|
||||||
bottom: 0 !important;
|
bottom: 0 !important;
|
||||||
top: unset !important;
|
top: unset !important;
|
||||||
max-height: 70vh;
|
max-height: 70vh;
|
||||||
@@ -1339,7 +1347,7 @@ body.desktop li.dropdown-submenu:hover > ul.dropdown-menu {
|
|||||||
|
|
||||||
.dropdown-submenu > .dropdown-menu {
|
.dropdown-submenu > .dropdown-menu {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: calc(100% - 2px); /* -2px, otherwise there's a small gap between menu and submenu where the hover can disappear */
|
inset-inline-start: calc(100% - 2px); /* -2px, otherwise there's a small gap between menu and submenu where the hover can disappear */
|
||||||
margin-top: -10px;
|
margin-top: -10px;
|
||||||
min-width: 15rem;
|
min-width: 15rem;
|
||||||
/* to make submenu scrollable https://github.com/zadam/trilium/issues/3136 */
|
/* to make submenu scrollable https://github.com/zadam/trilium/issues/3136 */
|
||||||
@@ -1348,7 +1356,7 @@ body.desktop li.dropdown-submenu:hover > ul.dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
||||||
left: calc(-100% + 10px);
|
inset-inline-start: calc(-100% + 10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-dropdown-widget {
|
.right-dropdown-widget {
|
||||||
@@ -1414,7 +1422,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
|
|
||||||
.ck.ck-slash-command-button__text-part,
|
.ck.ck-slash-command-button__text-part,
|
||||||
.ck.ck-template-form__text-part {
|
.ck.ck-template-form__text-part {
|
||||||
margin-left: 0.5em;
|
margin-inline-start: 0.5em;
|
||||||
line-height: 1.2em !important;
|
line-height: 1.2em !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1445,8 +1453,8 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.area-expander-text {
|
.area-expander-text {
|
||||||
padding-left: 20px;
|
padding-inline-start: 20px;
|
||||||
padding-right: 20px;
|
padding-inline-end: 20px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1492,7 +1500,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: none;
|
border: none;
|
||||||
color: var(--launcher-pane-text-color);
|
color: var(--launcher-pane-text-color);
|
||||||
background: transparent;
|
background-color: transparent;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1533,16 +1541,16 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
position: fixed !important;
|
position: fixed !important;
|
||||||
bottom: calc(var(--mobile-bottom-offset) + var(--launcher-pane-size)) !important;
|
bottom: calc(var(--mobile-bottom-offset) + var(--launcher-pane-size)) !important;
|
||||||
top: unset !important;
|
top: unset !important;
|
||||||
left: 0 !important;
|
inset-inline-start: 0 !important;
|
||||||
right: 0 !important;
|
inset-inline-end: 0 !important;
|
||||||
transform: unset !important;
|
transform: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#mobile-sidebar-container {
|
#mobile-sidebar-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
transition: background-color 250ms ease-in-out;
|
transition: background-color 250ms ease-in-out;
|
||||||
@@ -1557,7 +1565,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
#mobile-sidebar-wrapper {
|
#mobile-sidebar-wrapper {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
width: 85vw;
|
width: 85vw;
|
||||||
padding-top: env(safe-area-inset-top);
|
padding-top: env(safe-area-inset-top);
|
||||||
@@ -1589,8 +1597,8 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
body.mobile .modal-dialog {
|
body.mobile .modal-dialog {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
max-height: 85vh;
|
max-height: 85vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1748,12 +1756,12 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-left: 10px;
|
margin-inline-start: 10px;
|
||||||
margin-right: 5px;
|
margin-inline-end: 5px;
|
||||||
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
#right-pane .card-header {
|
#right-pane .card-header {
|
||||||
background: inherit;
|
|
||||||
padding: 6px 0 3px 0;
|
padding: 6px 0 3px 0;
|
||||||
width: 99%; /* to give minimal right margin */
|
width: 99%; /* to give minimal right margin */
|
||||||
background-color: var(--button-background-color);
|
background-color: var(--button-background-color);
|
||||||
@@ -1789,7 +1797,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#right-pane .card-body ul {
|
#right-pane .card-body ul {
|
||||||
padding-left: 25px;
|
padding-inline-start: 25px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1800,12 +1808,15 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.note-split {
|
.note-split {
|
||||||
margin-left: auto;
|
/* Limits the maximum width of the note */
|
||||||
margin-right: auto;
|
--max-content-width: var(--preferred-max-content-width);
|
||||||
|
|
||||||
|
margin-inline-start: auto;
|
||||||
|
margin-inline-end: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note-split.full-content-width {
|
.note-split.full-content-width {
|
||||||
max-width: 999999px;
|
--max-content-width: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.close:hover {
|
button.close:hover {
|
||||||
@@ -1820,7 +1831,7 @@ button.close:hover {
|
|||||||
.reference-link .bx {
|
.reference-link .bx {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
margin-right: 3px;
|
margin-inline-end: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.options-section:first-of-type h4 {
|
.options-section:first-of-type h4 {
|
||||||
@@ -1858,7 +1869,7 @@ textarea {
|
|||||||
|
|
||||||
.attachment-help-button {
|
.attachment-help-button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 10px;
|
margin-inline-start: 10px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
@@ -1966,7 +1977,7 @@ textarea {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body.electron.platform-darwin:not(.native-titlebar) .tab-row-container {
|
body.electron.platform-darwin:not(.native-titlebar) .tab-row-container {
|
||||||
padding-left: 1em;
|
padding-inline-start: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tab-row-left-spacer {
|
#tab-row-left-spacer {
|
||||||
@@ -1974,8 +1985,12 @@ body.electron.platform-darwin:not(.native-titlebar) .tab-row-container {
|
|||||||
-webkit-app-region: drag;
|
-webkit-app-region: drag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.electron.platform-darwin:not(.native-titlebar) #tab-row-left-spacer {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
.tab-row-widget {
|
.tab-row-widget {
|
||||||
padding-right: calc(100vw - env(titlebar-area-width, 100vw));
|
padding-inline-end: calc(100vw - env(titlebar-area-width, 100vw));
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-row-container .toggle-button {
|
.tab-row-container .toggle-button {
|
||||||
@@ -2021,13 +2036,16 @@ body.zen #right-pane,
|
|||||||
body.zen #mobile-sidebar-wrapper,
|
body.zen #mobile-sidebar-wrapper,
|
||||||
body.zen .tab-row-container,
|
body.zen .tab-row-container,
|
||||||
body.zen .tab-row-widget,
|
body.zen .tab-row-widget,
|
||||||
body.zen .ribbon-container:not(:has(.classic-toolbar-widget.visible)),
|
body.zen .shared-info-widget,
|
||||||
body.zen .ribbon-container:has(.classic-toolbar-widget.visible) .ribbon-top-row,
|
body.zen .ribbon-container:not(:has(.classic-toolbar-widget)),
|
||||||
body.zen .ribbon-container .ribbon-body:not(:has(.classic-toolbar-widget.visible)),
|
body.zen .ribbon-container:has(.classic-toolbar-widget) .ribbon-top-row,
|
||||||
|
body.zen .ribbon-container .ribbon-body:not(:has(.classic-toolbar-widget)),
|
||||||
body.zen .note-icon-widget,
|
body.zen .note-icon-widget,
|
||||||
body.zen .title-row .icon-action,
|
body.zen .title-row .icon-action,
|
||||||
|
body.zen .promoted-attributes-widget,
|
||||||
body.zen .floating-buttons-children > *:not(.bx-edit-alt),
|
body.zen .floating-buttons-children > *:not(.bx-edit-alt),
|
||||||
body.zen .action-button {
|
body.zen .action-button,
|
||||||
|
body.zen .note-split:not(.type-book) .note-list-widget {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2038,7 +2056,7 @@ body.zen .split-note-container-widget > .gutter {
|
|||||||
body.zen #launcher-pane {
|
body.zen #launcher-pane {
|
||||||
position: absolute !important;
|
position: absolute !important;
|
||||||
top: 0 !important;
|
top: 0 !important;
|
||||||
right: 0 !important;
|
inset-inline-end: 0 !important;
|
||||||
width: 64px !important;
|
width: 64px !important;
|
||||||
height: 64px !important;
|
height: 64px !important;
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
@@ -2049,8 +2067,8 @@ body.zen .title-row {
|
|||||||
display: block !important;
|
display: block !important;
|
||||||
height: unset !important;
|
height: unset !important;
|
||||||
-webkit-app-region: drag;
|
-webkit-app-region: drag;
|
||||||
padding-left: env(titlebar-area-x);
|
padding-inline-start: env(titlebar-area-x);
|
||||||
padding-right: calc(100vw - env(titlebar-area-width, 100vw) + 2.5em);
|
padding-inline-end: calc(100vw - env(titlebar-area-width, 100vw) + 2.5em);
|
||||||
}
|
}
|
||||||
|
|
||||||
body.zen .floating-buttons {
|
body.zen .floating-buttons {
|
||||||
@@ -2058,7 +2076,7 @@ body.zen .floating-buttons {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body.zen .floating-buttons-children {
|
body.zen .floating-buttons-children {
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.zen .floating-buttons-children .button-widget {
|
body.zen .floating-buttons-children .button-widget {
|
||||||
@@ -2071,12 +2089,121 @@ body.zen .note-title-widget,
|
|||||||
body.zen .note-title-widget input {
|
body.zen .note-title-widget input {
|
||||||
font-size: 1rem !important;
|
font-size: 1rem !important;
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.zen #detail-container {
|
body.zen #detail-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.zen .note-split:not(.full-content-width) .scrolling-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
scroll-behavior: unset !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split:not(.full-content-width) .note-detail {
|
||||||
|
margin: auto;
|
||||||
|
padding-bottom: 25vh;
|
||||||
|
max-width: var(--max-content-width);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split:not(.full-content-width) .scroll-padding-widget {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split.type-text {
|
||||||
|
position: relative;
|
||||||
|
font-size: 1.15em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen:not(.backdrop-effects-disabled) .note-split.type-text .title-row {
|
||||||
|
--start-color: var(--main-background-color);
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
background: linear-gradient(var(--start-color) 30%, transparent 100%);
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (background: color-mix(in srgb, white, transparent)) {
|
||||||
|
body.zen .note-split.type-text .title-row {
|
||||||
|
--start-color: color-mix(in srgb, var(--main-background-color), transparent 10%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split.type-text .scrolling-container {
|
||||||
|
--padding-bottom: 130px; /* Should be enough to avoid caret being hidden by the formatting toolbar */
|
||||||
|
|
||||||
|
/* (Usually) keeps the caret above the fixed toolbar */
|
||||||
|
scroll-padding-bottom: var(--padding-bottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen:not(.backdrop-effects-disabled) .note-split.type-text .scrolling-container {
|
||||||
|
--padding-top: 50px; /* Should be enough to cover the title row */
|
||||||
|
|
||||||
|
padding-top: var(--padding-top);
|
||||||
|
scroll-padding-top: var(--padding-top);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fixed formatting toolbar */
|
||||||
|
|
||||||
|
body.zen .note-split .ribbon-container {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
bottom: 20px;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
opacity: 0; /* Hidden unless the current note split is focused */
|
||||||
|
pointer-events: none;
|
||||||
|
transition: opacity 100ms linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split:focus-within .ribbon-container {
|
||||||
|
opacity: 1; /* Show when the note split is focused */
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split .ribbon-container .ribbon-body {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split .ribbon-container .classic-toolbar-widget {
|
||||||
|
margin: auto;
|
||||||
|
width: fit-content;
|
||||||
|
box-shadow: 0px 10px 20px rgba(0, 0, 0, .1);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid var(--main-border-color);
|
||||||
|
padding: 4px;
|
||||||
|
background: var(--menu-background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split .ribbon-container .classic-toolbar-widget:not(:has(> .ck-toolbar)) {
|
||||||
|
/* Hide the toolbar wrapper if the toolbar is missing */
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split:focus-within .ribbon-container .classic-toolbar-widget {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1300px) {
|
||||||
|
body.zen .note-split .ribbon-container .classic-toolbar-widget {
|
||||||
|
/* Set the toolbar to full with */
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .classic-toolbar-widget .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,
|
||||||
|
body.zen .classic-toolbar-widget .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw,
|
||||||
|
body.zen .classic-toolbar-widget .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,
|
||||||
|
body.zen .classic-toolbar-widget .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,
|
||||||
|
body.zen .classic-toolbar-widget .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s {
|
||||||
|
/* Force toolbar items overflow dropdowns open upwards */
|
||||||
|
top: auto;
|
||||||
|
bottom: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Content renderer */
|
/* Content renderer */
|
||||||
|
|
||||||
footer.file-footer,
|
footer.file-footer,
|
||||||
@@ -2217,7 +2344,7 @@ footer.webview-footer button {
|
|||||||
.chat-input {
|
.chat-input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
resize: none;
|
resize: none;
|
||||||
padding-right: 40px;
|
padding-inline-end: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-buttons {
|
.chat-buttons {
|
||||||
@@ -2273,14 +2400,13 @@ footer.webview-footer button {
|
|||||||
|
|
||||||
.admonition {
|
.admonition {
|
||||||
--accent-color: var(--card-border-color);
|
--accent-color: var(--card-border-color);
|
||||||
|
background: color-mix(in srgb, var(--accent-color) 15%, transparent);
|
||||||
border: 1px solid var(--accent-color);
|
border: 1px solid var(--accent-color);
|
||||||
box-shadow: var(--card-box-shadow);
|
|
||||||
background: var(--card-background-color);
|
|
||||||
border-radius: 0.5em;
|
border-radius: 0.5em;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
margin: 1.25em 0;
|
margin: 1.25em 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 2.5em;
|
padding-inline-start: 2.5em;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2293,7 +2419,7 @@ footer.webview-footer button {
|
|||||||
font-family: boxicons !important;
|
font-family: boxicons !important;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 1em;
|
top: 1em;
|
||||||
left: 1em;
|
inset-inline-start: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.admonition.note { --accent-color: var(--admonition-note-accent-color); }
|
.admonition.note { --accent-color: var(--admonition-note-accent-color); }
|
||||||
@@ -2319,18 +2445,18 @@ footer.webview-footer button {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin-right: 15px;
|
margin-inline-end: 15px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-option input[type="checkbox"] {
|
.chat-option input[type="checkbox"] {
|
||||||
margin-right: 5px;
|
margin-inline-end: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Style for thinking process in chat responses */
|
/* Style for thinking process in chat responses */
|
||||||
.thinking-process {
|
.thinking-process {
|
||||||
background-color: rgba(0, 0, 0, 0.05);
|
background-color: rgba(0, 0, 0, 0.05);
|
||||||
border-left: 3px solid var(--main-text-color);
|
border-inline-start: 3px solid var(--main-text-color);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@@ -2338,23 +2464,23 @@ footer.webview-footer button {
|
|||||||
|
|
||||||
.thinking-step {
|
.thinking-step {
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
padding-left: 10px;
|
padding-inline-start: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thinking-step.observation {
|
.thinking-step.observation {
|
||||||
border-left: 2px solid #69c7ff;
|
border-inline-start: 2px solid #69c7ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thinking-step.hypothesis {
|
.thinking-step.hypothesis {
|
||||||
border-left: 2px solid #9839f7;
|
border-inline-start: 2px solid #9839f7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thinking-step.evidence {
|
.thinking-step.evidence {
|
||||||
border-left: 2px solid #40c025;
|
border-inline-start: 2px solid #40c025;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thinking-step.conclusion {
|
.thinking-step.conclusion {
|
||||||
border-left: 2px solid #e2aa03;
|
border-inline-start: 2px solid #e2aa03;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2369,17 +2495,17 @@ footer.webview-footer button {
|
|||||||
|
|
||||||
.content-floating-buttons.top-left {
|
.content-floating-buttons.top-left {
|
||||||
top: 10px;
|
top: 10px;
|
||||||
left: 10px;
|
inset-inline-start: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-floating-buttons.bottom-left {
|
.content-floating-buttons.bottom-left {
|
||||||
bottom: 10px;
|
bottom: 10px;
|
||||||
left: 10px;
|
inset-inline-start: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-floating-buttons.bottom-right {
|
.content-floating-buttons.bottom-right {
|
||||||
bottom: 10px;
|
bottom: 10px;
|
||||||
right: 10px;
|
inset-inline-end: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-floating-buttons button.bx {
|
.content-floating-buttons button.bx {
|
||||||
@@ -2394,7 +2520,7 @@ footer.webview-footer button {
|
|||||||
transform: rotate(180deg);
|
transform: rotate(180deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* CK Edito */
|
/* CK Editor */
|
||||||
|
|
||||||
/* Insert text snippet: limit the width of the listed items to avoid overly long names */
|
/* Insert text snippet: limit the width of the listed items to avoid overly long names */
|
||||||
:root body.desktop div.ck-template-form li.ck-list__item .ck-template-form__text-part > span {
|
:root body.desktop div.ck-template-form li.ck-list__item .ck-template-form__text-part > span {
|
||||||
@@ -2410,4 +2536,32 @@ footer.webview-footer button {
|
|||||||
.revision-diff-removed {
|
.revision-diff-removed {
|
||||||
background: rgba(255, 100, 100, 0.5);
|
background: rgba(255, 100, 100, 0.5);
|
||||||
text-decoration: line-through;
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe.print-iframe {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -600px;
|
||||||
|
right: -600px;
|
||||||
|
bottom: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.excalidraw.theme--dark canvas {
|
||||||
|
--theme-filter: invert(100%) hue-rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scrolling container */
|
||||||
|
|
||||||
|
.scrolling-container:has(> :is(.note-detail.full-height, .note-list-widget.full-height)) {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scrolling-container > .note-detail.full-height,
|
||||||
|
.scrolling-container > .note-list-widget.full-height {
|
||||||
|
position: relative;
|
||||||
|
flex-grow: 1;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
@@ -67,13 +67,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabulator div.tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
.tabulator div.tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||||
margin-left: var(--cell-editing-border-width);
|
margin-inline-start: var(--cell-editing-border-width);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabulator div.tabulator-header .tabulator-col,
|
.tabulator div.tabulator-header .tabulator-col,
|
||||||
.tabulator div.tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
.tabulator div.tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||||
background: var(--col-header-background-color);
|
background: var(--col-header-background-color);
|
||||||
border-right: var(--col-header-separator-border);
|
border-inline-end: var(--col-header-separator-border);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Table body */
|
/* Table body */
|
||||||
@@ -90,8 +90,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell input {
|
.tabulator-row .tabulator-cell input {
|
||||||
padding-left: var(--cell-horiz-padding-size) !important;
|
padding-inline-start: var(--cell-horiz-padding-size) !important;
|
||||||
padding-right: var(--cell-horiz-padding-size) !important;
|
padding-inline-end: var(--cell-horiz-padding-size) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabulator-row {
|
.tabulator-row {
|
||||||
@@ -117,12 +117,12 @@
|
|||||||
/* Cell */
|
/* Cell */
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {
|
.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {
|
||||||
margin-right: var(--cell-editing-border-width);
|
margin-inline-end: var(--cell-editing-border-width);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left,
|
.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left,
|
||||||
.tabulator-row .tabulator-cell {
|
.tabulator-row .tabulator-cell {
|
||||||
border-right-color: transparent;
|
border-inline-end-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell:not(.tabulator-editable) {
|
.tabulator-row .tabulator-cell:not(.tabulator-editable) {
|
||||||
@@ -156,14 +156,14 @@
|
|||||||
/* Align items without children/expander to the ones with. */
|
/* Align items without children/expander to the ones with. */
|
||||||
.tabulator-cell[tabulator-field="title"] > span:first-child, /* 1st level */
|
.tabulator-cell[tabulator-field="title"] > span:first-child, /* 1st level */
|
||||||
.tabulator-cell[tabulator-field="title"] > div:first-child + span { /* sub-level */
|
.tabulator-cell[tabulator-field="title"] > div:first-child + span { /* sub-level */
|
||||||
padding-left: 21px;
|
padding-inline-start: 21px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Checkbox cells */
|
/* Checkbox cells */
|
||||||
|
|
||||||
.tabulator .tabulator-cell:has(svg),
|
.tabulator .tabulator-cell:has(svg),
|
||||||
.tabulator .tabulator-cell:has(input[type="checkbox"]) {
|
.tabulator .tabulator-cell:has(input[type="checkbox"]) {
|
||||||
padding-left: 8px;
|
padding-inline-start: 8px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|||||||
@@ -82,6 +82,17 @@ body ::-webkit-calendar-picker-indicator {
|
|||||||
filter: invert(1);
|
filter: invert(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#left-pane .fancytree-node.tinted {
|
||||||
|
--custom-color: var(--dark-theme-custom-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .reference-link,
|
||||||
|
:root .reference-link:hover,
|
||||||
|
.ck-content a.reference-link > span,
|
||||||
|
.board-note {
|
||||||
|
color: var(--dark-theme-custom-color, inherit);
|
||||||
|
}
|
||||||
|
|
||||||
.excalidraw.theme--dark {
|
.excalidraw.theme--dark {
|
||||||
--theme-filter: invert(80%) hue-rotate(180deg) !important;
|
--theme-filter: invert(80%) hue-rotate(180deg) !important;
|
||||||
}
|
}
|
||||||
@@ -97,3 +108,4 @@ body .todo-list input[type="checkbox"]:not(:checked):before {
|
|||||||
.ck-content pre {
|
.ck-content pre {
|
||||||
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.6) !important;
|
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.6) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,3 +81,14 @@ html {
|
|||||||
--mermaid-theme: default;
|
--mermaid-theme: default;
|
||||||
--native-titlebar-background: #ffffff00;
|
--native-titlebar-background: #ffffff00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#left-pane .fancytree-node.tinted {
|
||||||
|
--custom-color: var(--light-theme-custom-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .reference-link,
|
||||||
|
:root .reference-link:hover,
|
||||||
|
.ck-content a.reference-link > span,
|
||||||
|
.board-note {
|
||||||
|
color: var(--light-theme-custom-color, inherit);
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
--native-titlebar-background: #00000000;
|
--native-titlebar-background: #00000000;
|
||||||
--window-background-color-bgfx: transparent; /* When background effects enabled */
|
--window-background-color-bgfx: transparent; /* When background effects enabled */
|
||||||
|
|
||||||
--main-background-color: #272727;
|
--main-background-color: #242424;
|
||||||
--main-text-color: #ccc;
|
--main-text-color: #ccc;
|
||||||
--main-border-color: #454545;
|
--main-border-color: #454545;
|
||||||
--subtle-border-color: #313131;
|
--subtle-border-color: #313131;
|
||||||
@@ -160,9 +160,15 @@
|
|||||||
--launcher-pane-horiz-background-color-bgfx: #ffffff17; /* When background effects enabled */
|
--launcher-pane-horiz-background-color-bgfx: #ffffff17; /* When background effects enabled */
|
||||||
--launcher-pane-horiz-border-color-bgfx: #00000080; /* When background effects enabled */
|
--launcher-pane-horiz-border-color-bgfx: #00000080; /* When background effects enabled */
|
||||||
|
|
||||||
|
--global-menu-update-available-badge-background-color: #7dbe61;
|
||||||
|
--global-menu-update-available-badge-color: black;
|
||||||
|
|
||||||
--protected-session-active-icon-color: #8edd8e;
|
--protected-session-active-icon-color: #8edd8e;
|
||||||
--sync-status-error-pulse-color: #f47871;
|
--sync-status-error-pulse-color: #f47871;
|
||||||
|
|
||||||
|
--center-pane-vert-layout-background-color-bgfx: #0c0c0c69;
|
||||||
|
--center-pane-horiz-layout-background-color-bgfx: #1e1e1ec7;
|
||||||
|
|
||||||
--right-pane-heading-color: gray;
|
--right-pane-heading-color: gray;
|
||||||
|
|
||||||
--root-background: var(--left-pane-background-color);
|
--root-background: var(--left-pane-background-color);
|
||||||
@@ -189,9 +195,9 @@
|
|||||||
--badge-background-color: #ffffff1a;
|
--badge-background-color: #ffffff1a;
|
||||||
--badge-text-color: var(--muted-text-color);
|
--badge-text-color: var(--muted-text-color);
|
||||||
|
|
||||||
--promoted-attribute-card-background-color: var(--card-background-color);
|
--promoted-attribute-card-background-color: #ffffff21;
|
||||||
--promoted-attribute-card-shadow-color: #000000b3;
|
--promoted-attribute-card-shadow: none;
|
||||||
|
|
||||||
--floating-button-shadow-color: #00000080;
|
--floating-button-shadow-color: #00000080;
|
||||||
--floating-button-background-color: #494949d2;
|
--floating-button-background-color: #494949d2;
|
||||||
--floating-button-color: var(--button-text-color);
|
--floating-button-color: var(--button-text-color);
|
||||||
@@ -205,6 +211,8 @@
|
|||||||
--floating-button-hide-button-background: #00000029;
|
--floating-button-hide-button-background: #00000029;
|
||||||
--floating-button-hide-button-color: #ffffff63;
|
--floating-button-hide-button-color: #ffffff63;
|
||||||
|
|
||||||
|
--right-pane-background-color: var(--main-background-color);
|
||||||
|
--right-pane-background-color-bgfx: #0c0c0c24; /* Only for the vertical layout */
|
||||||
--right-pane-item-hover-background: #ffffff26;
|
--right-pane-item-hover-background: #ffffff26;
|
||||||
--right-pane-item-hover-color: white;
|
--right-pane-item-hover-color: white;
|
||||||
|
|
||||||
@@ -222,10 +230,9 @@
|
|||||||
--code-block-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.6);
|
--code-block-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.6);
|
||||||
|
|
||||||
--card-background-color: #ffffff12;
|
--card-background-color: #ffffff12;
|
||||||
--card-background-hover-color: #3c3c3c;
|
--card-background-hover-color: #ffffff20;
|
||||||
--card-background-press-color: #464646;
|
--card-border-color: transparent;
|
||||||
--card-border-color: #222222;
|
--card-box-shadow: none;
|
||||||
--card-box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
|
|
||||||
|
|
||||||
--calendar-color: var(--menu-text-color);
|
--calendar-color: var(--menu-text-color);
|
||||||
--calendar-weekday-labels-color: var(--muted-text-color);
|
--calendar-weekday-labels-color: var(--muted-text-color);
|
||||||
@@ -265,6 +272,22 @@
|
|||||||
* Dark color scheme tweaks
|
* Dark color scheme tweaks
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#left-pane .fancytree-node.tinted {
|
||||||
|
--custom-color: var(--dark-theme-custom-color);
|
||||||
|
|
||||||
|
/* The background color of the active item in the note tree.
|
||||||
|
* The --custom-color-hue variable contains the hue of the user-selected note color.
|
||||||
|
* This value is unset for gray tones. */
|
||||||
|
--custom-bg-color: hsl(var(--custom-color-hue), 20%, 33%, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .reference-link,
|
||||||
|
:root .reference-link:hover,
|
||||||
|
.ck-content a.reference-link > span,
|
||||||
|
.board-note {
|
||||||
|
color: var(--dark-theme-custom-color, inherit);
|
||||||
|
}
|
||||||
|
|
||||||
body ::-webkit-calendar-picker-indicator {
|
body ::-webkit-calendar-picker-indicator {
|
||||||
filter: invert(1);
|
filter: invert(1);
|
||||||
}
|
}
|
||||||
@@ -276,3 +299,9 @@ body ::-webkit-calendar-picker-indicator {
|
|||||||
body .todo-list input[type="checkbox"]:not(:checked):before {
|
body .todo-list input[type="checkbox"]:not(:checked):before {
|
||||||
border-color: var(--muted-text-color) !important;
|
border-color: var(--muted-text-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tinted-quick-edit-dialog {
|
||||||
|
--modal-background-color: hsl(var(--custom-color-hue), 8.8%, 11.2%);
|
||||||
|
--modal-border-color: hsl(var(--custom-color-hue), 9.4%, 25.1%);
|
||||||
|
--promoted-attribute-card-background-color: hsl(var(--custom-color-hue), 13.2%, 20.8%);
|
||||||
|
}
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
--left-pane-item-selected-color: black;
|
--left-pane-item-selected-color: black;
|
||||||
--left-pane-item-selected-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
|
--left-pane-item-selected-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
|
||||||
--left-pane-item-action-button-background: rgba(0, 0, 0, 0.11);
|
--left-pane-item-action-button-background: rgba(0, 0, 0, 0.11);
|
||||||
--left-pane-item-action-button-color: inherit;
|
--left-pane-item-action-button-color: var(--left-pane-text-color);
|
||||||
--left-pane-item-action-button-hover-background: white;
|
--left-pane-item-action-button-hover-background: white;
|
||||||
--left-pane-item-action-button-hover-shadow: 2px 2px 3px rgba(0, 0, 0, 0.15);
|
--left-pane-item-action-button-hover-shadow: 2px 2px 3px rgba(0, 0, 0, 0.15);
|
||||||
--left-pane-item-selected-action-button-hover-shadow: 2px 2px 10px rgba(0, 0, 0, 0.25);
|
--left-pane-item-selected-action-button-hover-shadow: 2px 2px 10px rgba(0, 0, 0, 0.25);
|
||||||
@@ -153,9 +153,15 @@
|
|||||||
--launcher-pane-horiz-background-color-bgfx: #ffffffb3; /* When background effects enabled */
|
--launcher-pane-horiz-background-color-bgfx: #ffffffb3; /* When background effects enabled */
|
||||||
--launcher-pane-horiz-border-color-bgfx: #00000026; /* When background effects enabled */
|
--launcher-pane-horiz-border-color-bgfx: #00000026; /* When background effects enabled */
|
||||||
|
|
||||||
|
--global-menu-update-available-badge-background-color: #4fa450;
|
||||||
|
--global-menu-update-available-badge-color: white;
|
||||||
|
|
||||||
--protected-session-active-icon-color: #16b516;
|
--protected-session-active-icon-color: #16b516;
|
||||||
--sync-status-error-pulse-color: #ff5528;
|
--sync-status-error-pulse-color: #ff5528;
|
||||||
|
|
||||||
|
--center-pane-vert-layout-background-color-bgfx: #ffffff75;
|
||||||
|
--center-pane-horiz-layout-background-color-bgfx: #ffffffd6;
|
||||||
|
|
||||||
--right-pane-heading-color: gray;
|
--right-pane-heading-color: gray;
|
||||||
|
|
||||||
--root-background: var(--left-pane-background-color);
|
--root-background: var(--left-pane-background-color);
|
||||||
@@ -177,13 +183,13 @@
|
|||||||
--inactive-tab-hover-background-color: #00000016;
|
--inactive-tab-hover-background-color: #00000016;
|
||||||
--inactive-tab-text-color: #4e4e4e;
|
--inactive-tab-text-color: #4e4e4e;
|
||||||
|
|
||||||
--alert-bar-background: #32637b29;
|
--alert-bar-background: #f9cf2b29;
|
||||||
|
|
||||||
--badge-background-color: #00000011;
|
--badge-background-color: #00000011;
|
||||||
--badge-text-color: var(--muted-text-color);
|
--badge-text-color: var(--muted-text-color);
|
||||||
|
|
||||||
--promoted-attribute-card-background-color: var(--card-background-color);
|
--promoted-attribute-card-background-color: #00000014;
|
||||||
--promoted-attribute-card-shadow-color: #00000033;
|
--promoted-attribute-card-shadow: none;
|
||||||
|
|
||||||
--floating-button-shadow-color: #00000042;
|
--floating-button-shadow-color: #00000042;
|
||||||
--floating-button-background-color: #eaeaeacc;
|
--floating-button-background-color: #eaeaeacc;
|
||||||
@@ -204,7 +210,9 @@
|
|||||||
--new-tab-button-hover-background: white;
|
--new-tab-button-hover-background: white;
|
||||||
--new-tab-button-hover-color: black;
|
--new-tab-button-hover-color: black;
|
||||||
|
|
||||||
--right-pane-item-hover-background: #ececec;
|
--right-pane-background-color: var(--main-background-color);
|
||||||
|
--right-pane-background-color-bgfx: #ffffff9e; /* Only for the vertical layout */
|
||||||
|
--right-pane-item-hover-background: #00000013;
|
||||||
--right-pane-item-hover-color: inherit;
|
--right-pane-item-hover-color: inherit;
|
||||||
|
|
||||||
--scrollbar-thumb-color: #0000005c;
|
--scrollbar-thumb-color: #0000005c;
|
||||||
@@ -220,12 +228,11 @@
|
|||||||
|
|
||||||
--code-block-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.1), 0px 0px 2px rgba(0, 0, 0, 0.2);
|
--code-block-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.1), 0px 0px 2px rgba(0, 0, 0, 0.2);
|
||||||
|
|
||||||
--card-background-color: var(--accented-background-color);
|
--card-background-color: #0000000d;
|
||||||
--card-background-hover-color: #f9f9f9;
|
--card-background-hover-color: #0000001c;
|
||||||
--card-background-press-color: #efefef;
|
--card-border-color: transparent;
|
||||||
--card-border-color: #eaeaea;
|
|
||||||
--card-shadow-color: rgba(0, 0, 0, 0.1);
|
--card-shadow-color: rgba(0, 0, 0, 0.1);
|
||||||
--card-box-shadow: 0 0 12px var(--card-shadow-color);
|
--card-box-shadow: none;
|
||||||
|
|
||||||
--calendar-color: var(--menu-text-color);
|
--calendar-color: var(--menu-text-color);
|
||||||
--calendar-weekday-labels-color: var(--muted-text-color);
|
--calendar-weekday-labels-color: var(--muted-text-color);
|
||||||
@@ -258,5 +265,19 @@
|
|||||||
--ck-editor-toolbar-button-on-color: black;
|
--ck-editor-toolbar-button-on-color: black;
|
||||||
--ck-editor-toolbar-button-on-shadow: none;
|
--ck-editor-toolbar-button-on-shadow: none;
|
||||||
--ck-editor-toolbar-dropdown-button-open-background: #0000000f;
|
--ck-editor-toolbar-dropdown-button-open-background: #0000000f;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#left-pane .fancytree-node.tinted {
|
||||||
|
--custom-color: var(--light-theme-custom-color);
|
||||||
|
|
||||||
|
/* The background color of the active item in the note tree.
|
||||||
|
* The --custom-color-hue variable contains the hue of the user-selected note color.
|
||||||
|
* This value is unset for gray tones. */
|
||||||
|
--custom-bg-color: hsl(var(--custom-color-hue), 37%, 89%, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tinted-quick-edit-dialog {
|
||||||
|
--modal-background-color: hsl(var(--custom-color-hue), 56%, 96%);
|
||||||
|
--modal-border-color: hsl(var(--custom-color-hue), 33%, 41%);
|
||||||
|
--promoted-attribute-card-background-color: hsl(var(--custom-color-hue), 40%, 88%);
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
@import url(./pages.css);
|
@import url(./pages.css);
|
||||||
@import url(./ribbon.css);
|
@import url(./ribbon.css);
|
||||||
@import url(./notes/text.css);
|
@import url(./notes/text.css);
|
||||||
|
@import url(./notes/canvas.css);
|
||||||
@import url(./notes/collections/table.css);
|
@import url(./notes/collections/table.css);
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
@@ -81,6 +82,21 @@
|
|||||||
|
|
||||||
/* Theme capabilities */
|
/* Theme capabilities */
|
||||||
--tab-note-icons: true;
|
--tab-note-icons: true;
|
||||||
|
--allow-background-effects: true;
|
||||||
|
|
||||||
|
/* To ensure that a tree item's custom color remains sufficiently contrasted and readable,
|
||||||
|
* the color is adjusted based on the current color scheme (light or dark). The lightness
|
||||||
|
* component of the color represented in the CIELAB color space, will be
|
||||||
|
* constrained to a certain percentage defined below.
|
||||||
|
*
|
||||||
|
* Note: the tree background may vary when background effects are enabled, so it is recommended
|
||||||
|
* to maintain a higher contrast margin than on the usual note tree solid background. */
|
||||||
|
|
||||||
|
/* The maximum perceptual lightness for the custom color in the light theme (%): */
|
||||||
|
--tree-item-light-theme-max-color-lightness: 60;
|
||||||
|
|
||||||
|
/* The minimum perceptual lightness for the custom color in the dark theme (%): */
|
||||||
|
--tree-item-dark-theme-min-color-lightness: 65;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.backdrop-effects-disabled {
|
body.backdrop-effects-disabled {
|
||||||
@@ -96,9 +112,10 @@ body.backdrop-effects-disabled {
|
|||||||
* supported when this class is used.
|
* supported when this class is used.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.dropdown-menu:not(.static) {
|
.dropdown-menu:not(.static),
|
||||||
|
:root .excalidraw .popover {
|
||||||
border-radius: var(--dropdown-border-radius);
|
border-radius: var(--dropdown-border-radius);
|
||||||
padding: var(--menu-padding-size) !important;
|
padding: var(--padding, var(--menu-padding-size)) !important;
|
||||||
font-size: 0.9rem !important;
|
font-size: 0.9rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,14 +131,16 @@ body.mobile .dropdown-menu .dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body.desktop .dropdown-menu::before,
|
body.desktop .dropdown-menu::before,
|
||||||
:root .ck.ck-dropdown__panel::before {
|
:root .ck.ck-dropdown__panel::before,
|
||||||
|
:root .excalidraw .popover::before,
|
||||||
|
body.zen .note-split .ribbon-container .classic-toolbar-widget::before {
|
||||||
content: "";
|
content: "";
|
||||||
backdrop-filter: var(--dropdown-backdrop-filter);
|
backdrop-filter: var(--dropdown-backdrop-filter);
|
||||||
border-radius: var(--dropdown-border-radius);
|
border-radius: var(--dropdown-border-radius);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
}
|
}
|
||||||
@@ -148,9 +167,17 @@ body.desktop .dropdown-submenu .dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-item,
|
.dropdown-item,
|
||||||
body.mobile .dropdown-submenu .dropdown-toggle {
|
body.mobile .dropdown-submenu .dropdown-toggle,
|
||||||
padding: 2px 2px 2px 8px !important;
|
.excalidraw .context-menu .context-menu-item {
|
||||||
padding-inline-end: 22px !important;
|
--menu-item-start-padding: 8px;
|
||||||
|
--menu-item-end-padding: 22px;
|
||||||
|
--menu-item-vertical-padding: 2px;
|
||||||
|
|
||||||
|
padding-top: var(--menu-item-vertical-padding) !important;
|
||||||
|
padding-bottom: var(--menu-item-vertical-padding) !important;
|
||||||
|
padding-inline-start: var(--menu-item-start-padding) !important;
|
||||||
|
padding-inline-end: var(--menu-item-end-padding) !important;
|
||||||
|
|
||||||
/* Note: the right padding should also accommodate the submenu arrow. */
|
/* Note: the right padding should also accommodate the submenu arrow. */
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
cursor: default !important;
|
cursor: default !important;
|
||||||
@@ -202,7 +229,8 @@ html body .dropdown-item[disabled] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Menu item keyboard shortcut */
|
/* Menu item keyboard shortcut */
|
||||||
.dropdown-item kbd {
|
.dropdown-item kbd,
|
||||||
|
.excalidraw .context-menu-item__shortcut {
|
||||||
font-family: unset !important;
|
font-family: unset !important;
|
||||||
font-size: unset !important;
|
font-size: unset !important;
|
||||||
color: var(--menu-item-keyboard-shortcut-color) !important;
|
color: var(--menu-item-keyboard-shortcut-color) !important;
|
||||||
@@ -211,21 +239,23 @@ html body .dropdown-item[disabled] {
|
|||||||
|
|
||||||
.dropdown-item span.keyboard-shortcut {
|
.dropdown-item span.keyboard-shortcut {
|
||||||
color: var(--menu-item-keyboard-shortcut-color) !important;
|
color: var(--menu-item-keyboard-shortcut-color) !important;
|
||||||
margin-left: 16px;
|
margin-inline-start: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-divider {
|
.dropdown-divider,
|
||||||
|
.excalidraw .context-menu hr {
|
||||||
position: relative;
|
position: relative;
|
||||||
border-color: transparent !important;
|
border-color: transparent !important;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-divider::after {
|
.dropdown-divider::after,
|
||||||
|
.excalidraw .context-menu hr::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
top: -1px;
|
top: -1px;
|
||||||
left: calc(0px - var(--menu-padding-size));
|
inset-inline-start: calc(0px - var(--menu-padding-size));
|
||||||
right: calc(0px - var(--menu-padding-size));
|
inset-inline-end: calc(0px - var(--menu-padding-size));
|
||||||
border-top: 1px solid var(--menu-item-delimiter-color);
|
border-top: 1px solid var(--menu-item-delimiter-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +267,7 @@ html body .dropdown-item[disabled] {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
margin: unset !important;
|
margin: unset !important;
|
||||||
border: unset !important;
|
border: unset !important;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
@@ -246,10 +276,16 @@ html body .dropdown-item[disabled] {
|
|||||||
color: var(--menu-item-arrow-color) !important;
|
color: var(--menu-item-arrow-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] .dropdown-menu:not([data-popper-placement="bottom-start"]) .dropdown-toggle::after {
|
||||||
|
content: "\ea4d" !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* Menu item group heading */
|
/* Menu item group heading */
|
||||||
|
|
||||||
/* The heading body */
|
/* The heading body */
|
||||||
.dropdown-menu h6 {
|
.dropdown-menu h6,
|
||||||
|
.excalidraw .dropdown-menu-container .dropdown-menu-group-title,
|
||||||
|
.excalidraw .dropdown-menu-container div[data-testid="canvas-background-label"] {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
padding: 1em 8px 14px 8px;
|
padding: 1em 8px 14px 8px;
|
||||||
@@ -260,12 +296,14 @@ html body .dropdown-item[disabled] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* The delimiter line */
|
/* The delimiter line */
|
||||||
.dropdown-menu h6::before {
|
.dropdown-menu h6::before,
|
||||||
|
.excalidraw .dropdown-menu-container .dropdown-menu-group-title::before,
|
||||||
|
.excalidraw .dropdown-menu-container div[data-testid="canvas-background-label"]::before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 8px;
|
bottom: 8px;
|
||||||
left: calc(0px - var(--menu-padding-size));
|
inset-inline-start: calc(0px - var(--menu-padding-size));
|
||||||
right: calc(0px - var(--menu-padding-size));
|
inset-inline-end: calc(0px - var(--menu-padding-size));
|
||||||
border-top: 1px solid var(--menu-item-delimiter-color);
|
border-top: 1px solid var(--menu-item-delimiter-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -357,13 +395,13 @@ li.dropdown-item a.dropdown-item-button:focus-visible {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#toast-container .toast:not(.no-title) .bx {
|
#toast-container .toast:not(.no-title) .bx {
|
||||||
margin-right: 0.5em;
|
margin-inline-end: 0.5em;
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
opacity: 0.85;
|
opacity: 0.85;
|
||||||
}
|
}
|
||||||
|
|
||||||
#toast-container .toast.no-title .bx {
|
#toast-container .toast.no-title .bx {
|
||||||
margin-right: 0;
|
margin-inline-end: 0;
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -449,13 +487,21 @@ li.dropdown-item a.dropdown-item-button:focus-visible {
|
|||||||
--note-list-vertical-padding: 15px;
|
--note-list-vertical-padding: 15px;
|
||||||
background-color: var(--card-background-color);
|
background-color: var(--card-background-color);
|
||||||
border: 1px solid var(--card-border-color) !important;
|
border: 1px solid var(--card-border-color) !important;
|
||||||
box-shadow: 2px 3px 4px var(--card-shadow-color);
|
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 5px 10px 5px 0;
|
margin: 5px 10px 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:root .note-list .note-book-card:hover {
|
||||||
|
background-color: var(--card-background-hover-color);
|
||||||
|
transition: background-color 200ms ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .note-list.grid-view .note-book-card:active {
|
||||||
|
transform: scale(.98);
|
||||||
|
}
|
||||||
|
|
||||||
.note-list.list-view .note-book-card {
|
.note-list.list-view .note-book-card {
|
||||||
box-shadow: 0 0 3px var(--card-shadow-color);
|
box-shadow: 0 0 3px var(--card-shadow-color);
|
||||||
}
|
}
|
||||||
@@ -464,10 +510,6 @@ li.dropdown-item a.dropdown-item-button:focus-visible {
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note-list-wrapper .note-book-card:active {
|
|
||||||
background-color: var(--card-background-press-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-list-wrapper .note-book-card a {
|
.note-list-wrapper .note-book-card a {
|
||||||
color: inherit !important;
|
color: inherit !important;
|
||||||
}
|
}
|
||||||
@@ -549,7 +591,6 @@ li.dropdown-item a.dropdown-item-button:focus-visible {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.note-list.grid-view .note-book-card:hover {
|
.note-list.grid-view .note-book-card:hover {
|
||||||
background: var(--card-background-color) !important;
|
|
||||||
filter: contrast(105%);
|
filter: contrast(105%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-left: 8px;
|
margin-inline-start: 8px;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal .modal-header .help-button {
|
.modal .modal-header .help-button {
|
||||||
margin-right: 0;
|
margin-inline-end: 0;
|
||||||
font-size: calc(var(--modal-control-button-size) * .75);
|
font-size: calc(var(--modal-control-button-size) * .75);
|
||||||
font-family: unset;
|
font-family: unset;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@@ -141,7 +141,7 @@ div.tn-tool-dialog {
|
|||||||
|
|
||||||
/* Search box wrapper */
|
/* Search box wrapper */
|
||||||
.jump-to-note-dialog .input-group {
|
.jump-to-note-dialog .input-group {
|
||||||
margin-right: 16px;
|
margin-inline-end: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.jump-to-note-dialog .input-group:hover {
|
.jump-to-note-dialog .input-group:hover {
|
||||||
@@ -197,8 +197,8 @@ div.tn-tool-dialog {
|
|||||||
border: unset;
|
border: unset;
|
||||||
padding-top: var(--timeline-item-top-padding);
|
padding-top: var(--timeline-item-top-padding);
|
||||||
padding-bottom: var(--timeline-item-bottom-padding);
|
padding-bottom: var(--timeline-item-bottom-padding);
|
||||||
padding-left: calc(var(--timeline-left-gap) + var(--timeline-right-gap));
|
padding-inline-start: calc(var(--timeline-left-gap) + var(--timeline-right-gap));
|
||||||
padding-right: var(--timeline-left-gap);
|
padding-inline-end: var(--timeline-left-gap);
|
||||||
color: var(--active-item-text-color);
|
color: var(--active-item-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,7 +259,7 @@ div.tn-tool-dialog {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
top: var(--connector-top, 0);
|
top: var(--connector-top, 0);
|
||||||
left: calc(var(--timeline-left-gap) + ((var(--timeline-bullet-size) - var(--timeline-connector-size)) / 2));
|
inset-inline-start: calc(var(--timeline-left-gap) + ((var(--timeline-bullet-size) - var(--timeline-connector-size)) / 2));
|
||||||
bottom: var(--connector-bottom, 0);
|
bottom: var(--connector-bottom, 0);
|
||||||
width: var(--timeline-connector-size);
|
width: var(--timeline-connector-size);
|
||||||
border-radius: var(--connector-radius, 0) var(--connector-radius, 0) 0 0;
|
border-radius: var(--connector-radius, 0) var(--connector-radius, 0) 0 0;
|
||||||
@@ -291,7 +291,7 @@ div.tn-tool-dialog {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
top: calc(var(--timeline-item-top-padding) + var(--timeline-bullet-vertical-pos));
|
top: calc(var(--timeline-item-top-padding) + var(--timeline-bullet-vertical-pos));
|
||||||
left: var(--timeline-left-gap);
|
inset-inline-start: var(--timeline-left-gap);
|
||||||
width: var(--timeline-bullet-size);
|
width: var(--timeline-bullet-size);
|
||||||
height: var(--timeline-bullet-size);
|
height: var(--timeline-bullet-size);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
@@ -374,7 +374,7 @@ div.tn-tool-dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.help-dialog .help-cards kbd:first-child {
|
.help-dialog .help-cards kbd:first-child {
|
||||||
margin-left: 0;
|
margin-inline-start: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inline code - used for Markdown samples */
|
/* Inline code - used for Markdown samples */
|
||||||
@@ -392,7 +392,8 @@ div.tn-tool-dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.delete-notes-list .note-path {
|
.delete-notes-list .note-path {
|
||||||
padding-left: 8px;
|
padding-inline-start: 8px;
|
||||||
|
color: var(--muted-text-color)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -401,7 +402,7 @@ div.tn-tool-dialog {
|
|||||||
|
|
||||||
/* Labels */
|
/* Labels */
|
||||||
.attr-edit-table th {
|
.attr-edit-table th {
|
||||||
padding-right: 12px;
|
padding-inline-end: 12px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
@@ -419,5 +420,5 @@ div.tn-tool-dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.note-type-chooser-dialog div.note-type-dropdown .dropdown-item span.bx {
|
.note-type-chooser-dialog div.note-type-dropdown .dropdown-item span.bx {
|
||||||
margin-right: .25em;
|
margin-inline-end: .25em;
|
||||||
}
|
}
|
||||||
@@ -62,7 +62,7 @@ button.btn.btn-secondary span.bx,
|
|||||||
button.btn.btn-sm span.bx,
|
button.btn.btn-sm span.bx,
|
||||||
button.btn.btn-success span.bx {
|
button.btn.btn-success span.bx {
|
||||||
color: var(--cmd-button-icon-color);
|
color: var(--cmd-button-icon-color);
|
||||||
padding-right: 0.35em;
|
padding-inline-end: 0.35em;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ button.btn.btn-primary kbd,
|
|||||||
button.btn.btn-secondary kbd,
|
button.btn.btn-secondary kbd,
|
||||||
button.btn.btn-sm kbd,
|
button.btn.btn-sm kbd,
|
||||||
button.btn.btn-success kbd {
|
button.btn.btn-success kbd {
|
||||||
margin-left: 0.5em;
|
margin-inline-start: 0.5em;
|
||||||
background: var(--cmd-button-keyboard-shortcut-background);
|
background: var(--cmd-button-keyboard-shortcut-background);
|
||||||
color: var(--cmd-button-keyboard-shortcut-color);
|
color: var(--cmd-button-keyboard-shortcut-color);
|
||||||
font-size: 0.6em;
|
font-size: 0.6em;
|
||||||
@@ -102,7 +102,7 @@ button.btn.btn-success kbd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn-group .tn-tool-button + .tn-tool-button {
|
.btn-group .tn-tool-button + .tn-tool-button {
|
||||||
margin-left: 4px !important;
|
margin-inline-start: 4px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The "x" icon button */
|
/* The "x" icon button */
|
||||||
@@ -237,7 +237,7 @@ input::selection,
|
|||||||
outline-offset: 6px;
|
outline-offset: 6px;
|
||||||
background: var(--input-background-color);
|
background: var(--input-background-color);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding-right: 8px;
|
padding-inline-end: 8px;
|
||||||
color: var(--quick-search-color);
|
color: var(--quick-search-color);
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
@@ -357,13 +357,20 @@ select.form-control,
|
|||||||
|
|
||||||
outline: 3px solid transparent;
|
outline: 3px solid transparent;
|
||||||
outline-offset: 6px;
|
outline-offset: 6px;
|
||||||
padding-right: calc(15px + 1.5rem);
|
padding-inline-end: calc(15px + 1.5rem);
|
||||||
background: var(--input-background-color) var(--dropdown-arrow);
|
background: var(--input-background-color) var(--dropdown-arrow);;
|
||||||
color: var(--input-text-color);
|
color: var(--input-text-color);
|
||||||
border: unset;
|
border: unset;
|
||||||
border-radius: 0.375rem;
|
border-radius: 0.375rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] select,
|
||||||
|
body[dir=rtl] select.form-select,
|
||||||
|
body[dir=rtl] select.form-control,
|
||||||
|
body[dir=rtl] .select-button.dropdown-toggle.btn {
|
||||||
|
background-position: left 0.75rem center;
|
||||||
|
}
|
||||||
|
|
||||||
select:hover,
|
select:hover,
|
||||||
select.form-select:hover,
|
select.form-select:hover,
|
||||||
select.form-control:hover,
|
select.form-control:hover,
|
||||||
@@ -444,7 +451,7 @@ optgroup {
|
|||||||
content: "\eae1";
|
content: "\eae1";
|
||||||
width: 2em;
|
width: 2em;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
font-family: boxicons;
|
font-family: boxicons;
|
||||||
@@ -462,7 +469,7 @@ optgroup {
|
|||||||
--box-label-gap: 0.5em;
|
--box-label-gap: 0.5em;
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: calc(var(--box-size) + var(--box-label-gap)) !important;
|
padding-inline-start: calc(var(--box-size) + var(--box-label-gap)) !important;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,7 +478,7 @@ optgroup {
|
|||||||
label.tn-checkbox > input[type="checkbox"] {
|
label.tn-checkbox > input[type="checkbox"] {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
width: var(--box-size);
|
width: var(--box-size);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: unset;
|
margin: unset;
|
||||||
@@ -485,7 +492,7 @@ optgroup {
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
translate: 0 -50%;
|
translate: 0 -50%;
|
||||||
width: var(--box-size);
|
width: var(--box-size);
|
||||||
height: var(--box-size);
|
height: var(--box-size);
|
||||||
|
|||||||
@@ -19,11 +19,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.chat-message.user-message {
|
.chat-message.user-message {
|
||||||
margin-left: auto;
|
margin-inline-start: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message.assistant-message {
|
.chat-message.assistant-message {
|
||||||
margin-right: auto;
|
margin-inline-end: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message-avatar {
|
.message-avatar {
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-right: 8px;
|
margin-inline-end: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-message .message-avatar {
|
.user-message .message-avatar {
|
||||||
|
|||||||
261
apps/client/src/stylesheets/theme-next/notes/canvas.css
Normal file
261
apps/client/src/stylesheets/theme-next/notes/canvas.css
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
:root .excalidraw {
|
||||||
|
--ui-font: var(--main-font-family);
|
||||||
|
|
||||||
|
|
||||||
|
/* Button hover background color */
|
||||||
|
--button-hover-bg: var(--hover-item-background-color);
|
||||||
|
--color-surface-high: var(--hover-item-background-color);
|
||||||
|
|
||||||
|
|
||||||
|
--button-active-border: transparent;
|
||||||
|
--color-brand-active: transparent;
|
||||||
|
|
||||||
|
--color-surface-mid: transparent;
|
||||||
|
--color-surface-low: transparent;
|
||||||
|
|
||||||
|
/* Slider colors */
|
||||||
|
--color-slider-track: var(--menu-item-delimiter-color);
|
||||||
|
--color-slider-thumb: var(--muted-text-color);
|
||||||
|
|
||||||
|
/* Selected button icon fill color */
|
||||||
|
--color-on-primary-container: var(--ck-editor-toolbar-button-on-color);
|
||||||
|
--color-primary: var(--ck-editor-toolbar-button-on-color);
|
||||||
|
|
||||||
|
/* Selected button icon background color */
|
||||||
|
--color-surface-primary-container: var(--ck-editor-toolbar-button-on-background);
|
||||||
|
--color-primary-light: var(--ck-editor-toolbar-button-on-background);
|
||||||
|
|
||||||
|
--island-bg-color: var(--floating-button-background-color);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark theme tweaks */
|
||||||
|
|
||||||
|
:root body .excalidraw.theme--dark {
|
||||||
|
--color-surface-high: transparent;
|
||||||
|
--color-brand-hover: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .excalidraw.theme--dark.excalidraw .App-mobile-menu,
|
||||||
|
:root .excalidraw.theme--dark.excalidraw .App-menu__left {
|
||||||
|
--button-hover-bg: var(--hover-item-background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .excalidraw.theme--dark.excalidraw .dropdown-menu-button:hover {
|
||||||
|
--background: var(--hover-item-background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backdrop blur pseudo-element */
|
||||||
|
.Island:not(.App-menu__left)::before,
|
||||||
|
.excalidraw .picker::before,
|
||||||
|
:root .App-menu__left > .panelColumn > fieldset::before,
|
||||||
|
:root .App-menu__left > .panelColumn > label::before,
|
||||||
|
:root .App-menu__left > .panelColumn > div:has(> *)::before {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: inherit;
|
||||||
|
backdrop-filter: blur(10px) saturate(6);
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Note's root */
|
||||||
|
|
||||||
|
:root .type-canvas {
|
||||||
|
--floating-buttons-vert-offset: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Context menus */
|
||||||
|
|
||||||
|
/* Context menu - outer wrapper */
|
||||||
|
:root .excalidraw .popover {
|
||||||
|
--padding: 0;
|
||||||
|
|
||||||
|
max-width: unset;
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: var(--main-font-family);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menu - inner wrapper */
|
||||||
|
:root .excalidraw .popover > .context-menu {
|
||||||
|
margin: 0;
|
||||||
|
padding: 8px !important;
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-x: hidden;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menu item */
|
||||||
|
:root .excalidraw .context-menu .context-menu-item {
|
||||||
|
--menu-item-start-padding: 22px;
|
||||||
|
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menu item icon */
|
||||||
|
:root .excalidraw .dropdown-menu-item__icon {
|
||||||
|
color: var(--menu-item-icon-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menu item label */
|
||||||
|
:root .excalidraw .context-menu-item__label,
|
||||||
|
:root .excalidraw .context-menu-item.dangerous .context-menu-item__label {
|
||||||
|
color: var(--menu-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .excalidraw .context-menu-item:hover .context-menu-item__label {
|
||||||
|
color: var(--hover-item-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menu item keyboard shortcut */
|
||||||
|
:root .excalidraw .context-menu-item__shortcut {
|
||||||
|
padding: 0;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menu separator */
|
||||||
|
.excalidraw .context-menu .context-menu-item-separator {
|
||||||
|
margin: 8px 0;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Main menu */
|
||||||
|
|
||||||
|
/* Hide separators - no longer needed as the menu group headers feature a delimiter line */
|
||||||
|
.excalidraw .Island.dropdown-menu-container>div:not(:has(>*)) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Menu group header */
|
||||||
|
.excalidraw .dropdown-menu-container .dropdown-menu-group-title,
|
||||||
|
.excalidraw .Island.dropdown-menu-container div[data-testid="canvas-background-label"] {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
|
||||||
|
.excalidraw .App-menu.App-menu_top {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.excalidraw .App-menu.App-menu_top .App-menu_top__left {
|
||||||
|
/* Fixes a layout glitch with the header when the options panel is visbile */
|
||||||
|
--gap: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The parent element of the "Library" button */
|
||||||
|
.excalidraw .App-menu.App-menu_top > div:nth-child(3) {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Panels */
|
||||||
|
|
||||||
|
.excalidraw .zoom-actions,
|
||||||
|
.undo-redo-buttons {
|
||||||
|
box-shadow: 1px 1px 1px var(--floating-button-shadow-color);
|
||||||
|
backdrop-filter: blur(10px) saturate(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .excalidraw .main-menu-trigger,
|
||||||
|
:root .excalidraw .sidebar-trigger,
|
||||||
|
:root .excalidraw .help-icon {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Selected color outline */
|
||||||
|
:root .excalidraw .color-picker__button.active .color-picker__button-outline {
|
||||||
|
box-shadow: 0 0 0 2px var(--input-focus-outline-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .excalidraw .buttonList label.active {
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Options panel */
|
||||||
|
|
||||||
|
.excalidraw .Island.App-menu__left {
|
||||||
|
box-shadow: none;
|
||||||
|
background: transparent;
|
||||||
|
backdrop-filter: none;
|
||||||
|
width: 13.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body[dir=ltr] .excalidraw .Island.App-menu__left {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] .excalidraw .Island.App-menu__left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root .App-menu__left > .panelColumn {
|
||||||
|
row-gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Options panel card */
|
||||||
|
:root .App-menu__left > .panelColumn > fieldset,
|
||||||
|
:root .App-menu__left > .panelColumn > label,
|
||||||
|
:root .App-menu__left > .panelColumn > div:has(> *) {
|
||||||
|
position: relative;
|
||||||
|
margin: 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 1px 1px 1px var(--floating-button-shadow-color);
|
||||||
|
background: var(--floating-button-background-color);
|
||||||
|
padding: 8px 12px;
|
||||||
|
|
||||||
|
/* backdrop: blur() creates a new stacking context that prevents some popovers like the
|
||||||
|
* arrowheads picker from being positioned correctly. To workaround this, the backdrop blur
|
||||||
|
* effect is applyed using a pseudo-element instead. */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Options panel card title */
|
||||||
|
:root .App-menu__left fieldset > legend,
|
||||||
|
:root .App-menu__left div > h3,
|
||||||
|
:root .App-menu__left > .panelColumn > label {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: .65rem;
|
||||||
|
letter-spacing: 1pt;
|
||||||
|
color: var(--muted-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Options panel button bar */
|
||||||
|
:root .excalidraw .App-menu__left .buttonList {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Picker */
|
||||||
|
body[dir=ltr] .excalidraw .App-menu__left .buttonList .picker {
|
||||||
|
translate: -80% 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Properties panel */
|
||||||
|
|
||||||
|
body[dir=ltr] .excalidraw .exc-stats {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] .excalidraw .exc-stats {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sidebar */
|
||||||
|
|
||||||
|
.split-note-container-widget > .component.type-canvas:has(.excalidraw-container > .Island.default-sidebar) > .floating-buttons {
|
||||||
|
/* Hide the floating buttons when the sidebar is open */
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pickers */
|
||||||
|
|
||||||
|
.excalidraw .picker {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
@@ -117,9 +117,9 @@
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: var(--negative-padding);
|
top: var(--negative-padding);
|
||||||
right: var(--negative-padding);
|
inset-inline-end: var(--negative-padding);
|
||||||
bottom: var(--negative-padding);
|
bottom: var(--negative-padding);
|
||||||
left: var(--negative-padding);
|
inset-inline-start: var(--negative-padding);
|
||||||
border-radius: var(--dropdown-border-radius);
|
border-radius: var(--dropdown-border-radius);
|
||||||
backdrop-filter: var(--dropdown-backdrop-filter);
|
backdrop-filter: var(--dropdown-backdrop-filter);
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
@@ -210,7 +210,7 @@
|
|||||||
/* Separator */
|
/* Separator */
|
||||||
:root .ck .ck-list__separator {
|
:root .ck .ck-list__separator {
|
||||||
margin: .5em 0;
|
margin: .5em 0;
|
||||||
margin-left: calc(0px - var(--ck-editor-popup-padding));
|
margin-inline-start: calc(0px - var(--ck-editor-popup-padding));
|
||||||
width: calc(100% + (var(--ck-editor-popup-padding) * 2));
|
width: calc(100% + (var(--ck-editor-popup-padding) * 2));
|
||||||
background: var(--menu-item-delimiter-color);
|
background: var(--menu-item-delimiter-color);
|
||||||
}
|
}
|
||||||
@@ -233,8 +233,8 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: var(--negative-padding);
|
bottom: var(--negative-padding);
|
||||||
left: var(--negative-padding);
|
inset-inline-start: var(--negative-padding);
|
||||||
right: var(--negative-padding);
|
inset-inline-end: var(--negative-padding);
|
||||||
border-top: 1px solid var(--ck-editor-popup-border-color);
|
border-top: 1px solid var(--ck-editor-popup-border-color);
|
||||||
background: var(--menu-section-background-color);
|
background: var(--menu-section-background-color);
|
||||||
}
|
}
|
||||||
@@ -255,12 +255,7 @@
|
|||||||
|
|
||||||
:root .ck.ck-toolbar .ck.ck-toolbar__separator {
|
:root .ck.ck-toolbar .ck.ck-toolbar__separator {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border-left: 1px solid var(--ck-color-toolbar-border);
|
border-inline-start: 1px solid var(--ck-color-toolbar-border);
|
||||||
}
|
|
||||||
|
|
||||||
/* The last separator of the toolbar */
|
|
||||||
:root .classic-toolbar-widget .ck.ck-toolbar__separator:last-of-type {
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Heading dropdown */
|
/* Heading dropdown */
|
||||||
@@ -354,7 +349,8 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
padding-right: 2em;
|
background: color-mix(in srgb, var(--accent) 15%, var(--main-background-color));
|
||||||
|
padding-inline-end: 2em;
|
||||||
border: 1px solid var(--accent);
|
border: 1px solid var(--accent);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
@@ -492,7 +488,7 @@ button.ck.ck-button:is(.ck-button-action, .ck-button-save, .ck-button-cancel).ck
|
|||||||
/* Move the label above the text box regardless of the text box state */
|
/* Move the label above the text box regardless of the text box state */
|
||||||
transform: translate(0, calc(-.2em - var(--ck-input-label-height))) !important;
|
transform: translate(0, calc(-.2em - var(--ck-input-label-height))) !important;
|
||||||
|
|
||||||
padding-left: 0 !important;
|
padding-inline-start: 0 !important;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
font-size: .85em;
|
font-size: .85em;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -556,7 +552,7 @@ pre button.copy-button.icon-action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
:root pre:has(> button.copy-button) {
|
:root pre:has(> button.copy-button) {
|
||||||
padding-right: calc(var(--icon-button-size) + (var(--copy-button-margin-size) * 2));
|
padding-inline-end: calc(var(--icon-button-size) + (var(--copy-button-margin-size) * 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
|
html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
|
||||||
@@ -615,12 +611,12 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
|
|||||||
|
|
||||||
.ck-content blockquote:before {
|
.ck-content blockquote:before {
|
||||||
content: "“";
|
content: "“";
|
||||||
left: 0.2em;
|
inset-inline-start: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content blockquote:after {
|
.ck-content blockquote:after {
|
||||||
content: "”";
|
content: "”";
|
||||||
right: 0.35em;
|
inset-inline-end: 0.35em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ck-content h2,
|
.ck-content h2,
|
||||||
@@ -665,4 +661,30 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
|
|||||||
.ck-content .table > figcaption {
|
.ck-content .table > figcaption {
|
||||||
background: var(--accented-background-color);
|
background: var(--accented-background-color);
|
||||||
color: var(--main-text-color);
|
color: var(--main-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reference link */
|
||||||
|
|
||||||
|
.ck-content a.reference-link,
|
||||||
|
.ck-content a.reference-link:hover {
|
||||||
|
/* Apply underline only to the span inside the link so it can follow the
|
||||||
|
* target note's user defined color */
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ck-content a.reference-link > span {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read-only text content
|
||||||
|
*/
|
||||||
|
|
||||||
|
.note-detail-readonly-text:focus-visible {
|
||||||
|
outline: 2px solid var(--input-focus-outline-color);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note-list-widget {
|
||||||
|
outline: 0 !important;
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
}
|
}
|
||||||
.google-login-btn img {
|
.google-login-btn img {
|
||||||
margin-right: 10px;
|
margin-inline-end: 10px;
|
||||||
width: 18px;
|
width: 18px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
|
|
||||||
/* Button bar */
|
/* Button bar */
|
||||||
.search-definition-widget .search-setting-table tbody:last-child div {
|
.search-definition-widget .search-setting-table tbody:last-child div {
|
||||||
justify-content: flex-end !important;
|
justify-content: flex-end;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
.sql-table-schemas-widget .sql-table-schemas button:hover,
|
.sql-table-schemas-widget .sql-table-schemas button:hover,
|
||||||
.sql-table-schemas-widget .sql-table-schemas button:active,
|
.sql-table-schemas-widget .sql-table-schemas button:active,
|
||||||
.sql-table-schemas-widget .sql-table-schemas button:focus-visible {
|
.sql-table-schemas-widget .sql-table-schemas button:focus-visible {
|
||||||
--background: var(--card-background-press-color);
|
--background: var(--card-background-hover-color);
|
||||||
--color: var(--main-text-color);
|
--color: var(--main-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,8 +123,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* The container */
|
/* The container */
|
||||||
div.note-detail-empty {
|
|
||||||
max-width: 70%;
|
.note-split.empty-note {
|
||||||
|
--max-content-width: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note-split.empty-note div.note-detail {
|
||||||
margin: 50px auto;
|
margin: 50px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +152,7 @@ div.note-detail-empty {
|
|||||||
--options-card-min-width: 500px;
|
--options-card-min-width: 500px;
|
||||||
--options-card-max-width: 900px;
|
--options-card-max-width: 900px;
|
||||||
--options-card-padding: 17px;
|
--options-card-padding: 17px;
|
||||||
--options-title-font-size: 1rem;
|
--options-title-font-size: .75rem;
|
||||||
--options-title-offset: 13px;
|
--options-title-offset: 13px;
|
||||||
}
|
}
|
||||||
/* Create a gap at the top of the option pages */
|
/* Create a gap at the top of the option pages */
|
||||||
@@ -173,16 +177,19 @@ div.note-detail-empty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.options-section:not(.tn-no-card) {
|
.options-section:not(.tn-no-card) {
|
||||||
margin: auto;
|
margin-bottom: calc(var(--options-title-offset) + 26px) !important;
|
||||||
border-radius: 12px;
|
|
||||||
border: 1px solid var(--card-border-color) !important;
|
|
||||||
box-shadow: var(--card-box-shadow);
|
box-shadow: var(--card-box-shadow);
|
||||||
|
border: 1px solid var(--card-border-color) !important;
|
||||||
|
border-radius: 8px;
|
||||||
background: var(--card-background-color);
|
background: var(--card-background-color);
|
||||||
padding: var(--options-card-padding);
|
padding: var(--options-card-padding);
|
||||||
margin-bottom: calc(var(--options-title-offset) + 26px) !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body.desktop .option-section:not(.tn-no-card) {
|
body.prefers-centered-content .options-section:not(.tn-no-card) {
|
||||||
|
margin-inline: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.desktop .options-section:not(.tn-no-card) {
|
||||||
min-width: var(--options-card-min-width);
|
min-width: var(--options-card-min-width);
|
||||||
max-width: var(--options-card-max-width);
|
max-width: var(--options-card-max-width);
|
||||||
}
|
}
|
||||||
@@ -193,13 +200,20 @@ body.desktop .option-section:not(.tn-no-card) {
|
|||||||
padding-bottom: var(--default-padding);
|
padding-bottom: var(--default-padding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.options-section:not(.tn-no-card) h4,
|
||||||
|
.options-section:not(.tn-no-card) h5 {
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: .4pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.options-section:not(.tn-no-card) h4 {
|
.options-section:not(.tn-no-card) h4 {
|
||||||
font-size: var(--options-title-font-size);
|
font-size: var(--options-title-font-size);
|
||||||
font-weight: bold;
|
font-weight: 600;
|
||||||
color: var(--launcher-pane-text-color);
|
color: var(--launcher-pane-text-color);
|
||||||
margin-top: calc(-1 * var(--options-card-padding) - var(--options-title-font-size) - var(--options-title-offset)) !important;
|
margin-top: calc(-1 * var(--options-card-padding) - var(--options-title-font-size) - var(--options-title-offset)) !important;
|
||||||
margin-bottom: calc(var(--options-title-offset) + var(--options-card-padding)) !important;
|
margin-bottom: calc(var(--options-title-offset) + var(--options-card-padding)) !important;
|
||||||
margin-left: calc(-1 * var(--options-card-padding));
|
margin-inline-start: calc(-1 * var(--options-card-padding));
|
||||||
}
|
}
|
||||||
|
|
||||||
.options-section:not(.tn-no-card) h5 {
|
.options-section:not(.tn-no-card) h5 {
|
||||||
@@ -216,8 +230,8 @@ body.desktop .option-section:not(.tn-no-card) {
|
|||||||
.options-section hr {
|
.options-section hr {
|
||||||
--bs-border-width: 2px;
|
--bs-border-width: 2px;
|
||||||
|
|
||||||
margin-left: calc(var(--options-card-padding) * -1);
|
margin-inline-start: calc(var(--options-card-padding) * -1);
|
||||||
margin-right: calc(var(--options-card-padding) * -1);
|
margin-inline-end: calc(var(--options-card-padding) * -1);
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
color: var(--root-background);
|
color: var(--root-background);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
div.promoted-attributes-container {
|
div.promoted-attributes-container {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
|
margin-inline-start: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -95,7 +96,7 @@ div.promoted-attributes-container {
|
|||||||
/* Note type dropdown */
|
/* Note type dropdown */
|
||||||
|
|
||||||
ul.note-type-dropdown .check {
|
ul.note-type-dropdown .check {
|
||||||
margin-right: 6px;
|
margin-inline-end: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.note-type-dropdown li.dropdown-item {
|
ul.note-type-dropdown li.dropdown-item {
|
||||||
@@ -105,7 +106,7 @@ ul.note-type-dropdown li.dropdown-item {
|
|||||||
/* Editability dropdown */
|
/* Editability dropdown */
|
||||||
|
|
||||||
ul.editability-dropdown li.dropdown-item > div {
|
ul.editability-dropdown li.dropdown-item > div {
|
||||||
margin-left: 4px;
|
margin-inline-start: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.editability-dropdown .dropdown-item .description {
|
.editability-dropdown .dropdown-item .description {
|
||||||
@@ -142,12 +143,12 @@ ul.editability-dropdown li.dropdown-item > div {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.attribute-list .save-attributes-button {
|
.attribute-list .save-attributes-button {
|
||||||
right: 30px;
|
inset-inline-end: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note path in attribute detail dialog */
|
/* Note path in attribute detail dialog */
|
||||||
.attr-detail .note-path {
|
.attr-detail .note-path {
|
||||||
margin-left: 8px;
|
margin-inline-start: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--dropdown-backdrop-filter: blur(10px) saturate(6);
|
--dropdown-backdrop-filter: blur(20px) saturate(6);
|
||||||
--dropdown-border-radius: 10px;
|
--dropdown-border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
--native-titlebar-darwin-x-offset: 10;
|
--native-titlebar-darwin-x-offset: 10;
|
||||||
--native-titlebar-darwin-y-offset: 17 !important;
|
--native-titlebar-darwin-y-offset: 12 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.layout-horizontal {
|
body.layout-horizontal {
|
||||||
@@ -35,30 +35,53 @@ body.mobile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* #region Mica */
|
/* #region Mica */
|
||||||
|
|
||||||
body.background-effects.platform-win32 {
|
body.background-effects.platform-win32 {
|
||||||
|
/* Quirk: --background-material is read before "theme-supports-background-effects" class
|
||||||
|
* is applied. Apply the matterial even if the theme doesn't support it. */
|
||||||
--background-material: tabbed;
|
--background-material: tabbed;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.background-effects.theme-supports-background-effects.platform-win32 {
|
||||||
--launcher-pane-horiz-border-color: var(--launcher-pane-horiz-border-color-bgfx);
|
--launcher-pane-horiz-border-color: var(--launcher-pane-horiz-border-color-bgfx);
|
||||||
--launcher-pane-horiz-background-color: var(--launcher-pane-horiz-background-color-bgfx);
|
--launcher-pane-horiz-background-color: var(--launcher-pane-horiz-background-color-bgfx);
|
||||||
--launcher-pane-vert-background-color: var(--launcher-pane-vert-background-color-bgfx);
|
--launcher-pane-vert-background-color: var(--launcher-pane-vert-background-color-bgfx);
|
||||||
--tab-background-color: var(--window-background-color-bgfx);
|
--tab-background-color: var(--window-background-color-bgfx);
|
||||||
--new-tab-button-background: var(--window-background-color-bgfx);
|
--new-tab-button-background: var(--window-background-color-bgfx);
|
||||||
--active-tab-background-color: var(--launcher-pane-horiz-background-color);
|
--active-tab-background-color: var(--launcher-pane-horiz-background-color);
|
||||||
|
--root-background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.background-effects.platform-win32.layout-vertical {
|
body.background-effects.platform-win32.layout-vertical {
|
||||||
--left-pane-background-color: var(--window-background-color-bgfx);
|
|
||||||
--background-material: mica;
|
--background-material: mica;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.background-effects.platform-win32,
|
body.background-effects.theme-supports-background-effects.platform-win32.layout-vertical {
|
||||||
body.background-effects.platform-win32 #root-widget {
|
--left-pane-background-color: var(--window-background-color-bgfx);
|
||||||
|
--center-pane-background-color-bgfx: var(--center-pane-vert-layout-background-color-bgfx);
|
||||||
|
--right-pane-background-color: var(--right-pane-background-color-bgfx);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.background-effects.theme-supports-background-effects.platform-win32.layout-horizontal {
|
||||||
|
--center-pane-background-color-bgfx: var(--center-pane-horiz-layout-background-color-bgfx);
|
||||||
|
--gutter-color: var(--left-pane-background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.background-effects.theme-supports-background-effects.platform-win32,
|
||||||
|
body.background-effects.theme-supports-background-effects.platform-win32 #root-widget {
|
||||||
background: var(--window-background-color-bgfx) !important;
|
background: var(--window-background-color-bgfx) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.background-effects.platform-win32.layout-horizontal #horizontal-main-container,
|
body.background-effects.theme-supports-background-effects.platform-win32.layout-horizontal #horizontal-main-container,
|
||||||
body.background-effects.platform-win32.layout-vertical #vertical-main-container {
|
body.background-effects.theme-supports-background-effects.platform-win32.layout-vertical #vertical-main-container {
|
||||||
background-color: var(--root-background);
|
background-color: var(--root-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Note split with background effects */
|
||||||
|
body.background-effects.theme-supports-background-effects.platform-win32 #center-pane .note-split.bgfx {
|
||||||
|
--note-split-background-color: var(--center-pane-background-color-bgfx);
|
||||||
|
}
|
||||||
|
|
||||||
/* #endregion */
|
/* #endregion */
|
||||||
|
|
||||||
/* Matches when the left pane is collapsed */
|
/* Matches when the left pane is collapsed */
|
||||||
@@ -69,12 +92,24 @@ body.background-effects.platform-win32.layout-vertical #vertical-main-container
|
|||||||
|
|
||||||
/* Add a border to the vertical launch bar if collapsed. */
|
/* Add a border to the vertical launch bar if collapsed. */
|
||||||
body.layout-vertical #horizontal-main-container.left-pane-hidden #launcher-pane.vertical {
|
body.layout-vertical #horizontal-main-container.left-pane-hidden #launcher-pane.vertical {
|
||||||
border-right: 2px solid var(--left-pane-collapsed-border-color);
|
border-inline-end: 2px solid var(--left-pane-collapsed-border-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
body.background-effects.zen #root-widget {
|
/*
|
||||||
--main-background-color: transparent;
|
* Zen mode
|
||||||
--root-background: transparent;
|
*/
|
||||||
|
|
||||||
|
@keyframes zen-formatting-toolbar-entrance {
|
||||||
|
from {
|
||||||
|
transform: translateY(200%);
|
||||||
|
} to {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-split .ribbon-container .classic-toolbar-widget {
|
||||||
|
position: relative;
|
||||||
|
animation: zen-formatting-toolbar-entrance 300ms ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -100,7 +135,7 @@ body.layout-horizontal > .horizontal {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#launcher-container {
|
body[dir=ltr] #launcher-container {
|
||||||
scrollbar-gutter: stable both-edges;
|
scrollbar-gutter: stable both-edges;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,14 +314,11 @@ body.layout-horizontal > .horizontal {
|
|||||||
animation: sync-status-pulse 1s ease-in-out alternate-reverse infinite;
|
animation: sync-status-pulse 1s ease-in-out alternate-reverse infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
#launcher-pane .global-menu-button {
|
#launcher-pane button.global-menu-button {
|
||||||
--hover-item-background-color: transparent;
|
--update-badge-x-offset: 3%;
|
||||||
}
|
--update-badge-y-offset: -12%;
|
||||||
|
|
||||||
#launcher-pane.horizontal .global-menu-button .global-menu-button-update-available {
|
--hover-item-background-color: transparent;
|
||||||
right: -23px;
|
|
||||||
bottom: -22px;
|
|
||||||
transform: scale(0.85);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip .tooltip-arrow {
|
.tooltip .tooltip-arrow {
|
||||||
@@ -400,9 +432,9 @@ body.layout-horizontal > .horizontal {
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: var(--vertical-margin);
|
top: var(--vertical-margin);
|
||||||
right: var(--horiz-margin);
|
inset-inline-end: var(--horiz-margin);
|
||||||
bottom: var(--vertical-margin);
|
bottom: var(--vertical-margin);
|
||||||
left: var(--horiz-margin);
|
inset-inline-start: var(--horiz-margin);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
background: var(--calendar-day-highlight-background);
|
background: var(--calendar-day-highlight-background);
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
@@ -450,7 +482,7 @@ div.bookmark-folder-widget .note-link:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
div.bookmark-folder-widget .note-link a {
|
div.bookmark-folder-widget .note-link a {
|
||||||
padding-left: 8px;
|
padding-inline-start: 8px;
|
||||||
color: var(--menu-text-color);
|
color: var(--menu-text-color);
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
@@ -471,8 +503,8 @@ div.bookmark-folder-widget .note-link .bx {
|
|||||||
|
|
||||||
div.quick-search {
|
div.quick-search {
|
||||||
--padding-top: 8px;
|
--padding-top: 8px;
|
||||||
--padding-left: 8px;
|
--padding-inline-start: 8px;
|
||||||
--padding-right: 8px;
|
--padding-inline-end: 8px;
|
||||||
--padding-bottom: 8px;
|
--padding-bottom: 8px;
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -480,7 +512,7 @@ div.quick-search {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
height: unset;
|
height: unset;
|
||||||
contain: unset;
|
contain: unset;
|
||||||
padding: var(--padding-top) var(--padding-right) var(--padding-bottom) var(--padding-left);
|
padding: var(--padding-top) var(--padding-inline-end) var(--padding-bottom) var(--padding-inline-start);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.quick-search,
|
div.quick-search,
|
||||||
@@ -496,9 +528,9 @@ div.quick-search::before {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
top: var(--padding-top);
|
top: var(--padding-top);
|
||||||
left: var(--padding-left);
|
inset-inline-start: var(--padding-inline-start);
|
||||||
bottom: var(--padding-bottom);
|
bottom: var(--padding-bottom);
|
||||||
right: var(--padding-right);
|
inset-inline-end: var(--padding-inline-end);
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
border: 2px solid transparent;
|
border: 2px solid transparent;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
@@ -520,7 +552,7 @@ div.quick-search:focus-within:before {
|
|||||||
}
|
}
|
||||||
|
|
||||||
div.quick-search input {
|
div.quick-search input {
|
||||||
padding-left: 15px !important;
|
padding-inline-start: 15px !important;
|
||||||
box-shadow: unset !important;
|
box-shadow: unset !important;
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
}
|
}
|
||||||
@@ -539,7 +571,7 @@ div.quick-search .search-button {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 25px;
|
width: 25px;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
margin-right: 8px;
|
margin-inline-end: 8px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: var(--quick-search-color) !important;
|
color: var(--quick-search-color) !important;
|
||||||
@@ -631,18 +663,18 @@ body.layout-vertical.background-effects div.quick-search .dropdown-menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#left-pane .ui-fancytree ul {
|
#left-pane .ui-fancytree ul {
|
||||||
padding-left: 10px;
|
padding-inline-start: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The root element of the tree */
|
/* The root element of the tree */
|
||||||
#left-pane .fancytree-container > li:first-child > span {
|
#left-pane .fancytree-container > li:first-child > span {
|
||||||
padding-left: 12px;
|
padding-inline-start: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#left-pane span.fancytree-node.fancytree-active {
|
#left-pane span.fancytree-node.fancytree-active {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
color: var(--left-pane-item-selected-color) !important;
|
color: var(--custom-color, var(--left-pane-item-selected-color));
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes left-pane-item-select {
|
@keyframes left-pane-item-select {
|
||||||
@@ -658,10 +690,10 @@ body.layout-vertical.background-effects div.quick-search .dropdown-menu {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
top: var(--left-pane-item-selected-shadow-size);
|
top: var(--left-pane-item-selected-shadow-size);
|
||||||
left: var(--left-pane-item-selected-shadow-size);
|
inset-inline-start: var(--left-pane-item-selected-shadow-size);
|
||||||
bottom: var(--left-pane-item-selected-shadow-size);
|
bottom: var(--left-pane-item-selected-shadow-size);
|
||||||
right: var(--left-pane-item-selected-shadow-size);
|
inset-inline-end: var(--left-pane-item-selected-shadow-size);
|
||||||
background: var(--left-pane-item-selected-background) !important;
|
background: var(--custom-bg-color, var(--left-pane-item-selected-background)) !important;
|
||||||
box-shadow: var(--left-pane-item-selected-shadow);
|
box-shadow: var(--left-pane-item-selected-shadow);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
animation: left-pane-item-select 200ms ease-out;
|
animation: left-pane-item-select 200ms ease-out;
|
||||||
@@ -676,7 +708,7 @@ body.layout-vertical.background-effects div.quick-search .dropdown-menu {
|
|||||||
#left-pane span.fancytree-node.protected > span.fancytree-custom-icon:after {
|
#left-pane span.fancytree-node.protected > span.fancytree-custom-icon:after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
content: "\eb4a";
|
content: "\eb4a";
|
||||||
font-family: "boxicons";
|
font-family: "boxicons";
|
||||||
@@ -685,6 +717,10 @@ body.layout-vertical.background-effects div.quick-search .dropdown-menu {
|
|||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] #left-pane span.fancytree-node.protected > span.fancytree-custom-icon:after {
|
||||||
|
transform: translateX(-25%);
|
||||||
|
}
|
||||||
|
|
||||||
body.mobile .fancytree-expander::before,
|
body.mobile .fancytree-expander::before,
|
||||||
body.mobile .fancytree-title,
|
body.mobile .fancytree-title,
|
||||||
body.mobile .fancytree-node > span {
|
body.mobile .fancytree-node > span {
|
||||||
@@ -699,7 +735,7 @@ body.mobile .fancytree-node > span {
|
|||||||
body.mobile:not(.force-fixed-tree) #mobile-sidebar-wrapper {
|
body.mobile:not(.force-fixed-tree) #mobile-sidebar-wrapper {
|
||||||
border-top-right-radius: 12px;
|
border-top-right-radius: 12px;
|
||||||
border-bottom-right-radius: 12px;
|
border-bottom-right-radius: 12px;
|
||||||
border-right: 1px solid var(--subtle-border-color);
|
border-inline-end: 1px solid var(--subtle-border-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,9 +753,6 @@ body.mobile .fancytree-node > span {
|
|||||||
margin-top: 0; /* Use this to align the icon with the tree view item's caption */
|
margin-top: 0; /* Use this to align the icon with the tree view item's caption */
|
||||||
}
|
}
|
||||||
|
|
||||||
#left-pane span .fancytree-title {
|
|
||||||
margin-top: -5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#left-pane span.fancytree-active .fancytree-title {
|
#left-pane span.fancytree-active .fancytree-title {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
@@ -734,7 +767,7 @@ body.mobile .fancytree-node > span {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#left-pane .tree-item-button {
|
#left-pane .tree-item-button {
|
||||||
margin-right: 6px;
|
margin-inline-end: 6px;
|
||||||
border: unset;
|
border: unset;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: var(--left-pane-item-action-button-background);
|
background: var(--left-pane-item-action-button-background);
|
||||||
@@ -768,12 +801,12 @@ body.mobile .fancytree-node > span {
|
|||||||
/* Toolbar container (collapsed state) */
|
/* Toolbar container (collapsed state) */
|
||||||
#left-pane .tree-actions {
|
#left-pane .tree-actions {
|
||||||
max-width: var(--tree-actions-toolbar-collapsed-width);
|
max-width: var(--tree-actions-toolbar-collapsed-width);
|
||||||
right: var(--tree-actions-toolbar-horizontal-margin);
|
inset-inline-end: var(--tree-actions-toolbar-horizontal-margin);
|
||||||
bottom: var(--tree-actions-toolbar-vertical-margin);
|
bottom: var(--tree-actions-toolbar-vertical-margin);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
padding: var(--tree-actions-toolbar-padding-size);
|
padding: var(--tree-actions-toolbar-padding-size);
|
||||||
padding-right: var(--tree-actions-toolbar-collapsed-width);
|
padding-inline-end: var(--tree-actions-toolbar-collapsed-width);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
transition:
|
transition:
|
||||||
max-width 400ms ease-out,
|
max-width 400ms ease-out,
|
||||||
@@ -817,7 +850,7 @@ body.mobile .fancytree-node > span {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
right: calc((var(--tree-actions-toolbar-collapsed-width) - var(--tree-actions-toolbar-expand-button-size)) / 2);
|
inset-inline-end: calc((var(--tree-actions-toolbar-collapsed-width) - var(--tree-actions-toolbar-expand-button-size)) / 2);
|
||||||
width: var(--tree-actions-toolbar-expand-button-size);
|
width: var(--tree-actions-toolbar-expand-button-size);
|
||||||
height: var(--tree-actions-toolbar-expand-button-size);
|
height: var(--tree-actions-toolbar-expand-button-size);
|
||||||
box-shadow: 2px 2px 6px var(--left-pane-background-color);
|
box-shadow: 2px 2px 6px var(--left-pane-background-color);
|
||||||
@@ -906,8 +939,8 @@ body.electron.background-effects.layout-horizontal .tab-row-container .toggle-bu
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: -10px;
|
inset-inline-start: -10px;
|
||||||
right: -10px;
|
inset-inline-end: -10px;
|
||||||
top: 32px;
|
top: 32px;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
||||||
@@ -918,13 +951,13 @@ body.electron.background-effects.layout-horizontal .tab-row-container .tab-scrol
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.electron.background-effects.layout-horizontal .tab-row-container .tab-scroll-button-left:after,
|
body.electron.background-effects.layout-horizontal .tab-row-container .tab-scroll-button-inset-inline-start:after,
|
||||||
body.electron.background-effects.layout-horizontal .tab-row-container .tab-scroll-button-right:after {
|
body.electron.background-effects.layout-horizontal .tab-row-container .tab-scroll-button-inset-inline-end:after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0px;
|
inset-inline-start: 0px;
|
||||||
right: 0px;
|
inset-inline-end: 0px;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
||||||
}
|
}
|
||||||
@@ -933,9 +966,9 @@ body.electron.background-effects.layout-horizontal .tab-row-container .note-tab[
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: -32768px;
|
inset-inline-start: -32768px;
|
||||||
top: var(--tab-height);
|
top: var(--tab-height);
|
||||||
right: calc(100% - 1px);
|
inset-inline-end: calc(100% - 1px);
|
||||||
height: 1px;
|
height: 1px;
|
||||||
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
||||||
}
|
}
|
||||||
@@ -944,9 +977,9 @@ body.electron.background-effects.layout-horizontal .tab-row-container .note-tab[
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 100%;
|
inset-inline-start: 100%;
|
||||||
top: var(--tab-height);
|
top: var(--tab-height);
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
||||||
@@ -956,9 +989,9 @@ body.electron.background-effects.layout-horizontal .tab-row-container .note-new-
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: -4px;
|
inset-inline-start: -4px;
|
||||||
top: calc(var(--tab-height), -1);
|
top: calc(var(--tab-height), -1);
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
border-bottom: 1px solid var(--launcher-pane-horiz-border-color);
|
||||||
@@ -1045,18 +1078,18 @@ body.layout-horizontal .tab-row-widget .note-tab .note-tab-wrapper {
|
|||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
right: 0;
|
inset-inline-end: 0;
|
||||||
height: 3px;
|
height: 3px;
|
||||||
background-color: var(--workspace-tab-background-color);
|
background-color: var(--workspace-tab-background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-row-widget .note-tab:nth-child(1) {
|
body:not([dir=rtl]) .tab-row-widget .note-tab:nth-child(1) {
|
||||||
transform: translate3d(var(--tab-first-item-horiz-offset), 0, 0);
|
transform: translate3d(var(--tab-first-item-horiz-offset), 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
:root .tab-row-widget .note-tab .note-tab-icon {
|
:root .tab-row-widget .note-tab .note-tab-icon {
|
||||||
padding-right: 5px; /* The gap between the icon and the title */
|
padding-inline-end: 5px; /* The gap between the icon and the title */
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-row-widget .note-tab[active] .note-tab-icon {
|
.tab-row-widget .note-tab[active] .note-tab-icon {
|
||||||
@@ -1101,7 +1134,7 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab.note-tab-is-dragging .
|
|||||||
|
|
||||||
.tab-row-widget .note-new-tab {
|
.tab-row-widget .note-new-tab {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: 3px;
|
margin-inline-start: 3px;
|
||||||
color: transparent; /* Prevent the original "+" from being displayed */
|
color: transparent; /* Prevent the original "+" from being displayed */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1114,7 +1147,7 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab.note-tab-is-dragging .
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
top: calc((var(--tab-height) - var(--new-tab-button-size)) / 2);
|
top: calc((var(--tab-height) - var(--new-tab-button-size)) / 2);
|
||||||
left: calc((var(--tab-height) - var(--new-tab-button-size)) / 2);
|
inset-inline-start: calc((var(--tab-height) - var(--new-tab-button-size)) / 2);
|
||||||
width: var(--new-tab-button-size);
|
width: var(--new-tab-button-size);
|
||||||
height: var(--new-tab-button-size);
|
height: var(--new-tab-button-size);
|
||||||
background: var(--new-tab-button-background);
|
background: var(--new-tab-button-background);
|
||||||
@@ -1139,7 +1172,7 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab.note-tab-is-dragging .
|
|||||||
display: flex;
|
display: flex;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
content: "\ebc0";
|
content: "\ebc0";
|
||||||
left: 0;
|
inset-inline-start: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -1173,23 +1206,18 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab.note-tab-is-dragging .
|
|||||||
* CENTER PANE
|
* CENTER PANE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#center-pane {
|
/* The first visible note split */
|
||||||
background: var(--main-background-color);
|
.vertical-layout #center-pane .note-split:not(.visible ~ .visible) {
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-layout #center-pane {
|
|
||||||
border-radius: var(--center-pane-border-radius) 0 0 0;
|
border-radius: var(--center-pane-border-radius) 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note-split {
|
#center-pane .note-split {
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
animation: note-entrance 100ms linear;
|
background-color: var(--note-split-background-color, var(--main-background-color));
|
||||||
/* will-change: opacity; -- causes some weird artifacts to the note menu in split view */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.split-note-container-widget > .gutter {
|
body:not(.background-effects) #center-pane .note-split {
|
||||||
background: var(--root-background) !important;
|
animation: note-entrance 100ms linear;
|
||||||
transition: background 150ms ease-out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1202,9 +1230,9 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab.note-tab-is-dragging .
|
|||||||
|
|
||||||
@keyframes note-entrance {
|
@keyframes note-entrance {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
filter: opacity(0);
|
||||||
} to {
|
} to {
|
||||||
opacity: 1;
|
filter: opacity(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1221,23 +1249,23 @@ body.mobile .note-title {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title-row > *:first-child {
|
.title-row > *:first-child {
|
||||||
margin-right: 0;
|
margin-inline-end: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-row > *:nth-child(2) {
|
.title-row > *:nth-child(2) {
|
||||||
margin-left: 0;
|
margin-inline-start: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-row {
|
.title-row {
|
||||||
/* Aligns the "Create new split" button with the note menu button (the three dots button) */
|
/* Aligns the "Create new split" button with the note menu button (the three dots button) */
|
||||||
padding-right: 3px;
|
padding-inline-end: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note-title-widget input {
|
.note-title-widget input {
|
||||||
--input-background-color: transparent;
|
--input-background-color: transparent;
|
||||||
|
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
padding-left: 12px;
|
padding-inline-start: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The "Change note icon" button */
|
/* The "Change note icon" button */
|
||||||
@@ -1312,7 +1340,7 @@ body.mobile .note-title {
|
|||||||
/* The promoted attributes section */
|
/* The promoted attributes section */
|
||||||
div.promoted-attributes-container {
|
div.promoted-attributes-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-right: 10%;
|
margin-inline-end: 10%;
|
||||||
padding: 6px 0;
|
padding: 6px 0;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
@@ -1326,16 +1354,15 @@ div.promoted-attributes-container input {
|
|||||||
|
|
||||||
/* A promoted attribute card */
|
/* A promoted attribute card */
|
||||||
div.promoted-attribute-cell {
|
div.promoted-attribute-cell {
|
||||||
--pa-card-padding-left: 16px;
|
--pa-card-padding-inline-start: 16px;
|
||||||
--pa-card-padding-right: 2px;
|
--pa-card-padding-inline-end: 2px;
|
||||||
--input-background-color: transparent;
|
--input-background-color: transparent;
|
||||||
|
|
||||||
box-shadow: 1px 1px 2px var(--promoted-attribute-card-shadow-color);
|
box-shadow: var(--promoted-attribute-card-shadow);
|
||||||
|
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
padding: 2px var(--pa-card-padding-right) 2px var(--pa-card-padding-left);
|
padding: 2px var(--pa-card-padding-inline-end) 2px var(--pa-card-padding-inline-start);
|
||||||
background: var(--promoted-attribute-card-background-color);
|
background: var(--promoted-attribute-card-background-color);
|
||||||
overflow-y: visible;
|
overflow-y: visible;
|
||||||
}
|
}
|
||||||
@@ -1350,7 +1377,7 @@ div.promoted-attribute-cell {
|
|||||||
/* A promoted attribute card (boolean attribute) */
|
/* A promoted attribute card (boolean attribute) */
|
||||||
div.promoted-attribute-cell:has(input[type="checkbox"]):not(:has(.multiplicity > span)) {
|
div.promoted-attribute-cell:has(input[type="checkbox"]):not(:has(.multiplicity > span)) {
|
||||||
/* Checbox attribute, without multiplicity */
|
/* Checbox attribute, without multiplicity */
|
||||||
padding-right: var(--pa-card-padding-left);
|
padding-inline-end: var(--pa-card-padding-inline-start);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.promoted-attribute-cell > * {
|
div.promoted-attribute-cell > * {
|
||||||
@@ -1400,15 +1427,15 @@ div.promoted-attribute-cell .tn-checkbox {
|
|||||||
/* Relocate the checkbox before the label */
|
/* Relocate the checkbox before the label */
|
||||||
div.promoted-attribute-cell.promoted-attribute-label-boolean > div:first-of-type {
|
div.promoted-attribute-cell.promoted-attribute-label-boolean > div:first-of-type {
|
||||||
order: -1;
|
order: -1;
|
||||||
margin-right: 1.5em;
|
margin-inline-end: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The element containing the "new attribute" and "remove this attribute button" */
|
/* The element containing the "new attribute" and "remove this attribute button" */
|
||||||
div.promoted-attribute-cell .multiplicity:has(span) {
|
div.promoted-attribute-cell .multiplicity:has(span) {
|
||||||
--icon-button-size: 24px;
|
--icon-button-size: 24px;
|
||||||
|
|
||||||
margin-left: 8px;
|
margin-inline-start: 8px;
|
||||||
margin-right: calc(var(--pa-card-padding-left) - var(--pa-card-padding-right));
|
margin-inline-end: calc(var(--pa-card-padding-inline-start) - var(--pa-card-padding-inline-end));
|
||||||
font-size: 0; /* Prevent whitespaces creating a gap between buttons */
|
font-size: 0; /* Prevent whitespaces creating a gap between buttons */
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
@@ -1436,6 +1463,10 @@ div#center-pane .floating-buttons-children {
|
|||||||
opacity 250ms ease-out;
|
opacity 250ms ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] div#center-pane .floating-buttons-children {
|
||||||
|
transform-origin: left;
|
||||||
|
}
|
||||||
|
|
||||||
/* Floating buttons container (collapsed) */
|
/* Floating buttons container (collapsed) */
|
||||||
div#center-pane .floating-buttons-children.temporarily-hidden {
|
div#center-pane .floating-buttons-children.temporarily-hidden {
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
@@ -1547,7 +1578,7 @@ div.floating-buttons-children .close-floating-buttons {
|
|||||||
}
|
}
|
||||||
|
|
||||||
div.floating-buttons-children .close-floating-buttons {
|
div.floating-buttons-children .close-floating-buttons {
|
||||||
margin-left: 0 !important;
|
margin-inline-start: 0 !important;
|
||||||
background: var(--floating-button-hide-button-background);
|
background: var(--floating-button-hide-button-background);
|
||||||
color: var(--floating-button-hide-button-color);
|
color: var(--floating-button-hide-button-color);
|
||||||
}
|
}
|
||||||
@@ -1637,12 +1668,12 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.find-replace-widget .form-check {
|
.find-replace-widget .form-check {
|
||||||
padding-left: 0;
|
padding-inline-start: 0;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.find-replace-widget .form-check .form-check-input {
|
.find-replace-widget .form-check .form-check-input {
|
||||||
margin-left: 0;
|
margin-inline-start: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Narrow version */
|
/* Narrow version */
|
||||||
@@ -1662,13 +1693,13 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
|
|
||||||
.find-widget-box,
|
.find-widget-box,
|
||||||
.replace-widget-box {
|
.replace-widget-box {
|
||||||
padding-right: 3em !important;
|
padding-inline-end: 3em !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.find-widget-close-button {
|
.find-widget-close-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: .85em;
|
top: .85em;
|
||||||
right: .5em;
|
inset-inline-end: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.find-widget-box > * {
|
.find-widget-box > * {
|
||||||
@@ -1700,7 +1731,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.replace-widget-box > * {
|
.replace-widget-box > * {
|
||||||
margin-right: unset !important;
|
margin-inline-end: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.replace-widget-box button.btn.btn-sm {
|
div.replace-widget-box button.btn.btn-sm {
|
||||||
@@ -1714,7 +1745,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#right-pane {
|
#right-pane {
|
||||||
background: var(--main-background-color);
|
background: var(--right-pane-background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
#right-pane div.card-header {
|
#right-pane div.card-header {
|
||||||
@@ -1743,7 +1774,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
#right-pane .toc li,
|
#right-pane .toc li,
|
||||||
#right-pane .highlights-list li {
|
#right-pane .highlights-list li {
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
padding-right: 8px;
|
padding-inline-end: 8px;
|
||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
text-align: unset;
|
text-align: unset;
|
||||||
@@ -1782,10 +1813,6 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
--border-radius-lg: 6px;
|
--border-radius-lg: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.excalidraw .Island {
|
|
||||||
backdrop-filter: var(--dropdown-backdrop-filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
.excalidraw .Island.App-toolbar {
|
.excalidraw .Island.App-toolbar {
|
||||||
--island-bg-color: var(--floating-button-background-color);
|
--island-bg-color: var(--floating-button-background-color);
|
||||||
--shadow-island: 1px 1px 1px var(--floating-button-shadow-color);
|
--shadow-island: 1px 1px 1px var(--floating-button-shadow-color);
|
||||||
@@ -1806,8 +1833,8 @@ div.find-replace-widget div.find-widget-found-wrapper > span {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.excalidraw .dropdown-menu .dropdown-menu-container > div:not([class]):not(:last-child) {
|
.excalidraw .dropdown-menu .dropdown-menu-container > div:not([class]):not(:last-child) {
|
||||||
margin-left: calc(var(--padding) * var(--space-factor) * -1) !important;
|
margin-inline-start: calc(var(--padding) * var(--space-factor) * -1) !important;
|
||||||
margin-right: calc(var(--padding) * var(--space-factor) * -1) !important;
|
margin-inline-end: calc(var(--padding) * var(--space-factor) * -1) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.excalidraw .dropdown-menu:before {
|
.excalidraw .dropdown-menu:before {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
ul.fancytree-container {
|
ul.fancytree-container {
|
||||||
padding-left: 0;
|
padding-inline-start: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.fancytree-container li {
|
ul.fancytree-container li {
|
||||||
@@ -15,10 +15,8 @@ span.fancytree-node.fancytree-hide {
|
|||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-left: 7px;
|
margin-inline-start: 7px;
|
||||||
outline: none;
|
outline: none;
|
||||||
position: relative;
|
|
||||||
top: 2px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.fancytree-expander {
|
.fancytree-expander {
|
||||||
@@ -42,6 +40,7 @@ span.fancytree-node.fancytree-hide {
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
user-select: none !important;
|
user-select: none !important;
|
||||||
-webkit-user-select: none !important;
|
-webkit-user-select: none !important;
|
||||||
|
color: var(--custom-color, inherit);
|
||||||
}
|
}
|
||||||
|
|
||||||
.fancytree-node:not(.fancytree-loading) .fancytree-expander {
|
.fancytree-node:not(.fancytree-loading) .fancytree-expander {
|
||||||
@@ -59,7 +58,11 @@ span.fancytree-node.fancytree-hide {
|
|||||||
line-height: 1;
|
line-height: 1;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
margin-right: 5px;
|
margin-inline-end: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body[dir=rtl] .fancytree-node:not(.fancytree-loading):not(.fancytree-expanded) .fancytree-expander:before {
|
||||||
|
content: "\ea4d"; /* bx bx-chevron-left */
|
||||||
}
|
}
|
||||||
|
|
||||||
.fancytree-loading span.fancytree-expander {
|
.fancytree-loading span.fancytree-expander {
|
||||||
@@ -80,7 +83,7 @@ span.fancytree-node.fancytree-hide {
|
|||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
margin-left: 1px;
|
margin-inline-start: 1px;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
}
|
}
|
||||||
@@ -169,15 +172,15 @@ span.fancytree-node.fancytree-active-clone:not(.fancytree-active) .fancytree-tit
|
|||||||
|
|
||||||
/* first nesting level has lower left padding to avoid extra left padding. Other levels are not affected */
|
/* first nesting level has lower left padding to avoid extra left padding. Other levels are not affected */
|
||||||
.ui-fancytree > li > ul {
|
.ui-fancytree > li > ul {
|
||||||
padding-left: 5px;
|
padding-inline-start: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-fancytree ul {
|
.ui-fancytree ul {
|
||||||
padding-left: 20px;
|
padding-inline-start: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
span.fancytree-active {
|
span.fancytree-active {
|
||||||
color: var(--active-item-text-color) !important;
|
color: var(--active-item-text-color);
|
||||||
background-color: var(--active-item-background-color) !important;
|
background-color: var(--active-item-background-color) !important;
|
||||||
border-color: transparent; /* invisible border */
|
border-color: transparent; /* invisible border */
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -229,14 +232,14 @@ span.fancytree-node.archived {
|
|||||||
display: none;
|
display: none;
|
||||||
font-size: 120%;
|
font-size: 120%;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-left: 8px;
|
margin-inline-start: 8px;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.unhoist-button.bx.tree-item-button {
|
.unhoist-button.bx.tree-item-button {
|
||||||
margin-left: 0; /* unhoist button is on the left and doesn't need more margin */
|
margin-inline-start: 0; /* unhoist button is on the left and doesn't need more margin */
|
||||||
display: block; /* keep always visible */
|
display: block; /* keep always visible */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import FNote from "../entities/fnote.js";
|
|||||||
import froca from "../services/froca.js";
|
import froca from "../services/froca.js";
|
||||||
import FAttribute from "../entities/fattribute.js";
|
import FAttribute from "../entities/fattribute.js";
|
||||||
import noteAttributeCache from "../services/note_attribute_cache.js";
|
import noteAttributeCache from "../services/note_attribute_cache.js";
|
||||||
|
import FBranch from "../entities/fbranch.js";
|
||||||
|
import FBlob from "../entities/fblob.js";
|
||||||
|
|
||||||
type AttributeDefinitions = { [key in `#${string}`]: string; };
|
type AttributeDefinitions = { [key in `#${string}`]: string; };
|
||||||
type RelationDefinitions = { [key in `~${string}`]: string; };
|
type RelationDefinitions = { [key in `~${string}`]: string; };
|
||||||
@@ -10,6 +12,8 @@ type RelationDefinitions = { [key in `~${string}`]: string; };
|
|||||||
interface NoteDefinition extends AttributeDefinitions, RelationDefinitions {
|
interface NoteDefinition extends AttributeDefinitions, RelationDefinitions {
|
||||||
id?: string | undefined;
|
id?: string | undefined;
|
||||||
title: string;
|
title: string;
|
||||||
|
children?: NoteDefinition[];
|
||||||
|
content?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -47,6 +51,38 @@ export function buildNote(noteDef: NoteDefinition) {
|
|||||||
blobId: ""
|
blobId: ""
|
||||||
});
|
});
|
||||||
froca.notes[note.noteId] = note;
|
froca.notes[note.noteId] = note;
|
||||||
|
let childNotePosition = 0;
|
||||||
|
|
||||||
|
// Manage content.
|
||||||
|
const content = noteDef.content ?? "";
|
||||||
|
note.getContent = async () => content;
|
||||||
|
|
||||||
|
const blob = new FBlob({
|
||||||
|
blobId: utils.randomString(10),
|
||||||
|
content,
|
||||||
|
contentLength: content.length,
|
||||||
|
dateModified: new Date().toISOString(),
|
||||||
|
utcDateModified: new Date().toISOString()
|
||||||
|
});
|
||||||
|
note.getBlob = async () => blob;
|
||||||
|
|
||||||
|
// Manage children.
|
||||||
|
if (noteDef.children) {
|
||||||
|
for (const childDef of noteDef.children) {
|
||||||
|
const childNote = buildNote(childDef);
|
||||||
|
const branchId = `${note.noteId}_${childNote.noteId}`;
|
||||||
|
const branch = new FBranch(froca, {
|
||||||
|
branchId,
|
||||||
|
noteId: childNote.noteId,
|
||||||
|
parentNoteId: note.noteId,
|
||||||
|
notePosition: childNotePosition,
|
||||||
|
fromSearchNote: false
|
||||||
|
});
|
||||||
|
froca.branches[branchId] = branch;
|
||||||
|
note.addChild(childNote.noteId, branchId, false);
|
||||||
|
childNotePosition += 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let position = 0;
|
let position = 0;
|
||||||
for (const [ key, value ] of Object.entries(noteDef)) {
|
for (const [ key, value ] of Object.entries(noteDef)) {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -39,7 +39,10 @@
|
|||||||
"help_on_tree_prefix": "有关树前缀的帮助",
|
"help_on_tree_prefix": "有关树前缀的帮助",
|
||||||
"prefix": "前缀: ",
|
"prefix": "前缀: ",
|
||||||
"save": "保存",
|
"save": "保存",
|
||||||
"branch_prefix_saved": "分支前缀已保存。"
|
"branch_prefix_saved": "分支前缀已保存。",
|
||||||
|
"edit_branch_prefix_multiple": "编辑 {{count}} 个分支的前缀",
|
||||||
|
"branch_prefix_saved_multiple": "已为 {{count}} 个分支保存分支前缀。",
|
||||||
|
"affected_branches": "受影响的分支 {{count}}:"
|
||||||
},
|
},
|
||||||
"bulk_actions": {
|
"bulk_actions": {
|
||||||
"bulk_actions": "批量操作",
|
"bulk_actions": "批量操作",
|
||||||
@@ -51,7 +54,7 @@
|
|||||||
"bulk_actions_executed": "批量操作已成功执行。",
|
"bulk_actions_executed": "批量操作已成功执行。",
|
||||||
"none_yet": "暂无操作 ... 通过点击上方的可用操作添加一个操作。",
|
"none_yet": "暂无操作 ... 通过点击上方的可用操作添加一个操作。",
|
||||||
"labels": "标签",
|
"labels": "标签",
|
||||||
"relations": "关联关系",
|
"relations": "关系",
|
||||||
"notes": "笔记",
|
"notes": "笔记",
|
||||||
"other": "其它"
|
"other": "其它"
|
||||||
},
|
},
|
||||||
@@ -104,7 +107,8 @@
|
|||||||
"export_status": "导出状态",
|
"export_status": "导出状态",
|
||||||
"export_in_progress": "导出进行中:{{progressCount}}",
|
"export_in_progress": "导出进行中:{{progressCount}}",
|
||||||
"export_finished_successfully": "导出成功完成。",
|
"export_finished_successfully": "导出成功完成。",
|
||||||
"format_pdf": "PDF - 用于打印或共享目的。"
|
"format_pdf": "PDF - 用于打印或共享目的。",
|
||||||
|
"share-format": "HTML 网页发布——采用与共享笔记相同的主题,但可发布为静态网站。"
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"noteNavigation": "笔记导航",
|
"noteNavigation": "笔记导航",
|
||||||
@@ -184,7 +188,8 @@
|
|||||||
},
|
},
|
||||||
"import-status": "导入状态",
|
"import-status": "导入状态",
|
||||||
"in-progress": "导入进行中:{{progress}}",
|
"in-progress": "导入进行中:{{progress}}",
|
||||||
"successful": "导入成功完成。"
|
"successful": "导入成功完成。",
|
||||||
|
"importZipRecommendation": "导入 ZIP 文件时,笔记层级将反映压缩文件内的子目录结构。"
|
||||||
},
|
},
|
||||||
"include_note": {
|
"include_note": {
|
||||||
"dialog_title": "包含笔记",
|
"dialog_title": "包含笔记",
|
||||||
@@ -259,7 +264,6 @@
|
|||||||
"delete_all_revisions": "删除此笔记的所有修订版本",
|
"delete_all_revisions": "删除此笔记的所有修订版本",
|
||||||
"delete_all_button": "删除所有修订版本",
|
"delete_all_button": "删除所有修订版本",
|
||||||
"help_title": "关于笔记修订版本的帮助",
|
"help_title": "关于笔记修订版本的帮助",
|
||||||
"revision_last_edited": "此修订版本上次编辑于 {{date}}",
|
|
||||||
"confirm_delete_all": "您是否要删除此笔记的所有修订版本?",
|
"confirm_delete_all": "您是否要删除此笔记的所有修订版本?",
|
||||||
"no_revisions": "此笔记暂无修订版本...",
|
"no_revisions": "此笔记暂无修订版本...",
|
||||||
"restore_button": "恢复",
|
"restore_button": "恢复",
|
||||||
@@ -646,7 +650,9 @@
|
|||||||
"about": "关于 TriliumNext 笔记",
|
"about": "关于 TriliumNext 笔记",
|
||||||
"logout": "登出",
|
"logout": "登出",
|
||||||
"show-cheatsheet": "显示快捷帮助",
|
"show-cheatsheet": "显示快捷帮助",
|
||||||
"toggle-zen-mode": "禅模式"
|
"toggle-zen-mode": "禅模式",
|
||||||
|
"new-version-available": "新更新可用",
|
||||||
|
"download-update": "取得版本 {{latestVersion}}"
|
||||||
},
|
},
|
||||||
"zen_mode": {
|
"zen_mode": {
|
||||||
"button_exit": "退出禅模式"
|
"button_exit": "退出禅模式"
|
||||||
@@ -736,7 +742,8 @@
|
|||||||
"insert_child_note": "插入子笔记",
|
"insert_child_note": "插入子笔记",
|
||||||
"delete_this_note": "删除此笔记",
|
"delete_this_note": "删除此笔记",
|
||||||
"error_cannot_get_branch_id": "无法获取 notePath '{{notePath}}' 的 branchId",
|
"error_cannot_get_branch_id": "无法获取 notePath '{{notePath}}' 的 branchId",
|
||||||
"error_unrecognized_command": "无法识别的命令 {{command}}"
|
"error_unrecognized_command": "无法识别的命令 {{command}}",
|
||||||
|
"note_revisions": "笔记历史版本"
|
||||||
},
|
},
|
||||||
"note_icon": {
|
"note_icon": {
|
||||||
"change_note_icon": "更改笔记图标",
|
"change_note_icon": "更改笔记图标",
|
||||||
@@ -749,7 +756,7 @@
|
|||||||
"editable": "可编辑",
|
"editable": "可编辑",
|
||||||
"basic_properties": "基本属性",
|
"basic_properties": "基本属性",
|
||||||
"language": "语言",
|
"language": "语言",
|
||||||
"configure_code_notes": "配置代码注释..."
|
"configure_code_notes": "配置代码笔记…"
|
||||||
},
|
},
|
||||||
"book_properties": {
|
"book_properties": {
|
||||||
"view_type": "视图类型",
|
"view_type": "视图类型",
|
||||||
@@ -765,7 +772,8 @@
|
|||||||
"table": "表格",
|
"table": "表格",
|
||||||
"geo-map": "地理地图",
|
"geo-map": "地理地图",
|
||||||
"board": "看板",
|
"board": "看板",
|
||||||
"include_archived_notes": "展示归档笔记"
|
"include_archived_notes": "展示归档笔记",
|
||||||
|
"presentation": "演示"
|
||||||
},
|
},
|
||||||
"edited_notes": {
|
"edited_notes": {
|
||||||
"no_edited_notes_found": "今天还没有编辑过的笔记...",
|
"no_edited_notes_found": "今天还没有编辑过的笔记...",
|
||||||
@@ -1102,9 +1110,6 @@
|
|||||||
"title": "内容宽度",
|
"title": "内容宽度",
|
||||||
"default_description": "Trilium默认会限制内容的最大宽度以提高在宽屏中全屏时的可读性。",
|
"default_description": "Trilium默认会限制内容的最大宽度以提高在宽屏中全屏时的可读性。",
|
||||||
"max_width_label": "内容最大宽度(像素)",
|
"max_width_label": "内容最大宽度(像素)",
|
||||||
"apply_changes_description": "要应用内容宽度更改,请点击",
|
|
||||||
"reload_button": "重载前端",
|
|
||||||
"reload_description": "来自外观选项的更改",
|
|
||||||
"max_width_unit": "像素"
|
"max_width_unit": "像素"
|
||||||
},
|
},
|
||||||
"native_title_bar": {
|
"native_title_bar": {
|
||||||
@@ -1258,7 +1263,13 @@
|
|||||||
"min-days-in-first-week": "第一周的最小天数",
|
"min-days-in-first-week": "第一周的最小天数",
|
||||||
"first-week-info": "第一周包含一年的第一个周四,基于 <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> 标准。",
|
"first-week-info": "第一周包含一年的第一个周四,基于 <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> 标准。",
|
||||||
"first-week-warning": "更改第一周选项可能会导致与现有周笔记重复,已创建的周笔记将不会相应更新。",
|
"first-week-warning": "更改第一周选项可能会导致与现有周笔记重复,已创建的周笔记将不会相应更新。",
|
||||||
"formatting-locale": "日期和数字格式"
|
"formatting-locale": "日期和数字格式",
|
||||||
|
"tuesday": "周二",
|
||||||
|
"wednesday": "周三",
|
||||||
|
"thursday": "周四",
|
||||||
|
"friday": "周五",
|
||||||
|
"saturday": "周六",
|
||||||
|
"formatting-locale-auto": "依应用的语言设置"
|
||||||
},
|
},
|
||||||
"backup": {
|
"backup": {
|
||||||
"automatic_backup": "自动备份",
|
"automatic_backup": "自动备份",
|
||||||
@@ -1278,10 +1289,6 @@
|
|||||||
"etapi": {
|
"etapi": {
|
||||||
"title": "ETAPI",
|
"title": "ETAPI",
|
||||||
"description": "ETAPI 是一个 REST API,用于以编程方式访问 Trilium 实例,而无需 UI。",
|
"description": "ETAPI 是一个 REST API,用于以编程方式访问 Trilium 实例,而无需 UI。",
|
||||||
"see_more": "有关更多详细信息,请参见 {{- link_to_wiki}} 和 {{- link_to_openapi_spec}} 或 {{- link_to_swagger_ui}}。",
|
|
||||||
"wiki": "维基",
|
|
||||||
"openapi_spec": "ETAPI OpenAPI 规范",
|
|
||||||
"swagger_ui": "ETAPI Swagger UI",
|
|
||||||
"create_token": "创建新的 ETAPI 令牌",
|
"create_token": "创建新的 ETAPI 令牌",
|
||||||
"existing_tokens": "现有令牌",
|
"existing_tokens": "现有令牌",
|
||||||
"no_tokens_yet": "目前还没有令牌。点击上面的按钮创建一个。",
|
"no_tokens_yet": "目前还没有令牌。点击上面的按钮创建一个。",
|
||||||
@@ -1548,7 +1555,9 @@
|
|||||||
"window-on-top": "保持此窗口置顶"
|
"window-on-top": "保持此窗口置顶"
|
||||||
},
|
},
|
||||||
"note_detail": {
|
"note_detail": {
|
||||||
"could_not_find_typewidget": "找不到类型为 '{{type}}' 的 typeWidget"
|
"could_not_find_typewidget": "找不到类型为 '{{type}}' 的 typeWidget",
|
||||||
|
"printing": "正在打印…",
|
||||||
|
"printing_pdf": "正在导出为PDF…"
|
||||||
},
|
},
|
||||||
"note_title": {
|
"note_title": {
|
||||||
"placeholder": "请输入笔记标题..."
|
"placeholder": "请输入笔记标题..."
|
||||||
@@ -1908,7 +1917,7 @@
|
|||||||
},
|
},
|
||||||
"custom_date_time_format": {
|
"custom_date_time_format": {
|
||||||
"title": "自定义日期/时间格式",
|
"title": "自定义日期/时间格式",
|
||||||
"description": "通过<shortcut />或工具栏的方式可自定义日期和时间格式,有关日期/时间格式字符串中各个字符的含义,请参阅<doc>Day.js docs</doc>。",
|
"description": "自定义通过 <shortcut /> 或工具栏插入的日期和时间格式。有关日期/时间格式字符串中各个字符的含义,请参阅<doc>Day.js docs</doc>。",
|
||||||
"format_string": "日期/时间格式字符串:",
|
"format_string": "日期/时间格式字符串:",
|
||||||
"formatted_time": "格式化后日期/时间:"
|
"formatted_time": "格式化后日期/时间:"
|
||||||
},
|
},
|
||||||
@@ -2065,5 +2074,13 @@
|
|||||||
},
|
},
|
||||||
"collections": {
|
"collections": {
|
||||||
"rendering_error": "出现错误无法显示内容。"
|
"rendering_error": "出现错误无法显示内容。"
|
||||||
|
},
|
||||||
|
"presentation_view": {
|
||||||
|
"edit-slide": "编辑此幻灯片",
|
||||||
|
"start-presentation": "开始演示",
|
||||||
|
"slide-overview": "切换幻灯片概览"
|
||||||
|
},
|
||||||
|
"calendar_view": {
|
||||||
|
"delete_note": "删除笔记..."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"homepage": "Domovská stránka:",
|
"homepage": "Domovská stránka:",
|
||||||
"app_version": "Verze aplikace:",
|
"app_version": "Verze aplikace:",
|
||||||
"db_version": "Verze DB:",
|
"db_version": "Verze DB:",
|
||||||
"sync_version": "Verze sync:",
|
"sync_version": "Verze synchronizace:",
|
||||||
"build_date": "Datum sestavení:",
|
"build_date": "Datum sestavení:",
|
||||||
"build_revision": "Revize sestavení:",
|
"build_revision": "Revize sestavení:",
|
||||||
"data_directory": "Datový adresář:"
|
"data_directory": "Datový adresář:"
|
||||||
@@ -36,6 +36,29 @@
|
|||||||
"add_link": "Přidat odkaz",
|
"add_link": "Přidat odkaz",
|
||||||
"help_on_links": "Nápověda k odkazům",
|
"help_on_links": "Nápověda k odkazům",
|
||||||
"note": "Poznámka",
|
"note": "Poznámka",
|
||||||
"search_note": "hledat poznámku podle názvu"
|
"search_note": "hledat poznámku podle názvu",
|
||||||
|
"link_title": "Název odkazu",
|
||||||
|
"button_add_link": "Přidat odkaz"
|
||||||
|
},
|
||||||
|
"branch_prefix": {
|
||||||
|
"prefix": "Prefix: ",
|
||||||
|
"save": "Uložit"
|
||||||
|
},
|
||||||
|
"bulk_actions": {
|
||||||
|
"bulk_actions": "Hromadné akce",
|
||||||
|
"affected_notes": "Ovlivněné poznámky",
|
||||||
|
"notes": "Poznámky"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"cancel": "Zrušit",
|
||||||
|
"ok": "OK"
|
||||||
|
},
|
||||||
|
"delete_notes": {
|
||||||
|
"cancel": "Zrušit",
|
||||||
|
"ok": "OK",
|
||||||
|
"close": "Zavřít"
|
||||||
|
},
|
||||||
|
"export": {
|
||||||
|
"close": "Zavřít"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"homepage": "Startseite:",
|
"homepage": "Startseite:",
|
||||||
"app_version": "App-Version:",
|
"app_version": "App-Version:",
|
||||||
"db_version": "DB-Version:",
|
"db_version": "DB-Version:",
|
||||||
"sync_version": "Synch-version:",
|
"sync_version": "Sync-Version:",
|
||||||
"build_date": "Build-Datum:",
|
"build_date": "Build-Datum:",
|
||||||
"build_revision": "Build-Revision:",
|
"build_revision": "Build-Revision:",
|
||||||
"data_directory": "Datenverzeichnis:"
|
"data_directory": "Datenverzeichnis:"
|
||||||
@@ -104,7 +104,8 @@
|
|||||||
"export_status": "Exportstatus",
|
"export_status": "Exportstatus",
|
||||||
"export_in_progress": "Export läuft: {{progressCount}}",
|
"export_in_progress": "Export läuft: {{progressCount}}",
|
||||||
"export_finished_successfully": "Der Export wurde erfolgreich abgeschlossen.",
|
"export_finished_successfully": "Der Export wurde erfolgreich abgeschlossen.",
|
||||||
"format_pdf": "PDF - für Ausdrucke oder Teilen."
|
"format_pdf": "PDF - für Ausdrucke oder Teilen.",
|
||||||
|
"share-format": "HTML für die Web-Veröffentlichung – verwendet dasselbe Theme wie bei freigegebenen Notizen, kann jedoch als statische Website veröffentlicht werden."
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"noteNavigation": "Notiz Navigation",
|
"noteNavigation": "Notiz Navigation",
|
||||||
@@ -184,7 +185,8 @@
|
|||||||
},
|
},
|
||||||
"import-status": "Importstatus",
|
"import-status": "Importstatus",
|
||||||
"in-progress": "Import läuft: {{progress}}",
|
"in-progress": "Import läuft: {{progress}}",
|
||||||
"successful": "Import erfolgreich abgeschlossen."
|
"successful": "Import erfolgreich abgeschlossen.",
|
||||||
|
"importZipRecommendation": "Beim Import einer ZIP-Datei wird die Notizhierarchie aus der Ordnerstruktur im Archiv übernommen."
|
||||||
},
|
},
|
||||||
"include_note": {
|
"include_note": {
|
||||||
"dialog_title": "Notiz beifügen",
|
"dialog_title": "Notiz beifügen",
|
||||||
@@ -259,7 +261,6 @@
|
|||||||
"delete_all_revisions": "Lösche alle Revisionen dieser Notiz",
|
"delete_all_revisions": "Lösche alle Revisionen dieser Notiz",
|
||||||
"delete_all_button": "Alle Revisionen löschen",
|
"delete_all_button": "Alle Revisionen löschen",
|
||||||
"help_title": "Hilfe zu Notizrevisionen",
|
"help_title": "Hilfe zu Notizrevisionen",
|
||||||
"revision_last_edited": "Diese Revision wurde zuletzt am {{date}} bearbeitet",
|
|
||||||
"confirm_delete_all": "Möchtest du alle Revisionen dieser Notiz löschen?",
|
"confirm_delete_all": "Möchtest du alle Revisionen dieser Notiz löschen?",
|
||||||
"no_revisions": "Für diese Notiz gibt es noch keine Revisionen...",
|
"no_revisions": "Für diese Notiz gibt es noch keine Revisionen...",
|
||||||
"confirm_restore": "Möchtest du diese Revision wiederherstellen? Dadurch werden der aktuelle Titel und Inhalt der Notiz mit dieser Revision überschrieben.",
|
"confirm_restore": "Möchtest du diese Revision wiederherstellen? Dadurch werden der aktuelle Titel und Inhalt der Notiz mit dieser Revision überschrieben.",
|
||||||
@@ -646,7 +647,9 @@
|
|||||||
"about": "Über Trilium Notes",
|
"about": "Über Trilium Notes",
|
||||||
"logout": "Abmelden",
|
"logout": "Abmelden",
|
||||||
"show-cheatsheet": "Cheatsheet anzeigen",
|
"show-cheatsheet": "Cheatsheet anzeigen",
|
||||||
"toggle-zen-mode": "Zen Modus"
|
"toggle-zen-mode": "Zen Modus",
|
||||||
|
"new-version-available": "Neues Update verfügbar",
|
||||||
|
"download-update": "Version {{latestVersion}} herunterladen"
|
||||||
},
|
},
|
||||||
"sync_status": {
|
"sync_status": {
|
||||||
"unknown": "<p>Der Synchronisations-Status wird bekannt, sobald der nächste Synchronisierungsversuch gestartet wird.</p><p>Klicke, um eine Synchronisierung jetzt auszulösen.</p>",
|
"unknown": "<p>Der Synchronisations-Status wird bekannt, sobald der nächste Synchronisierungsversuch gestartet wird.</p><p>Klicke, um eine Synchronisierung jetzt auszulösen.</p>",
|
||||||
@@ -733,7 +736,8 @@
|
|||||||
"insert_child_note": "Untergeordnete Notiz einfügen",
|
"insert_child_note": "Untergeordnete Notiz einfügen",
|
||||||
"delete_this_note": "Diese Notiz löschen",
|
"delete_this_note": "Diese Notiz löschen",
|
||||||
"error_cannot_get_branch_id": "BranchId für notePath „{{notePath}}“ kann nicht abgerufen werden",
|
"error_cannot_get_branch_id": "BranchId für notePath „{{notePath}}“ kann nicht abgerufen werden",
|
||||||
"error_unrecognized_command": "Unbekannter Befehl {{command}}"
|
"error_unrecognized_command": "Unbekannter Befehl {{command}}",
|
||||||
|
"note_revisions": "Notiz Revisionen"
|
||||||
},
|
},
|
||||||
"note_icon": {
|
"note_icon": {
|
||||||
"change_note_icon": "Notiz-Icon ändern",
|
"change_note_icon": "Notiz-Icon ändern",
|
||||||
@@ -762,7 +766,8 @@
|
|||||||
"table": "Tabelle",
|
"table": "Tabelle",
|
||||||
"geo-map": "Weltkarte",
|
"geo-map": "Weltkarte",
|
||||||
"board": "Tafel",
|
"board": "Tafel",
|
||||||
"include_archived_notes": "Zeige archivierte Notizen"
|
"include_archived_notes": "Zeige archivierte Notizen",
|
||||||
|
"presentation": "Präsentation"
|
||||||
},
|
},
|
||||||
"edited_notes": {
|
"edited_notes": {
|
||||||
"no_edited_notes_found": "An diesem Tag wurden noch keine Notizen bearbeitet...",
|
"no_edited_notes_found": "An diesem Tag wurden noch keine Notizen bearbeitet...",
|
||||||
@@ -986,7 +991,7 @@
|
|||||||
"enter_password_instruction": "Um die geschützte Notiz anzuzeigen, musst du dein Passwort eingeben:",
|
"enter_password_instruction": "Um die geschützte Notiz anzuzeigen, musst du dein Passwort eingeben:",
|
||||||
"start_session_button": "Starte eine geschützte Sitzung <kbd>Eingabetaste</kbd>",
|
"start_session_button": "Starte eine geschützte Sitzung <kbd>Eingabetaste</kbd>",
|
||||||
"started": "Geschützte Sitzung gestartet.",
|
"started": "Geschützte Sitzung gestartet.",
|
||||||
"wrong_password": "Passwort flasch.",
|
"wrong_password": "Passwort falsch.",
|
||||||
"protecting-finished-successfully": "Geschützt erfolgreich beendet.",
|
"protecting-finished-successfully": "Geschützt erfolgreich beendet.",
|
||||||
"unprotecting-finished-successfully": "Ungeschützt erfolgreich beendet.",
|
"unprotecting-finished-successfully": "Ungeschützt erfolgreich beendet.",
|
||||||
"protecting-in-progress": "Schützen läuft: {{count}}",
|
"protecting-in-progress": "Schützen läuft: {{count}}",
|
||||||
@@ -1099,9 +1104,6 @@
|
|||||||
"title": "Inhaltsbreite",
|
"title": "Inhaltsbreite",
|
||||||
"default_description": "Trilium begrenzt standardmäßig die maximale Inhaltsbreite, um die Lesbarkeit für maximierte Bildschirme auf Breitbildschirmen zu verbessern.",
|
"default_description": "Trilium begrenzt standardmäßig die maximale Inhaltsbreite, um die Lesbarkeit für maximierte Bildschirme auf Breitbildschirmen zu verbessern.",
|
||||||
"max_width_label": "Maximale Inhaltsbreite in Pixel",
|
"max_width_label": "Maximale Inhaltsbreite in Pixel",
|
||||||
"apply_changes_description": "Um Änderungen an der Inhaltsbreite anzuwenden, klicke auf",
|
|
||||||
"reload_button": "Frontend neu laden",
|
|
||||||
"reload_description": "Änderungen an den Darstellungsoptionen",
|
|
||||||
"max_width_unit": "Pixel"
|
"max_width_unit": "Pixel"
|
||||||
},
|
},
|
||||||
"native_title_bar": {
|
"native_title_bar": {
|
||||||
@@ -1255,7 +1257,13 @@
|
|||||||
"min-days-in-first-week": "Mindestanzahl an Tagen in erster Woche",
|
"min-days-in-first-week": "Mindestanzahl an Tagen in erster Woche",
|
||||||
"first-week-info": "Die erste Woche, die den ersten Donnerstag des Jahres enthält, basiert auf dem Standard <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
|
"first-week-info": "Die erste Woche, die den ersten Donnerstag des Jahres enthält, basiert auf dem Standard <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
|
||||||
"first-week-warning": "Das Ändern der Optionen für die erste Woche kann zu Duplikaten mit bestehenden Wochen-Notizen führen. Bestehende Wochen-Notizen werden nicht entsprechend aktualisiert.",
|
"first-week-warning": "Das Ändern der Optionen für die erste Woche kann zu Duplikaten mit bestehenden Wochen-Notizen führen. Bestehende Wochen-Notizen werden nicht entsprechend aktualisiert.",
|
||||||
"formatting-locale": "Datums- und Zahlenformat"
|
"formatting-locale": "Datums- und Zahlenformat",
|
||||||
|
"tuesday": "Dienstag",
|
||||||
|
"wednesday": "Mittwoch",
|
||||||
|
"thursday": "Donnerstag",
|
||||||
|
"friday": "Freitag",
|
||||||
|
"saturday": "Samstag",
|
||||||
|
"formatting-locale-auto": "Basierend auf die Anwendungssprache"
|
||||||
},
|
},
|
||||||
"backup": {
|
"backup": {
|
||||||
"automatic_backup": "Automatische Sicherung",
|
"automatic_backup": "Automatische Sicherung",
|
||||||
@@ -1275,10 +1283,6 @@
|
|||||||
"etapi": {
|
"etapi": {
|
||||||
"title": "ETAPI",
|
"title": "ETAPI",
|
||||||
"description": "ETAPI ist eine REST-API, die für den programmgesteuerten Zugriff auf die Trilium-Instanz ohne Benutzeroberfläche verwendet wird.",
|
"description": "ETAPI ist eine REST-API, die für den programmgesteuerten Zugriff auf die Trilium-Instanz ohne Benutzeroberfläche verwendet wird.",
|
||||||
"see_more": "Weitere Details können im {{- link_to_wiki}} und in der {{- link_to_openapi_spec}} oder der {{- link_to_swagger_ui }} gefunden werden.",
|
|
||||||
"wiki": "Wiki",
|
|
||||||
"openapi_spec": "ETAPI OpenAPI-Spezifikation",
|
|
||||||
"swagger_ui": "ETAPI Swagger UI",
|
|
||||||
"create_token": "Erstelle ein neues ETAPI-Token",
|
"create_token": "Erstelle ein neues ETAPI-Token",
|
||||||
"existing_tokens": "Vorhandene Token",
|
"existing_tokens": "Vorhandene Token",
|
||||||
"no_tokens_yet": "Es sind noch keine Token vorhanden. Klicke auf die Schaltfläche oben, um eine zu erstellen.",
|
"no_tokens_yet": "Es sind noch keine Token vorhanden. Klicke auf die Schaltfläche oben, um eine zu erstellen.",
|
||||||
@@ -1512,7 +1516,9 @@
|
|||||||
"window-on-top": "Dieses Fenster immer oben halten"
|
"window-on-top": "Dieses Fenster immer oben halten"
|
||||||
},
|
},
|
||||||
"note_detail": {
|
"note_detail": {
|
||||||
"could_not_find_typewidget": "Konnte typeWidget für Typ ‚{{type}}‘ nicht finden"
|
"could_not_find_typewidget": "Konnte typeWidget für Typ ‚{{type}}‘ nicht finden",
|
||||||
|
"printing": "Druckvorgang läuft…",
|
||||||
|
"printing_pdf": "PDF-Export läuft…"
|
||||||
},
|
},
|
||||||
"note_title": {
|
"note_title": {
|
||||||
"placeholder": "Titel der Notiz hier eingeben…"
|
"placeholder": "Titel der Notiz hier eingeben…"
|
||||||
@@ -1645,7 +1651,7 @@
|
|||||||
"add-term-to-dictionary": "Begriff \"{{term}}\" zum Wörterbuch hinzufügen",
|
"add-term-to-dictionary": "Begriff \"{{term}}\" zum Wörterbuch hinzufügen",
|
||||||
"cut": "Ausschneiden",
|
"cut": "Ausschneiden",
|
||||||
"copy": "Kopieren",
|
"copy": "Kopieren",
|
||||||
"copy-link": "Link opieren",
|
"copy-link": "Link kopieren",
|
||||||
"paste": "Einfügen",
|
"paste": "Einfügen",
|
||||||
"paste-as-plain-text": "Als unformatierten Text einfügen",
|
"paste-as-plain-text": "Als unformatierten Text einfügen",
|
||||||
"search_online": "Suche nach \"{{term}}\" mit {{searchEngine}} starten"
|
"search_online": "Suche nach \"{{term}}\" mit {{searchEngine}} starten"
|
||||||
@@ -2067,5 +2073,10 @@
|
|||||||
},
|
},
|
||||||
"collections": {
|
"collections": {
|
||||||
"rendering_error": "Aufgrund eines Fehlers können keine Inhalte angezeigt werden."
|
"rendering_error": "Aufgrund eines Fehlers können keine Inhalte angezeigt werden."
|
||||||
|
},
|
||||||
|
"presentation_view": {
|
||||||
|
"edit-slide": "Folie bearbeiten",
|
||||||
|
"start-presentation": "Präsentation starten",
|
||||||
|
"slide-overview": "Übersicht der Folien ein-/ausblenden"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,24 @@
|
|||||||
{
|
{
|
||||||
"about": {
|
"about": {
|
||||||
"title": "Πληροφορίες για το Trilium Notes",
|
"title": "Πληροφορίες για το Trilium Notes",
|
||||||
"homepage": "Αρχική Σελίδα:",
|
"homepage": "Αρχική Σελίδα:",
|
||||||
"app_version": "Έκδοση εφαρμογής:",
|
"app_version": "Έκδοση εφαρμογής:",
|
||||||
"db_version": "Έκδοση βάσης δεδομένων:",
|
"db_version": "Έκδοση βάσης δεδομένων:",
|
||||||
"sync_version": "Έκδοση πρωτοκόλου συγχρονισμού:",
|
"sync_version": "Έκδοση πρωτοκόλου συγχρονισμού:",
|
||||||
"build_date": "Ημερομηνία χτισίματος εφαρμογής:",
|
"build_date": "Ημερομηνία χτισίματος εφαρμογής:",
|
||||||
"build_revision": "Αριθμός αναθεώρησης χτισίματος:",
|
"build_revision": "Αριθμός αναθεώρησης χτισίματος:",
|
||||||
"data_directory": "Φάκελος δεδομένων:"
|
"data_directory": "Φάκελος δεδομένων:"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"critical-error": {
|
"critical-error": {
|
||||||
"title": "Κρίσιμο σφάλμα",
|
"title": "Κρίσιμο σφάλμα",
|
||||||
"message": "Συνέβη κάποιο κρίσιμο σφάλμα, το οποίο δεν επιτρέπει στην εφαρμογή χρήστη να ξεκινήσει:\n\n{{message}}\n\nΤο πιθανότερο είναι να προκλήθηκε από κάποιο script που απέτυχε απρόοπτα. Δοκιμάστε να ξεκινήσετε την εφαρμογή σε ασφαλή λειτουργία για να λύσετε το πρόβλημα."
|
"message": "Συνέβη κάποιο κρίσιμο σφάλμα, το οποίο δεν επιτρέπει στην εφαρμογή χρήστη να ξεκινήσει:\n\n{{message}}\n\nΤο πιθανότερο είναι να προκλήθηκε από κάποιο script που απέτυχε απρόοπτα. Δοκιμάστε να ξεκινήσετε την εφαρμογή σε ασφαλή λειτουργία για να λύσετε το πρόβλημα."
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ai_llm": {
|
||||||
|
"n_notes_queued": "{{ count }} σημείωση στην ουρά για εύρεση",
|
||||||
|
"n_notes_queued_plural": "{{ count }} σημειώσεις στην ουρά για εύρεση",
|
||||||
|
"notes_indexed": "{{ count }} σημείωση με ευρετήριο",
|
||||||
|
"notes_indexed_plural": "{{ count }} σημειώσεις με ευρετήριο"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,10 +36,13 @@
|
|||||||
},
|
},
|
||||||
"branch_prefix": {
|
"branch_prefix": {
|
||||||
"edit_branch_prefix": "Edit branch prefix",
|
"edit_branch_prefix": "Edit branch prefix",
|
||||||
|
"edit_branch_prefix_multiple": "Edit branch prefix for {{count}} branches",
|
||||||
"help_on_tree_prefix": "Help on Tree prefix",
|
"help_on_tree_prefix": "Help on Tree prefix",
|
||||||
"prefix": "Prefix: ",
|
"prefix": "Prefix: ",
|
||||||
"save": "Save",
|
"save": "Save",
|
||||||
"branch_prefix_saved": "Branch prefix has been saved."
|
"branch_prefix_saved": "Branch prefix has been saved.",
|
||||||
|
"branch_prefix_saved_multiple": "Branch prefix has been saved for {{count}} branches.",
|
||||||
|
"affected_branches": "Affected branches ({{count}}):"
|
||||||
},
|
},
|
||||||
"bulk_actions": {
|
"bulk_actions": {
|
||||||
"bulk_actions": "Bulk actions",
|
"bulk_actions": "Bulk actions",
|
||||||
@@ -104,7 +107,8 @@
|
|||||||
"export_status": "Export status",
|
"export_status": "Export status",
|
||||||
"export_in_progress": "Export in progress: {{progressCount}}",
|
"export_in_progress": "Export in progress: {{progressCount}}",
|
||||||
"export_finished_successfully": "Export finished successfully.",
|
"export_finished_successfully": "Export finished successfully.",
|
||||||
"format_pdf": "PDF - for printing or sharing purposes."
|
"format_pdf": "PDF - for printing or sharing purposes.",
|
||||||
|
"share-format": "HTML for web publishing - uses the same theme that is used shared notes, but can be published as a static website."
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"title": "Cheatsheet",
|
"title": "Cheatsheet",
|
||||||
@@ -164,6 +168,7 @@
|
|||||||
"importIntoNote": "Import into note",
|
"importIntoNote": "Import into note",
|
||||||
"chooseImportFile": "Choose import file",
|
"chooseImportFile": "Choose import file",
|
||||||
"importDescription": "Content of the selected file(s) will be imported as child note(s) into",
|
"importDescription": "Content of the selected file(s) will be imported as child note(s) into",
|
||||||
|
"importZipRecommendation": "When importing a ZIP file, the note hierarchy will reflect the subdirectory structure within the archive.",
|
||||||
"options": "Options",
|
"options": "Options",
|
||||||
"safeImportTooltip": "Trilium <code>.zip</code> export files can contain executable scripts which may contain harmful behavior. Safe import will deactivate automatic execution of all imported scripts. Uncheck \"Safe import\" only if the imported archive is supposed to contain executable scripts and you completely trust the contents of the import file.",
|
"safeImportTooltip": "Trilium <code>.zip</code> export files can contain executable scripts which may contain harmful behavior. Safe import will deactivate automatic execution of all imported scripts. Uncheck \"Safe import\" only if the imported archive is supposed to contain executable scripts and you completely trust the contents of the import file.",
|
||||||
"safeImport": "Safe import",
|
"safeImport": "Safe import",
|
||||||
@@ -259,7 +264,6 @@
|
|||||||
"delete_all_revisions": "Delete all revisions of this note",
|
"delete_all_revisions": "Delete all revisions of this note",
|
||||||
"delete_all_button": "Delete all revisions",
|
"delete_all_button": "Delete all revisions",
|
||||||
"help_title": "Help on Note Revisions",
|
"help_title": "Help on Note Revisions",
|
||||||
"revision_last_edited": "This revision was last edited on {{date}}",
|
|
||||||
"confirm_delete_all": "Do you want to delete all revisions of this note?",
|
"confirm_delete_all": "Do you want to delete all revisions of this note?",
|
||||||
"no_revisions": "No revisions for this note yet...",
|
"no_revisions": "No revisions for this note yet...",
|
||||||
"restore_button": "Restore",
|
"restore_button": "Restore",
|
||||||
@@ -646,7 +650,9 @@
|
|||||||
"about": "About Trilium Notes",
|
"about": "About Trilium Notes",
|
||||||
"logout": "Logout",
|
"logout": "Logout",
|
||||||
"show-cheatsheet": "Show Cheatsheet",
|
"show-cheatsheet": "Show Cheatsheet",
|
||||||
"toggle-zen-mode": "Zen Mode"
|
"toggle-zen-mode": "Zen Mode",
|
||||||
|
"new-version-available": "New Update Available",
|
||||||
|
"download-update": "Get Version {{latestVersion}}"
|
||||||
},
|
},
|
||||||
"zen_mode": {
|
"zen_mode": {
|
||||||
"button_exit": "Exit Zen Mode"
|
"button_exit": "Exit Zen Mode"
|
||||||
@@ -735,6 +741,7 @@
|
|||||||
"mobile_detail_menu": {
|
"mobile_detail_menu": {
|
||||||
"insert_child_note": "Insert child note",
|
"insert_child_note": "Insert child note",
|
||||||
"delete_this_note": "Delete this note",
|
"delete_this_note": "Delete this note",
|
||||||
|
"note_revisions": "Note revisions",
|
||||||
"error_cannot_get_branch_id": "Cannot get branchId for notePath '{{notePath}}'",
|
"error_cannot_get_branch_id": "Cannot get branchId for notePath '{{notePath}}'",
|
||||||
"error_unrecognized_command": "Unrecognized command {{command}}"
|
"error_unrecognized_command": "Unrecognized command {{command}}"
|
||||||
},
|
},
|
||||||
@@ -765,6 +772,7 @@
|
|||||||
"table": "Table",
|
"table": "Table",
|
||||||
"geo-map": "Geo Map",
|
"geo-map": "Geo Map",
|
||||||
"board": "Board",
|
"board": "Board",
|
||||||
|
"presentation": "Presentation",
|
||||||
"include_archived_notes": "Show archived notes"
|
"include_archived_notes": "Show archived notes"
|
||||||
},
|
},
|
||||||
"edited_notes": {
|
"edited_notes": {
|
||||||
@@ -1103,9 +1111,7 @@
|
|||||||
"default_description": "Trilium by default limits max content width to improve readability for maximized screens on wide screens.",
|
"default_description": "Trilium by default limits max content width to improve readability for maximized screens on wide screens.",
|
||||||
"max_width_label": "Max content width",
|
"max_width_label": "Max content width",
|
||||||
"max_width_unit": "pixels",
|
"max_width_unit": "pixels",
|
||||||
"apply_changes_description": "To apply content width changes, click on",
|
"centerContent": "Keep content centered"
|
||||||
"reload_button": "reload frontend",
|
|
||||||
"reload_description": "changes from appearance options"
|
|
||||||
},
|
},
|
||||||
"native_title_bar": {
|
"native_title_bar": {
|
||||||
"title": "Native Title Bar (requires app restart)",
|
"title": "Native Title Bar (requires app restart)",
|
||||||
@@ -1413,8 +1419,13 @@
|
|||||||
"title": "Localization",
|
"title": "Localization",
|
||||||
"language": "Language",
|
"language": "Language",
|
||||||
"first-day-of-the-week": "First day of the week",
|
"first-day-of-the-week": "First day of the week",
|
||||||
"sunday": "Sunday",
|
|
||||||
"monday": "Monday",
|
"monday": "Monday",
|
||||||
|
"tuesday": "Tuesday",
|
||||||
|
"wednesday": "Wednesday",
|
||||||
|
"thursday": "Thursday",
|
||||||
|
"friday": "Friday",
|
||||||
|
"saturday": "Saturday",
|
||||||
|
"sunday": "Sunday",
|
||||||
"first-week-of-the-year": "First week of the year",
|
"first-week-of-the-year": "First week of the year",
|
||||||
"first-week-contains-first-day": "First week contains first day of the year",
|
"first-week-contains-first-day": "First week contains first day of the year",
|
||||||
"first-week-contains-first-thursday": "First week contains first Thursday of the year",
|
"first-week-contains-first-thursday": "First week contains first Thursday of the year",
|
||||||
@@ -1422,7 +1433,8 @@
|
|||||||
"min-days-in-first-week": "Minimum days in first week",
|
"min-days-in-first-week": "Minimum days in first week",
|
||||||
"first-week-info": "First week contains first Thursday of the year is based on <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> standard.",
|
"first-week-info": "First week contains first Thursday of the year is based on <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> standard.",
|
||||||
"first-week-warning": "Changing first week options may cause duplicate with existing Week Notes and the existing Week Notes will not be updated accordingly.",
|
"first-week-warning": "Changing first week options may cause duplicate with existing Week Notes and the existing Week Notes will not be updated accordingly.",
|
||||||
"formatting-locale": "Date & number format"
|
"formatting-locale": "Date & number format",
|
||||||
|
"formatting-locale-auto": "Based on the application's language"
|
||||||
},
|
},
|
||||||
"backup": {
|
"backup": {
|
||||||
"automatic_backup": "Automatic backup",
|
"automatic_backup": "Automatic backup",
|
||||||
@@ -1442,10 +1454,6 @@
|
|||||||
"etapi": {
|
"etapi": {
|
||||||
"title": "ETAPI",
|
"title": "ETAPI",
|
||||||
"description": "ETAPI is a REST API used to access Trilium instance programmatically, without UI.",
|
"description": "ETAPI is a REST API used to access Trilium instance programmatically, without UI.",
|
||||||
"see_more": "See more details in the {{- link_to_wiki}} and the {{- link_to_openapi_spec}} or the {{- link_to_swagger_ui }}.",
|
|
||||||
"wiki": "wiki",
|
|
||||||
"openapi_spec": "ETAPI OpenAPI spec",
|
|
||||||
"swagger_ui": "ETAPI Swagger UI",
|
|
||||||
"create_token": "Create new ETAPI token",
|
"create_token": "Create new ETAPI token",
|
||||||
"existing_tokens": "Existing tokens",
|
"existing_tokens": "Existing tokens",
|
||||||
"no_tokens_yet": "There are no tokens yet. Click on the button above to create one.",
|
"no_tokens_yet": "There are no tokens yet. Click on the button above to create one.",
|
||||||
@@ -1629,6 +1637,12 @@
|
|||||||
"shared_locally": "This note is shared locally on {{- link}}.",
|
"shared_locally": "This note is shared locally on {{- link}}.",
|
||||||
"help_link": "For help visit <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki</a>."
|
"help_link": "For help visit <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki</a>."
|
||||||
},
|
},
|
||||||
|
"read-only-info": {
|
||||||
|
"read-only-note": "Currently viewing a read-only note.",
|
||||||
|
"auto-read-only-note": "This note is shown in a read-only mode for faster loading.",
|
||||||
|
"auto-read-only-learn-more": "Learn more",
|
||||||
|
"edit-note": "Edit note"
|
||||||
|
},
|
||||||
"note_types": {
|
"note_types": {
|
||||||
"text": "Text",
|
"text": "Text",
|
||||||
"code": "Code",
|
"code": "Code",
|
||||||
@@ -1712,7 +1726,9 @@
|
|||||||
"window-on-top": "Keep Window on Top"
|
"window-on-top": "Keep Window on Top"
|
||||||
},
|
},
|
||||||
"note_detail": {
|
"note_detail": {
|
||||||
"could_not_find_typewidget": "Could not find typeWidget for type '{{type}}'"
|
"could_not_find_typewidget": "Could not find typeWidget for type '{{type}}'",
|
||||||
|
"printing": "Printing in progress...",
|
||||||
|
"printing_pdf": "Exporting to PDF in progress..."
|
||||||
},
|
},
|
||||||
"note_title": {
|
"note_title": {
|
||||||
"placeholder": "type note's title here..."
|
"placeholder": "type note's title here..."
|
||||||
@@ -2020,6 +2036,14 @@
|
|||||||
"edit-note-title": "Click to edit note title",
|
"edit-note-title": "Click to edit note title",
|
||||||
"edit-column-title": "Click to edit column title"
|
"edit-column-title": "Click to edit column title"
|
||||||
},
|
},
|
||||||
|
"presentation_view": {
|
||||||
|
"edit-slide": "Edit this slide",
|
||||||
|
"start-presentation": "Start presentation",
|
||||||
|
"slide-overview": "Toggle an overview of the slides"
|
||||||
|
},
|
||||||
|
"calendar_view": {
|
||||||
|
"delete_note": "Delete note..."
|
||||||
|
},
|
||||||
"command_palette": {
|
"command_palette": {
|
||||||
"tree-action-name": "Tree: {{name}}",
|
"tree-action-name": "Tree: {{name}}",
|
||||||
"export_note_title": "Export Note",
|
"export_note_title": "Export Note",
|
||||||
|
|||||||
@@ -104,7 +104,8 @@
|
|||||||
"export_status": "Estado de exportación",
|
"export_status": "Estado de exportación",
|
||||||
"export_in_progress": "Exportación en curso: {{progressCount}}",
|
"export_in_progress": "Exportación en curso: {{progressCount}}",
|
||||||
"export_finished_successfully": "La exportación finalizó exitosamente.",
|
"export_finished_successfully": "La exportación finalizó exitosamente.",
|
||||||
"format_pdf": "PDF - para propósitos de impresión o compartición."
|
"format_pdf": "PDF - para propósitos de impresión o compartición.",
|
||||||
|
"share-format": "HTML para publicación web: utiliza el mismo tema que se utiliza en las notas compartidas, pero se puede publicar como un sitio web estático."
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"noteNavigation": "Navegación de notas",
|
"noteNavigation": "Navegación de notas",
|
||||||
@@ -184,7 +185,8 @@
|
|||||||
},
|
},
|
||||||
"import-status": "Estado de importación",
|
"import-status": "Estado de importación",
|
||||||
"in-progress": "Importación en progreso: {{progress}}",
|
"in-progress": "Importación en progreso: {{progress}}",
|
||||||
"successful": "Importación finalizada exitosamente."
|
"successful": "Importación finalizada exitosamente.",
|
||||||
|
"importZipRecommendation": "Al importar un archivo ZIP, la jerarquía de notas reflejará la estructura de subdirectorios dentro del archivo comprimido."
|
||||||
},
|
},
|
||||||
"include_note": {
|
"include_note": {
|
||||||
"dialog_title": "Incluir nota",
|
"dialog_title": "Incluir nota",
|
||||||
@@ -259,7 +261,6 @@
|
|||||||
"delete_all_revisions": "Eliminar todas las revisiones de esta nota",
|
"delete_all_revisions": "Eliminar todas las revisiones de esta nota",
|
||||||
"delete_all_button": "Eliminar todas las revisiones",
|
"delete_all_button": "Eliminar todas las revisiones",
|
||||||
"help_title": "Ayuda sobre revisiones de notas",
|
"help_title": "Ayuda sobre revisiones de notas",
|
||||||
"revision_last_edited": "Esta revisión se editó por última vez en {{date}}",
|
|
||||||
"confirm_delete_all": "¿Quiere eliminar todas las revisiones de esta nota?",
|
"confirm_delete_all": "¿Quiere eliminar todas las revisiones de esta nota?",
|
||||||
"no_revisions": "Aún no hay revisiones para esta nota...",
|
"no_revisions": "Aún no hay revisiones para esta nota...",
|
||||||
"restore_button": "Restaurar",
|
"restore_button": "Restaurar",
|
||||||
@@ -354,7 +355,7 @@
|
|||||||
"calendar_root": "marca la nota que debe usarse como raíz para las notas del día. Sólo uno debe estar marcado como tal.",
|
"calendar_root": "marca la nota que debe usarse como raíz para las notas del día. Sólo uno debe estar marcado como tal.",
|
||||||
"archived": "las notas con esta etiqueta no serán visibles de forma predeterminada en los resultados de búsqueda (tampoco en los cuadros de diálogo Saltar a, Agregar vínculo, etc.).",
|
"archived": "las notas con esta etiqueta no serán visibles de forma predeterminada en los resultados de búsqueda (tampoco en los cuadros de diálogo Saltar a, Agregar vínculo, etc.).",
|
||||||
"exclude_from_export": "las notas (con su subárbol) no se incluirán en ninguna exportación de notas",
|
"exclude_from_export": "las notas (con su subárbol) no se incluirán en ninguna exportación de notas",
|
||||||
"run": "define en qué eventos debe ejecutarse el script. Los valores posibles son:\n<ul>\n<li>frontendStartup - cuando el frontend de Trilium inicia (o es recargado), pero no en dispositivos móviles. </li>\n<li>backendStartup - cuando el backend de Trilium se inicia </li>\n<li>hourly - se ejecuta una vez cada hora. Puede usar etiqueta adicional <code>runAtHour</code> para especificar a la hora. </li>\n<li>daily - ejecutar una vez al día </li>\n</ul>",
|
"run": "define en qué eventos debe ejecutarse el script. Los valores posibles son:\n<ul>\n<li>frontendStartup - cuando Trilium frontend se inicia (o se actualiza), pero no en móvil.</li>\n<li>mobileStartup - cuando Trilium frontend se inicia (o se actualiza), en móvil.</li>\n<li>backendStartup - cuando Trilium backend se inicia</li>\n<li>hourly - se ejecuta una vez por hora. Se puede usar la etiqueta adicional <code>runAtHour</code> para especificar a qué hora.</li>\n<li>daily - se ejecuta una vez al día</li>\n</ul>",
|
||||||
"run_on_instance": "Definir en qué instancia de Trilium se debe ejecutar esto. Predeterminado para todas las instancias.",
|
"run_on_instance": "Definir en qué instancia de Trilium se debe ejecutar esto. Predeterminado para todas las instancias.",
|
||||||
"run_at_hour": "¿A qué hora debería funcionar? Debe usarse junto con <code>#run=hourly</code>. Se puede definir varias veces para varias ejecuciones durante el día.",
|
"run_at_hour": "¿A qué hora debería funcionar? Debe usarse junto con <code>#run=hourly</code>. Se puede definir varias veces para varias ejecuciones durante el día.",
|
||||||
"disable_inclusion": "los scripts con esta etiqueta no se incluirán en la ejecución del script principal.",
|
"disable_inclusion": "los scripts con esta etiqueta no se incluirán en la ejecución del script principal.",
|
||||||
@@ -384,7 +385,7 @@
|
|||||||
"inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas - cuando crea una nota usando el botón \"nueva nota\" en la barra lateral, las notas serán creadas como subnotas de la nota marcada con la etiqueta <code>#inbox</code>.",
|
"inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas - cuando crea una nota usando el botón \"nueva nota\" en la barra lateral, las notas serán creadas como subnotas de la nota marcada con la etiqueta <code>#inbox</code>.",
|
||||||
"workspace_inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas cuando se anclan a algún antecesor de esta nota del espacio de trabajo",
|
"workspace_inbox": "ubicación predeterminada de la bandeja de entrada para nuevas notas cuando se anclan a algún antecesor de esta nota del espacio de trabajo",
|
||||||
"sql_console_home": "ubicación predeterminada de las notas de la consola SQL",
|
"sql_console_home": "ubicación predeterminada de las notas de la consola SQL",
|
||||||
"bookmark_folder": "la nota con esta etiqueta aparecerá en los marcadores como carpeta (permitiendo el acceso a sus elementos hijos).",
|
"bookmark_folder": "la nota con esta etiqueta aparecerá en los marcadores como carpeta (permitiendo el acceso a sus elementos hijos)",
|
||||||
"share_hidden_from_tree": "esta nota está oculta en el árbol de navegación izquierdo, pero aún se puede acceder a ella con su URL",
|
"share_hidden_from_tree": "esta nota está oculta en el árbol de navegación izquierdo, pero aún se puede acceder a ella con su URL",
|
||||||
"share_external_link": "la nota actuará como un enlace a un sitio web externo en el árbol compartido",
|
"share_external_link": "la nota actuará como un enlace a un sitio web externo en el árbol compartido",
|
||||||
"share_alias": "define un alias que al usar la nota va a estar disponible en https://your_trilium_host/share/[tu_alias]",
|
"share_alias": "define un alias que al usar la nota va a estar disponible en https://your_trilium_host/share/[tu_alias]",
|
||||||
@@ -646,7 +647,9 @@
|
|||||||
"about": "Acerca de Trilium Notes",
|
"about": "Acerca de Trilium Notes",
|
||||||
"logout": "Cerrar sesión",
|
"logout": "Cerrar sesión",
|
||||||
"show-cheatsheet": "Mostrar hoja de trucos",
|
"show-cheatsheet": "Mostrar hoja de trucos",
|
||||||
"toggle-zen-mode": "Modo Zen"
|
"toggle-zen-mode": "Modo Zen",
|
||||||
|
"new-version-available": "Nueva actualización disponible",
|
||||||
|
"download-update": "Obtener versión {{latestVersion}}"
|
||||||
},
|
},
|
||||||
"zen_mode": {
|
"zen_mode": {
|
||||||
"button_exit": "Salir del modo Zen"
|
"button_exit": "Salir del modo Zen"
|
||||||
@@ -736,7 +739,8 @@
|
|||||||
"insert_child_note": "Insertar subnota",
|
"insert_child_note": "Insertar subnota",
|
||||||
"delete_this_note": "Eliminar esta nota",
|
"delete_this_note": "Eliminar esta nota",
|
||||||
"error_cannot_get_branch_id": "No se puede obtener el branchID del notePath '{{notePath}}'",
|
"error_cannot_get_branch_id": "No se puede obtener el branchID del notePath '{{notePath}}'",
|
||||||
"error_unrecognized_command": "Comando no reconocido {{command}}"
|
"error_unrecognized_command": "Comando no reconocido {{command}}",
|
||||||
|
"note_revisions": "Revisiones de notas"
|
||||||
},
|
},
|
||||||
"note_icon": {
|
"note_icon": {
|
||||||
"change_note_icon": "Cambiar icono de nota",
|
"change_note_icon": "Cambiar icono de nota",
|
||||||
@@ -765,7 +769,8 @@
|
|||||||
"table": "Tabla",
|
"table": "Tabla",
|
||||||
"geo-map": "Mapa Geo",
|
"geo-map": "Mapa Geo",
|
||||||
"board": "Tablero",
|
"board": "Tablero",
|
||||||
"include_archived_notes": "Mostrar notas archivadas"
|
"include_archived_notes": "Mostrar notas archivadas",
|
||||||
|
"presentation": "Presentación"
|
||||||
},
|
},
|
||||||
"edited_notes": {
|
"edited_notes": {
|
||||||
"no_edited_notes_found": "Aún no hay notas editadas en este día...",
|
"no_edited_notes_found": "Aún no hay notas editadas en este día...",
|
||||||
@@ -1010,7 +1015,7 @@
|
|||||||
"start_dragging_relations": "Empiece a arrastrar relaciones desde aquí y suéltelas en otra nota.",
|
"start_dragging_relations": "Empiece a arrastrar relaciones desde aquí y suéltelas en otra nota.",
|
||||||
"note_not_found": "¡Nota {{noteId}} no encontrada!",
|
"note_not_found": "¡Nota {{noteId}} no encontrada!",
|
||||||
"cannot_match_transform": "No se puede coincidir con la transformación: {{transform}}",
|
"cannot_match_transform": "No se puede coincidir con la transformación: {{transform}}",
|
||||||
"note_already_in_diagram": "Note \"{{title}}\" is already in the diagram.",
|
"note_already_in_diagram": "La nota \"{{title}}\" ya está en el diagrama.",
|
||||||
"enter_title_of_new_note": "Ingrese el título de la nueva nota",
|
"enter_title_of_new_note": "Ingrese el título de la nueva nota",
|
||||||
"default_new_note_title": "nueva nota",
|
"default_new_note_title": "nueva nota",
|
||||||
"click_on_canvas_to_place_new_note": "Haga clic en el lienzo para colocar una nueva nota"
|
"click_on_canvas_to_place_new_note": "Haga clic en el lienzo para colocar una nueva nota"
|
||||||
@@ -1102,10 +1107,7 @@
|
|||||||
"title": "Ancho del contenido",
|
"title": "Ancho del contenido",
|
||||||
"default_description": "Trilium limita de forma predeterminada el ancho máximo del contenido para mejorar la legibilidad de ventanas maximizadas en pantallas anchas.",
|
"default_description": "Trilium limita de forma predeterminada el ancho máximo del contenido para mejorar la legibilidad de ventanas maximizadas en pantallas anchas.",
|
||||||
"max_width_label": "Ancho máximo del contenido en píxeles",
|
"max_width_label": "Ancho máximo del contenido en píxeles",
|
||||||
"max_width_unit": "píxeles",
|
"max_width_unit": "píxeles"
|
||||||
"apply_changes_description": "Para aplicar cambios en el ancho del contenido, haga clic en",
|
|
||||||
"reload_button": "recargar la interfaz",
|
|
||||||
"reload_description": "cambios desde las opciones de apariencia"
|
|
||||||
},
|
},
|
||||||
"native_title_bar": {
|
"native_title_bar": {
|
||||||
"title": "Barra de título nativa (requiere reiniciar la aplicación)",
|
"title": "Barra de título nativa (requiere reiniciar la aplicación)",
|
||||||
@@ -1252,8 +1254,9 @@
|
|||||||
"indexing_stopped": "Indexado detenido",
|
"indexing_stopped": "Indexado detenido",
|
||||||
"indexing_in_progress": "Indexado en progreso...",
|
"indexing_in_progress": "Indexado en progreso...",
|
||||||
"last_indexed": "Último indexado",
|
"last_indexed": "Último indexado",
|
||||||
"n_notes_queued": "{{ count }} nota agregada a la cola para indexado",
|
"n_notes_queued_0": "{{ count }} nota agregada a la cola para indexar",
|
||||||
"n_notes_queued_plural": "{{ count }} notas agregadas a la cola para indexado",
|
"n_notes_queued_1": "{{ count }} notas agregadas a la cola para indexar",
|
||||||
|
"n_notes_queued_2": "",
|
||||||
"note_chat": "Chat de nota",
|
"note_chat": "Chat de nota",
|
||||||
"notes_indexed": "{{ count }} nota indexada",
|
"notes_indexed": "{{ count }} nota indexada",
|
||||||
"notes_indexed_plural": "{{ count }} notas indexadas",
|
"notes_indexed_plural": "{{ count }} notas indexadas",
|
||||||
@@ -1414,7 +1417,13 @@
|
|||||||
"min-days-in-first-week": "Días mínimos en la primer semana",
|
"min-days-in-first-week": "Días mínimos en la primer semana",
|
||||||
"first-week-info": "Primer semana que contiene al primer jueves del año está basado en el estándar<a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
|
"first-week-info": "Primer semana que contiene al primer jueves del año está basado en el estándar<a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
|
||||||
"first-week-warning": "Cambiar las opciones de primer semana puede causar duplicados con las Notas Semanales existentes y las Notas Semanales existentes no serán actualizadas respectivamente.",
|
"first-week-warning": "Cambiar las opciones de primer semana puede causar duplicados con las Notas Semanales existentes y las Notas Semanales existentes no serán actualizadas respectivamente.",
|
||||||
"formatting-locale": "Fecha y formato de número"
|
"formatting-locale": "Fecha y formato de número",
|
||||||
|
"tuesday": "Martes",
|
||||||
|
"wednesday": "Miércoles",
|
||||||
|
"thursday": "Jueves",
|
||||||
|
"friday": "Viernes",
|
||||||
|
"saturday": "Sábado",
|
||||||
|
"formatting-locale-auto": "Basado en el idioma de la aplicación"
|
||||||
},
|
},
|
||||||
"backup": {
|
"backup": {
|
||||||
"automatic_backup": "Copia de seguridad automática",
|
"automatic_backup": "Copia de seguridad automática",
|
||||||
@@ -1434,10 +1443,6 @@
|
|||||||
"etapi": {
|
"etapi": {
|
||||||
"title": "ETAPI",
|
"title": "ETAPI",
|
||||||
"description": "ETAPI es una REST API que se utiliza para acceder a la instancia de Trilium mediante programación, sin interfaz de usuario.",
|
"description": "ETAPI es una REST API que se utiliza para acceder a la instancia de Trilium mediante programación, sin interfaz de usuario.",
|
||||||
"see_more": "Véa más detalles en el {{- link_to_wiki}} y el {{- link_to_openapi_spec}} o el {{- link_to_swagger_ui }}.",
|
|
||||||
"wiki": "wiki",
|
|
||||||
"openapi_spec": "Especificación ETAPI OpenAPI",
|
|
||||||
"swagger_ui": "ETAPI Swagger UI",
|
|
||||||
"create_token": "Crear nuevo token ETAPI",
|
"create_token": "Crear nuevo token ETAPI",
|
||||||
"existing_tokens": "Tokens existentes",
|
"existing_tokens": "Tokens existentes",
|
||||||
"no_tokens_yet": "Aún no hay tokens. Dé clic en el botón de arriba para crear uno.",
|
"no_tokens_yet": "Aún no hay tokens. Dé clic en el botón de arriba para crear uno.",
|
||||||
@@ -1507,7 +1512,7 @@
|
|||||||
"recovery_keys_used": "Usado: {{date}}",
|
"recovery_keys_used": "Usado: {{date}}",
|
||||||
"recovery_keys_unused": "El código de recuperación {{index}} está sin usar",
|
"recovery_keys_unused": "El código de recuperación {{index}} está sin usar",
|
||||||
"oauth_title": "OAuth/OpenID",
|
"oauth_title": "OAuth/OpenID",
|
||||||
"oauth_description": "OpenID es una forma estandarizada de permitirle iniciar sesión en sitios web utilizando una cuenta de otro servicio, como Google, para verificar su identidad. Siga estas <a href = \"https://developers.google.com/identity/openid-connect/openid-connect\">instrucciones</a> para configurar un servicio OpenID a través de Google.",
|
"oauth_description": "OpenID es un método estandarizado que permite iniciar sesión en sitios web usando una cuenta de otro servicio, como Google, para verificar tu identidad. El emisor predeterminado es Google, pero se puede cambiar a cualquier otro proveedor de OpenID. Consulta <a href=\"#root/_hidden/_help/_help_Otzi9La2YAUX/_help_WOcw2SLH6tbX/_help_7DAiwaf8Z7Rz\">aquí</a> para más información. Sigue estas <a href=\"https://developers.google.com/identity/openid-connect/openid-connect\">instrucciones</a> para configurar un servicio OpenID a través de Google.",
|
||||||
"oauth_description_warning": "Para habilitar OAuth/OpenID, necesita establecer la URL base de OAuth/OpenID, ID de cliente y secreto de cliente en el archivo config.ini y reiniciar la aplicación. Si desea establecerlas desde variables de ambiente, por favor establezca TRILIUM_OAUTH_BASE_URL, TRILIUM_OAUTH_CLIENT_ID y TRILIUM_OAUTH_CLIENT_SECRET.",
|
"oauth_description_warning": "Para habilitar OAuth/OpenID, necesita establecer la URL base de OAuth/OpenID, ID de cliente y secreto de cliente en el archivo config.ini y reiniciar la aplicación. Si desea establecerlas desde variables de ambiente, por favor establezca TRILIUM_OAUTH_BASE_URL, TRILIUM_OAUTH_CLIENT_ID y TRILIUM_OAUTH_CLIENT_SECRET.",
|
||||||
"oauth_missing_vars": "Ajustes faltantes: {{-variables}}",
|
"oauth_missing_vars": "Ajustes faltantes: {{-variables}}",
|
||||||
"oauth_user_account": "Cuenta de usuario: ",
|
"oauth_user_account": "Cuenta de usuario: ",
|
||||||
@@ -1584,7 +1589,7 @@
|
|||||||
"tree-context-menu": {
|
"tree-context-menu": {
|
||||||
"open-in-a-new-tab": "Abrir en nueva pestaña",
|
"open-in-a-new-tab": "Abrir en nueva pestaña",
|
||||||
"open-in-a-new-split": "Abrir en nueva división",
|
"open-in-a-new-split": "Abrir en nueva división",
|
||||||
"insert-note-after": "Insertar nota después de",
|
"insert-note-after": "Insertar nota contigua",
|
||||||
"insert-child-note": "Insertar subnota",
|
"insert-child-note": "Insertar subnota",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"search-in-subtree": "Buscar en subárbol",
|
"search-in-subtree": "Buscar en subárbol",
|
||||||
@@ -1617,8 +1622,8 @@
|
|||||||
"unarchive": "Desarchivar"
|
"unarchive": "Desarchivar"
|
||||||
},
|
},
|
||||||
"shared_info": {
|
"shared_info": {
|
||||||
"shared_publicly": "Esta nota está compartida públicamente en {{- link}}",
|
"shared_publicly": "Esta nota está compartida públicamente en {{- link}}.",
|
||||||
"shared_locally": "Esta nota está compartida localmente en {{- link}}",
|
"shared_locally": "Esta nota está compartida localmente en {{- link}}.",
|
||||||
"help_link": "Para obtener ayuda visite <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki</a>."
|
"help_link": "Para obtener ayuda visite <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki</a>."
|
||||||
},
|
},
|
||||||
"note_types": {
|
"note_types": {
|
||||||
@@ -1704,7 +1709,9 @@
|
|||||||
"window-on-top": "Mantener esta ventana en la parte superior"
|
"window-on-top": "Mantener esta ventana en la parte superior"
|
||||||
},
|
},
|
||||||
"note_detail": {
|
"note_detail": {
|
||||||
"could_not_find_typewidget": "No se pudo encontrar typeWidget para el tipo '{{type}}'"
|
"could_not_find_typewidget": "No se pudo encontrar typeWidget para el tipo '{{type}}'",
|
||||||
|
"printing": "Impresión en curso...",
|
||||||
|
"printing_pdf": "Exportando a PDF en curso.."
|
||||||
},
|
},
|
||||||
"note_title": {
|
"note_title": {
|
||||||
"placeholder": "escriba el título de la nota aquí..."
|
"placeholder": "escriba el título de la nota aquí..."
|
||||||
@@ -1980,7 +1987,8 @@
|
|||||||
"new-item-placeholder": "Ingresar título de la nota...",
|
"new-item-placeholder": "Ingresar título de la nota...",
|
||||||
"add-column-placeholder": "Ingresar título de la columna...",
|
"add-column-placeholder": "Ingresar título de la columna...",
|
||||||
"edit-note-title": "Haga clic para editar el título de la nota",
|
"edit-note-title": "Haga clic para editar el título de la nota",
|
||||||
"edit-column-title": "Haga clic para editar el título de la columna"
|
"edit-column-title": "Haga clic para editar el título de la columna",
|
||||||
|
"remove-from-board": "Eliminar del tablero"
|
||||||
},
|
},
|
||||||
"content_renderer": {
|
"content_renderer": {
|
||||||
"open_externally": "Abrir externamente"
|
"open_externally": "Abrir externamente"
|
||||||
@@ -2035,7 +2043,7 @@
|
|||||||
},
|
},
|
||||||
"call_to_action": {
|
"call_to_action": {
|
||||||
"next_theme_title": "Prueba el nuevo tema de Trilium",
|
"next_theme_title": "Prueba el nuevo tema de Trilium",
|
||||||
"next_theme_message": "Estas usando actualmente el tema heredado, ¿Te gustaría probar el nuevo tema?",
|
"next_theme_message": "Estás usando actualmente el tema heredado. ¿Te gustaría probar el nuevo tema?",
|
||||||
"next_theme_button": "Prueba el nuevo tema",
|
"next_theme_button": "Prueba el nuevo tema",
|
||||||
"background_effects_title": "Los efectos de fondo son ahora estables",
|
"background_effects_title": "Los efectos de fondo son ahora estables",
|
||||||
"background_effects_message": "En los dispositivos Windows, los efectos de fondo ya son totalmente estables. Los efectos de fondo añaden un toque de color a la interfaz de usuario difuminando el fondo que hay detrás. Esta técnica también se utiliza en otras aplicaciones como el Explorador de Windows.",
|
"background_effects_message": "En los dispositivos Windows, los efectos de fondo ya son totalmente estables. Los efectos de fondo añaden un toque de color a la interfaz de usuario difuminando el fondo que hay detrás. Esta técnica también se utiliza en otras aplicaciones como el Explorador de Windows.",
|
||||||
@@ -2063,5 +2071,13 @@
|
|||||||
"pagination": {
|
"pagination": {
|
||||||
"total_notes": "{{count}} notas",
|
"total_notes": "{{count}} notas",
|
||||||
"page_title": "Página de {{startIndex}} - {{endIndex}}"
|
"page_title": "Página de {{startIndex}} - {{endIndex}}"
|
||||||
|
},
|
||||||
|
"presentation_view": {
|
||||||
|
"edit-slide": "Editar este slide",
|
||||||
|
"start-presentation": "Iniciar presentación",
|
||||||
|
"slide-overview": "Alternar vista general de los slides"
|
||||||
|
},
|
||||||
|
"collections": {
|
||||||
|
"rendering_error": "No se puede mostrar contenido debido a un error."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,8 @@
|
|||||||
},
|
},
|
||||||
"import-status": "Statut de l'importation",
|
"import-status": "Statut de l'importation",
|
||||||
"in-progress": "Importation en cours : {{progress}}",
|
"in-progress": "Importation en cours : {{progress}}",
|
||||||
"successful": "Importation terminée avec succès."
|
"successful": "Importation terminée avec succès.",
|
||||||
|
"importZipRecommendation": "Lors de l'importation d'un fichier ZIP, la hiérarchie des notes reflétera la structure des sous-répertoires au sein de l'archive."
|
||||||
},
|
},
|
||||||
"include_note": {
|
"include_note": {
|
||||||
"dialog_title": "Inclure une note",
|
"dialog_title": "Inclure une note",
|
||||||
@@ -259,7 +260,6 @@
|
|||||||
"delete_all_revisions": "Supprimer toutes les versions de cette note",
|
"delete_all_revisions": "Supprimer toutes les versions de cette note",
|
||||||
"delete_all_button": "Supprimer toutes les versions",
|
"delete_all_button": "Supprimer toutes les versions",
|
||||||
"help_title": "Aide sur les versions de notes",
|
"help_title": "Aide sur les versions de notes",
|
||||||
"revision_last_edited": "Cette version a été modifiée pour la dernière fois le {{date}}",
|
|
||||||
"confirm_delete_all": "Voulez-vous supprimer toutes les versions de cette note ?",
|
"confirm_delete_all": "Voulez-vous supprimer toutes les versions de cette note ?",
|
||||||
"no_revisions": "Aucune version pour cette note pour l'instant...",
|
"no_revisions": "Aucune version pour cette note pour l'instant...",
|
||||||
"confirm_restore": "Voulez-vous restaurer cette version ? Le titre et le contenu actuels de la note seront écrasés par cette version.",
|
"confirm_restore": "Voulez-vous restaurer cette version ? Le titre et le contenu actuels de la note seront écrasés par cette version.",
|
||||||
@@ -276,7 +276,12 @@
|
|||||||
"preview": "Aperçu :",
|
"preview": "Aperçu :",
|
||||||
"preview_not_available": "L'aperçu n'est pas disponible pour ce type de note.",
|
"preview_not_available": "L'aperçu n'est pas disponible pour ce type de note.",
|
||||||
"restore_button": "Restaurer",
|
"restore_button": "Restaurer",
|
||||||
"delete_button": "Supprimer"
|
"delete_button": "Supprimer",
|
||||||
|
"diff_on": "Afficher les différences",
|
||||||
|
"diff_off": "Afficher le contenu",
|
||||||
|
"diff_on_hint": "Cliquer pour afficher les différences avec la note d'origine",
|
||||||
|
"diff_off_hint": "Cliquer pour afficher le contenu de la note",
|
||||||
|
"diff_not_available": "La comparaison n'est pas disponible."
|
||||||
},
|
},
|
||||||
"sort_child_notes": {
|
"sort_child_notes": {
|
||||||
"sort_children_by": "Trier les enfants par...",
|
"sort_children_by": "Trier les enfants par...",
|
||||||
@@ -641,7 +646,9 @@
|
|||||||
"about": "À propos de Trilium Notes",
|
"about": "À propos de Trilium Notes",
|
||||||
"logout": "Déconnexion",
|
"logout": "Déconnexion",
|
||||||
"show-cheatsheet": "Afficher l'aide rapide",
|
"show-cheatsheet": "Afficher l'aide rapide",
|
||||||
"toggle-zen-mode": "Zen Mode"
|
"toggle-zen-mode": "Zen Mode",
|
||||||
|
"new-version-available": "Nouvelle mise à jour disponible",
|
||||||
|
"download-update": "Obtenir la version {{latestVersion}}"
|
||||||
},
|
},
|
||||||
"zen_mode": {
|
"zen_mode": {
|
||||||
"button_exit": "Sortir du Zen mode"
|
"button_exit": "Sortir du Zen mode"
|
||||||
@@ -668,7 +675,7 @@
|
|||||||
"search_in_note": "Rechercher dans la note",
|
"search_in_note": "Rechercher dans la note",
|
||||||
"note_source": "Code source",
|
"note_source": "Code source",
|
||||||
"note_attachments": "Pièces jointes",
|
"note_attachments": "Pièces jointes",
|
||||||
"open_note_externally": "Ouverture externe",
|
"open_note_externally": "Ouvrir la note en externe",
|
||||||
"open_note_externally_title": "Le fichier sera ouvert dans une application externe et les modifications apportées seront surveillées. Vous pourrez ensuite téléverser la version modifiée dans Trilium.",
|
"open_note_externally_title": "Le fichier sera ouvert dans une application externe et les modifications apportées seront surveillées. Vous pourrez ensuite téléverser la version modifiée dans Trilium.",
|
||||||
"open_note_custom": "Ouvrir la note avec",
|
"open_note_custom": "Ouvrir la note avec",
|
||||||
"import_files": "Importer des fichiers",
|
"import_files": "Importer des fichiers",
|
||||||
@@ -731,7 +738,8 @@
|
|||||||
"insert_child_note": "Insérer une note enfant",
|
"insert_child_note": "Insérer une note enfant",
|
||||||
"delete_this_note": "Supprimer cette note",
|
"delete_this_note": "Supprimer cette note",
|
||||||
"error_cannot_get_branch_id": "Impossible d'obtenir branchId pour notePath '{{notePath}}'",
|
"error_cannot_get_branch_id": "Impossible d'obtenir branchId pour notePath '{{notePath}}'",
|
||||||
"error_unrecognized_command": "Commande non reconnue {{command}}"
|
"error_unrecognized_command": "Commande non reconnue {{command}}",
|
||||||
|
"note_revisions": "Révision de la note"
|
||||||
},
|
},
|
||||||
"note_icon": {
|
"note_icon": {
|
||||||
"change_note_icon": "Changer l'icône de note",
|
"change_note_icon": "Changer l'icône de note",
|
||||||
@@ -760,7 +768,8 @@
|
|||||||
"table": "Tableau",
|
"table": "Tableau",
|
||||||
"geo-map": "Carte géographique",
|
"geo-map": "Carte géographique",
|
||||||
"board": "Tableau de bord",
|
"board": "Tableau de bord",
|
||||||
"include_archived_notes": "Afficher les notes archivées"
|
"include_archived_notes": "Afficher les notes archivées",
|
||||||
|
"presentation": "Présentation"
|
||||||
},
|
},
|
||||||
"edited_notes": {
|
"edited_notes": {
|
||||||
"no_edited_notes_found": "Aucune note modifiée ce jour-là...",
|
"no_edited_notes_found": "Aucune note modifiée ce jour-là...",
|
||||||
@@ -1097,9 +1106,6 @@
|
|||||||
"title": "Largeur du contenu",
|
"title": "Largeur du contenu",
|
||||||
"default_description": "Trilium limite par défaut la largeur maximale du contenu pour améliorer la lisibilité sur des écrans larges.",
|
"default_description": "Trilium limite par défaut la largeur maximale du contenu pour améliorer la lisibilité sur des écrans larges.",
|
||||||
"max_width_label": "Largeur maximale du contenu en pixels",
|
"max_width_label": "Largeur maximale du contenu en pixels",
|
||||||
"apply_changes_description": "Pour appliquer les modifications de largeur du contenu, cliquez sur",
|
|
||||||
"reload_button": "recharger l'interface",
|
|
||||||
"reload_description": "changements par rapport aux options d'apparence",
|
|
||||||
"max_width_unit": "Pixels"
|
"max_width_unit": "Pixels"
|
||||||
},
|
},
|
||||||
"native_title_bar": {
|
"native_title_bar": {
|
||||||
@@ -1135,7 +1141,8 @@
|
|||||||
"code_auto_read_only_size": {
|
"code_auto_read_only_size": {
|
||||||
"title": "Taille pour la lecture seule automatique",
|
"title": "Taille pour la lecture seule automatique",
|
||||||
"description": "La taille pour la lecture seule automatique est le seuil au-delà de laquelle les notes seront affichées en mode lecture seule (pour optimiser les performances).",
|
"description": "La taille pour la lecture seule automatique est le seuil au-delà de laquelle les notes seront affichées en mode lecture seule (pour optimiser les performances).",
|
||||||
"label": "Taille pour la lecture seule automatique (notes de code)"
|
"label": "Taille pour la lecture seule automatique (notes de code)",
|
||||||
|
"unit": "caractères"
|
||||||
},
|
},
|
||||||
"code_mime_types": {
|
"code_mime_types": {
|
||||||
"title": "Types MIME disponibles dans la liste déroulante"
|
"title": "Types MIME disponibles dans la liste déroulante"
|
||||||
@@ -1154,7 +1161,8 @@
|
|||||||
"download_images_description": "Le HTML collé peut contenir des références à des images en ligne, Trilium trouvera ces références et téléchargera les images afin qu'elles soient disponibles hors ligne.",
|
"download_images_description": "Le HTML collé peut contenir des références à des images en ligne, Trilium trouvera ces références et téléchargera les images afin qu'elles soient disponibles hors ligne.",
|
||||||
"enable_image_compression": "Activer la compression des images",
|
"enable_image_compression": "Activer la compression des images",
|
||||||
"max_image_dimensions": "Largeur/hauteur maximale d'une image en pixels (l'image sera redimensionnée si elle dépasse ce paramètre).",
|
"max_image_dimensions": "Largeur/hauteur maximale d'une image en pixels (l'image sera redimensionnée si elle dépasse ce paramètre).",
|
||||||
"jpeg_quality_description": "Qualité JPEG (10 - pire qualité, 100 - meilleure qualité, 50 - 85 est recommandé)"
|
"jpeg_quality_description": "Qualité JPEG (10 - pire qualité, 100 - meilleure qualité, 50 - 85 est recommandé)",
|
||||||
|
"max_image_dimensions_unit": "pixels"
|
||||||
},
|
},
|
||||||
"attachment_erasure_timeout": {
|
"attachment_erasure_timeout": {
|
||||||
"attachment_erasure_timeout": "Délai d'effacement des pièces jointes",
|
"attachment_erasure_timeout": "Délai d'effacement des pièces jointes",
|
||||||
@@ -1186,7 +1194,8 @@
|
|||||||
"note_revisions_snapshot_limit_description": "La limite du nombre de versions de note désigne le nombre maximum de versions pouvant être enregistrées pour chaque note. -1 signifie aucune limite, 0 signifie supprimer toutes les versions. Vous pouvez définir le nombre maximal de versions pour une seule note avec le label #versioningLimit.",
|
"note_revisions_snapshot_limit_description": "La limite du nombre de versions de note désigne le nombre maximum de versions pouvant être enregistrées pour chaque note. -1 signifie aucune limite, 0 signifie supprimer toutes les versions. Vous pouvez définir le nombre maximal de versions pour une seule note avec le label #versioningLimit.",
|
||||||
"snapshot_number_limit_label": "Nombre limite de versions de note :",
|
"snapshot_number_limit_label": "Nombre limite de versions de note :",
|
||||||
"erase_excess_revision_snapshots": "Effacer maintenant les versions en excès",
|
"erase_excess_revision_snapshots": "Effacer maintenant les versions en excès",
|
||||||
"erase_excess_revision_snapshots_prompt": "Les versions en excès ont été effacées."
|
"erase_excess_revision_snapshots_prompt": "Les versions en excès ont été effacées.",
|
||||||
|
"snapshot_number_limit_unit": "instantanés"
|
||||||
},
|
},
|
||||||
"search_engine": {
|
"search_engine": {
|
||||||
"title": "Moteur de recherche",
|
"title": "Moteur de recherche",
|
||||||
@@ -1228,19 +1237,35 @@
|
|||||||
"title": "Table des matières",
|
"title": "Table des matières",
|
||||||
"description": "La table des matières apparaîtra dans les notes textuelles lorsque la note comporte plus d'un nombre défini de titres. Vous pouvez personnaliser ce nombre :",
|
"description": "La table des matières apparaîtra dans les notes textuelles lorsque la note comporte plus d'un nombre défini de titres. Vous pouvez personnaliser ce nombre :",
|
||||||
"disable_info": "Vous pouvez également utiliser cette option pour désactiver la table des matières en définissant un nombre très élevé.",
|
"disable_info": "Vous pouvez également utiliser cette option pour désactiver la table des matières en définissant un nombre très élevé.",
|
||||||
"shortcut_info": "Vous pouvez configurer un raccourci clavier pour afficher/masquer le volet de droite (y compris la table des matières) dans Options -> Raccourcis (nom « toggleRightPane »)."
|
"shortcut_info": "Vous pouvez configurer un raccourci clavier pour afficher/masquer le volet de droite (y compris la table des matières) dans Options -> Raccourcis (nom « toggleRightPane »).",
|
||||||
|
"unit": "titres"
|
||||||
},
|
},
|
||||||
"text_auto_read_only_size": {
|
"text_auto_read_only_size": {
|
||||||
"title": "Taille automatique en lecture seule",
|
"title": "Taille automatique en lecture seule",
|
||||||
"description": "La taille automatique des notes en lecture seule est la taille au-delà de laquelle les notes seront affichées en mode lecture seule (pour des raisons de performances).",
|
"description": "La taille automatique des notes en lecture seule est la taille au-delà de laquelle les notes seront affichées en mode lecture seule (pour des raisons de performances).",
|
||||||
"label": "Taille automatique en lecture seule (notes de texte)"
|
"label": "Taille automatique en lecture seule (notes de texte)",
|
||||||
|
"unit": "caractères"
|
||||||
},
|
},
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"title": "Paramètres régionaux",
|
"title": "Paramètres régionaux",
|
||||||
"language": "Langue",
|
"language": "Langue",
|
||||||
"first-day-of-the-week": "Premier jour de la semaine",
|
"first-day-of-the-week": "Premier jour de la semaine",
|
||||||
"sunday": "Dimanche",
|
"sunday": "Dimanche",
|
||||||
"monday": "Lundi"
|
"monday": "Lundi",
|
||||||
|
"tuesday": "Mardi",
|
||||||
|
"wednesday": "Mercredi",
|
||||||
|
"thursday": "Jeudi",
|
||||||
|
"friday": "Vendredi",
|
||||||
|
"saturday": "Samedi",
|
||||||
|
"first-week-of-the-year": "Première semaine de l'année",
|
||||||
|
"first-week-contains-first-day": "La première semaine contient le premier jour de l'année",
|
||||||
|
"first-week-contains-first-thursday": "La première semaine contient le premier jeudi de l'année",
|
||||||
|
"first-week-has-minimum-days": "La première semaine a un nombre minimum de jours",
|
||||||
|
"min-days-in-first-week": "Nombre minimum de jours dans la première semaine",
|
||||||
|
"first-week-info": "La première semaine contient le premier jeudi de l'année et est basée sur la norme <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> .",
|
||||||
|
"first-week-warning": "La modification des options de la première semaine peut entraîner des doublons avec les notes de semaine existantes et les notes de semaine existantes ne seront pas mises à jour en conséquence.",
|
||||||
|
"formatting-locale": "Format de date et de nombre",
|
||||||
|
"formatting-locale-auto": "En fonction de la langue de l'application"
|
||||||
},
|
},
|
||||||
"backup": {
|
"backup": {
|
||||||
"automatic_backup": "Sauvegarde automatique",
|
"automatic_backup": "Sauvegarde automatique",
|
||||||
@@ -1260,8 +1285,6 @@
|
|||||||
"etapi": {
|
"etapi": {
|
||||||
"title": "ETAPI",
|
"title": "ETAPI",
|
||||||
"description": "ETAPI est une API REST utilisée pour accéder à l'instance Trilium par programme, sans interface utilisateur.",
|
"description": "ETAPI est une API REST utilisée pour accéder à l'instance Trilium par programme, sans interface utilisateur.",
|
||||||
"wiki": "wiki",
|
|
||||||
"openapi_spec": "Spec ETAPI OpenAPI",
|
|
||||||
"create_token": "Créer un nouveau jeton ETAPI",
|
"create_token": "Créer un nouveau jeton ETAPI",
|
||||||
"existing_tokens": "Jetons existants",
|
"existing_tokens": "Jetons existants",
|
||||||
"no_tokens_yet": "Il n'y a pas encore de jetons. Cliquez sur le bouton ci-dessus pour en créer un.",
|
"no_tokens_yet": "Il n'y a pas encore de jetons. Cliquez sur le bouton ci-dessus pour en créer un.",
|
||||||
@@ -1341,7 +1364,8 @@
|
|||||||
"test_title": "Test de synchronisation",
|
"test_title": "Test de synchronisation",
|
||||||
"test_description": "Testera la connexion et la prise de contact avec le serveur de synchronisation. Si le serveur de synchronisation n'est pas initialisé, cela le configurera pour qu'il se synchronise avec le document local.",
|
"test_description": "Testera la connexion et la prise de contact avec le serveur de synchronisation. Si le serveur de synchronisation n'est pas initialisé, cela le configurera pour qu'il se synchronise avec le document local.",
|
||||||
"test_button": "Tester la synchronisation",
|
"test_button": "Tester la synchronisation",
|
||||||
"handshake_failed": "Échec de la négociation avec le serveur de synchronisation, erreur : {{message}}"
|
"handshake_failed": "Échec de la négociation avec le serveur de synchronisation, erreur : {{message}}",
|
||||||
|
"timeout_unit": "millisecondes"
|
||||||
},
|
},
|
||||||
"api_log": {
|
"api_log": {
|
||||||
"close": "Fermer"
|
"close": "Fermer"
|
||||||
@@ -1401,11 +1425,14 @@
|
|||||||
"import-into-note": "Importer dans la note",
|
"import-into-note": "Importer dans la note",
|
||||||
"apply-bulk-actions": "Appliquer des Actions groupées",
|
"apply-bulk-actions": "Appliquer des Actions groupées",
|
||||||
"converted-to-attachments": "Les notes {{count}} ont été converties en pièces jointes.",
|
"converted-to-attachments": "Les notes {{count}} ont été converties en pièces jointes.",
|
||||||
"convert-to-attachment-confirm": "Êtes-vous sûr de vouloir convertir les notes sélectionnées en pièces jointes de leurs notes parentes ?"
|
"convert-to-attachment-confirm": "Êtes-vous sûr de vouloir convertir les notes sélectionnées en pièces jointes de leurs notes parentes ?",
|
||||||
|
"archive": "Archive",
|
||||||
|
"unarchive": "Désarchiver",
|
||||||
|
"open-in-popup": "Modification rapide"
|
||||||
},
|
},
|
||||||
"shared_info": {
|
"shared_info": {
|
||||||
"shared_publicly": "Cette note est partagée publiquement sur {{- link}}",
|
"shared_publicly": "Cette note est partagée publiquement sur {{- link}}.",
|
||||||
"shared_locally": "Cette note est partagée localement sur {{- link}}",
|
"shared_locally": "Cette note est partagée localement sur {{- link}}.",
|
||||||
"help_link": "Pour obtenir de l'aide, visitez le <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki</a>."
|
"help_link": "Pour obtenir de l'aide, visitez le <a href=\"https://triliumnext.github.io/Docs/Wiki/sharing.html\">wiki</a>."
|
||||||
},
|
},
|
||||||
"note_types": {
|
"note_types": {
|
||||||
@@ -1427,7 +1454,11 @@
|
|||||||
"confirm-change": "Il n'est pas recommandé de modifier le type de note lorsque son contenu n'est pas vide. Voulez-vous continuer ?",
|
"confirm-change": "Il n'est pas recommandé de modifier le type de note lorsque son contenu n'est pas vide. Voulez-vous continuer ?",
|
||||||
"geo-map": "Carte géo",
|
"geo-map": "Carte géo",
|
||||||
"beta-feature": "Beta",
|
"beta-feature": "Beta",
|
||||||
"task-list": "Liste de tâches"
|
"task-list": "Liste de tâches",
|
||||||
|
"book": "Collection",
|
||||||
|
"ai-chat": "Chat IA",
|
||||||
|
"new-feature": "Nouveau",
|
||||||
|
"collections": "Collections"
|
||||||
},
|
},
|
||||||
"protect_note": {
|
"protect_note": {
|
||||||
"toggle-on": "Protéger la note",
|
"toggle-on": "Protéger la note",
|
||||||
@@ -1480,13 +1511,16 @@
|
|||||||
"hoist-this-note-workspace": "Focus cette note (espace de travail)",
|
"hoist-this-note-workspace": "Focus cette note (espace de travail)",
|
||||||
"refresh-saved-search-results": "Rafraîchir les résultats de recherche enregistrée",
|
"refresh-saved-search-results": "Rafraîchir les résultats de recherche enregistrée",
|
||||||
"create-child-note": "Créer une note enfant",
|
"create-child-note": "Créer une note enfant",
|
||||||
"unhoist": "Désactiver le focus"
|
"unhoist": "Désactiver le focus",
|
||||||
|
"toggle-sidebar": "Basculer la barre latérale"
|
||||||
},
|
},
|
||||||
"title_bar_buttons": {
|
"title_bar_buttons": {
|
||||||
"window-on-top": "Épingler cette fenêtre au premier plan"
|
"window-on-top": "Épingler cette fenêtre au premier plan"
|
||||||
},
|
},
|
||||||
"note_detail": {
|
"note_detail": {
|
||||||
"could_not_find_typewidget": "Impossible de trouver typeWidget pour le type '{{type}}'"
|
"could_not_find_typewidget": "Impossible de trouver typeWidget pour le type '{{type}}'",
|
||||||
|
"printing": "Impression en cours...",
|
||||||
|
"printing_pdf": "Export au format PDF en cours..."
|
||||||
},
|
},
|
||||||
"note_title": {
|
"note_title": {
|
||||||
"placeholder": "saisir le titre de la note ici..."
|
"placeholder": "saisir le titre de la note ici..."
|
||||||
@@ -1537,7 +1571,9 @@
|
|||||||
},
|
},
|
||||||
"clipboard": {
|
"clipboard": {
|
||||||
"cut": "Les note(s) ont été coupées dans le presse-papiers.",
|
"cut": "Les note(s) ont été coupées dans le presse-papiers.",
|
||||||
"copied": "Les note(s) ont été coupées dans le presse-papiers."
|
"copied": "Les note(s) ont été coupées dans le presse-papiers.",
|
||||||
|
"copy_failed": "Impossible de copier dans le presse-papiers en raison de problèmes d'autorisation.",
|
||||||
|
"copy_success": "Copié dans le presse-papiers."
|
||||||
},
|
},
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"note-revision-created": "La version de la note a été créée.",
|
"note-revision-created": "La version de la note a été créée.",
|
||||||
@@ -1559,7 +1595,9 @@
|
|||||||
"ws": {
|
"ws": {
|
||||||
"sync-check-failed": "Le test de synchronisation a échoué !",
|
"sync-check-failed": "Le test de synchronisation a échoué !",
|
||||||
"consistency-checks-failed": "Les tests de cohérence ont échoué ! Consultez les journaux pour plus de détails.",
|
"consistency-checks-failed": "Les tests de cohérence ont échoué ! Consultez les journaux pour plus de détails.",
|
||||||
"encountered-error": "Erreur \"{{message}}\", consultez la console."
|
"encountered-error": "Erreur \"{{message}}\", consultez la console.",
|
||||||
|
"lost-websocket-connection-title": "Connexion au serveur perdue",
|
||||||
|
"lost-websocket-connection-message": "Vérifiez la configuration de votre proxy inverse (par exemple nginx ou Apache) pour vous assurer que les connexions WebSocket sont correctement autorisées et ne sont pas bloquées."
|
||||||
},
|
},
|
||||||
"hoisted_note": {
|
"hoisted_note": {
|
||||||
"confirm_unhoisting": "La note demandée «{{requestedNote}}» est en dehors du sous-arbre de la note focus «{{hoistedNote}}». Le focus doit être désactivé pour accéder à la note. Voulez-vous enlever le focus ?"
|
"confirm_unhoisting": "La note demandée «{{requestedNote}}» est en dehors du sous-arbre de la note focus «{{hoistedNote}}». Le focus doit être désactivé pour accéder à la note. Voulez-vous enlever le focus ?"
|
||||||
@@ -1581,13 +1619,15 @@
|
|||||||
},
|
},
|
||||||
"highlighting": {
|
"highlighting": {
|
||||||
"description": "Contrôle la coloration syntaxique des blocs de code à l'intérieur des notes texte, les notes de code ne seront pas affectées.",
|
"description": "Contrôle la coloration syntaxique des blocs de code à l'intérieur des notes texte, les notes de code ne seront pas affectées.",
|
||||||
"color-scheme": "Jeu de couleurs"
|
"color-scheme": "Jeu de couleurs",
|
||||||
|
"title": "Blocs de code"
|
||||||
},
|
},
|
||||||
"code_block": {
|
"code_block": {
|
||||||
"word_wrapping": "Saut à la ligne automatique suivant la largeur",
|
"word_wrapping": "Saut à la ligne automatique suivant la largeur",
|
||||||
"theme_none": "Pas de coloration syntaxique",
|
"theme_none": "Pas de coloration syntaxique",
|
||||||
"theme_group_light": "Thèmes clairs",
|
"theme_group_light": "Thèmes clairs",
|
||||||
"theme_group_dark": "Thèmes sombres"
|
"theme_group_dark": "Thèmes sombres",
|
||||||
|
"copy_title": "Copier dans le presse-papiers"
|
||||||
},
|
},
|
||||||
"classic_editor_toolbar": {
|
"classic_editor_toolbar": {
|
||||||
"title": "Mise en forme"
|
"title": "Mise en forme"
|
||||||
@@ -1625,7 +1665,8 @@
|
|||||||
"link_context_menu": {
|
"link_context_menu": {
|
||||||
"open_note_in_new_tab": "Ouvrir la note dans un nouvel onglet",
|
"open_note_in_new_tab": "Ouvrir la note dans un nouvel onglet",
|
||||||
"open_note_in_new_split": "Ouvrir la note dans une nouvelle division",
|
"open_note_in_new_split": "Ouvrir la note dans une nouvelle division",
|
||||||
"open_note_in_new_window": "Ouvrir la note dans une nouvelle fenêtre"
|
"open_note_in_new_window": "Ouvrir la note dans une nouvelle fenêtre",
|
||||||
|
"open_note_in_popup": "Édition rapide"
|
||||||
},
|
},
|
||||||
"electron_integration": {
|
"electron_integration": {
|
||||||
"desktop-application": "Application de bureau",
|
"desktop-application": "Application de bureau",
|
||||||
@@ -1645,7 +1686,8 @@
|
|||||||
"full-text-search": "Recherche dans le texte"
|
"full-text-search": "Recherche dans le texte"
|
||||||
},
|
},
|
||||||
"note_tooltip": {
|
"note_tooltip": {
|
||||||
"note-has-been-deleted": "La note a été supprimée."
|
"note-has-been-deleted": "La note a été supprimée.",
|
||||||
|
"quick-edit": "Edition rapide"
|
||||||
},
|
},
|
||||||
"geo-map": {
|
"geo-map": {
|
||||||
"create-child-note-title": "Créer une nouvelle note enfant et l'ajouter à la carte",
|
"create-child-note-title": "Créer une nouvelle note enfant et l'ajouter à la carte",
|
||||||
@@ -1654,7 +1696,8 @@
|
|||||||
},
|
},
|
||||||
"geo-map-context": {
|
"geo-map-context": {
|
||||||
"open-location": "Ouvrir la position",
|
"open-location": "Ouvrir la position",
|
||||||
"remove-from-map": "Retirer de la carte"
|
"remove-from-map": "Retirer de la carte",
|
||||||
|
"add-note": "Ajouter un marqueur à cet endroit"
|
||||||
},
|
},
|
||||||
"help-button": {
|
"help-button": {
|
||||||
"title": "Ouvrir la page d'aide correspondante"
|
"title": "Ouvrir la page d'aide correspondante"
|
||||||
@@ -1681,10 +1724,41 @@
|
|||||||
"minimum_input": "La valeur de temps saisie doit être d'au moins {{minimumSeconds}} secondes."
|
"minimum_input": "La valeur de temps saisie doit être d'au moins {{minimumSeconds}} secondes."
|
||||||
},
|
},
|
||||||
"multi_factor_authentication": {
|
"multi_factor_authentication": {
|
||||||
"oauth_user_email": "Courriel de l'utilisateur : "
|
"oauth_user_email": "Courriel de l'utilisateur : ",
|
||||||
|
"title": "Authentification multifacteur",
|
||||||
|
"description": "L'authentification multifacteur (MFA) renforce la sécurité de votre compte. Au lieu de simplement saisir un mot de passe pour vous connecter, le MFA vous demande de fournir une ou plusieurs preuves supplémentaires pour vérifier votre identité. Ainsi, même si quelqu'un obtient votre mot de passe, il ne peut accéder à votre compte sans cette deuxième information. C'est comme ajouter une serrure supplémentaire à votre porte, rendant l'effraction beaucoup plus difficile.<br><br>Veuillez suivre les instructions ci-dessous pour activer le MFA. Si vous ne configurez pas correctement, la connexion se fera uniquement par mot de passe.",
|
||||||
|
"mfa_enabled": "Activer l'authentification multifacteur",
|
||||||
|
"mfa_method": "Méthode MFA",
|
||||||
|
"electron_disabled": "L'authentification multifacteur n'est actuellement pas prise en charge dans la version de bureau.",
|
||||||
|
"totp_title": "Mot de passe à usage unique basé sur le temps (TOTP)",
|
||||||
|
"totp_description": "Le TOTP (Time-Based One-Time Password) est une fonctionnalité de sécurité qui génère un code unique et temporaire, modifié toutes les 30 secondes. Vous utilisez ce code, associé à votre mot de passe, pour vous connecter à votre compte, ce qui rend l'accès à celui-ci beaucoup plus difficile.",
|
||||||
|
"totp_secret_title": "Générer un secret TOTP",
|
||||||
|
"totp_secret_generate": "Générer un secret TOTP",
|
||||||
|
"totp_secret_regenerate": "Re-générer un secret TOTP",
|
||||||
|
"no_totp_secret_warning": "Pour activer TOTP, vous devez d’abord générer un secret TOTP.",
|
||||||
|
"totp_secret_description_warning": "Après avoir généré un nouveau secret TOTP, vous devrez vous reconnecter avec le nouveau secret TOTP.",
|
||||||
|
"totp_secret_generated": "Secret TOTP généré",
|
||||||
|
"totp_secret_warning": "Veuillez conserver le secret généré dans un endroit sûr. Il ne sera plus affiché.",
|
||||||
|
"totp_secret_regenerate_confirm": "Voulez-vous vraiment régénérer le secret TOTP ? Cela invalidera le secret TOTP précédent et tous les codes de récupération existants.",
|
||||||
|
"recovery_keys_title": "Clés de récupération d'authentification unique",
|
||||||
|
"recovery_keys_description": "Les clés de récupération d'authentification unique sont utilisées pour vous connecter même si vous ne pouvez pas accéder à vos codes d'authentification.",
|
||||||
|
"recovery_keys_description_warning": "Les clés de récupération ne seront plus affichées après avoir quitté la page, conservez-les dans un endroit sûr et sécurisé.<br>Une fois qu'une clé de récupération a été utilisée, elle devient inutilisable.",
|
||||||
|
"recovery_keys_error": "Erreur lors de la génération des codes de récupération",
|
||||||
|
"recovery_keys_no_key_set": "Aucun code de récupération défini",
|
||||||
|
"recovery_keys_generate": "Générer des codes de récupération",
|
||||||
|
"recovery_keys_regenerate": "Re-générer des codes de récupération",
|
||||||
|
"recovery_keys_used": "Utilisé : {{date}}",
|
||||||
|
"recovery_keys_unused": "Le code de récupération {{index}} n'est pas utilisé",
|
||||||
|
"oauth_title": "OAuth/OpenID",
|
||||||
|
"oauth_description": "OpenID est un moyen standardisé de vous connecter à des sites web avec un compte d'un autre service, comme Google, afin de vérifier votre identité. L'émetteur par défaut est Google, mais vous pouvez le modifier pour n'importe quel autre fournisseur OpenID. Consultez <a href=\"#root/_hidden/_help/_help_Otzi9La2YAUX/_help_WOcw2SLH6tbX/_help_7DAiwaf8Z7Rz\">ici</a> pour plus d'informations. Suivez ces <a href=\"https://developers.google.com/identity/openid-connect/openid-connect\">instructions</a> pour configurer un service OpenID via Google.",
|
||||||
|
"oauth_description_warning": "Pour activer OAuth/OpenID, vous devez définir l'URL de base, l'ID client et le secret client OAuth/OpenID dans le fichier config.ini, puis redémarrer l'application. Pour les définir à partir des variables d'environnement, définissez TRILIUM_OAUTH_BASE_URL, TRILIUM_OAUTH_CLIENT_ID et TRILIUM_OAUTH_CLIENT_SECRET.",
|
||||||
|
"oauth_missing_vars": "Paramètres manquants : {{-variables}}",
|
||||||
|
"oauth_user_account": "Compte utilisateur: ",
|
||||||
|
"oauth_user_not_logged_in": "Pas connecté !"
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"close": "Fermer"
|
"close": "Fermer",
|
||||||
|
"help_title": "Afficher plus d'informations sur cet écran"
|
||||||
},
|
},
|
||||||
"ai_llm": {
|
"ai_llm": {
|
||||||
"not_started": "Non démarré",
|
"not_started": "Non démarré",
|
||||||
@@ -1763,7 +1837,77 @@
|
|||||||
"reprocess_index": "Rafraîchir l'index de recherche",
|
"reprocess_index": "Rafraîchir l'index de recherche",
|
||||||
"reprocessing_index": "Mise à jour...",
|
"reprocessing_index": "Mise à jour...",
|
||||||
"reprocess_index_started": "L'optimisation de l'indice de recherche à commencer en arrière-plan",
|
"reprocess_index_started": "L'optimisation de l'indice de recherche à commencer en arrière-plan",
|
||||||
"reprocess_index_error": "Erreur dans le rafraichissement de l'indice de recherche"
|
"reprocess_index_error": "Erreur dans le rafraichissement de l'indice de recherche",
|
||||||
|
"failed_notes": "Notes en erreur",
|
||||||
|
"last_processed": "Dernier traitement",
|
||||||
|
"restore_provider": "Restaurer le fournisseur de recherche",
|
||||||
|
"index_rebuild_progress": "Progression de la reconstruction de l'index",
|
||||||
|
"index_rebuilding": "Optimisation de l'index ({{percentage}}%)",
|
||||||
|
"index_rebuild_complete": "Optimisation de l'index terminée",
|
||||||
|
"index_rebuild_status_error": "Erreur lors de la vérification de l'état de reconstruction de l'index",
|
||||||
|
"provider_precedence": "Priorité du fournisseur",
|
||||||
|
"never": "Jamais",
|
||||||
|
"processing": "Traitement en cours ({{percentage}}%)",
|
||||||
|
"incomplete": "Incomplet ({{percentage}}%)",
|
||||||
|
"complete": "Terminé (100%)",
|
||||||
|
"refreshing": "Mise à jour...",
|
||||||
|
"auto_refresh_notice": "Actualisation automatique toutes les {{seconds}} secondes",
|
||||||
|
"note_queued_for_retry": "Note mise en file d'attente pour une nouvelle tentative",
|
||||||
|
"failed_to_retry_note": "Échec de la nouvelle tentative de note",
|
||||||
|
"all_notes_queued_for_retry": "Toutes les notes ayant échoué sont mises en file d'attente pour une nouvelle tentative",
|
||||||
|
"failed_to_retry_all": "Échec du ré essai des notes",
|
||||||
|
"ai_settings": "Paramètres IA",
|
||||||
|
"api_key_tooltip": "Clé API pour accéder au service",
|
||||||
|
"empty_key_warning": {
|
||||||
|
"anthropic": "La clé API Anthropic est vide. Veuillez saisir une clé API valide.",
|
||||||
|
"openai": "La clé API OpenAI est vide. Veuillez saisir une clé API valide.",
|
||||||
|
"voyage": "La clé API Voyage est vide. Veuillez saisir une clé API valide.",
|
||||||
|
"ollama": "La clé API Ollama est vide. Veuillez saisir une clé API valide."
|
||||||
|
},
|
||||||
|
"agent": {
|
||||||
|
"processing": "Traitement...",
|
||||||
|
"thinking": "Réflexion...",
|
||||||
|
"loading": "Chargement...",
|
||||||
|
"generating": "Génération..."
|
||||||
|
},
|
||||||
|
"name": "IA",
|
||||||
|
"openai": "OpenAI",
|
||||||
|
"use_enhanced_context": "Utiliser un contexte amélioré",
|
||||||
|
"enhanced_context_description": "Fournit à l'IA plus de contexte à partir de la note et de ses notes associées pour de meilleures réponses",
|
||||||
|
"show_thinking": "Montrer la réflexion",
|
||||||
|
"show_thinking_description": "Montrer la chaîne de pensée de l'IA",
|
||||||
|
"enter_message": "Entrez votre message...",
|
||||||
|
"error_contacting_provider": "Erreur lors de la connexion au fournisseur d'IA. Veuillez vérifier vos paramètres et votre connexion Internet.",
|
||||||
|
"error_generating_response": "Erreur lors de la génération de la réponse de l'IA",
|
||||||
|
"index_all_notes": "Indexer toutes les notes",
|
||||||
|
"index_status": "Statut de l'index",
|
||||||
|
"indexed_notes": "Notes indexées",
|
||||||
|
"indexing_stopped": "Arrêt de l'indexation",
|
||||||
|
"indexing_in_progress": "Indexation en cours...",
|
||||||
|
"last_indexed": "Dernière indexée",
|
||||||
|
"note_chat": "Note discussion",
|
||||||
|
"sources": "Sources",
|
||||||
|
"start_indexing": "Démarrage de l'indexation",
|
||||||
|
"use_advanced_context": "Utiliser le contexte avancé",
|
||||||
|
"ollama_no_url": "Ollama n'est pas configuré. Veuillez saisir une URL valide.",
|
||||||
|
"chat": {
|
||||||
|
"root_note_title": "Discussions IA",
|
||||||
|
"root_note_content": "Cette note contient vos conversations de chat IA enregistrées.",
|
||||||
|
"new_chat_title": "Nouvelle discussion",
|
||||||
|
"create_new_ai_chat": "Créer une nouvelle discussion IA"
|
||||||
|
},
|
||||||
|
"create_new_ai_chat": "Créer une nouvelle discussion IA",
|
||||||
|
"configuration_warnings": "Il y a quelques problèmes avec la configuration de votre IA. Veuillez vérifier vos paramètres.",
|
||||||
|
"experimental_warning": "La fonctionnalité LLM est actuellement expérimentale – vous êtes prévenu.",
|
||||||
|
"selected_provider": "Fournisseur sélectionné",
|
||||||
|
"selected_provider_description": "Choisissez le fournisseur d’IA pour les fonctionnalités de discussion et de complétion",
|
||||||
|
"select_model": "Sélectionner le modèle...",
|
||||||
|
"select_provider": "Sélectionnez un fournisseur...",
|
||||||
|
"ai_enabled": "Fonctionnalités d'IA activées",
|
||||||
|
"ai_disabled": "Fonctionnalités d'IA désactivées",
|
||||||
|
"no_models_found_online": "Aucun modèle trouvé. Veuillez vérifier votre clé API et vos paramètres.",
|
||||||
|
"no_models_found_ollama": "Aucun modèle Ollama trouvé. Veuillez vérifier si Ollama est en cours d'exécution.",
|
||||||
|
"error_fetching": "Erreur lors de la récupération des modèles : {{error}}"
|
||||||
},
|
},
|
||||||
"ui-performance": {
|
"ui-performance": {
|
||||||
"title": "Performance",
|
"title": "Performance",
|
||||||
@@ -1772,5 +1916,168 @@
|
|||||||
"enable-backdrop-effects": "Activer les effets d'arrière plan pour les menus, popups et panneaux",
|
"enable-backdrop-effects": "Activer les effets d'arrière plan pour les menus, popups et panneaux",
|
||||||
"enable-smooth-scroll": "Active le défilement fluide",
|
"enable-smooth-scroll": "Active le défilement fluide",
|
||||||
"app-restart-required": "(redémarrer l'application pour appliquer les changements)"
|
"app-restart-required": "(redémarrer l'application pour appliquer les changements)"
|
||||||
|
},
|
||||||
|
"custom_date_time_format": {
|
||||||
|
"title": "Format de date/heure personnalisé",
|
||||||
|
"description": "Personnalisez le format de la date et de l'heure insérées via <shortcut /> ou la barre d'outils. Consultez la <doc>Day.js docs</doc> pour connaître les formats disponibles.",
|
||||||
|
"format_string": "Chaîne de format :",
|
||||||
|
"formatted_time": "Date/heure formatée :"
|
||||||
|
},
|
||||||
|
"table_view": {
|
||||||
|
"delete_column_confirmation": "Êtes-vous sûr de vouloir supprimer cette colonne ? L'attribut correspondant sera supprimé de toutes les notes.",
|
||||||
|
"delete-column": "Supprimer la colonne",
|
||||||
|
"new-column-label": "Étiquette",
|
||||||
|
"new-column-relation": "Relation",
|
||||||
|
"edit-column": "Editer la colonne",
|
||||||
|
"add-column-to-the-right": "Ajouter une colonne à droite",
|
||||||
|
"new-row": "Nouvelle ligne",
|
||||||
|
"new-column": "Nouvelle colonne",
|
||||||
|
"sort-column-by": "Trier par « {{title}} »",
|
||||||
|
"sort-column-ascending": "Ascendant",
|
||||||
|
"sort-column-descending": "Descendant",
|
||||||
|
"sort-column-clear": "Annuler le tri",
|
||||||
|
"hide-column": "Masquer la colonne \"{{title}}\"",
|
||||||
|
"show-hide-columns": "Afficher/masquer les colonnes",
|
||||||
|
"row-insert-above": "Insérer une ligne au-dessus",
|
||||||
|
"row-insert-below": "Insérer une ligne au-dessous",
|
||||||
|
"row-insert-child": "Insérer une note enfant",
|
||||||
|
"add-column-to-the-left": "Ajouter une colonne à gauche"
|
||||||
|
},
|
||||||
|
"book_properties_config": {
|
||||||
|
"hide-weekends": "Masquer les week-ends",
|
||||||
|
"display-week-numbers": "Afficher les numéros de semaine",
|
||||||
|
"map-style": "Style de carte :",
|
||||||
|
"max-nesting-depth": "Profondeur d'imbrication maximale :",
|
||||||
|
"raster": "Trame",
|
||||||
|
"vector_light": "Vecteur (clair)",
|
||||||
|
"vector_dark": "Vecteur (foncé)",
|
||||||
|
"show-scale": "Afficher l'échelle"
|
||||||
|
},
|
||||||
|
"table_context_menu": {
|
||||||
|
"delete_row": "Supprimer la ligne"
|
||||||
|
},
|
||||||
|
"board_view": {
|
||||||
|
"delete-note": "Supprimer la note...",
|
||||||
|
"remove-from-board": "Retirer du tableau",
|
||||||
|
"archive-note": "Note archivée",
|
||||||
|
"unarchive-note": "Note désarchivée",
|
||||||
|
"move-to": "Déplacer vers",
|
||||||
|
"insert-above": "Insérer au-dessus",
|
||||||
|
"insert-below": "Insérer au-dessous",
|
||||||
|
"delete-column": "Supprimer la colonne",
|
||||||
|
"delete-column-confirmation": "Êtes-vous sûr de vouloir supprimer cette colonne ? L'attribut correspondant sera également supprimé dans les notes sous cette colonne.",
|
||||||
|
"new-item": "Nouvel article",
|
||||||
|
"new-item-placeholder": "Entrez le titre de note...",
|
||||||
|
"add-column": "Ajouter une colonne",
|
||||||
|
"add-column-placeholder": "Entrez le nom de la colonne...",
|
||||||
|
"edit-note-title": "Cliquez pour modifier le titre de la note",
|
||||||
|
"edit-column-title": "Cliquez pour modifier le titre de la colonne"
|
||||||
|
},
|
||||||
|
"presentation_view": {
|
||||||
|
"edit-slide": "Modifier cette diapositive",
|
||||||
|
"start-presentation": "Démarrer la présentation",
|
||||||
|
"slide-overview": "Afficher un aperçu des diapositives"
|
||||||
|
},
|
||||||
|
"command_palette": {
|
||||||
|
"tree-action-name": "Arborescence : {{name}}",
|
||||||
|
"export_note_title": "Exporter la note",
|
||||||
|
"export_note_description": "Exporter la note actuelle",
|
||||||
|
"show_attachments_title": "Afficher les pièces jointes",
|
||||||
|
"show_attachments_description": "Afficher les pièces jointes des notes",
|
||||||
|
"search_notes_title": "Rechercher des notes",
|
||||||
|
"search_notes_description": "Ouvrir la recherche avancée",
|
||||||
|
"search_subtree_title": "Rechercher dans la sous-arborescence",
|
||||||
|
"search_subtree_description": "Rechercher dans la sous-arborescence actuelle",
|
||||||
|
"search_history_title": "Afficher l'historique de recherche",
|
||||||
|
"search_history_description": "Afficher les recherches précédentes",
|
||||||
|
"configure_launch_bar_title": "Configurer la barre de lancement",
|
||||||
|
"configure_launch_bar_description": "Ouvrir la configuration de la barre de lancement pour ajouter ou supprimer des éléments."
|
||||||
|
},
|
||||||
|
"content_renderer": {
|
||||||
|
"open_externally": "Ouverture externe"
|
||||||
|
},
|
||||||
|
"call_to_action": {
|
||||||
|
"next_theme_title": "Essayez le nouveau thème Trilium",
|
||||||
|
"next_theme_message": "Vous utilisez actuellement le thème hérité de l'ancienne version, souhaitez-vous essayer le nouveau thème ?",
|
||||||
|
"next_theme_button": "Essayez le nouveau thème",
|
||||||
|
"background_effects_title": "Les effets d'arrière-plan sont désormais stables",
|
||||||
|
"background_effects_message": "Sur les appareils Windows, les effets d'arrière-plan sont désormais parfaitement stables. Ils ajoutent une touche de couleur à l'interface utilisateur en floutant l'arrière-plan. Cette technique est également utilisée dans d'autres applications comme l'Explorateur Windows.",
|
||||||
|
"background_effects_button": "Activer les effets d'arrière-plan",
|
||||||
|
"dismiss": "Rejeter"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"related_settings": "Paramètres associés"
|
||||||
|
},
|
||||||
|
"settings_appearance": {
|
||||||
|
"related_code_blocks": "Schéma de coloration syntaxique pour les blocs de code dans les notes de texte",
|
||||||
|
"related_code_notes": "Schéma de couleurs pour les notes de code"
|
||||||
|
},
|
||||||
|
"units": {
|
||||||
|
"percentage": "%"
|
||||||
|
},
|
||||||
|
"pagination": {
|
||||||
|
"page_title": "Page de {{startIndex}} - {{endIndex}}",
|
||||||
|
"total_notes": "{{count}} notes"
|
||||||
|
},
|
||||||
|
"collections": {
|
||||||
|
"rendering_error": "Impossible d'afficher le contenu en raison d'une erreur."
|
||||||
|
},
|
||||||
|
"code-editor-options": {
|
||||||
|
"title": "Éditeur"
|
||||||
|
},
|
||||||
|
"tasks": {
|
||||||
|
"due": {
|
||||||
|
"today": "Aujourd'hui",
|
||||||
|
"tomorrow": "Demain",
|
||||||
|
"yesterday": "Hier"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"content_widget": {
|
||||||
|
"unknown_widget": "Widget inconnu pour « {{id}} »."
|
||||||
|
},
|
||||||
|
"note_language": {
|
||||||
|
"not_set": "Non défini",
|
||||||
|
"configure-languages": "Configurer les langues..."
|
||||||
|
},
|
||||||
|
"content_language": {
|
||||||
|
"title": "Contenu des langues",
|
||||||
|
"description": "Sélectionnez une ou plusieurs langues à afficher dans la section « Propriétés de base » d'une note textuelle en lecture seule ou modifiable. Cela permettra d'utiliser des fonctionnalités telles que la vérification orthographique ou la prise en charge de l'écriture de droite à gauche."
|
||||||
|
},
|
||||||
|
"switch_layout_button": {
|
||||||
|
"title_vertical": "Déplacer le volet d'édition vers le bas",
|
||||||
|
"title_horizontal": "Déplacer le panneau d'édition vers la gauche"
|
||||||
|
},
|
||||||
|
"toggle_read_only_button": {
|
||||||
|
"unlock-editing": "Déverrouiller l'édition",
|
||||||
|
"lock-editing": "Verrouiller l'édition"
|
||||||
|
},
|
||||||
|
"png_export_button": {
|
||||||
|
"button_title": "Exporter le diagramme au format PNG"
|
||||||
|
},
|
||||||
|
"svg": {
|
||||||
|
"export_to_png": "Le diagramme n'a pas pu être exporté au format PNG."
|
||||||
|
},
|
||||||
|
"code_theme": {
|
||||||
|
"title": "Apparence",
|
||||||
|
"word_wrapping": "retour à la ligne automatique",
|
||||||
|
"color-scheme": "Jeu de couleurs"
|
||||||
|
},
|
||||||
|
"cpu_arch_warning": {
|
||||||
|
"title": "Veuillez télécharger la version ARM64",
|
||||||
|
"message_macos": "TriliumNext fonctionne actuellement sous Rosetta 2, ce qui signifie que vous utilisez la version Intel (x64) sur un Mac Apple Silicon. Cela aura un impact significatif sur les performances et l'autonomie de la batterie.",
|
||||||
|
"message_windows": "TriliumNext fonctionne actuellement en mode émulation, ce qui signifie que vous utilisez la version Intel (x64) sur un appareil Windows sur ARM. Cela aura un impact significatif sur les performances et l'autonomie de la batterie.",
|
||||||
|
"recommendation": "Pour une expérience optimale, veuillez télécharger la version ARM64 native de TriliumNext depuis notre page de versions.",
|
||||||
|
"download_link": "Télécharger la version native",
|
||||||
|
"continue_anyway": "Continuer quand même",
|
||||||
|
"dont_show_again": "Ne plus afficher cet avertissement"
|
||||||
|
},
|
||||||
|
"editorfeatures": {
|
||||||
|
"title": "Caractéristiques",
|
||||||
|
"emoji_completion_enabled": "Activer la saisie semi-automatique des emojis",
|
||||||
|
"emoji_completion_description": "Si cette option est activée, les emojis peuvent être facilement insérés dans le texte en tapant `:` , suivi du nom d'un emoji.",
|
||||||
|
"note_completion_enabled": "Activer la saisie semi-automatique des notes",
|
||||||
|
"note_completion_description": "Si cette option est activée, des liens vers des notes peuvent être créés en tapant `@` suivi du titre d'une note.",
|
||||||
|
"slash_commands_enabled": "Activer les commandes slash",
|
||||||
|
"slash_commands_description": "Si cette option est activée, les commandes d'édition telles que l'insertion de sauts de ligne ou d'en-têtes peuvent être activées en tapant `/`."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5
apps/client/src/translations/hi/translation.json
Normal file
5
apps/client/src/translations/hi/translation.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"about": {
|
||||||
|
"title": "ट्रिलियम नोट्स के बारें में"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +1,50 @@
|
|||||||
{}
|
{
|
||||||
|
"about": {
|
||||||
|
"title": "A Trilium Notes-ról",
|
||||||
|
"homepage": "Kezdőlap:",
|
||||||
|
"app_version": "Alkalmazás verziója:",
|
||||||
|
"db_version": "Adatbázis verzió:",
|
||||||
|
"sync_version": "Verzió szinkronizálás :",
|
||||||
|
"build_revision": "Build revízió:",
|
||||||
|
"data_directory": "Adatkönyvtár:",
|
||||||
|
"build_date": "Build dátum:"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"critical-error": {
|
||||||
|
"title": "Kritikus hiba",
|
||||||
|
"message": "Kritikus hiba történt, amely megakadályozza a kliensalkalmazás indítását:\n\n{{message}}\n\nEzt valószínűleg egy váratlan szkripthiba okozza. Próbálja meg biztonságos módban elindítani az alkalmazást, és hárítsa el a problémát."
|
||||||
|
},
|
||||||
|
"widget-error": {
|
||||||
|
"title": "Nem sikerült inicializálni egy widgetet",
|
||||||
|
"message-custom": "A(z) \"{{id}}\" azonosítójú, \"{{title}}\" című jegyzetből származó egyéni widget inicializálása sikertelen volt a következő ok miatt:\n\n{{message}}",
|
||||||
|
"message-unknown": "Ismeretlen widget inicializálása sikertelen volt a következő ok miatt:\n\n{{message}}"
|
||||||
|
},
|
||||||
|
"bundle-error": {
|
||||||
|
"title": "Nem sikerült betölteni az egyéni szkriptet",
|
||||||
|
"message": "A(z) \"{{id}}\" azonosítójú, \"{{title}}\" című jegyzetből származó szkript nem hajtható végre a következő ok miatt:\n\n{{message}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"add_link": {
|
||||||
|
"add_link": "Link hozzáadása",
|
||||||
|
"help_on_links": "Segítség a linkekhez",
|
||||||
|
"note": "Jegyzet",
|
||||||
|
"search_note": "név szerinti jegyzetkeresés",
|
||||||
|
"link_title_mirrors": "A link cím tükrözi a jegyzet aktuális címét",
|
||||||
|
"link_title_arbitrary": "link cím önkényesen módosítható",
|
||||||
|
"link_title": "Link cím",
|
||||||
|
"button_add_link": "Link hozzáadása"
|
||||||
|
},
|
||||||
|
"branch_prefix": {
|
||||||
|
"edit_branch_prefix": "Az elágazás előtagjának szerkesztése",
|
||||||
|
"help_on_tree_prefix": "Segítség a fa előtagján",
|
||||||
|
"prefix": "Az előtag: ",
|
||||||
|
"save": "Mentés"
|
||||||
|
},
|
||||||
|
"bulk_actions": {
|
||||||
|
"bulk_actions": "Tömeges akciók",
|
||||||
|
"affected_notes": "Érintett jegyzetek",
|
||||||
|
"labels": "Címkék",
|
||||||
|
"relations": "Kapcsolatok",
|
||||||
|
"notes": "Jegyzetek"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
32
apps/client/src/translations/id/translation.json
Normal file
32
apps/client/src/translations/id/translation.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"about": {
|
||||||
|
"title": "Tentang Trilium Notes",
|
||||||
|
"homepage": "Halaman utama:",
|
||||||
|
"app_version": "Versi Aplikasi:",
|
||||||
|
"db_version": "Versi DB:",
|
||||||
|
"sync_version": "Versi sinkronisasi:",
|
||||||
|
"build_date": "Tanggal pembuatan:",
|
||||||
|
"build_revision": "Revisi pembuatan:",
|
||||||
|
"data_directory": "Direktori data:"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"critical-error": {
|
||||||
|
"title": "Kesalahan kritis",
|
||||||
|
"message": "Telah terjadi kesalahan kritis yang mencegah aplikasi klien untuk memulai:\n\n{{message}}\n\nHal ini kemungkinan besar disebabkan oleh skrip yang gagal secara tidak terduga. Coba jalankan aplikasi dalam mode aman dan atasi masalahnya."
|
||||||
|
},
|
||||||
|
"widget-error": {
|
||||||
|
"title": "Gagal menginisialisasi widget",
|
||||||
|
"message-custom": "Widget kustom dari catatan dengan ID \"{{id}}\", berjudul \"{{title}}\" tidak dapat diinisialisasi karena:\n\n{{message}}",
|
||||||
|
"message-unknown": "Widget tidak dikenal tidak dapat diinisialisasi karena:\n\n{{message}}"
|
||||||
|
},
|
||||||
|
"bundle-error": {
|
||||||
|
"title": "Gagal memuat skrip kustom",
|
||||||
|
"message": "Skrip dari catatan dengan ID \"{{id}}\", berjudul \"{{title}}\" tidak dapat dijalankan karena:\n\n{{message}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"add_link": {
|
||||||
|
"add_link": "Tambah tautan",
|
||||||
|
"help_on_links": "Bantuan pada tautan",
|
||||||
|
"note": "Catatan"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -39,7 +39,10 @@
|
|||||||
"edit_branch_prefix": "ブランチ接頭辞の編集",
|
"edit_branch_prefix": "ブランチ接頭辞の編集",
|
||||||
"help_on_tree_prefix": "ツリー接頭辞に関するヘルプ",
|
"help_on_tree_prefix": "ツリー接頭辞に関するヘルプ",
|
||||||
"prefix": "接頭辞: ",
|
"prefix": "接頭辞: ",
|
||||||
"branch_prefix_saved": "ブランチの接頭辞が保存されました。"
|
"branch_prefix_saved": "ブランチの接頭辞が保存されました。",
|
||||||
|
"edit_branch_prefix_multiple": "{{count}} ブランチのブランチ接頭辞を編集",
|
||||||
|
"branch_prefix_saved_multiple": "{{count}} 個のブランチのブランチ接頭辞が保存されました。",
|
||||||
|
"affected_branches": "影響を受けるブランチ {{count}}:"
|
||||||
},
|
},
|
||||||
"global_menu": {
|
"global_menu": {
|
||||||
"menu": "メニュー",
|
"menu": "メニュー",
|
||||||
@@ -67,11 +70,13 @@
|
|||||||
"switch_to_mobile_version": "モバイル版に切り替え",
|
"switch_to_mobile_version": "モバイル版に切り替え",
|
||||||
"switch_to_desktop_version": "デスクトップ版に切り替え",
|
"switch_to_desktop_version": "デスクトップ版に切り替え",
|
||||||
"configure_launchbar": "ランチャーバーの設定",
|
"configure_launchbar": "ランチャーバーの設定",
|
||||||
"show_shared_notes_subtree": "共有ノートのサブツリーを表示"
|
"show_shared_notes_subtree": "共有ノートのサブツリーを表示",
|
||||||
|
"new-version-available": "新しいアップデートが利用可能",
|
||||||
|
"download-update": "{{latestVersion}} をバージョンを入手"
|
||||||
},
|
},
|
||||||
"left_pane_toggle": {
|
"left_pane_toggle": {
|
||||||
"show_panel": "パネルを表示",
|
"show_panel": "パネルを表示",
|
||||||
"hide_panel": "パネルを隠す"
|
"hide_panel": "パネルを非表示"
|
||||||
},
|
},
|
||||||
"move_pane_button": {
|
"move_pane_button": {
|
||||||
"move_left": "左に移動",
|
"move_left": "左に移動",
|
||||||
@@ -79,7 +84,7 @@
|
|||||||
},
|
},
|
||||||
"clone_to": {
|
"clone_to": {
|
||||||
"notes_to_clone": "クローンするノート",
|
"notes_to_clone": "クローンするノート",
|
||||||
"target_parent_note": "ターゲットの親ノート",
|
"target_parent_note": "対象の親ノート",
|
||||||
"search_for_note_by_its_name": "ノート名で検索",
|
"search_for_note_by_its_name": "ノート名で検索",
|
||||||
"cloned_note_prefix_title": "クローンされたノートは、指定された接頭辞を付けてノートツリーに表示されます",
|
"cloned_note_prefix_title": "クローンされたノートは、指定された接頭辞を付けてノートツリーに表示されます",
|
||||||
"prefix_optional": "接頭辞(任意)",
|
"prefix_optional": "接頭辞(任意)",
|
||||||
@@ -162,7 +167,13 @@
|
|||||||
"min-days-in-first-week": "最初の週の最低日数",
|
"min-days-in-first-week": "最初の週の最低日数",
|
||||||
"first-week-info": "最初の週は、その年の最初の木曜日を含む週を指し、<a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>規格に基づいています。",
|
"first-week-info": "最初の週は、その年の最初の木曜日を含む週を指し、<a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>規格に基づいています。",
|
||||||
"first-week-warning": "最初の週のオプションを変更すると、既存のウィークノートと重複する可能性があり、既存のウィークノートはそれに応じて更新されません。",
|
"first-week-warning": "最初の週のオプションを変更すると、既存のウィークノートと重複する可能性があり、既存のウィークノートはそれに応じて更新されません。",
|
||||||
"formatting-locale": "日付と数値のフォーマット"
|
"formatting-locale": "日付と数値のフォーマット",
|
||||||
|
"formatting-locale-auto": "アプリケーションの言語に基づいて",
|
||||||
|
"tuesday": "火曜日",
|
||||||
|
"wednesday": "水曜日",
|
||||||
|
"thursday": "木曜日",
|
||||||
|
"friday": "金曜日",
|
||||||
|
"saturday": "土曜日"
|
||||||
},
|
},
|
||||||
"tab_row": {
|
"tab_row": {
|
||||||
"close_tab": "タブを閉じる",
|
"close_tab": "タブを閉じる",
|
||||||
@@ -246,17 +257,18 @@
|
|||||||
"export_status": "エクスポート状況",
|
"export_status": "エクスポート状況",
|
||||||
"export_in_progress": "エクスポート処理中: {{progressCount}}",
|
"export_in_progress": "エクスポート処理中: {{progressCount}}",
|
||||||
"export_finished_successfully": "エクスポートが正常に完了しました。",
|
"export_finished_successfully": "エクスポートが正常に完了しました。",
|
||||||
"format_pdf": "PDF - 印刷または共有目的に。"
|
"format_pdf": "PDF - 印刷または共有目的に。",
|
||||||
|
"share-format": "Web 公開用の HTML - 共有ノートで使用されるのと同じテーマを使用しますが、静的 Web サイトとして公開できます。"
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"title": "チートシート",
|
"title": "チートシート",
|
||||||
"noteNavigation": "ノートナビゲーション",
|
"noteNavigation": "ノートナビゲーション",
|
||||||
"collapseExpand": "ノードの格納/展開",
|
"collapseExpand": "ノードを折りたたむ / 展開",
|
||||||
"goBackForwards": "履歴を戻る/進む",
|
"goBackForwards": "履歴を戻る/進む",
|
||||||
"scrollToActiveNote": "アクティブノートまでスクロール",
|
"scrollToActiveNote": "アクティブノートまでスクロール",
|
||||||
"jumpToParentNote": "親ノートへ移動",
|
"jumpToParentNote": "親ノートへ移動",
|
||||||
"collapseWholeTree": "すべてのノートツリーを格納",
|
"collapseWholeTree": "すべてのノートツリーを折りたたむ",
|
||||||
"collapseSubTree": "サブツリーを格納",
|
"collapseSubTree": "サブツリーを折りたたむ",
|
||||||
"tabShortcuts": "タブショートカット",
|
"tabShortcuts": "タブショートカット",
|
||||||
"newTabNoteLink": "ノートのリンクをクリックすると、新しいタブで開く",
|
"newTabNoteLink": "ノートのリンクをクリックすると、新しいタブで開く",
|
||||||
"newTabWithActivationNoteLink": "ノートのリンクをクリックすると、新しいタブで開き、アクティブにします",
|
"newTabWithActivationNoteLink": "ノートのリンクをクリックすると、新しいタブで開き、アクティブにします",
|
||||||
@@ -274,11 +286,11 @@
|
|||||||
"selectAllNotes": "現在のレベルのノートをすべて選択",
|
"selectAllNotes": "現在のレベルのノートをすべて選択",
|
||||||
"selectNote": "ノートを選択",
|
"selectNote": "ノートを選択",
|
||||||
"copyNotes": "アクティブなノート(または現在の選択範囲)をクリップボードにコピーする(<a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/cloning-notes.html#cloning-notes\">クローン</a>に使用)",
|
"copyNotes": "アクティブなノート(または現在の選択範囲)をクリップボードにコピーする(<a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/cloning-notes.html#cloning-notes\">クローン</a>に使用)",
|
||||||
"cutNotes": "アクティブなノート(または現在の選択範囲)をクリップボードにカットする(ノートの移動に使用)",
|
"cutNotes": "アクティブなノート(または現在の選択範囲)をクリップボードに切り取り(ノートの移動に使用)",
|
||||||
"pasteNotes": "ノートをサブノートとしてアクティブノートに貼り付ける(コピーされたかカットされたかに よって、移動またはクローンになる)",
|
"pasteNotes": "ノートをサブノートとしてアクティブノートに貼り付ける(コピーされたか切り取りされたかに よって、移動またはクローンになる)",
|
||||||
"deleteNotes": "ノート/サブツリーを削除",
|
"deleteNotes": "ノート/サブツリーを削除",
|
||||||
"editingNotes": "ノート編集",
|
"editingNotes": "ノート編集",
|
||||||
"editNoteTitle": "押下するとツリーペインからタイトルの編集に移ります。タイトルの編集からEnterキーを押すと、本文の編集に移動します。<kbd>Ctrl+.</kbd> で本文の編集からツリーペインに戻ります。",
|
"editNoteTitle": "ツリーペインでEnterキーを押すと、ツリーペインからノートタイトルに切り替わります。ノートタイトルだとテキストエディタにフォーカスが切り替わります。<kbd>Ctrl+.</kbd> を押すと、エディタからツリーペインに戻ります。",
|
||||||
"createEditLink": "外部リンクの作成/編集",
|
"createEditLink": "外部リンクの作成/編集",
|
||||||
"createInternalLink": "内部リンクの作成",
|
"createInternalLink": "内部リンクの作成",
|
||||||
"followLink": "カーソル下のリンクをたどる",
|
"followLink": "カーソル下のリンクをたどる",
|
||||||
@@ -294,7 +306,7 @@
|
|||||||
"showDevTools": "開発者ツールを表示",
|
"showDevTools": "開発者ツールを表示",
|
||||||
"showSQLConsole": "SQLコンソールを表示",
|
"showSQLConsole": "SQLコンソールを表示",
|
||||||
"other": "その他",
|
"other": "その他",
|
||||||
"quickSearch": "クイックサーチにフォーカス",
|
"quickSearch": "クイック検索にフォーカス",
|
||||||
"inPageSearch": "ページ内検索",
|
"inPageSearch": "ページ内検索",
|
||||||
"showJumpToNoteDialog": "<a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/note-navigation.html#jump-to-note\">「ジャンプ先」ダイアログ</a>を表示",
|
"showJumpToNoteDialog": "<a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/note-navigation.html#jump-to-note\">「ジャンプ先」ダイアログ</a>を表示",
|
||||||
"moveNoteUpDown": "ノートリストでノートを上/下に移動",
|
"moveNoteUpDown": "ノートリストでノートを上/下に移動",
|
||||||
@@ -326,7 +338,8 @@
|
|||||||
"import-status": "インポート状況",
|
"import-status": "インポート状況",
|
||||||
"in-progress": "インポート中: {{progress}}",
|
"in-progress": "インポート中: {{progress}}",
|
||||||
"successful": "インポートは正常に終了しました。",
|
"successful": "インポートは正常に終了しました。",
|
||||||
"explodeArchives": "<code>.zip</code>, <code>.enex</code> および <code>.opml</code> アーカイブの内容を読み取ります。"
|
"explodeArchives": "<code>.zip</code>, <code>.enex</code> および <code>.opml</code> アーカイブの内容を読み取ります。",
|
||||||
|
"importZipRecommendation": "ZIP ファイルをインポートすると、ノートの階層はアーカイブ内のサブディレクトリ構造を反映します。"
|
||||||
},
|
},
|
||||||
"password_not_set": {
|
"password_not_set": {
|
||||||
"title": "パスワードが設定されていない",
|
"title": "パスワードが設定されていない",
|
||||||
@@ -344,18 +357,18 @@
|
|||||||
},
|
},
|
||||||
"sort_child_notes": {
|
"sort_child_notes": {
|
||||||
"sort_children_by": "子ノートの並び替え...",
|
"sort_children_by": "子ノートの並び替え...",
|
||||||
"sorting_criteria": "ソート基準",
|
"sorting_criteria": "並べ替えの基準",
|
||||||
"title": "タイトル",
|
"title": "タイトル",
|
||||||
"date_created": "作成日",
|
"date_created": "作成日",
|
||||||
"date_modified": "更新日",
|
"date_modified": "更新日",
|
||||||
"sorting_direction": "ソート方向",
|
"sorting_direction": "並べ替えの方向",
|
||||||
"ascending": "昇順",
|
"ascending": "昇順",
|
||||||
"descending": "降順",
|
"descending": "降順",
|
||||||
"folders": "フォルダ",
|
"folders": "フォルダ",
|
||||||
"sort_folders_at_top": "フォルダーを一番上にソートする",
|
"sort_folders_at_top": "フォルダーを上にして並べ替える",
|
||||||
"natural_sort": "自然順",
|
"natural_sort": "自然順",
|
||||||
"sort_with_respect_to_different_character_sorting": "言語や地域によって異なる文字の並べ替えや照合順序の規則に従ってソートする。",
|
"sort_with_respect_to_different_character_sorting": "言語や地域によって異なる文字の並べ替えや照合順序の規則に従って並べ替える。",
|
||||||
"sort": "ソート",
|
"sort": "並べ替え",
|
||||||
"natural_sort_language": "自然順言語",
|
"natural_sort_language": "自然順言語",
|
||||||
"the_language_code_for_natural_sort": "自然順の言語コード。例えば、中国語の場合は \"zh-CN\"。"
|
"the_language_code_for_natural_sort": "自然順の言語コード。例えば、中国語の場合は \"zh-CN\"。"
|
||||||
},
|
},
|
||||||
@@ -396,9 +409,9 @@
|
|||||||
"protect-subtree": "サブツリーを保護",
|
"protect-subtree": "サブツリーを保護",
|
||||||
"unprotect-subtree": "サブツリーの保護を解除",
|
"unprotect-subtree": "サブツリーの保護を解除",
|
||||||
"copy-clone": "コピー/クローン",
|
"copy-clone": "コピー/クローン",
|
||||||
"clone-to": "クローン先...",
|
"clone-to": "クローン...",
|
||||||
"cut": "カット",
|
"cut": "切り取り",
|
||||||
"move-to": "移動先...",
|
"move-to": "移動...",
|
||||||
"paste-into": "貼り付け",
|
"paste-into": "貼り付け",
|
||||||
"paste-after": "後ろに貼り付け",
|
"paste-after": "後ろに貼り付け",
|
||||||
"duplicate": "複製",
|
"duplicate": "複製",
|
||||||
@@ -408,7 +421,7 @@
|
|||||||
"converted-to-attachments": "{{count}}ノートが添付ファイルに変換されました。",
|
"converted-to-attachments": "{{count}}ノートが添付ファイルに変換されました。",
|
||||||
"convert-to-attachment": "添付ファイルに変換",
|
"convert-to-attachment": "添付ファイルに変換",
|
||||||
"convert-to-attachment-confirm": "選択したノートを親ノートの添付ファイルに変換しますか?",
|
"convert-to-attachment-confirm": "選択したノートを親ノートの添付ファイルに変換しますか?",
|
||||||
"open-in-popup": "クイックエディット",
|
"open-in-popup": "クイック編集",
|
||||||
"hoist-note": "ホイストノート",
|
"hoist-note": "ホイストノート",
|
||||||
"unhoist-note": "ノートをホイストしない",
|
"unhoist-note": "ノートをホイストしない",
|
||||||
"edit-branch-prefix": "ブランチの接頭辞を編集",
|
"edit-branch-prefix": "ブランチの接頭辞を編集",
|
||||||
@@ -515,9 +528,9 @@
|
|||||||
"book_properties": {
|
"book_properties": {
|
||||||
"grid": "グリッド",
|
"grid": "グリッド",
|
||||||
"list": "リスト",
|
"list": "リスト",
|
||||||
"collapse_all_notes": "すべてのノートを格納",
|
"collapse_all_notes": "すべてのノートを折りたたむ",
|
||||||
"expand_all_children": "すべての子を展開",
|
"expand_all_children": "すべての子を展開",
|
||||||
"collapse": "格納",
|
"collapse": "折りたたむ",
|
||||||
"expand": "展開",
|
"expand": "展開",
|
||||||
"book_properties": "コレクションプロパティ",
|
"book_properties": "コレクションプロパティ",
|
||||||
"invalid_view_type": "無効なビュータイプ '{{type}}'",
|
"invalid_view_type": "無効なビュータイプ '{{type}}'",
|
||||||
@@ -526,7 +539,8 @@
|
|||||||
"table": "テーブル",
|
"table": "テーブル",
|
||||||
"geo-map": "ジオマップ",
|
"geo-map": "ジオマップ",
|
||||||
"board": "ボード",
|
"board": "ボード",
|
||||||
"include_archived_notes": "アーカイブされたノートを表示"
|
"include_archived_notes": "アーカイブされたノートを表示",
|
||||||
|
"presentation": "プレゼンテーション"
|
||||||
},
|
},
|
||||||
"note_types": {
|
"note_types": {
|
||||||
"geo-map": "ジオマップ",
|
"geo-map": "ジオマップ",
|
||||||
@@ -550,7 +564,7 @@
|
|||||||
"beta-feature": "Beta",
|
"beta-feature": "Beta",
|
||||||
"ai-chat": "AI チャット",
|
"ai-chat": "AI チャット",
|
||||||
"task-list": "タスクリスト",
|
"task-list": "タスクリスト",
|
||||||
"new-feature": "新しい",
|
"new-feature": "New",
|
||||||
"collections": "コレクション"
|
"collections": "コレクション"
|
||||||
},
|
},
|
||||||
"edited_notes": {
|
"edited_notes": {
|
||||||
@@ -600,7 +614,6 @@
|
|||||||
"delete_all_revisions": "このノートの変更履歴をすべて削除",
|
"delete_all_revisions": "このノートの変更履歴をすべて削除",
|
||||||
"delete_all_button": "変更履歴をすべて削除",
|
"delete_all_button": "変更履歴をすべて削除",
|
||||||
"help_title": "変更履歴のヘルプ",
|
"help_title": "変更履歴のヘルプ",
|
||||||
"revision_last_edited": "この変更は{{date}}に行われました",
|
|
||||||
"confirm_delete_all": "このノートのすべての変更履歴を削除しますか?",
|
"confirm_delete_all": "このノートのすべての変更履歴を削除しますか?",
|
||||||
"no_revisions": "このノートに変更履歴はまだありません...",
|
"no_revisions": "このノートに変更履歴はまだありません...",
|
||||||
"restore_button": "復元",
|
"restore_button": "復元",
|
||||||
@@ -647,10 +660,6 @@
|
|||||||
"created": "作成日時",
|
"created": "作成日時",
|
||||||
"title": "ETAPI",
|
"title": "ETAPI",
|
||||||
"description": "ETAPI は、Trilium インスタンスに UI なしでプログラム的にアクセスするための REST API です。",
|
"description": "ETAPI は、Trilium インスタンスに UI なしでプログラム的にアクセスするための REST API です。",
|
||||||
"see_more": "詳細は{{- link_to_wiki}}と{{- link_to_openapi_spec}}または{{- link_to_swagger_ui }}を参照してください。",
|
|
||||||
"wiki": "wiki",
|
|
||||||
"openapi_spec": "ETAPI OpenAPIの仕様",
|
|
||||||
"swagger_ui": "ETAPI Swagger UI",
|
|
||||||
"create_token": "新しくETAPIトークンを作成",
|
"create_token": "新しくETAPIトークンを作成",
|
||||||
"existing_tokens": "既存のトークン",
|
"existing_tokens": "既存のトークン",
|
||||||
"no_tokens_yet": "トークンはまだありません。上のボタンをクリックして作成してください。",
|
"no_tokens_yet": "トークンはまだありません。上のボタンをクリックして作成してください。",
|
||||||
@@ -731,7 +740,7 @@
|
|||||||
"new-column": "新しい列",
|
"new-column": "新しい列",
|
||||||
"sort-column-by": "\"{{title}}\" で並べ替え",
|
"sort-column-by": "\"{{title}}\" で並べ替え",
|
||||||
"sort-column-clear": "並べ替えをクリア",
|
"sort-column-clear": "並べ替えをクリア",
|
||||||
"hide-column": "列 \"{{title}}\" を隠す",
|
"hide-column": "列 \"{{title}}\" を非表示",
|
||||||
"show-hide-columns": "列を表示/非表示",
|
"show-hide-columns": "列を表示/非表示",
|
||||||
"row-insert-above": "上に行を挿入",
|
"row-insert-above": "上に行を挿入",
|
||||||
"row-insert-below": "下に行を挿入",
|
"row-insert-below": "下に行を挿入",
|
||||||
@@ -767,7 +776,7 @@
|
|||||||
"placeholder": "ノート名で検索",
|
"placeholder": "ノート名で検索",
|
||||||
"label": "祖先",
|
"label": "祖先",
|
||||||
"depth_label": "深さ",
|
"depth_label": "深さ",
|
||||||
"depth_doesnt_matter": "関係ない",
|
"depth_doesnt_matter": "関係なし",
|
||||||
"depth_eq": "ちょうど {{count}} つ下の階層",
|
"depth_eq": "ちょうど {{count}} つ下の階層",
|
||||||
"direct_children": "直接の子",
|
"direct_children": "直接の子",
|
||||||
"depth_gt": "{{count}} より下の階層",
|
"depth_gt": "{{count}} より下の階層",
|
||||||
@@ -824,13 +833,10 @@
|
|||||||
"theme_defined": "テーマが定義されました"
|
"theme_defined": "テーマが定義されました"
|
||||||
},
|
},
|
||||||
"max_content_width": {
|
"max_content_width": {
|
||||||
"reload_button": "フロントエンドをリロード",
|
|
||||||
"title": "コンテンツ幅",
|
"title": "コンテンツ幅",
|
||||||
"default_description": "Triliumは、ワイドスクリーンで最大化された画面での可読性を向上させるために、デフォルトでコンテンツの最大幅を制限しています。",
|
"default_description": "Triliumは、ワイドスクリーンで最大化された画面での可読性を向上させるために、デフォルトでコンテンツの最大幅を制限しています。",
|
||||||
"max_width_label": "最大コンテンツ幅",
|
"max_width_label": "最大コンテンツ幅",
|
||||||
"max_width_unit": "ピクセル",
|
"max_width_unit": "ピクセル"
|
||||||
"apply_changes_description": "コンテンツ幅の変更を適用するには、クリックしてください",
|
|
||||||
"reload_description": "外観オプションからの変更"
|
|
||||||
},
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"title": "アプリのテーマ",
|
"title": "アプリのテーマ",
|
||||||
@@ -899,14 +905,14 @@
|
|||||||
"bg_color": "背景色付きテキスト",
|
"bg_color": "背景色付きテキスト",
|
||||||
"visibility_title": "ハイライトリスト表示",
|
"visibility_title": "ハイライトリスト表示",
|
||||||
"visibility_description": "#hideHighlightWidget ラベルを追加することで、ノートごとにハイライトウィジェットを非表示にできます。",
|
"visibility_description": "#hideHighlightWidget ラベルを追加することで、ノートごとにハイライトウィジェットを非表示にできます。",
|
||||||
"shortcut_info": "オプション -> ショートカット('右ペイン切り替え')で、右ペイン(ハイライトを含む)を素早く切り替えるキーボードショートカットを設定できます。"
|
"shortcut_info": "設定 -> ショートカット(右ペイン切り替え)で、右ペイン(ハイライトを含む)を素早く切り替えるキーボードショートカットを設定できます。"
|
||||||
},
|
},
|
||||||
"table_of_contents": {
|
"table_of_contents": {
|
||||||
"title": "目次",
|
"title": "目次",
|
||||||
"description": "ノートに定義された数以上の見出しがある場合、テキストノートに目次が表示されます。この数はカスタマイズできます:",
|
"description": "ノートに定義された数以上の見出しがある場合、テキストノートに目次が表示されます。この数はカスタマイズできます:",
|
||||||
"unit": "見出し",
|
"unit": "見出し",
|
||||||
"disable_info": "このオプションに非常に大きな数値を設定することで、目次を効果的に無効にすることもできる。",
|
"disable_info": "このオプションに非常に大きな数値を設定することで、目次を効果的に無効にすることもできます。",
|
||||||
"shortcut_info": "オプション -> ショートカット('右ペイン切り替え')で、右ペイン(目次を含む)を素早く切り替えるキーボードショートカットを設定できます。"
|
"shortcut_info": "設定 -> ショートカット(右ペイン切り替え)で、右ペイン(目次を含む)を素早く切り替えるキーボードショートカットを設定できます。"
|
||||||
},
|
},
|
||||||
"toc": {
|
"toc": {
|
||||||
"table_of_contents": "目次",
|
"table_of_contents": "目次",
|
||||||
@@ -1045,7 +1051,7 @@
|
|||||||
"inheritable": "継承",
|
"inheritable": "継承",
|
||||||
"related_notes_title": "このラベルが付いた他のノート",
|
"related_notes_title": "このラベルが付いた他のノート",
|
||||||
"attr_detail_title": "属性の詳細なタイトル",
|
"attr_detail_title": "属性の詳細なタイトル",
|
||||||
"target_note_title": "リレーションは、ソースノートとターゲットノート間の名前付き接続です。",
|
"target_note_title": "リレーションは、ソースノートと対象のノート間の名前付き接続です。",
|
||||||
"target_note": "対象のノート",
|
"target_note": "対象のノート",
|
||||||
"promoted_title": "プロモート属性はノートに目立つように表示されます。",
|
"promoted_title": "プロモート属性はノートに目立つように表示されます。",
|
||||||
"promoted": "プロモート",
|
"promoted": "プロモート",
|
||||||
@@ -1068,12 +1074,12 @@
|
|||||||
"sorted": "子ノートをアルファベット順に並べ替える",
|
"sorted": "子ノートをアルファベット順に並べ替える",
|
||||||
"sort_direction": "ASC(デフォルト)または DESC",
|
"sort_direction": "ASC(デフォルト)または DESC",
|
||||||
"sort_folders_first": "フォルダ(子を持つノート)を上にして並べる",
|
"sort_folders_first": "フォルダ(子を持つノート)を上にして並べる",
|
||||||
"top": "指定されたノートをその親ノートの一番上に表示します(ソートされた親ノートにのみ適用されます)",
|
"top": "指定されたノートをその親ノートの一番上に表示します(並べ替えらた親ノートにのみ適用されます)",
|
||||||
"hide_promoted_attributes": "このノートのプロモート属性を非表示にする",
|
"hide_promoted_attributes": "このノートのプロモート属性を非表示にする",
|
||||||
"read_only": "エディターは読み取り専用モードです。テキストとコードノートのみ機能します。",
|
"read_only": "エディターは読み取り専用モードです。テキストとコードノートのみ機能します。",
|
||||||
"auto_read_only_disabled": "テキスト/コードノートは、サイズが大きすぎる場合、自動的に読み取りモードに設定されます。このラベルをノートに追加することで、ノートごとにこの動作を無効にすることができます",
|
"auto_read_only_disabled": "テキスト/コードノートは、サイズが大きすぎる場合、自動的に読み取りモードに設定されます。このラベルをノートに追加することで、ノートごとにこの動作を無効にすることができます",
|
||||||
"app_css": "Trilium アプリケーションに読み込まれ、Trilium の外観を変更するために使用できる CSS ノートをマークします。",
|
"app_css": "Trilium アプリケーションに読み込まれ、Trilium の外観を変更するために使用できる CSS ノートをマークします。",
|
||||||
"app_theme": "Trilium のフルテーマである CSS ノートをマークし、Trilium オプションで利用できるようにします。",
|
"app_theme": "Trilium のフルテーマである CSS ノートをマークし、Trilium の設定で利用できるようにします。",
|
||||||
"app_theme_base": "「next」、「next-light」、または「next-dark」に設定すると、従来のテーマではなく、対応する TriliumNext テーマ (auto、light、または dark) がカスタム テーマのベースとして使用されます。",
|
"app_theme_base": "「next」、「next-light」、または「next-dark」に設定すると、従来のテーマではなく、対応する TriliumNext テーマ (auto、light、または dark) がカスタム テーマのベースとして使用されます。",
|
||||||
"css_class": "このラベルの値は、ツリー内の特定のノートを表すノードにCSSクラスとして追加されます。これは高度なテーマ設定に役立ちます。テンプレートノートで使用できます。",
|
"css_class": "このラベルの値は、ツリー内の特定のノートを表すノードにCSSクラスとして追加されます。これは高度なテーマ設定に役立ちます。テンプレートノートで使用できます。",
|
||||||
"icon_class": "このラベルの値は、ツリー上のアイコンにCSSクラスとして追加され、ツリー内のノートを視覚的に区別するのに役立ちます。例えば、bx bx-home のように、アイコンは boxicons から取得されます。テンプレートノートで使用できます。",
|
"icon_class": "このラベルの値は、ツリー上のアイコンにCSSクラスとして追加され、ツリー内のノートを視覚的に区別するのに役立ちます。例えば、bx bx-home のように、アイコンは boxicons から取得されます。テンプレートノートで使用できます。",
|
||||||
@@ -1142,13 +1148,13 @@
|
|||||||
"print_page_size": "PDF にエクスポートするときに、ページのサイズを変更します。サポートされる値: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>。"
|
"print_page_size": "PDF にエクスポートするときに、ページのサイズを変更します。サポートされる値: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>。"
|
||||||
},
|
},
|
||||||
"link_context_menu": {
|
"link_context_menu": {
|
||||||
"open_note_in_popup": "クイックエディット",
|
"open_note_in_popup": "クイック編集",
|
||||||
"open_note_in_new_tab": "新しいタブでノートを開く",
|
"open_note_in_new_tab": "新しいタブでノートを開く",
|
||||||
"open_note_in_new_split": "新しく分割してノートを開く",
|
"open_note_in_new_split": "新しく分割してノートを開く",
|
||||||
"open_note_in_new_window": "新しいウィンドウでノートを開く"
|
"open_note_in_new_window": "新しいウィンドウでノートを開く"
|
||||||
},
|
},
|
||||||
"note_tooltip": {
|
"note_tooltip": {
|
||||||
"quick-edit": "クイックエディット",
|
"quick-edit": "クイック編集",
|
||||||
"note-has-been-deleted": "ノートは削除されました。"
|
"note-has-been-deleted": "ノートは削除されました。"
|
||||||
},
|
},
|
||||||
"protect_note": {
|
"protect_note": {
|
||||||
@@ -1180,7 +1186,7 @@
|
|||||||
"options": "オプション"
|
"options": "オプション"
|
||||||
},
|
},
|
||||||
"quick-search": {
|
"quick-search": {
|
||||||
"placeholder": "クイックサーチ",
|
"placeholder": "クイック検索",
|
||||||
"searching": "検索中...",
|
"searching": "検索中...",
|
||||||
"no-results": "結果は見つかりませんでした",
|
"no-results": "結果は見つかりませんでした",
|
||||||
"more-results": "... および {{number}} 件の他の結果。",
|
"more-results": "... および {{number}} 件の他の結果。",
|
||||||
@@ -1190,7 +1196,7 @@
|
|||||||
"collapse-title": "ノートツリーを折りたたむ",
|
"collapse-title": "ノートツリーを折りたたむ",
|
||||||
"scroll-active-title": "アクティブノートまでスクロール",
|
"scroll-active-title": "アクティブノートまでスクロール",
|
||||||
"tree-settings-title": "ツリーの設定",
|
"tree-settings-title": "ツリーの設定",
|
||||||
"hide-archived-notes": "アーカイブノートを隠す",
|
"hide-archived-notes": "アーカイブノートを非表示",
|
||||||
"automatically-collapse-notes": "ノートを自動的に折りたたむ",
|
"automatically-collapse-notes": "ノートを自動的に折りたたむ",
|
||||||
"automatically-collapse-notes-title": "一定期間使用されないと、ツリーを整理するためにノートは折りたたまれます。",
|
"automatically-collapse-notes-title": "一定期間使用されないと、ツリーを整理するためにノートは折りたたまれます。",
|
||||||
"save-changes": "変更を保存して適用",
|
"save-changes": "変更を保存して適用",
|
||||||
@@ -1204,7 +1210,7 @@
|
|||||||
},
|
},
|
||||||
"bulk_actions": {
|
"bulk_actions": {
|
||||||
"bulk_actions": "一括操作",
|
"bulk_actions": "一括操作",
|
||||||
"affected_notes": "影響されたノート",
|
"affected_notes": "影響されるノート",
|
||||||
"include_descendants": "選択したノートの子ノートを含む",
|
"include_descendants": "選択したノートの子ノートを含む",
|
||||||
"available_actions": "利用可能なアクション",
|
"available_actions": "利用可能なアクション",
|
||||||
"chosen_actions": "選択されたアクション",
|
"chosen_actions": "選択されたアクション",
|
||||||
@@ -1236,7 +1242,7 @@
|
|||||||
"duplicated": "ノート \"{{title}}\" は複製されました。"
|
"duplicated": "ノート \"{{title}}\" は複製されました。"
|
||||||
},
|
},
|
||||||
"clipboard": {
|
"clipboard": {
|
||||||
"cut": "ノートはクリップボードにカットされました。",
|
"cut": "ノートはクリップボードに切り取りとられました。",
|
||||||
"copied": "ノートはクリップボードにコピーされました。",
|
"copied": "ノートはクリップボードにコピーされました。",
|
||||||
"copy_failed": "権限の問題で、クリップボードにコピーできません。",
|
"copy_failed": "権限の問題で、クリップボードにコピーできません。",
|
||||||
"copy_success": "クリップボードにコピーしました。"
|
"copy_success": "クリップボードにコピーしました。"
|
||||||
@@ -1275,7 +1281,7 @@
|
|||||||
"editor_type": {
|
"editor_type": {
|
||||||
"label": "書式設定ツールバー",
|
"label": "書式設定ツールバー",
|
||||||
"floating": {
|
"floating": {
|
||||||
"description": "編集ツールがカーソル付近に表示されます;",
|
"description": "編集ツールがカーソル付近に表示されます。",
|
||||||
"title": "フローティング"
|
"title": "フローティング"
|
||||||
},
|
},
|
||||||
"fixed": {
|
"fixed": {
|
||||||
@@ -1287,10 +1293,10 @@
|
|||||||
},
|
},
|
||||||
"electron_context_menu": {
|
"electron_context_menu": {
|
||||||
"add-term-to-dictionary": "辞書に \"{{term}}\" を追加",
|
"add-term-to-dictionary": "辞書に \"{{term}}\" を追加",
|
||||||
"cut": "カット",
|
"cut": "切り取り",
|
||||||
"copy": "コピー",
|
"copy": "コピー",
|
||||||
"copy-link": "リンクをコピー",
|
"copy-link": "リンクをコピー",
|
||||||
"paste": "ペースト",
|
"paste": "貼り付け",
|
||||||
"paste-as-plain-text": "プレーンテキストで貼り付け",
|
"paste-as-plain-text": "プレーンテキストで貼り付け",
|
||||||
"search_online": "{{searchEngine}} で \"{{term}}\" を検索"
|
"search_online": "{{searchEngine}} で \"{{term}}\" を検索"
|
||||||
},
|
},
|
||||||
@@ -1582,7 +1588,8 @@
|
|||||||
"delete_this_note": "このノートを削除",
|
"delete_this_note": "このノートを削除",
|
||||||
"error_unrecognized_command": "認識されないコマンド {{command}}",
|
"error_unrecognized_command": "認識されないコマンド {{command}}",
|
||||||
"insert_child_note": "子ノートを挿入",
|
"insert_child_note": "子ノートを挿入",
|
||||||
"error_cannot_get_branch_id": "ノートパス 「{{notePath}} のbranchIdを取得できません"
|
"error_cannot_get_branch_id": "ノートパス 「{{notePath}} のbranchIdを取得できません",
|
||||||
|
"note_revisions": "ノートの変更履歴"
|
||||||
},
|
},
|
||||||
"inherited_attribute_list": {
|
"inherited_attribute_list": {
|
||||||
"title": "継承属性",
|
"title": "継承属性",
|
||||||
@@ -1749,7 +1756,7 @@
|
|||||||
"target_parent_note": "対象の親ノート",
|
"target_parent_note": "対象の親ノート",
|
||||||
"move_note_new_parent": "ノートに親が 1 つしかない場合は、ノートを新しい親に移動します (つまり、古いブランチが削除され、新しい親に新しいブランチが作成されます)",
|
"move_note_new_parent": "ノートに親が 1 つしかない場合は、ノートを新しい親に移動します (つまり、古いブランチが削除され、新しい親に新しいブランチが作成されます)",
|
||||||
"clone_note_new_parent": "ノートに複数のクローン/ブランチがある場合、ノートを新しい親にクローンします(どのブランチを削除すべきか不明なため)",
|
"clone_note_new_parent": "ノートに複数のクローン/ブランチがある場合、ノートを新しい親にクローンします(どのブランチを削除すべきか不明なため)",
|
||||||
"nothing_will_happen": "ノートをターゲットノートに移動できない場合は何も起こりません(つまり、ツリーサイクルが生じるため)",
|
"nothing_will_happen": "ノートを対象のノートに移動できない場合は何も起こりません(つまり、ツリーサイクルが生じるため)",
|
||||||
"to": "次へ"
|
"to": "次へ"
|
||||||
},
|
},
|
||||||
"onclick_button": {
|
"onclick_button": {
|
||||||
@@ -1872,7 +1879,9 @@
|
|||||||
"window-on-top": "ウィンドウを最前面に維持"
|
"window-on-top": "ウィンドウを最前面に維持"
|
||||||
},
|
},
|
||||||
"note_detail": {
|
"note_detail": {
|
||||||
"could_not_find_typewidget": "タイプ {{type}} の typeWidget が見つかりませんでした"
|
"could_not_find_typewidget": "タイプ {{type}} の typeWidget が見つかりませんでした",
|
||||||
|
"printing": "印刷中です...",
|
||||||
|
"printing_pdf": "PDF へのエクスポート中です..."
|
||||||
},
|
},
|
||||||
"watched_file_update_status": {
|
"watched_file_update_status": {
|
||||||
"ignore_this_change": "この変更を無視する",
|
"ignore_this_change": "この変更を無視する",
|
||||||
@@ -2065,5 +2074,13 @@
|
|||||||
"role_and_size": "ロール: {{role}},サイズ: {{size}}",
|
"role_and_size": "ロール: {{role}},サイズ: {{size}}",
|
||||||
"link_copied": "添付ファイルのリンクをクリップボードにコピーしました。",
|
"link_copied": "添付ファイルのリンクをクリップボードにコピーしました。",
|
||||||
"unrecognized_role": "添付ファイルのロール「{{role}}」は認識されません。"
|
"unrecognized_role": "添付ファイルのロール「{{role}}」は認識されません。"
|
||||||
|
},
|
||||||
|
"presentation_view": {
|
||||||
|
"edit-slide": "このスライドを編集",
|
||||||
|
"start-presentation": "プレゼンテーションを開始",
|
||||||
|
"slide-overview": "スライドの概要を切り替え"
|
||||||
|
},
|
||||||
|
"calendar_view": {
|
||||||
|
"delete_note": "ノートを削除..."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,5 +49,11 @@
|
|||||||
"chosen_actions": "선택한 액션들",
|
"chosen_actions": "선택한 액션들",
|
||||||
"execute_bulk_actions": "대량 액션들 실행",
|
"execute_bulk_actions": "대량 액션들 실행",
|
||||||
"bulk_actions_executed": "대량 액션들이 성공적으로 실행되었습니다."
|
"bulk_actions_executed": "대량 액션들이 성공적으로 실행되었습니다."
|
||||||
|
},
|
||||||
|
"i18n": {
|
||||||
|
"saturday": "토요일",
|
||||||
|
"sunday": "일요일",
|
||||||
|
"first-week-of-the-year": "일년의 첫째 주",
|
||||||
|
"first-week-contains-first-day": "첫 번째 주에는 올해의 첫날이 포함됩니다"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user