Compare commits
136 commits
v3.1.16-de
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
914c765938 | ||
![]() |
9850b2079c | ||
![]() |
47f79a6289 | ||
![]() |
190fa7f8c4 | ||
![]() |
d34caba3bb | ||
![]() |
78d5f54117 | ||
![]() |
b12906321f | ||
![]() |
5b3fa67332 | ||
![]() |
2052cff7b6 | ||
![]() |
49206adc9e | ||
![]() |
0a1ad2ec34 | ||
![]() |
81b8e8bf26 | ||
![]() |
e4be1450f4 | ||
![]() |
de99fb5dfd | ||
![]() |
11b02fdfed | ||
![]() |
bd91c04eeb | ||
![]() |
78745006a7 | ||
![]() |
caae864c8a | ||
![]() |
ef38ffb120 | ||
![]() |
3d14c79d31 | ||
![]() |
b52b562b30 | ||
![]() |
04255d86ed | ||
![]() |
a133e7d771 | ||
![]() |
077a46ac70 | ||
![]() |
6f443be578 | ||
![]() |
64c2b6a2a2 | ||
![]() |
0a41dc392c | ||
![]() |
4078d33e34 | ||
![]() |
978f14147e | ||
![]() |
25f934ecb4 | ||
![]() |
b195629d1a | ||
![]() |
03c2611c0f | ||
![]() |
98180f2c5e | ||
![]() |
d2b1769957 | ||
![]() |
1148a4eca5 | ||
![]() |
75b4b357e7 | ||
![]() |
811636d051 | ||
![]() |
b5bfbbe14a | ||
![]() |
776b4fd6ee | ||
![]() |
be6f3a237d | ||
![]() |
a6f98c6d40 | ||
![]() |
a129c25c2e | ||
![]() |
e7091cb54f | ||
![]() |
9b17b6ea4f | ||
![]() |
b11417d725 | ||
![]() |
d808f63bad | ||
![]() |
b3301ff162 | ||
![]() |
16a0b85803 | ||
![]() |
767bba6a62 | ||
![]() |
bb0ddc4147 | ||
![]() |
e200bc61d9 | ||
![]() |
59360f363e | ||
![]() |
b7125d7c8d | ||
![]() |
20b4579170 | ||
![]() |
39af34e53d | ||
![]() |
dd223af57e | ||
![]() |
2aa66a5d29 | ||
![]() |
84083865b7 | ||
![]() |
4d7bd111e1 | ||
![]() |
f2971a273d | ||
![]() |
4620ce5c37 | ||
![]() |
350b1bf51c | ||
![]() |
26f296a87a | ||
![]() |
2f4c7ffbb5 | ||
![]() |
eb1a84bedc | ||
![]() |
77fa89010f | ||
![]() |
a3fec2c9e8 | ||
![]() |
405cec4163 | ||
![]() |
0eb7c5c896 | ||
![]() |
76b6fb8f6b | ||
![]() |
0cc98a5fe0 | ||
![]() |
dbb5bcccb1 | ||
![]() |
b3074fceea | ||
![]() |
93a3915f0c | ||
![]() |
ea98ecb3b6 | ||
![]() |
22ab71b72f | ||
![]() |
1882ac83ef | ||
![]() |
575a151b89 | ||
![]() |
81cb18e14d | ||
![]() |
86adbed3f0 | ||
![]() |
fd98963038 | ||
![]() |
e73f78d57e | ||
![]() |
7d34a87da4 | ||
![]() |
ff9cbb0a10 | ||
![]() |
0720e71218 | ||
![]() |
812a5e392a | ||
![]() |
1be47953b8 | ||
![]() |
20c7535407 | ||
![]() |
b6bd34ce32 | ||
![]() |
1d4380bb75 | ||
![]() |
6cfa8e6cbe | ||
![]() |
f7396ac84b | ||
![]() |
9bbbb2ca11 | ||
![]() |
b81de5d2da | ||
![]() |
5fb2b78911 | ||
![]() |
d83d5ff74f | ||
![]() |
c835205ca5 | ||
![]() |
5c60586b58 | ||
![]() |
18ae25fa75 | ||
![]() |
25a0e85c98 | ||
![]() |
d5dfa240f5 | ||
![]() |
d672d408b3 | ||
![]() |
b8fda7d67f | ||
![]() |
6683b947b6 | ||
![]() |
f4f9610a90 | ||
![]() |
f0a7ffd1dc | ||
![]() |
382f7dd235 | ||
![]() |
8692455b05 | ||
![]() |
500ac7f039 | ||
![]() |
e968f9da68 | ||
![]() |
52b3a1e8fa | ||
![]() |
c3812c11fe | ||
![]() |
2cd8fe1379 | ||
![]() |
bd65fa47af | ||
![]() |
053e03ed53 | ||
![]() |
b3326e9757 | ||
![]() |
4b7a6f5ef7 | ||
![]() |
4b03a5ae86 | ||
![]() |
95f24e3eca | ||
![]() |
8a87999f25 | ||
![]() |
bdd99d8eb0 | ||
![]() |
e1829a8254 | ||
![]() |
3ea7daa308 | ||
![]() |
78b32b8d88 | ||
![]() |
64968335dd | ||
![]() |
7ec0b4f65e | ||
![]() |
be96ea7895 | ||
![]() |
4ab2adff4f | ||
![]() |
560af8e542 | ||
![]() |
7395554ebe | ||
![]() |
8d1aff12e1 | ||
![]() |
f3853ee842 | ||
![]() |
3bd2debf4c | ||
![]() |
b439cd66f7 | ||
![]() |
e5ebab8894 | ||
![]() |
1cb22968a2 |
132 changed files with 2035 additions and 1506 deletions
6
.github/CONTRIBUTING.md
vendored
6
.github/CONTRIBUTING.md
vendored
|
@ -14,10 +14,10 @@ Install pnpm: `npm install -g pnpm@9.12.1`
|
|||
|
||||
Set the Electron mirror environment variable and install Electron:
|
||||
|
||||
* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.5 -D`
|
||||
* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.7 -D`
|
||||
* Windows:
|
||||
* `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/`
|
||||
* `pnpm install electron@v32.2.5 -D`
|
||||
* `pnpm install electron@v32.2.7 -D`
|
||||
|
||||
NPM mirror:
|
||||
|
||||
|
@ -28,7 +28,7 @@ NPM mirror:
|
|||
|
||||
On the desktop, go to the app folder to run:
|
||||
|
||||
* `pnpm install electron@v32.2.5 -D`
|
||||
* `pnpm install electron@v32.2.7 -D`
|
||||
* `pnpm run dev`
|
||||
* `pnpm run start`
|
||||
|
||||
|
|
6
.github/CONTRIBUTING_zh_CN.md
vendored
6
.github/CONTRIBUTING_zh_CN.md
vendored
|
@ -16,11 +16,11 @@
|
|||
|
||||
* macOS/Linux:
|
||||
```
|
||||
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.5 -D
|
||||
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.7 -D
|
||||
```
|
||||
* Windows:
|
||||
* `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/`
|
||||
* `pnpm install electron@v32.2.5 -D`
|
||||
* `pnpm install electron@v32.2.7 -D`
|
||||
|
||||
NPM 镜像:
|
||||
|
||||
|
@ -30,7 +30,7 @@ NPM 镜像:
|
|||
|
||||
桌面端进入 app 文件夹运行:
|
||||
|
||||
* `pnpm install electron@v32.2.5 -D`
|
||||
* `pnpm install electron@v32.2.7 -D`
|
||||
* `pnpm run dev`
|
||||
* `pnpm run start`
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<a title="Twitter" target="_blank" href="https://twitter.com/b3logos"><img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/b3logos?label=Follow&style=social"></a>
|
||||
<a title="Discord" target="_blank" href="https://discord.gg/dmMbCqVX7G"><img alt="Chat on Discord" src="https://img.shields.io/discord/808152298789666826?label=Discord&logo=Discord&style=social"></a>
|
||||
<br><br>
|
||||
<a href="https://trendshift.io/repositories/3949" target="_blank"><img src="https://trendshift.io/api/badge/repositories/3949" alt="siyuan-note%2Fsiyuan | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
<br><br>
|
||||
<a href="https://www.producthunt.com/products/siyuan/reviews?utm_source=badge-product_rating&utm_medium=badge&utm_souce=badge-siyuan" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/product_rating.svg?product_id=534576&theme=light" alt="SiYuan - A privacy-first personal knowledge management software | Product Hunt" style="width: 242px; height: 108px;" width="242" height="108" /></a>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<a title="Twitter" target="_blank" href="https://twitter.com/b3logos"><img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/b3logos?label=Follow&style=social"></a>
|
||||
<a title="Discord" target="_blank" href="https://discord.gg/dmMbCqVX7G"><img alt="Chat on Discord" src="https://img.shields.io/discord/808152298789666826?label=Discord&logo=Discord&style=social"></a>
|
||||
<br><br>
|
||||
<a href="https://trendshift.io/repositories/3949" target="_blank"><img src="https://trendshift.io/api/badge/repositories/3949" alt="siyuan-note%2Fsiyuan | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
<br><br>
|
||||
<a href="https://www.producthunt.com/products/siyuan/reviews?utm_source=badge-product_rating&utm_medium=badge&utm_souce=badge-siyuan" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/product_rating.svg?product_id=534576&theme=light" alt="SiYuan - A privacy-first personal knowledge management software | Product Hunt" style="width: 242px; height: 108px;" width="242" height="108" /></a>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<a title="Twitter" target="_blank" href="https://twitter.com/b3logos"><img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/b3logos?label=Follow&style=social"></a>
|
||||
<a title="Discord" target="_blank" href="https://discord.gg/dmMbCqVX7G"><img alt="Chat on Discord" src="https://img.shields.io/discord/808152298789666826?label=Discord&logo=Discord&style=social"></a>
|
||||
<br><br>
|
||||
<a href="https://trendshift.io/repositories/3949" target="_blank"><img src="https://trendshift.io/api/badge/repositories/3949" alt="siyuan-note%2Fsiyuan | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
<br><br>
|
||||
<a href="https://www.producthunt.com/products/siyuan/reviews?utm_source=badge-product_rating&utm_medium=badge&utm_souce=badge-siyuan" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/product_rating.svg?product_id=534576&theme=light" alt="SiYuan - A privacy-first personal knowledge management software | Product Hunt" style="width: 242px; height: 108px;" width="242" height="108" /></a>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -3155,20 +3155,6 @@
|
|||
"description_zh_cn": "西装革履的人",
|
||||
"keywords": "business,person,suit,スレンダーマン,スーツ,ビジネスマン,男,男性,都市伝説,商务,业务,正装,西装革履"
|
||||
},
|
||||
{
|
||||
"unicode": "1f574-fe0f-200d-2642-fe0f",
|
||||
"description": "Man in Suit Levitating",
|
||||
"description_ja_jp": "浮いてるスーツの男性",
|
||||
"description_zh_cn": "西装革履的男人",
|
||||
"keywords": "business,suit,man,male,men,スレンダーマン,スーツ,ビジネスマン,都市伝説,商务,正装,西装革履,业务,西装,男,男性,男子"
|
||||
},
|
||||
{
|
||||
"unicode": "1f574-fe0f-200d-2640-fe0f",
|
||||
"description": "Woman in Suit Levitating",
|
||||
"description_ja_jp": "浮いてるスーツの女性",
|
||||
"description_zh_cn": "西装革履的女人",
|
||||
"keywords": "business,suit,woman,female,women,スレンダーマン,スーツ,ビジネスマン,都市伝説,商务,正装,西装革履,业务,西装,女,女性,妇女"
|
||||
},
|
||||
{
|
||||
"unicode": "1f46f",
|
||||
"description": "People with Bunny Ears",
|
||||
|
@ -6953,13 +6939,6 @@
|
|||
"description_zh_cn": "神社",
|
||||
"keywords": "religion,shinto,shrine,宗教,建物,建築物,神社,神道,日本,神道教"
|
||||
},
|
||||
{
|
||||
"unicode": "e50a",
|
||||
"description": "Shibuya",
|
||||
"description_ja_jp": "渋谷",
|
||||
"description_zh_cn": "涩谷",
|
||||
"keywords": "109,shibuya,建物,建築物,渋谷区,日本,涩谷区"
|
||||
},
|
||||
{
|
||||
"unicode": "1f54b",
|
||||
"description": "Kaaba",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "بعد التكوين, سيتم استخدامه ككلمة مرور مصادقة الوصول, اتركه فارغًا لإغلاق المصادقة",
|
||||
"about7": "اتبع شاشة قفل النظام",
|
||||
"about8": "بعد التمكين، سيتم قفل التطبيق تلقائياً عند قفل شاشة النظام",
|
||||
"about9": "رفع رسائل الخطأ والبيانات التشخيصية تلقائياً",
|
||||
"about10": "بعد التمكين، سيقوم تلقائيا برفع معلومات الخطأ والبيانات التشخيصية من خلال <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK، الذي لا ينطوي على بيانات الخصوصية الشخصية بحيث يمكن للمطورين إصلاح الأخطاء. سيتم إغلاق التطبيق تلقائياً بعد التعديل، الرجاء إعادة التشغيل يدوياً",
|
||||
"about11": "خادم الشبكة",
|
||||
"about12": "بعد التمكين، سيتم السماح للأجهزة الأخرى في نفس الشبكة المحلية بالوصول. سيتم إغلاق التطبيق تلقائياً بعد التعديل، يرجى إعادة التشغيل يدوياً",
|
||||
"about13": "رمز API",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "الرجاء تمكين المزامنة السحابية في [الإعدادات - تمكين المزامنة السحابية]",
|
||||
"125": "فشل المزامنة التلقائية مرات كثيرة جداً، الرجاء محاولة تشغيل المزامنة يدوياً، إذا كانت المشكلة لا تزال موجودة، يرجى الإبلاغ عنها عبر <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "لا يمكن أن تكون الإشارة المرجعية فارغة",
|
||||
"127": "هناك [%d] أيام متبقية قبل انتهاء الاشتراك، وبعد ذلك سيتم حذف بيانات السحابة بالكامل. يرجى زيارة <a target='_blank' href='${url}'>هنا</a> للتجديد",
|
||||
"128": "انتهت صلاحية الاشتراك. بعد انتهاء الصلاحية، سيتم حذف بيانات السحابة بالكامل. لم يعد التذكير يظهر بعد يومين من انتهاء الاشتراك. يرجى زيارة <a target='_blank' href='${url}'>هنا</a> للتجديد",
|
||||
"127": "تبقى [%d] يومًا حتى انتهاء الاشتراك، وبعد ذلك سيتم حذف بيانات التخزين السحابي الرسمية بالكامل. لتجديد الاشتراك، قم بزيارة <a target='_blank' href='${url}'>هنا</a>",
|
||||
"128": "انتهت صلاحية الاشتراك، سيتم حذف بيانات التخزين السحابي الرسمية بالكامل (بيانات S3/WebDAV السحابية غير متأثرة)، بعد يومين من انتهاء الاشتراك لن يظهر هذا التذكير مرة أخرى. لتجديد الاشتراك، قم بزيارة <a target='_blank' href='${url}'>هنا</a>",
|
||||
"129": "البيانات السحابية تالفة، يرجى إعادة تعيين مستودع البيانات المحلية ومزامنة السحابة لحل المشكلة",
|
||||
"130": "بدأ تثبيت الإصدار الجديد. نظرًا لأن نظام التشغيل سيقوم بإجراء مسح أمني، قد يستغرق بعض الوقت للبدء. الرجاء الانتظار...",
|
||||
"131": "هذه العملية غير مدعومة، يرجى الذهاب إلى وحدة إدارة موفر التخزين السحابي للعمل",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "Nach der Konfiguration wird es als Zugangsauthentifizierungspasswort verwendet, lassen Sie es leer, um die Authentifizierung zu schließen",
|
||||
"about7": "Entspricht dem Systembildschirm",
|
||||
"about8": "Nach der Aktivierung wird die Anwendung automatisch gesperrt, wenn der Systembildschirm gesperrt wird",
|
||||
"about9": "Fehlermeldungen und Diagnosedaten automatisch hochladen",
|
||||
"about10": "Nach der Aktivierung werden Fehlerinformationen und Diagnosedaten automatisch über das <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK hochgeladen, was keine persönlichen Privatsphärendaten umfasst, damit Entwickler Fehler beheben können. Die Anwendung wird nach der Modifikation automatisch geschlossen, bitte manuell neu starten",
|
||||
"about11": "Netzwerkservice",
|
||||
"about12": "Nach der Aktivierung dürfen andere Geräte im selben LAN zugreifen. Die Anwendung wird nach der Modifikation automatisch geschlossen, bitte manuell neu starten",
|
||||
"about13": "API-Token",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Bitte aktivieren Sie die Cloud-Synchronisierung in [Einstellungen - Cloud-Synchronisierung aktivieren]",
|
||||
"125": "Automatische Synchronisierung fehlgeschlagen zu viele Male, bitte versuchen Sie manuell die Synchronisierung auszulösen, wenn das Problem weiterhin besteht, melden Sie es bitte über <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "Lesezeichen kann nicht leer sein",
|
||||
"127": "Es sind noch [%d] Tage bis zur Abonnementsablauffrist, danach werden die Cloud-Daten komplett gelöscht. Um zu erneuern, besuchen Sie bitte <a target='_blank' href='${url}'>hier</a>",
|
||||
"128": "Das Abonnement ist abgelaufen. Nach Ablauf des Abonnements werden die Cloud-Daten vollständig gelöscht. Die Erinnerung wird zwei Tage nach Ablauf des Abonnements nicht mehr angezeigt. Um zu erneuern, besuchen Sie bitte <a target='_blank' href='${url}'>hier</a>",
|
||||
"127": "Es verbleiben [%d] Tage bis zum Ablauf des Abonnements, danach werden die offiziellen Cloud-Speicherdaten vollständig gelöscht. Um zu verlängern, besuchen Sie <a target='_blank' href='${url}'>hier</a>",
|
||||
"128": "Das Abonnement ist abgelaufen, die offiziellen Cloud-Speicherdaten werden vollständig gelöscht (S3/WebDAV-Cloud-Speicherdaten sind nicht betroffen), zwei Tage nach Ablauf des Abonnements wird diese Erinnerung nicht mehr angezeigt. Um zu verlängern, besuchen Sie <a target='_blank' href='${url}'>hier</a>",
|
||||
"129": "Cloud-Daten wurden beschädigt, bitte setzen Sie das lokale Daten-Repository und das Cloud-Sync-Verzeichnis zurück, um das Problem zu beheben",
|
||||
"130": "Der Installer der neuen Version wird gestartet. Da das Betriebssystem eine Sicherheitsprüfung durchführen wird, kann es einige Zeit dauern, bis es startet. Bitte warten Sie...",
|
||||
"131": "Dieser Vorgang wird nicht unterstützt, bitte gehen Sie zur Verwaltungsoberfläche des Cloud-Speicherdienstanbieters, um zu operieren",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "After configuration, it will be used as the access authentication password, leave it blank to close the authentication",
|
||||
"about7": "Follow system lock screen",
|
||||
"about8": "After enabling, the application will be automatically locked when locking the system screen",
|
||||
"about9": "Automatically upload error messages and diagnostic data",
|
||||
"about10": "After enabling, it will automatically upload error information and diagnostic data through the <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK, which does not involve personal privacy data so that developers can fix bugs. The application will be closed automatically after modification, please restart manually",
|
||||
"about11": "Network serving",
|
||||
"about12": "After enabling, other devices in the same LAN will be allowed to access. The application will be closed automatically after modification, please restart manually",
|
||||
"about13": "API token",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Please enable cloud sync in [Settings - Enable Cloud Sync]",
|
||||
"125": "Auto sync failed too many times, please try to manually trigger sync, if there is still a problem, please report it via <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "Bookmark cannot be empty",
|
||||
"127": "There are [%d] days left before the subscription expires, after which the cloud data will be completely deleted. To renew, please visit <a target='_blank' href='${url}'>here</a>",
|
||||
"128": "The subscription has expired. After the expiration, the cloud data will be completely deleted. The reminder will no longer pop up two days after the subscription expires. To renew, please visit <a target='_blank' href='${url}'>here</a>",
|
||||
"127": "There are [%d] days left until the subscription expires, after which the official cloud storage data will be completely deleted. To renew, visit <a target='_blank' href='${url}'>here</a>",
|
||||
"128": "The subscription has expired, the official cloud storage data will be completely deleted (S3/WebDAV cloud storage data is not affected), two days after the subscription expires this reminder will no longer appear. To renew, visit <a target='_blank' href='${url}'>here</a>",
|
||||
"129": "Cloud data has been corrupted, please reset the local data repo and cloud sync dir to resolve the issue",
|
||||
"130": "The new version installer is starting. Since the operating system will perform a security scan, it may take some time to start. Please wait...",
|
||||
"131": "This operation is not supported, please go to the cloud storage provider management console to operate",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "Después de la configuración, se utilizará como contraseña de autenticación de acceso, déjelo en blanco para cerrar la autenticación",
|
||||
"about7": "Seguir la pantalla de bloqueo del sistema",
|
||||
"about8": "Después de habilitarlo, la aplicación se bloqueará automáticamente al bloquear la pantalla del sistema",
|
||||
"about9": "Carga automática de mensajes de error y datos de diagnóstico",
|
||||
"about10": "Después de habilitarlo, cargará automáticamente información de error y datos de diagnóstico a través del <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK, que no involucra datos de privacidad personal para que los desarrolladores puede corregir errores. La aplicación se cerrará automáticamente después de la modificación, por favor, reinicie manualmente",
|
||||
"about11": "Red de servicio",
|
||||
"about12": "Después de habilitarlo, se permitirá el acceso a otros dispositivos de la misma LAN. La aplicación se cerrará automáticamente después de la modificación, por favor reinicie manualmente",
|
||||
"about13": "Token API",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Por favor, active la sincronización en la nube en [Configuración - Activar sincronización en la nube]",
|
||||
"125": "La sincronización automática ha fallado demasiadas veces, por favor intente activar la sincronización manualmente, si todavía hay un problema, por favor infórmelo a través de <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">Problemas GitHub</a>",
|
||||
"126": "El marcador no puede estar vacío",
|
||||
"127": "There are [%d] days left before the subscription expires, after which the cloud data will be completely deleted. Please visit <a target='_blank' href='${url}'>Aquí</a> para la renovación",
|
||||
"128": "La suscripción caducó. Después de la caducidad, los datos de la nube se eliminarán por completo. El recordatorio ya no aparecerá dos días después de que caduque la suscripción. Para renovar, visite <a target='_blank' href='${url}'>aquí</a>",
|
||||
"127": "Quedan [%d] días para que expire la suscripción, después de lo cual los datos de almacenamiento en la nube oficial se eliminarán por completo. Para renovar, visite <a target='_blank' href='${url}'>aquí</a>",
|
||||
"128": "La suscripción ha expirado, los datos de almacenamiento en la nube oficial se eliminarán por completo (los datos de S3/WebDAV no se ven afectados), dos días después de la expiración de la suscripción, este recordatorio ya no aparecerá. Para renovar, visite <a target='_blank' href='${url}'>aquí</a>",
|
||||
"129": "Los datos de la nube se han dañado, reinicie el repositorio de datos local y el directorio de sincronización en la nube para resolver el problema",
|
||||
"130": "El instalador de la nueva versión se está iniciando. Dado que el sistema operativo realizará un análisis de seguridad, es posible que tarde algún tiempo en iniciarse. Espere...",
|
||||
"131": "Esta solicitud no es compatible, vaya a la consola de administración del proveedor de almacenamiento en la nube para operar",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "Configuré comme mot de passe d'authentification d'accès, laisser vide pour désactiver l'authentification.",
|
||||
"about7": "Suivez l'écran de verrouillage du système",
|
||||
"about8": "Après activation, l'application sera automatiquement verrouillée lors du verrouillage de l'écran système",
|
||||
"about9": "Télécharger automatiquement les messages d'erreur et les données de diagnostic",
|
||||
"about10": "Après l'activation, il télécharge automatiquement les informations d'erreur et les données de diagnostic via le SDK <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a>, qui n'implique pas de données de confidentialité personnelles afin que les développeurs peut corriger des bogues. L'application sera fermée automatiquement après modification, veuillez la redémarrer manuellement.",
|
||||
"about11": "Service de réseau",
|
||||
"about12": "Après l'activation, les autres appareils du même réseau local seront autorisés à accéder. L'application sera fermée automatiquement après modification, veuillez la redémarrer manuellement.",
|
||||
"about13": "API token",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Veuillez activer la synchronisation cloud dans [Paramètres - Activer la synchronisation cloud]",
|
||||
"125": "Il y a trop d'échecs de téléchargement dans la synchronisation automatique. Veuillez essayer de déclencher manuellement la synchronisation. Si le problème persiste, veuillez le signaler via <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "Les signets ne peuvent pas être vides",
|
||||
"127": "Il reste [%d] jours avant l'expiration de l'abonnement, après quoi les données cloud seront complètement supprimées. Veuillez visiter <a target='_blank' href='${url}'>ici</a> pour le renouvellement",
|
||||
"128": "L'abonnement a expiré. Après l'expiration, les données cloud seront complètement supprimées. Le rappel ne s'affichera plus deux jours après l'expiration de l'abonnement. Pour renouveler, veuillez visiter <a target='_blank' href='${url}'>ici</a>",
|
||||
"127": "Il reste [%d] jours avant l'expiration de l'abonnement, après quoi les données de stockage cloud officielles seront complètement supprimées. Pour renouveler, visitez <a target='_blank' href='${url}'>ici</a>",
|
||||
"128": "L'abonnement a expiré, les données de stockage cloud officielles seront complètement supprimées (les données S3/WebDAV ne sont pas affectées), deux jours après l'expiration de l'abonnement, ce rappel ne s'affichera plus. Pour renouveler, visitez <a target='_blank' href='${url}'>ici</a>",
|
||||
"129": "Les données cloud ont été corrompues, veuillez réinitialiser le dépôt de données local et le répertoire de synchronisation cloud pour résoudre le problème",
|
||||
"130": "Le programme d'installation de la nouvelle version démarre. Étant donné que le système d'exploitation va effectuer une analyse de sécurité, le démarrage peut prendre un certain temps. Veuillez patienter...",
|
||||
"131": "Cette opération n'est pas prise en charge, veuillez vous rendre sur la console de gestion du fournisseur de stockage cloud pour opérer",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "לאחר ההגדרה, זה ישמש כסיסמת הזדהות, השאר ריק כדי לסגור את האימות",
|
||||
"about7": "עקוב אחרי מערכת נעילת המסך",
|
||||
"about8": "לאחר הפעלת אפשרות זו, האפליקציה תינעל באופן אוטומטי כאשר המסך של המערכת נעול",
|
||||
"about9": "העלה הודעות שגיאה ונתוני אבחון באופן אוטומטי",
|
||||
"about10": "לאחר הפעלת אפשרות זו, היא תעלה אוטומטית מידע שגיאה ונתוני אבחון דרך <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK, אשר לא עוסק בנתוני פרטיות אישיים כך שהמפתחים יכולים לתקן באגים. האפליקציה תסגר אוטומטית לאחר שינוי, אנא הפעל אותה מחדש ידנית",
|
||||
"about11": "שירות רשת",
|
||||
"about12": "לאחר הפעלת אפשרות זו, מכשירים אחרים באותה LAN יתמכו בגישה. האפליקציה תסגר אוטומטית לאחר שינוי, אנא הפעל אותה מחדש ידנית",
|
||||
"about13": "אסימון API",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "אנא הפעל סנכרון בענן ב[הגדרות - הפעל סנכרון בענן]",
|
||||
"125": "נכשל מהסנכרון אוטומטי פעמים רבות מדי, אנא נסה להפעיל בידנית את הסנכרון, אם יש עדיין בעיה, אנא דווח על כך דרך <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">בעיות GitHub</a>",
|
||||
"126": "סימניה לא יכולה להיות ריקה",
|
||||
"127": "נותרו [%d] ימים עד שפג המנוי, לאחר מכן הנתונים בענן ימחקו לחלוטין. כדי לחדש, אנא בקר ב<a target='_blank' href='${url}'>כאן</a>",
|
||||
"128": "המנוי פג. לאחר התאריכים, הנתונים בענן ימחקו לחלוטין. ההודעה לא תופיע שבועיים אחרי שפג המנוי. כדי לחדש, אנא בקר ב<a target='_blank' href='${url}'>כאן</a>",
|
||||
"127": "נותרו [%d] ימים עד לפקיעת המנוי, לאחר מכן הנתונים באחסון הענן הרשמי יימחקו לחלוטין. לחידוש בקר ב<a target='_blank' href='${url}'>כאן</a>",
|
||||
"128": "המנוי פג, הנתונים באחסון הענן הרשמי יימחקו לחלוטין (נתוני S3/WebDAV אינם מושפעים), יומיים לאחר פקיעת המנוי תזכורת זו לא תופיע יותר. לחידוש בקר ב<a target='_blank' href='${url}'>כאן</a>",
|
||||
"129": "נתוני הענן פגומים, אנא אפס את מאגר הנתונים המקומי ואת תיקיית הסנכרון בענן כדי לפתור את הבעיה",
|
||||
"130": "המתקין של הגרסה החדשה מתחיל. מאחר שהמערכת תבצע סריקת אבטחה, ידרוש זה להמתין קצת לעבודה. אנא המתן...",
|
||||
"131": "פעולה זו אינה נתמכת, אנא פנה ללוח הניהול של ספק שירותי אחסון הענן כדי פעולה",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "Dopo la configurazione, verrà utilizzato come password di autenticazione per l'accesso. Lascia vuoto per chiudere l'autenticazione",
|
||||
"about7": "Segui il blocco schermo del sistema",
|
||||
"about8": "Dopo l'abilitazione, l'applicazione verrà automaticamente bloccata quando blocchi lo schermo del sistema",
|
||||
"about9": "Carica automaticamente i messaggi di errore e i dati diagnostici",
|
||||
"about10": "Dopo l'abilitazione, caricherà automaticamente informazioni sugli errori e dati diagnostici tramite l'SDK <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a>, che non riguarda i dati personali, in modo che gli sviluppatori possano risolvere i bug. L'applicazione verrà chiusa automaticamente dopo la modifica, si prega di riavviarla manualmente",
|
||||
"about11": "Servizio di rete",
|
||||
"about12": "Dopo l'abilitazione, altri dispositivi nella stessa LAN potranno accedere. L'applicazione verrà chiusa automaticamente dopo la modifica, si prega di riavviarla manualmente",
|
||||
"about13": "Token API",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Si prega di abilitare la sincronizzazione cloud in [Impostazioni - Abilita sincronizzazione cloud]",
|
||||
"125": "La sincronizzazione automatica è fallita troppe volte, si prega di tentare di attivare manualmente la sincronizzazione; se il problema persiste, si prega di segnalarlo tramite <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "Il segnalibro non può essere vuoto",
|
||||
"127": "Mancano [%d] giorni prima della scadenza dell'abbonamento, dopodiché i dati cloud verranno completamente eliminati. Per rinnovare, si prega di visitare <a target='_blank' href='${url}'>qui</a>",
|
||||
"128": "L'abbonamento è scaduto. Dopo la scadenza, i dati cloud verranno completamente eliminati. Il promemoria non verrà più visualizzato due giorni dopo la scadenza dell'abbonamento. Per rinnovare, si prega di visitare <a target='_blank' href='${url}'>qui</a>",
|
||||
"127": "サブスクリプションの有効期限があと [%d] 日で切れます。有効期限が切れると、公式クラウドストレージのデータは完全に削除されます。更新するには<a target='_blank' href='${url}'>こちら</a>をご覧ください",
|
||||
"128": "サブスクリプションの有効期限が切れました。有効期限が切れると、公式クラウドストレージのデータは完全に削除されます(S3/WebDAV クラウドストレージのデータは影響を受けません)。サブスクリプションの有効期限が切れてから2日後にはこの通知は表示されなくなります。更新するには<a target='_blank' href='${url}'>こちら</a>をご覧ください",
|
||||
"129": "I dati cloud sono stati corrotti, si prega di ripristinare il repository dati locale e la directory di sincronizzazione cloud per risolvere il problema",
|
||||
"130": "L'installatore della nuova versione sta per avviarsi. Poiché il sistema operativo eseguirà una scansione di sicurezza, potrebbe richiedere del tempo per avviarsi. Si prega di attendere...",
|
||||
"131": "Questa operazione non è supportata, si prega di andare al pannello di gestione del fornitore di archiviazione cloud per operare",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "設定したコードがアクセス認証パスワードとして使用されます",
|
||||
"about7": "システムのロック画面に従う",
|
||||
"about8": "システム画面のロック時にアプリケーションを自動的にロックします",
|
||||
"about9": "エラーメッセージと診断データの自動アップロード",
|
||||
"about10": "<a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK を介してエラー情報と診断データを自動的にアップロードします。このデータに個人情報は含まれておらず、開発者がバグを修正するために使われます。設定を変更するとアプリケーションが自動的に終了しますので手動で再起動してください",
|
||||
"about11": "ネットワークサービス",
|
||||
"about12": "同じ LAN 内の他のデバイスからのアクセスを許可します。設定を変更するとアプリケーションが自動的に終了しますので手動で再起動してください",
|
||||
"about13": "API トークン",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "[設定] - [クラウド] からクラウド同期を有効にしてください",
|
||||
"125": "自動同期の失敗回数が多すぎます。手動で同期を試みてください。それでも問題が解決しない場合は <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a> から報告してください",
|
||||
"126": "ブックマークは空にできません",
|
||||
"127": "サブスクリプションの有効期限が切れるまであと [%d] 日です。有効期限が過ぎるとクラウドデータは完全に削除されます。更新するには<a target='_blank' href='${url}'>こちら</a>にアクセスしてください",
|
||||
"128": "サブスクリプションの有効期限が切れました。有効期限が過ぎるとクラウドデータは完全に削除されます。サブスクリプションの有効期限が切れてから 2 日後にはリマインダーが表示されなくなります。更新するには<a target='_blank' href='${url}'>こちら</a>にアクセスしてください",
|
||||
"127": "サブスクリプションの有効期限があと [%d] 日で切れます。有効期限が切れると、公式クラウドストレージのデータは完全に削除されます。更新するには<a target='_blank' href='${url}'>こちら</a>をご覧ください",
|
||||
"128": "サブスクリプションの有効期限が切れました。有効期限が切れると、公式クラウドストレージのデータは完全に削除されます(S3/WebDAV クラウドストレージのデータは影響を受けません)。サブスクリプションの有効期限が切れてから2日後にはこの通知は表示されなくなります。更新するには<a target='_blank' href='${url}'>こちら</a>をご覧ください",
|
||||
"129": "クラウドデータが破損しています。問題を解決するためにローカルデータリポジトリとクラウド同期ディレクトリをリセットしてください",
|
||||
"130": "新しいバージョンのインストーラーを起動しています。オペレーティングシステムがセキュリティスキャンを実行するため起動に時間がかかる場合があります。しばらくお待ちください...",
|
||||
"131": "この操作はサポートされていません。クラウドストレージプロバイダーの管理コンソールから操作してください",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "Po skonfigurowaniu, będzie używany jako hasło do autoryzacji dostępu, zostaw puste, aby wyłączyć autoryzację",
|
||||
"about7": "Podążaj za ekranem blokady systemu",
|
||||
"about8": "Po włączeniu, aplikacja zostanie automatycznie zablokowana przy zablokowaniu ekranu systemu",
|
||||
"about9": "Automatycznie przesyłaj wiadomości o błędach i dane diagnostyczne",
|
||||
"about10": "Po włączeniu, automatycznie przesyła informacje o błędach i dane diagnostyczne przez <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK, co nie wiąże się z danymi prywatnymi, dzięki czemu deweloperzy mogą poprawiać błędy. Aplikacja zostanie automatycznie zamknięta po modyfikacji, proszę uruchomić ją ponownie ręcznie",
|
||||
"about11": "Usługa sieciowa",
|
||||
"about12": "Po włączeniu, inne urządzenia w tej samej sieci LAN będą miały możliwość dostępu. Aplikacja zostanie automatycznie zamknięta po modyfikacji, proszę uruchomić ponownie ręcznie",
|
||||
"about13": "Token API",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Proszę włączyć synchronizację chmury w [Ustawienia - Włącz synchronizację w chmurze]",
|
||||
"125": "Auto synchronizacja nie powiodła się zbyt wiele razy, proszę spróbować ręcznie uruchomić synchronizację, jeśli problem nadal występuje, zgłoś to za pomocą <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "Zakładka nie może być pusta",
|
||||
"127": "Zostało [%d] dni przed wygaśnięciem subskrypcji, po czym dane w chmurze zostaną całkowicie usunięte. Aby odnowić, proszę odwiedzić <a target='_blank' href='${url}'>tutaj</a>",
|
||||
"128": "Subskrypcja wygasła. Po wygaśnięciu, dane w chmurze zostaną całkowicie usunięte. Powiadomienie przestanie się pojawiać dwa dni po wygaśnięciu subskrypcji. Aby odnowić, proszę odwiedzić <a target='_blank' href='${url}'>tutaj</a>",
|
||||
"127": "Do wygaśnięcia subskrypcji pozostało [%d] dni, po czym dane w chmurze zostaną całkowicie usunięte. Aby przedłużyć, odwiedź <a target='_blank' href='${url}'>tutaj</a>",
|
||||
"128": "Subskrypcja wygasła, dane w chmurze zostaną całkowicie usunięte (dane S3/WebDAV nie są dotknięte), dwa dni po wygaśnięciu subskrypcji to powiadomienie nie będzie się już pojawiać. Aby przedłużyć, odwiedź <a target='_blank' href='${url}'>tutaj</a>",
|
||||
"129": "Dane w chmurze zostały uszkodzone, proszę zresetować lokalne repozytorium danych i katalog synchronizacji w chmurze, aby rozwiązać problem",
|
||||
"130": "Instalator nowej wersji się uruchamia. Ponieważ system operacyjny wykona skanowanie zabezpieczeń, rozpoczęcie może zająć trochę czasu. Proszę czekać...",
|
||||
"131": "Ta operacja nie jest obsługiwana, proszę przejść do konsoli zarządzania dostawcy przechowywania w chmurze, aby wykonać operację",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "После настройки будет использоваться как пароль для аутентификации доступа, оставьте пустым, чтобы закрыть аутентификацию",
|
||||
"about7": "Следовать блокировке системы",
|
||||
"about8": "После включения программа будет автоматически блокироваться при блокировке системного экрана",
|
||||
"about9": "Автоматическая загрузка сообщений об ошибках и диагностических данных",
|
||||
"about10": "После включения будет автоматически загружена информация об ошибках и диагностические данные через <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK, что не затрагивает данные личной конфиденциальности, чтобы разработчики могли исправить ошибки. Программа будет автоматически закрыта после изменения, пожалуйста, перезапустите вручную",
|
||||
"about11": "Сетевое обслуживание",
|
||||
"about12": "После включения другие устройства в одной локальной сети смогут получить доступ. Программа будет автоматически закрыта после изменения, пожалуйста, перезапустите вручную",
|
||||
"about13": "API токен",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "Пожалуйста, включите облачную синхронизацию в [Настройки - Включите облачную синхронизацию]",
|
||||
"125": "Автосинхронизация не удалась слишком много раз, попробуйте вручную запустить синхронизацию, если проблема все еще сохраняется, пожалуйста, сообщите об этом через <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">GitHub Issues</a>",
|
||||
"126": "Закладка не может быть пустой",
|
||||
"127": "Осталось [%d] дней до истечения подписки, после этого облачные данные будут полностью удалены. Чтобы продлить, пожалуйста, посетите <a target='_blank' href='${url}'>здесь</a>",
|
||||
"128": "Подписка истекла. После истечения срока действия облачные данные будут полностью удалены. Напоминание больше не появится через два дня после истечения подписки. Чтобы продлить, пожалуйста, посетите <a target='_blank' href='${url}'>здесь</a>",
|
||||
"127": "До окончания подписки осталось [%d] дней, после чего данные облачного хранилища будут полностью удалены. Для продления посетите <a target='_blank' href='${url}'>здесь</a>",
|
||||
"128": "Подписка истекла, данные облачного хранилища будут полностью удалены (данные S3/WebDAV не затронуты), через два дня после истечения подписки это уведомление больше не будет появляться. Для продления посетите <a target='_blank' href='${url}'>здесь</a>",
|
||||
"129": "Облачные данные были повреждены, пожалуйста, сбросьте локальный репозиторий данных и директорию облачной синхронизации, чтобы решить проблему",
|
||||
"130": "Установщик новой версии запускается. Поскольку операционная система выполнит проверку безопасности, может потребоваться некоторое время для запуска. Пожалуйста, подождите...",
|
||||
"131": "Эта операция не поддерживается, пожалуйста, перейдите в консоль управления поставщика облачного хранилища для выполнения операций",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "配置後作為存取鑒權密碼,留空則關閉鑒權",
|
||||
"about7": "跟隨系統鎖屏",
|
||||
"about8": "啟用後將會在系統鎖屏時自動鎖定應用",
|
||||
"about9": "自動上傳報錯資訊和診斷資料",
|
||||
"about10": "啟用後會通過 <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK 自動上傳報錯資訊和診斷資料等不涉及個人隱私的資料,以便開發者修復缺陷。修改後會自動關閉應用,請手動重啟",
|
||||
"about11": "網路伺服",
|
||||
"about12": "啟用後將允許同一區域網內的其他設備進行存取。修改後會自動關閉應用,請手動重啟",
|
||||
"about13": "API token",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "請在 [設置 - 啟用雲端同步] 中開啟雲端同步",
|
||||
"125": "自動同步失敗次數過多,請嘗試手動觸發同步,如果還有問題請<a href=\"https://ld246.com/article/1649901726096\" target=\"_blank\">反饋</a>",
|
||||
"126": "書籤不能為空",
|
||||
"127": "訂閱距過期還剩 [%d] 天,過期後雲端資料會被徹底刪除。續訂請訪問<a target='_blank' href='${url}'>這裡</a>",
|
||||
"128": "訂閱已經過期,過期後雲端資料會被徹底刪除,訂閱過期兩天后不再彈出該提醒,續訂請訪問<a target='_blank' href='${url}'>這裡</a>",
|
||||
"127": "訂閱距過期還剩 [%d] 天,過期後官方雲端存儲數據會被徹底刪除。續訂請訪問<a target='_blank' href='${url}'>這裡</a>",
|
||||
"128": "訂閱已經過期,過期後官方雲端存儲數據會被徹底刪除(S3/WebDAV 雲端存儲數據不受影響),訂閱過期兩天後不再彈出該提醒,續訂請訪問<a target='_blank' href='${url}'>這裡</a>",
|
||||
"129": "雲端資料已經損壞,請參考<a href=\"https://ld246.com/article/1683395267749\" target=\"_blank\">這裡</a>解決該問題",
|
||||
"130": "正在啟動新版本安裝程式,由於作業系統會進行安全掃描,因此啟動可能需要一些時間,請稍等...",
|
||||
"131": "不支持該操作,請到雲端存儲提供商管理控制台進行操作",
|
||||
|
|
|
@ -1179,8 +1179,6 @@
|
|||
"about6": "配置后作为访问鉴权密码,留空则关闭鉴权",
|
||||
"about7": "跟随系统锁屏",
|
||||
"about8": "启用后将会在系统锁屏时自动锁定应用",
|
||||
"about9": "自动上传报错信息和诊断数据",
|
||||
"about10": "启用后会通过 <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK 自动上传报错信息和诊断数据等不涉及个人隐私的数据,以便开发者修复缺陷。修改后会自动关闭应用,请手动重启",
|
||||
"about11": "网络伺服",
|
||||
"about12": "启用后将允许同一局域网内的其他设备进行访问。修改后会自动关闭应用,请手动重启",
|
||||
"about13": "API token",
|
||||
|
@ -1455,8 +1453,8 @@
|
|||
"124": "请在 [设置 - 启用云端同步] 中开启云端同步",
|
||||
"125": "自动同步失败次数过多,请尝试手动触发同步,如果还有问题请<a href=\"https://ld246.com/article/1649901726096\" target=\"_blank\">反馈</a>",
|
||||
"126": "书签不能为空",
|
||||
"127": "订阅距过期还剩 [%d] 天,过期后云端数据会被彻底删除。续订请访问<a target='_blank' href='${url}'>这里</a>",
|
||||
"128": "订阅已经过期,过期后云端数据会被彻底删除,订阅过期两天后不再弹出该提醒,续订请访问<a target='_blank' href='${url}'>这里</a>",
|
||||
"127": "订阅距过期还剩 [%d] 天,过期后官方云端存储数据会被彻底删除。续订请访问<a target='_blank' href='${url}'>这里</a>",
|
||||
"128": "订阅已经过期,过期后官方云端存储数据会被彻底删除(S3/WebDAV 云端存储数据不受影响),订阅过期两天后不再弹出该提醒,续订请访问<a target='_blank' href='${url}'>这里</a>",
|
||||
"129": "云端数据已经损坏,请参考<a href=\"https://ld246.com/article/1683395267749\" target=\"_blank\">这里</a>解决该问题",
|
||||
"130": "正在启动新版本安装程序,由于操作系统会进行安全扫描,所以启动可能需要一些时间,请稍等...",
|
||||
"131": "不支持该操作,请到云端存储提供商管理控制台进行操作",
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
--b3-theme-on-error: #fff;
|
||||
|
||||
/* 字体 */
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
|
||||
--b3-font-family-protyle: var(--b3-font-family);
|
||||
--b3-font-family-code: "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace, var(--b3-font-family);
|
||||
--b3-font-family-code: "Emojis Additional", "Emojis Reset", "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", var(--b3-font-family);
|
||||
--b3-font-family-graph: arial;
|
||||
--b3-font-family-emoji: emojis;
|
||||
--b3-font-family-emoji: "Emojis Additional", emojis;
|
||||
--b3-font-family-math: KaTeX_Math;
|
||||
--b3-font-size: 14px;
|
||||
|
||||
|
@ -202,15 +202,15 @@
|
|||
|
||||
/* 微软字体斜体会被相邻背景遮挡,将 arial 放置其前 https://github.com/siyuan-note/siyuan/issues/11841;"Segoe UI" 和 Noto-COLRv1-2.047 冲突,故移除。 */
|
||||
:root:lang(zh_CN) {
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
|
||||
}
|
||||
|
||||
:root:lang(zh_CHT) {
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
|
||||
}
|
||||
|
||||
:root:lang(ja_JP) {
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
|
||||
}
|
||||
|
||||
/* https://github.com/siyuan-note/siyuan/issues/6440 */
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
--b3-theme-on-error: #fff;
|
||||
|
||||
/* 字体 */
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
|
||||
--b3-font-family-protyle: var(--b3-font-family);
|
||||
--b3-font-family-code: "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace, var(--b3-font-family);
|
||||
--b3-font-family-code: "Emojis Additional", "Emojis Reset", "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", var(--b3-font-family);
|
||||
--b3-font-family-graph: arial;
|
||||
--b3-font-family-emoji: emojis;
|
||||
--b3-font-family-emoji: "Emojis Additional", emojis;
|
||||
--b3-font-family-math: KaTeX_Math;
|
||||
--b3-font-size: 14px;
|
||||
|
||||
|
@ -202,15 +202,15 @@
|
|||
|
||||
/* 微软字体斜体会被相邻背景遮挡,将 arial 放置其前 https://github.com/siyuan-note/siyuan/issues/11841;"Segoe UI" 和 Noto-COLRv1-2.047 冲突,故移除。 */
|
||||
:root:lang(zh_CN) {
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
|
||||
}
|
||||
|
||||
:root:lang(zh_CHT) {
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
|
||||
}
|
||||
|
||||
:root:lang(ja_JP) {
|
||||
--b3-font-family: BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
|
||||
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
|
||||
}
|
||||
|
||||
/* https://github.com/siyuan-note/siyuan/issues/6440 */
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<Identity Name="89C2A984.SiYuan"
|
||||
ProcessorArchitecture="x64"
|
||||
Publisher="CN=087C656E-C1D9-42D8-8807-CED45A74FC0F"
|
||||
Version="3.1.15.0"/>
|
||||
Version="3.1.17.0"/>
|
||||
<Properties>
|
||||
<DisplayName>SiYuan</DisplayName>
|
||||
<PublisherDisplayName>云南链滴科技有限公司</PublisherDisplayName>
|
||||
|
|
|
@ -5790,7 +5790,7 @@ Bug fixes and improves details.
|
|||
|
||||
* [Weaken Markdown related content in the user guide](https://github.com/siyuan-note/siyuan/issues/2001)
|
||||
|
||||
### Abolishments
|
||||
### Abolishment
|
||||
|
||||
* [Remove editor options](https://github.com/siyuan-note/siyuan/issues/1997)
|
||||
* [Remove export option `fixTermTypo`](https://github.com/siyuan-note/siyuan/issues/1998)
|
||||
|
|
|
@ -9,10 +9,12 @@ Below are the detailed changes in this version.
|
|||
### Enhancement
|
||||
|
||||
* [Improve database cell appearance](https://github.com/siyuan-note/siyuan/issues/10867)
|
||||
* [Multiple-select list items remain selected after indent or outdent](https://github.com/siyuan-note/siyuan/issues/12209)
|
||||
* [The move doc window retains the keyword of the last search](https://github.com/siyuan-note/siyuan/issues/12335)
|
||||
* [Improve font family and emoji ](https://github.com/siyuan-note/siyuan/pull/13241)
|
||||
* [Improve database select field color and layout](https://github.com/siyuan-note/siyuan/issues/13263)
|
||||
* [Improve cursor positioning after pasting images](https://github.com/siyuan-note/siyuan/issues/13336)
|
||||
* [The database primary key field displays the icon of the bound doc](https://github.com/siyuan-note/siyuan/issues/13378)
|
||||
* [Supports find-replace and asset file history on the mobile](https://github.com/siyuan-note/siyuan/issues/13415)
|
||||
* [Improve inline elements parsing](https://github.com/siyuan-note/siyuan/issues/13420)
|
||||
* [Allow stickTab icon in Panels to be used in a browser environment](https://github.com/siyuan-note/siyuan/pull/13421)
|
||||
|
@ -24,6 +26,15 @@ Below are the detailed changes in this version.
|
|||
* [Add SQL query template function `querySQL`](https://github.com/siyuan-note/siyuan/issues/13455)
|
||||
* [Search preview area supports inline memo positioning](https://github.com/siyuan-note/siyuan/issues/13465)
|
||||
* [Add Arabic support](https://github.com/siyuan-note/siyuan/pull/13475)
|
||||
* [Improve exporting data](https://github.com/siyuan-note/siyuan/issues/13500)
|
||||
* [Improve serving assets performance](https://github.com/siyuan-note/siyuan/issues/13501)
|
||||
* [Improve data synchronization stability](https://github.com/siyuan-note/siyuan/issues/13503)
|
||||
* [Compatible with image legacy data](https://github.com/siyuan-note/siyuan/issues/13523)
|
||||
* [Improve the behavior of `Del` of the image](https://github.com/siyuan-note/siyuan/issues/13524)
|
||||
|
||||
### Abolishment
|
||||
|
||||
* [Remove Sentry reporting diagnostic data](https://github.com/siyuan-note/siyuan/issues/13522)
|
||||
|
||||
### Bugfix
|
||||
|
||||
|
|
|
@ -9,10 +9,12 @@
|
|||
### 改進功能
|
||||
|
||||
* [改進資料庫單元外觀](https://github.com/siyuan-note/siyuan/issues/10867)
|
||||
* [多重選擇清單項目在縮排或減少縮排後保持選取狀態](https://github.com/siyuan-note/siyuan/issues/12209)
|
||||
* [行動文件視窗保留上次搜尋的關鍵字](https://github.com/siyuan-note/siyuan/issues/12335)
|
||||
* [改進字體系列和表情符號](https://github.com/siyuan-note/siyuan/pull/13241)
|
||||
* [改進資料庫選擇欄位的顏色和佈局](https://github.com/siyuan-note/siyuan/issues/13263)
|
||||
* [改進貼上圖片後的遊標定位](https://github.com/siyuan-note/siyuan/issues/13336)
|
||||
* [資料庫主鍵欄位顯示綁定文件區塊圖示](https://github.com/siyuan-note/siyuan/issues/13378)
|
||||
* [支援在行動裝置上尋找替換和資源檔案歷史](https://github.com/siyuan-note/siyuan/issues/13415)
|
||||
* [改進行級元素解析](https://github.com/siyuan-note/siyuan/issues/13420)
|
||||
* [允許在瀏覽器環境中使用面板中的 stickTab 圖示](https://github.com/siyuan-note/siyuan/pull/13421)
|
||||
|
@ -24,6 +26,15 @@
|
|||
* [新增 SQL 查詢範本函數 `querySQL`](https://github.com/siyuan-note/siyuan/issues/13455)
|
||||
* [搜尋預覽區域支援行級備註定位](https://github.com/siyuan-note/siyuan/issues/13465)
|
||||
* [新增阿拉伯語支援](https://github.com/siyuan-note/siyuan/pull/13475)
|
||||
* [改進匯出資料](https://github.com/siyuan-note/siyuan/issues/13500)
|
||||
* [改進資源檔案載入效能](https://github.com/siyuan-note/siyuan/issues/13501)
|
||||
* [改善資料同步穩定性](https://github.com/siyuan-note/siyuan/issues/13503)
|
||||
* [相容圖片遺留資料](https://github.com/siyuan-note/siyuan/issues/13523)
|
||||
* [改進圖片的 `Del` 行為](https://github.com/siyuan-note/siyuan/issues/13524)
|
||||
|
||||
### 移除功能
|
||||
|
||||
* [移除 Sentry 報告診斷資料](https://github.com/siyuan-note/siyuan/issues/13522)
|
||||
|
||||
### 修復缺陷
|
||||
|
||||
|
|
|
@ -9,10 +9,12 @@
|
|||
### 改进功能
|
||||
|
||||
* [改进数据库单元格外观](https://github.com/siyuan-note/siyuan/issues/10867)
|
||||
* [多选列表项在缩进或减少缩进后保持选中状态](https://github.com/siyuan-note/siyuan/issues/12209)
|
||||
* [移动文档窗口保留上次搜索的关键词](https://github.com/siyuan-note/siyuan/issues/12335)
|
||||
* [改进字体系列和表情符号](https://github.com/siyuan-note/siyuan/pull/13241)
|
||||
* [改进数据库选择字段的颜色和布局](https://github.com/siyuan-note/siyuan/issues/13263)
|
||||
* [改进粘贴图片后的光标定位](https://github.com/siyuan-note/siyuan/issues/13336)
|
||||
* [数据库主键字段显示绑定文档块图标](https://github.com/siyuan-note/siyuan/issues/13378)
|
||||
* [支持在移动设备上查找替换和资源文件历史](https://github.com/siyuan-note/siyuan/issues/13415)
|
||||
* [改进行级元素解析](https://github.com/siyuan-note/siyuan/issues/13420)
|
||||
* [允许在浏览器环境中使用面板中的 stickTab 图标](https://github.com/siyuan-note/siyuan/pull/13421)
|
||||
|
@ -24,6 +26,15 @@
|
|||
* [添加 SQL 查询模板函数 `querySQL`](https://github.com/siyuan-note/siyuan/issues/13455)
|
||||
* [搜索预览区域支持行级备注定位](https://github.com/siyuan-note/siyuan/issues/13465)
|
||||
* [添加阿拉伯语支持](https://github.com/siyuan-note/siyuan/pull/13475)
|
||||
* [改进导出数据](https://github.com/siyuan-note/siyuan/issues/13500)
|
||||
* [改进资源文件加载性能](https://github.com/siyuan-note/siyuan/issues/13501)
|
||||
* [改进数据同步稳定性](https://github.com/siyuan-note/siyuan/issues/13503)
|
||||
* [兼容图片遗留数据](https://github.com/siyuan-note/siyuan/issues/13523)
|
||||
* [改进图片的 `Del` 行为](https://github.com/siyuan-note/siyuan/issues/13524)
|
||||
|
||||
### 移除功能
|
||||
|
||||
* [移除 Sentry 报告诊断数据](https://github.com/siyuan-note/siyuan/issues/13522)
|
||||
|
||||
### 修复缺陷
|
||||
|
||||
|
|
42
app/changelogs/v3.1.17/v3.1.17.md
Normal file
42
app/changelogs/v3.1.17/v3.1.17.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## Overview
|
||||
|
||||
This version reduces startup time when sync is enabled.
|
||||
|
||||
## Changelogs
|
||||
|
||||
Below are the detailed changes in this version.
|
||||
|
||||
### Enhancement
|
||||
|
||||
* [Database-bound block primary key supports setting static anchor text](https://github.com/siyuan-note/siyuan/issues/10049)
|
||||
* [The text pasted into the database supports the use of `\t` and `\n` for segmentation and line breaks](https://github.com/siyuan-note/siyuan/issues/13259)
|
||||
* [Adjust window buttons when the interface is scaled on macOS](https://github.com/siyuan-note/siyuan/issues/13526)
|
||||
* [The mobile database always displays the `Calculation` row](https://github.com/siyuan-note/siyuan/issues/13535)
|
||||
* [Improve Attribute Panel - Database - Remove block](https://github.com/siyuan-note/siyuan/issues/13536)
|
||||
* [Improve list item multi-select indentation interaction](https://github.com/siyuan-note/siyuan/issues/13555)
|
||||
* [Remove browser default Ctrl+B/I/U](https://github.com/siyuan-note/siyuan/issues/13571)
|
||||
* [Reduce startup time when sync is enabled](https://github.com/siyuan-note/siyuan/issues/13589)
|
||||
|
||||
### Bugfix
|
||||
|
||||
* [Emoji not displayed on Linux](https://github.com/siyuan-note/siyuan/issues/13213)
|
||||
* [Database paste causes crash](https://github.com/siyuan-note/siyuan/issues/13410)
|
||||
* [Results not highlighted when searching using query syntax](https://github.com/siyuan-note/siyuan/issues/13532)
|
||||
* [Document cannot be exported as Markdown](https://github.com/siyuan-note/siyuan/issues/13545)
|
||||
* [Incorrect list item styles in exported PDF](https://github.com/siyuan-note/siyuan/issues/13550)
|
||||
* [Cannot export Data on mobile](https://github.com/siyuan-note/siyuan/issues/13565)
|
||||
|
||||
### Refactor
|
||||
|
||||
* [Upgrade to AWS SDK for Go v2](https://github.com/siyuan-note/siyuan/issues/13557)
|
||||
* [Upgrade to Electron v32.2.7](https://github.com/siyuan-note/siyuan/issues/13566)
|
||||
|
||||
### Development
|
||||
|
||||
* [Add `renderAVAttribute` method to Protyle](https://github.com/siyuan-note/siyuan/pull/13547)
|
||||
* [Add plugin function `getAllModels`](https://github.com/siyuan-note/siyuan/issues/13579)
|
||||
|
||||
## Download
|
||||
|
||||
* [B3log](https://b3log.org/siyuan/en/download.html)
|
||||
* [GitHub](https://github.com/siyuan-note/siyuan/releases)
|
42
app/changelogs/v3.1.17/v3.1.17_zh_CHT.md
Normal file
42
app/changelogs/v3.1.17/v3.1.17_zh_CHT.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## 概述
|
||||
|
||||
此版本改變降低了啟用同步時的啟動時間。
|
||||
|
||||
## 變更記錄
|
||||
|
||||
以下是此版本中的詳細變更。
|
||||
|
||||
### 改進功能
|
||||
|
||||
* [資料庫綁定區塊主鍵支援設定靜態錨文本](https://github.com/siyuan-note/siyuan/issues/10049)
|
||||
* [貼到資料庫中的文字支援使用 `\t` 和 `\n` 進行分割和換行](https://github.com/siyuan-note/siyuan/issues/13259)
|
||||
* [在 macOS 上調整介面縮放時的視窗按鈕](https://github.com/siyuan-note/siyuan/issues/13526)
|
||||
* [行動資料庫總是顯示 `計算` 行](https://github.com/siyuan-note/siyuan/issues/13535)
|
||||
* [改進屬性面板 - 資料庫 - 刪除區塊](https://github.com/siyuan-note/siyuan/issues/13536)
|
||||
* [改進清單項目多選縮排互動](https://github.com/siyuan-note/siyuan/issues/13555)
|
||||
* [移除瀏覽器預設的 Ctrl+B/I/U](https://github.com/siyuan-note/siyuan/issues/13571)
|
||||
* [啟用同步時減少啟動時間](https://github.com/siyuan-note/siyuan/issues/13589)
|
||||
|
||||
### 修復缺陷
|
||||
|
||||
* [Linux 上不顯示表情符號](https://github.com/siyuan-note/siyuan/issues/13213)
|
||||
* [貼到資料庫導致崩潰](https://github.com/siyuan-note/siyuan/issues/13410)
|
||||
* [使用查詢語法搜尋時結果未高亮顯示](https://github.com/siyuan-note/siyuan/issues/13532)
|
||||
* [文件無法匯出為 Markdown](https://github.com/siyuan-note/siyuan/issues/13545)
|
||||
* [匯出的 PDF 中清單項目樣式不正確](https://github.com/siyuan-note/siyuan/issues/13550)
|
||||
* [無法在行動裝置上匯出資料](https://github.com/siyuan-note/siyuan/issues/13565)
|
||||
|
||||
### 開發重構
|
||||
|
||||
* [升級至 AWS SDK for Go v2](https://github.com/siyuan-note/siyuan/issues/13557)
|
||||
* [升級至 Electron v32.2.7](https://github.com/siyuan-note/siyuan/issues/13566)
|
||||
|
||||
### 開發者
|
||||
|
||||
* [為 Protyle 新增 `renderAVAttribute` 方法](https://github.com/siyuan-note/siyuan/pull/13547)
|
||||
* [新增外掛程式 `getAllModels`](https://github.com/siyuan-note/siyuan/issues/13579)
|
||||
|
||||
## 下載
|
||||
|
||||
* [B3log](https://b3log.org/siyuan/download.html)
|
||||
* [GitHub](https://github.com/siyuan-note/siyuan/releases)
|
42
app/changelogs/v3.1.17/v3.1.17_zh_CN.md
Normal file
42
app/changelogs/v3.1.17/v3.1.17_zh_CN.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## 概述
|
||||
|
||||
该版本改降低了启用同步时的启动时间。
|
||||
|
||||
## 变更记录
|
||||
|
||||
以下是此版本中的详细变更。
|
||||
|
||||
### 改进功能
|
||||
|
||||
* [数据库绑定块主键支持设置静态锚文本](https://github.com/siyuan-note/siyuan/issues/10049)
|
||||
* [粘贴到数据库中的文本支持使用 `\t` 和 `\n` 进行分割和换行](https://github.com/siyuan-note/siyuan/issues/13259)
|
||||
* [在 macOS 上调整界面缩放时的窗口按钮](https://github.com/siyuan-note/siyuan/issues/13526)
|
||||
* [移动数据库始终显示 `计算` 行](https://github.com/siyuan-note/siyuan/issues/13535)
|
||||
* [改进属性面板 - 数据库 - 删除块](https://github.com/siyuan-note/siyuan/issues/13536)
|
||||
* [改进列表项多选缩进交互](https://github.com/siyuan-note/siyuan/issues/13555)
|
||||
* [移除浏览器默认的 Ctrl+B/I/U](https://github.com/siyuan-note/siyuan/issues/13571)
|
||||
* [启用同步时减少启动时间](https://github.com/siyuan-note/siyuan/issues/13589)
|
||||
|
||||
### 修复缺陷
|
||||
|
||||
* [Linux 上不显示表情符号](https://github.com/siyuan-note/siyuan/issues/13213)
|
||||
* [粘贴到数据库导致崩溃](https://github.com/siyuan-note/siyuan/issues/13410)
|
||||
* [使用查询语法搜索时结果未高亮显示](https://github.com/siyuan-note/siyuan/issues/13532)
|
||||
* [文档无法导出为 Markdown](https://github.com/siyuan-note/siyuan/issues/13545)
|
||||
* [导出的 PDF 中列表项样式不正确](https://github.com/siyuan-note/siyuan/issues/13550)
|
||||
* [无法在移动设备上导出数据](https://github.com/siyuan-note/siyuan/issues/13565)
|
||||
|
||||
### 开发重构
|
||||
|
||||
* [升级到 AWS SDK for Go v2](https://github.com/siyuan-note/siyuan/issues/13557)
|
||||
* [升级到 Electron v32.2.7](https://github.com/siyuan-note/siyuan/issues/13566)
|
||||
|
||||
### 开发者
|
||||
|
||||
* [为 Protyle 添加 `renderAVAttribute` 方法](https://github.com/siyuan-note/siyuan/pull/13547)
|
||||
* [添加插件函数 `getAllModels`](https://github.com/siyuan-note/siyuan/issues/13579)
|
||||
|
||||
## 下载
|
||||
|
||||
* [B3log](https://b3log.org/siyuan/download.html)
|
||||
* [GitHub](https://github.com/siyuan-note/siyuan/releases)
|
|
@ -19,11 +19,10 @@ win:
|
|||
- from: "kernel-arm64"
|
||||
to: "kernel"
|
||||
requestedExecutionLevel: "asInvoker"
|
||||
# certificateSubjectName: "Yunnan Liandi Technology Co., Ltd."
|
||||
signingHashAlgorithms: [ 'sha256' ]
|
||||
#rfc3161TimeStampServer: "http://sha256timestamp.ws.symantec.com/sha256/timestamp"
|
||||
#rfc3161TimeStampServer: "http://time.certum.pl"
|
||||
rfc3161TimeStampServer: "http://timestamp.entrust.net/TSS/RFC3161sha2TS"
|
||||
signtoolOptions:
|
||||
#certificateSubjectName: "Yunnan Liandi Technology Co., Ltd."
|
||||
signingHashAlgorithms: [ 'sha256' ]
|
||||
rfc3161TimeStampServer: "http://timestamp.entrust.net/TSS/RFC3161sha2TS"
|
||||
target:
|
||||
- target: "nsis"
|
||||
arch: "arm64"
|
||||
|
|
|
@ -19,11 +19,10 @@ win:
|
|||
- from: "kernel"
|
||||
to: "kernel"
|
||||
requestedExecutionLevel: "asInvoker"
|
||||
# certificateSubjectName: "Yunnan Liandi Technology Co., Ltd."
|
||||
signingHashAlgorithms: [ 'sha256' ]
|
||||
#rfc3161TimeStampServer: "http://sha256timestamp.ws.symantec.com/sha256/timestamp"
|
||||
#rfc3161TimeStampServer: "http://time.certum.pl"
|
||||
rfc3161TimeStampServer: "http://timestamp.entrust.net/TSS/RFC3161sha2TS"
|
||||
signtoolOptions:
|
||||
#certificateSubjectName: "Yunnan Liandi Technology Co., Ltd."
|
||||
signingHashAlgorithms: [ 'sha256' ]
|
||||
rfc3161TimeStampServer: "http://timestamp.entrust.net/TSS/RFC3161sha2TS"
|
||||
target:
|
||||
- target: "nsis"
|
||||
nsis:
|
||||
|
@ -67,8 +66,8 @@ extraResources:
|
|||
- from: "appearance/themes/daylight"
|
||||
to: "appearance/themes/daylight"
|
||||
filter: "!**/{.DS_Store,custom.css}"
|
||||
- from: "src/assets/fonts"
|
||||
- from: "appearance/fonts"
|
||||
to: "appearance/fonts"
|
||||
filter: "!**/{.DS_Store}"
|
||||
- from: "pandoc/pandoc-windows-amd64.zip"
|
||||
to: "pandoc.zip"
|
||||
to: "pandoc.zip"
|
||||
|
|
|
@ -861,6 +861,15 @@ app.whenReady().then(() => {
|
|||
globalShortcut.unregister(hotKey2Electron(data.accelerator));
|
||||
}
|
||||
break;
|
||||
case "setTrafficLightPosition":
|
||||
if (!currentWindow || !currentWindow.setWindowButtonPosition) {
|
||||
return;
|
||||
}
|
||||
if (new URL(currentWindow.getURL()).pathname === "/stage/build/app/window.html") {
|
||||
data.position.y += 5 * data.zoom;
|
||||
}
|
||||
currentWindow.setWindowButtonPosition(data.position);
|
||||
break;
|
||||
case "show":
|
||||
if (!currentWindow) {
|
||||
return;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"id": "20201204184532-3qm9l8n",
|
||||
"title": "Template snippet",
|
||||
"type": "doc",
|
||||
"updated": "20241213215714"
|
||||
"updated": "20241224162810"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -57,7 +57,7 @@
|
|||
"HeadingLevel": 2,
|
||||
"Properties": {
|
||||
"id": "20210104091444-jy56z0p",
|
||||
"updated": "20241213215714"
|
||||
"updated": "20241224162810"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -215,7 +215,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20210104091444-mwbvc9m",
|
||||
"updated": "20241213215714"
|
||||
"updated": "20241224162810"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -484,7 +484,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20210504093232-vukp34t",
|
||||
"updated": "20240403151002"
|
||||
"updated": "20241224162810"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -516,7 +516,7 @@
|
|||
"IsFencedCodeBlock": true,
|
||||
"Properties": {
|
||||
"id": "20241213215606-a1mq6zf",
|
||||
"updated": "20241213215606"
|
||||
"updated": "20241224162810"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -528,7 +528,7 @@
|
|||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockCode",
|
||||
"Data": " .action{querySQL \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
"Data": " .action{querySpans \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockFenceCloseMarker",
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
"Properties": {
|
||||
"id": "20230805232018-hgrq0ju",
|
||||
"title": "Connect with third-party cloud storage",
|
||||
"updated": "20240301091400"
|
||||
"type": "doc",
|
||||
"updated": "20241216171745"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -55,7 +56,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20230805232156-kbi85az",
|
||||
"updated": "20240301091400"
|
||||
"updated": "20241216171745"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -121,7 +122,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20230805232156-vqfp7fz",
|
||||
"updated": "20240301091400"
|
||||
"updated": "20241216171745"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -129,7 +130,7 @@
|
|||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230805232156-tliw65p",
|
||||
"updated": "20240301091400"
|
||||
"updated": "20241216171642"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -151,20 +152,79 @@
|
|||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://koofr.eu/",
|
||||
"TextMarkTextContent": "Koofr"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20241216171644-p5dmsx8",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20241216171644-p5dmsx8",
|
||||
"updated": "20241216171745"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171644-1x6gfx0",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171644-1x6gfx0",
|
||||
"updated": "20241216171644"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171644-5v4890j",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171644-5v4890j",
|
||||
"updated": "20241216171644"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "Due to the problems of the WebDAV protocol itself, when the data volume is large, problems such as slow startup, slow synchronization, and high resource usage will occur, so it is recommended to use S3 object storage"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " (Nutstore WebDAV is not supported because of its "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "interface limitations"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": ")"
|
||||
"ID": "20241216171644-ie3pkyj",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171644-ie3pkyj",
|
||||
"updated": "20241216171745"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171644-k4q14iw",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171644-k4q14iw",
|
||||
"updated": "20241216171745"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "Nutstore cloud WebDAV is not supported because its "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "interface has limitations"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"id": "20201204181006-7bkppue",
|
||||
"title": "模板片段",
|
||||
"type": "doc",
|
||||
"updated": "20241213215655"
|
||||
"updated": "20241224162826"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -69,7 +69,7 @@
|
|||
"HeadingLevel": 2,
|
||||
"Properties": {
|
||||
"id": "20210104091309-fhb549c",
|
||||
"updated": "20241213215655"
|
||||
"updated": "20241224162826"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -237,7 +237,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20210104091309-gjkg3u5",
|
||||
"updated": "20241213215655"
|
||||
"updated": "20241224162826"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -506,7 +506,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20210504093313-4aoyxd0",
|
||||
"updated": "20241213215416"
|
||||
"updated": "20241224162826"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -538,7 +538,7 @@
|
|||
"IsFencedCodeBlock": true,
|
||||
"Properties": {
|
||||
"id": "20241213215337-rhkoc8k",
|
||||
"updated": "20241213215416"
|
||||
"updated": "20241224162826"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -550,7 +550,7 @@
|
|||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockCode",
|
||||
"Data": " .action{querySQL \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
"Data": " .action{querySpans \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockFenceCloseMarker",
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
"Properties": {
|
||||
"id": "20230805230131-sn7obzb",
|
||||
"title": "对接第三方云端存储",
|
||||
"updated": "20240301090951"
|
||||
"type": "doc",
|
||||
"updated": "20241216171525"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -55,7 +56,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20230805230746-4q9cmrb",
|
||||
"updated": "20240301090951"
|
||||
"updated": "20241216171525"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -121,7 +122,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20230805230746-zb33erf",
|
||||
"updated": "20240301090951"
|
||||
"updated": "20241216171525"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -129,7 +130,7 @@
|
|||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230805230746-i9fzmzi",
|
||||
"updated": "20240301090951"
|
||||
"updated": "20241216171521"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -141,20 +142,79 @@
|
|||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://infini-cloud.net/",
|
||||
"TextMarkTextContent": "InfiniCLOUD"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20241216171521-40xtiyf",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20241216171521-40xtiyf",
|
||||
"updated": "20241216171525"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171530-dhfkay6",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171530-dhfkay6",
|
||||
"updated": "20241216171530"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171530-kxdtu73",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171530-kxdtu73",
|
||||
"updated": "20241216171531"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "由于 WebDAV 协议本身的问题,数据量较大后会出现启动慢、同步慢、资源占用高等问题,所以建议选择使用 S3 对象存储"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "(不支持坚果云 WebDAV,因为其"
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "接口存在限制"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": ")"
|
||||
"ID": "20241216171521-ccruwd8",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171521-ccruwd8",
|
||||
"updated": "20241216171525"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171521-z0p3t71",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171521-z0p3t71",
|
||||
"updated": "20241216171525"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "不支持坚果云 WebDAV,因为其"
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "接口存在限制"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -167,7 +227,7 @@
|
|||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230805230746-pq0po1p",
|
||||
"updated": "20230828111951"
|
||||
"updated": "20241216171020"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"id": "20200813163359-v04n73b",
|
||||
"title": "隐私政策和用户协议",
|
||||
"type": "doc",
|
||||
"updated": "20221027114353"
|
||||
"updated": "20241218172032"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -16,7 +16,7 @@
|
|||
"HeadingLevel": 2,
|
||||
"Properties": {
|
||||
"id": "20220212224529-hcqln0k",
|
||||
"updated": "20220212224529"
|
||||
"updated": "20241218172032"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -31,7 +31,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20220212224529-q784muc",
|
||||
"updated": "20221027114353"
|
||||
"updated": "20241218172032"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -71,7 +71,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20220212224529-q652whb",
|
||||
"updated": "20221027114353"
|
||||
"updated": "20241218172032"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -79,12 +79,12 @@
|
|||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20220212224529-1embibu",
|
||||
"updated": "20221027114353"
|
||||
"updated": "20241218172032"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "最新日期:2022 年 10 月 27 日"
|
||||
"Data": "最新日期:2024 年 12 月 18 日"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -3501,102 +3501,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027112340-j85t36u",
|
||||
"Type": "NodeBlockquote",
|
||||
"Properties": {
|
||||
"id": "20221027112340-j85t36u",
|
||||
"updated": "20221027112341"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeBlockquoteMarker",
|
||||
"Data": "\u003e"
|
||||
},
|
||||
{
|
||||
"ID": "20221027112341-fh7jv2y",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027112341-fh7jv2y",
|
||||
"updated": "20221027112341"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "SDK 名称:Sentry"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027112341-znirf8k",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027112341-znirf8k",
|
||||
"updated": "20221027112341"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "公司名称:FUNCTIONAL SOFTWARE, INC."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027112341-japnv8y",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027112341-japnv8y",
|
||||
"updated": "20221027112341"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "SDK 官网:"
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://sentry.io/",
|
||||
"TextMarkTextContent": "https://sentry.io"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027112341-ohaorb0",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027112341-ohaorb0",
|
||||
"updated": "20221027112341"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "使用目的:用于收集报错信息和诊断数据,进而改善用户体验"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027112341-n2n81eo",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027112341-n2n81eo",
|
||||
"updated": "20221027112341"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "收集的个人信息类型/字段:设备标识信息和报错日志、诊断数据等不涉及个人隐私的数据 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://sentry.io/privacy/",
|
||||
"TextMarkTextContent": "https://sentry.io/privacy/"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027112333-rjv80e0",
|
||||
"Type": "NodeBlockquote",
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
"icon": "1f4c4",
|
||||
"id": "20211226114339-dk0gtpr",
|
||||
"title": "隱私政策和用戶協議",
|
||||
"updated": "20230630145333"
|
||||
"type": "doc",
|
||||
"updated": "20241218172040"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -15,7 +16,7 @@
|
|||
"HeadingLevel": 2,
|
||||
"Properties": {
|
||||
"id": "20220212225517-09nj67f",
|
||||
"updated": "20220212225517"
|
||||
"updated": "20241218172040"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -30,7 +31,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20220212225517-4qagezn",
|
||||
"updated": "20221027114358"
|
||||
"updated": "20241218172040"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -68,7 +69,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20220212225517-pvls0y0",
|
||||
"updated": "20221027114358"
|
||||
"updated": "20241218172040"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -76,12 +77,12 @@
|
|||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20220212225517-vgg1nrb",
|
||||
"updated": "20221027114358"
|
||||
"updated": "20241218172040"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "最新日期:2022 年 10 月 27 日"
|
||||
"Data": "最新日期:2024 年 12 月 18 日"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -3505,102 +3506,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-fos5fwy",
|
||||
"Type": "NodeBlockquote",
|
||||
"Properties": {
|
||||
"id": "20221027113639-fos5fwy",
|
||||
"updated": "20221027113639"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeBlockquoteMarker",
|
||||
"Data": "\u003e"
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-sr12gat",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027113639-sr12gat",
|
||||
"updated": "20221027113639"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "SDK 名稱:Sentry"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-tqeakh3",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027113639-tqeakh3",
|
||||
"updated": "20221027113639"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "公司名稱:FUNCTIONAL SOFTWARE, INC."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-9f2m2y5",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027113639-9f2m2y5",
|
||||
"updated": "20221027113639"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "SDK 官網:"
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://sentry.io/",
|
||||
"TextMarkTextContent": "https://sentry.io"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-9ae8fqy",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027113639-9ae8fqy",
|
||||
"updated": "20221027113639"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "使用目的:用於收集報錯資訊和診斷資料,進而改善用戶體驗"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-zlm8yb8",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20221027113639-zlm8yb8",
|
||||
"updated": "20221027113639"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "收集的個人資訊類型/字段:設備標識資訊和報錯日誌、診斷資料等不涉及個人隱私的資料 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://sentry.io/privacy/",
|
||||
"TextMarkTextContent": "https://sentry.io/privacy/"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20221027113639-7ruumya",
|
||||
"Type": "NodeBlockquote",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"id": "20211226123004-dplpw0o",
|
||||
"title": "範本片段",
|
||||
"type": "doc",
|
||||
"updated": "20241213215707"
|
||||
"updated": "20241224162821"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -53,7 +53,7 @@
|
|||
"HeadingLevel": 2,
|
||||
"Properties": {
|
||||
"id": "20211226123024-eyagqur",
|
||||
"updated": "20241213215707"
|
||||
"updated": "20241224162821"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -208,7 +208,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20211226123024-pjvw31z",
|
||||
"updated": "20241213215707"
|
||||
"updated": "20241224162821"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -477,7 +477,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20211226123024-69kddle",
|
||||
"updated": "20240403150944"
|
||||
"updated": "20241224162821"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -509,7 +509,7 @@
|
|||
"IsFencedCodeBlock": true,
|
||||
"Properties": {
|
||||
"id": "20241213215524-9an3khb",
|
||||
"updated": "20241213215524"
|
||||
"updated": "20241224162821"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -521,7 +521,7 @@
|
|||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockCode",
|
||||
"Data": " .action{querySQL \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
"Data": " .action{querySpans \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockFenceCloseMarker",
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
"Properties": {
|
||||
"id": "20230805232903-erdoerp",
|
||||
"title": "對接第三方雲端存儲",
|
||||
"updated": "20240301091104"
|
||||
"type": "doc",
|
||||
"updated": "20241216171627"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -55,7 +56,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20230805232945-ugjx8sl",
|
||||
"updated": "20240301091104"
|
||||
"updated": "20241216171627"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -121,7 +122,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20230805232945-2dksutx",
|
||||
"updated": "20240301091104"
|
||||
"updated": "20241216171627"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -129,7 +130,7 @@
|
|||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230805232945-ayx9zfr",
|
||||
"updated": "20240301091104"
|
||||
"updated": "20241216171606"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -151,20 +152,79 @@
|
|||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://koofr.eu/",
|
||||
"TextMarkTextContent": "Koofr"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20241216171609-pu5jvmt",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20241216171609-pu5jvmt",
|
||||
"updated": "20241216171627"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171609-abg7al0",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171609-abg7al0",
|
||||
"updated": "20241216171627"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171609-aled0a0",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171609-aled0a0",
|
||||
"updated": "20241216171627"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "由於 WebDAV 協定本身的問題,資料量較大後會出現啟動慢、同步慢、資源佔用高等問題,所以建議選擇使用 S3 對象存儲服務"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "(不支援堅果雲 WebDAV,因為其"
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "介面存在限制"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": ")"
|
||||
"ID": "20241216171609-in2fc0o",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171609-in2fc0o",
|
||||
"updated": "20241216171609"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171609-8zspojy",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171609-8zspojy",
|
||||
"updated": "20241216171609"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "不支援堅果雲 WebDAV,因為其"
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "介面存在限制"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"id": "20240530101000-na9sys7",
|
||||
"title": "サードパーティのクラウドストレージへの接続",
|
||||
"type": "doc",
|
||||
"updated": "20240530101000"
|
||||
"updated": "20241216171841"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -57,9 +57,8 @@
|
|||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"ID": "20240530101000-itl3kvt",
|
||||
"id": "20240530101000-y5kmw6j",
|
||||
"updated": "20240530101000"
|
||||
"updated": "20241216171841"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -70,7 +69,6 @@
|
|||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"ID": "20240530101000-vlan2e3",
|
||||
"id": "20240530101000-qqtgtoh",
|
||||
"updated": "20240530101000"
|
||||
},
|
||||
|
@ -79,7 +77,6 @@
|
|||
"ID": "20240530101000-aic7sey",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"ID": "20240530101000-s1ytsva",
|
||||
"id": "20240530101000-aic7sey",
|
||||
"updated": "20240530101000"
|
||||
},
|
||||
|
@ -115,16 +112,14 @@
|
|||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"ID": "20240530101000-5i7ys4o",
|
||||
"id": "20240530101000-wl4hjuf",
|
||||
"updated": "20240530101000"
|
||||
"updated": "20241216171841"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20240530101000-6a5gjia",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"ID": "20240530101000-y2dbhdv",
|
||||
"id": "20240530101000-6a5gjia",
|
||||
"updated": "20240530101000"
|
||||
},
|
||||
|
@ -159,6 +154,94 @@
|
|||
"Data": " など"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20241216171758-77i85wp",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20241216171758-77i85wp",
|
||||
"updated": "20241216171812"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171801-fnqtfso",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171801-fnqtfso",
|
||||
"updated": "20241216171812"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171801-0gz1sfs",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171801-0gz1sfs",
|
||||
"updated": "20241216171812"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "WebDAVプロトコル自体の問題により、データ量が多い場合には起動が遅い、同期が遅い、リソース使用量が多いなどの問題が発生する可能性があるため、S3オブジェクトストレージの使用を推奨します"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20241216171758-7guo2ud",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20241216171758-7guo2ud",
|
||||
"updated": "20241216171841"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171758-tl1nnuk",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20241216171758-tl1nnuk",
|
||||
"updated": "20241216171841"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20241216171758-y44s4r4",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20241216171758-y44s4r4",
|
||||
"updated": "20241216171841"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "Nutstore cloud WebDAV は "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "a",
|
||||
"TextMarkAHref": "https://help.jianguoyun.com/?p=2064",
|
||||
"TextMarkTextContent": "インターフェース制限"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " のためサポートされていません"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"id": "20240530101000-6x9ivi7",
|
||||
"title": "テンプレートスニペット",
|
||||
"type": "doc",
|
||||
"updated": "20241213215720"
|
||||
"updated": "20241224162728"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -66,7 +66,7 @@
|
|||
"Properties": {
|
||||
"ID": "20240530101000-5nvn9ad",
|
||||
"id": "20240530101000-pi05yzt",
|
||||
"updated": "20241213215720"
|
||||
"updated": "20241224162728"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -226,7 +226,7 @@
|
|||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20240530101000-by5hqnb",
|
||||
"updated": "20241213215720"
|
||||
"updated": "20241224162728"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -495,7 +495,7 @@
|
|||
},
|
||||
"Properties": {
|
||||
"id": "20240530101000-238ctfi",
|
||||
"updated": "20240530101000"
|
||||
"updated": "20241224162728"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -527,7 +527,7 @@
|
|||
"IsFencedCodeBlock": true,
|
||||
"Properties": {
|
||||
"id": "20241213215619-gkqs282",
|
||||
"updated": "20241213215619"
|
||||
"updated": "20241224162728"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
|
@ -539,7 +539,7 @@
|
|||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockCode",
|
||||
"Data": " .action{querySQL \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
"Data": " .action{querySpans \"SELECT * FROM spans LIMIT ?\" \"3\"}\n"
|
||||
},
|
||||
{
|
||||
"Type": "NodeCodeBlockFenceCloseMarker",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "SiYuan",
|
||||
"version": "3.1.15",
|
||||
"version": "3.1.17",
|
||||
"description": "Refactor your thinking",
|
||||
"homepage": "https://b3log.org/siyuan",
|
||||
"main": "./electron/main.js",
|
||||
|
@ -56,12 +56,13 @@
|
|||
"clean-webpack-plugin": "^4.0.0",
|
||||
"css-loader": "^6.7.1",
|
||||
"dayjs": "^1.11.5",
|
||||
"electron": "32.2.5",
|
||||
"electron-builder": "24.13.3",
|
||||
"electron": "32.2.7",
|
||||
"electron-builder": "25.1.8",
|
||||
"encoding": "^0.1.13",
|
||||
"esbuild-loader": "^3.0.1",
|
||||
"eslint": "^9.15.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"globals": "^15.12.0",
|
||||
"html-loader": "^2.1.2",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"iconv-lite": "^0.6.3",
|
||||
|
@ -74,8 +75,7 @@
|
|||
"typescript": "^4.7.4",
|
||||
"webpack": "^5.94.0",
|
||||
"webpack-bundle-analyzer": "^4.5.0",
|
||||
"webpack-cli": "^4.10.0",
|
||||
"globals": "^15.12.0"
|
||||
"webpack-cli": "^4.10.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@electron/remote": "^2.1.2"
|
||||
|
|
412
app/pnpm-lock.yaml
generated
412
app/pnpm-lock.yaml
generated
|
@ -10,7 +10,7 @@ importers:
|
|||
dependencies:
|
||||
'@electron/remote':
|
||||
specifier: ^2.1.2
|
||||
version: 2.1.2(electron@32.2.5)
|
||||
version: 2.1.2(electron@32.2.7)
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^18.13.0
|
||||
|
@ -34,11 +34,11 @@ importers:
|
|||
specifier: ^1.11.5
|
||||
version: 1.11.5
|
||||
electron:
|
||||
specifier: 32.2.5
|
||||
version: 32.2.5
|
||||
specifier: 32.2.7
|
||||
version: 32.2.7
|
||||
electron-builder:
|
||||
specifier: 24.13.3
|
||||
version: 24.13.3(electron-builder-squirrel-windows@25.0.5)
|
||||
specifier: 25.1.8
|
||||
version: 25.1.8(electron-builder-squirrel-windows@25.0.5)
|
||||
encoding:
|
||||
specifier: ^0.1.13
|
||||
version: 0.1.13
|
||||
|
@ -116,18 +116,13 @@ packages:
|
|||
resolution: {integrity: sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@electron/notarize@2.2.1':
|
||||
resolution: {integrity: sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
'@electron/notarize@2.3.2':
|
||||
resolution: {integrity: sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
'@electron/osx-sign@1.0.5':
|
||||
resolution: {integrity: sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
'@electron/notarize@2.5.0':
|
||||
resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
'@electron/osx-sign@1.3.1':
|
||||
resolution: {integrity: sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==}
|
||||
|
@ -139,15 +134,16 @@ packages:
|
|||
engines: {node: '>=12.13.0'}
|
||||
hasBin: true
|
||||
|
||||
'@electron/rebuild@3.6.1':
|
||||
resolution: {integrity: sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==}
|
||||
engines: {node: '>=12.13.0'}
|
||||
hasBin: true
|
||||
|
||||
'@electron/remote@2.1.2':
|
||||
resolution: {integrity: sha512-EPwNx+nhdrTBxyCqXt/pftoQg/ybtWDW3DUWHafejvnB1ZGGfMpv6e15D8KeempocjXe78T7WreyGGb3mlZxdA==}
|
||||
peerDependencies:
|
||||
electron: '>= 13.0.0'
|
||||
|
||||
'@electron/universal@1.5.1':
|
||||
resolution: {integrity: sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==}
|
||||
engines: {node: '>=8.6'}
|
||||
|
||||
'@electron/universal@2.0.1':
|
||||
resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==}
|
||||
engines: {node: '>=16.4'}
|
||||
|
@ -380,10 +376,6 @@ packages:
|
|||
'@jridgewell/trace-mapping@0.3.25':
|
||||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||
|
||||
'@malept/cross-spawn-promise@1.1.1':
|
||||
resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==}
|
||||
engines: {node: '>= 10'}
|
||||
|
||||
'@malept/cross-spawn-promise@2.0.0':
|
||||
resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==}
|
||||
engines: {node: '>= 12.13.0'}
|
||||
|
@ -659,6 +651,10 @@ packages:
|
|||
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||
engines: {node: '>= 6.0.0'}
|
||||
|
||||
agent-base@7.1.3:
|
||||
resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
|
||||
engines: {node: '>= 14'}
|
||||
|
||||
agentkeepalive@4.5.0:
|
||||
resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
|
||||
engines: {node: '>= 8.0.0'}
|
||||
|
@ -711,19 +707,12 @@ packages:
|
|||
resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
app-builder-bin@4.0.0:
|
||||
resolution: {integrity: sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==}
|
||||
app-builder-bin@5.0.0-alpha.10:
|
||||
resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==}
|
||||
|
||||
app-builder-bin@5.0.0-alpha.7:
|
||||
resolution: {integrity: sha512-ww2mK4ITUvqisnqOuUWAeHzokpPidyZ7a0ZkwW+V7sF5/Pdi2OldkRjAWqEzn6Xtmj3SLVT84as4wB59A6jJ4g==}
|
||||
|
||||
app-builder-lib@24.13.3:
|
||||
resolution: {integrity: sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
dmg-builder: 24.13.3
|
||||
electron-builder-squirrel-windows: 24.13.3
|
||||
|
||||
app-builder-lib@25.0.5:
|
||||
resolution: {integrity: sha512-rxgxMx1f7I4ZAP0jA5+5iB7X6x6MJvGF7GauRzQBnIVihwXX2HOiAE7yenyY9Ry5YAiH47MnCxdq413Wq6XOcQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
|
@ -731,6 +720,13 @@ packages:
|
|||
dmg-builder: 25.0.5
|
||||
electron-builder-squirrel-windows: 25.0.5
|
||||
|
||||
app-builder-lib@25.1.8:
|
||||
resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
dmg-builder: 25.1.8
|
||||
electron-builder-squirrel-windows: 25.1.8
|
||||
|
||||
aproba@2.0.0:
|
||||
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
|
||||
|
||||
|
@ -834,30 +830,26 @@ packages:
|
|||
buffer-crc32@0.2.13:
|
||||
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
|
||||
|
||||
buffer-equal@1.0.1:
|
||||
resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==}
|
||||
engines: {node: '>=0.4'}
|
||||
|
||||
buffer-from@1.1.2:
|
||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||
|
||||
buffer@5.7.1:
|
||||
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
||||
|
||||
builder-util-runtime@9.2.4:
|
||||
resolution: {integrity: sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==}
|
||||
builder-util-runtime@9.2.10:
|
||||
resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
builder-util-runtime@9.2.5:
|
||||
resolution: {integrity: sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
builder-util@24.13.1:
|
||||
resolution: {integrity: sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==}
|
||||
|
||||
builder-util@25.0.3:
|
||||
resolution: {integrity: sha512-eH5c1ukdY2xjtFQWQ6jlzEuXuqcuAVc3UQ6V6fdYu9Kg3CkDbCR82Mox42uaJDmee9WXSbP/88cOworFdOHPhw==}
|
||||
|
||||
builder-util@25.1.7:
|
||||
resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==}
|
||||
|
||||
cacache@16.1.3:
|
||||
resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
|
@ -995,9 +987,6 @@ packages:
|
|||
concat-map@0.0.1:
|
||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||
|
||||
config-file-ts@0.2.6:
|
||||
resolution: {integrity: sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==}
|
||||
|
||||
config-file-ts@0.2.8-rc1:
|
||||
resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==}
|
||||
|
||||
|
@ -1089,14 +1078,11 @@ packages:
|
|||
detect-node@2.1.0:
|
||||
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
|
||||
|
||||
dir-compare@3.3.0:
|
||||
resolution: {integrity: sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==}
|
||||
|
||||
dir-compare@4.2.0:
|
||||
resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==}
|
||||
|
||||
dmg-builder@24.13.3:
|
||||
resolution: {integrity: sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==}
|
||||
dmg-builder@25.1.8:
|
||||
resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==}
|
||||
|
||||
dmg-license@1.0.11:
|
||||
resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==}
|
||||
|
@ -1127,17 +1113,10 @@ packages:
|
|||
resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
dotenv-expand@5.1.0:
|
||||
resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
|
||||
|
||||
dotenv@16.4.5:
|
||||
resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
dotenv@9.0.2:
|
||||
resolution: {integrity: sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
duplexer@0.1.2:
|
||||
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
|
||||
|
||||
|
@ -1152,22 +1131,22 @@ packages:
|
|||
electron-builder-squirrel-windows@25.0.5:
|
||||
resolution: {integrity: sha512-N2U7LGSdt4hmEhjEeIV2XJbjj2YIrTL6enfsGKfOhGTpL6GEejUmT3gjdKUqKBS5+NBx0GWhnEwD3MpO2P6Nfg==}
|
||||
|
||||
electron-builder@24.13.3:
|
||||
resolution: {integrity: sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==}
|
||||
electron-builder@25.1.8:
|
||||
resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
|
||||
electron-publish@24.13.1:
|
||||
resolution: {integrity: sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==}
|
||||
|
||||
electron-publish@25.0.3:
|
||||
resolution: {integrity: sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg==}
|
||||
|
||||
electron-publish@25.1.7:
|
||||
resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==}
|
||||
|
||||
electron-to-chromium@1.5.39:
|
||||
resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==}
|
||||
|
||||
electron@32.2.5:
|
||||
resolution: {integrity: sha512-8t5IGOvms/JTcLNnlOH7rFCAJIZJAazwYrF7kQsKQSLzDHh4z8mGFrU11NN3W4bIT6Yg5DJNniSWz3O5wJLmCw==}
|
||||
electron@32.2.7:
|
||||
resolution: {integrity: sha512-y8jbQRG3xogF70XPlk5c+dWe5iRfUBo28o2NMpKd/CcW7ENIaWtBlGima8/8nmRdAaYTy1+yIt6KB0Lon9H8cA==}
|
||||
engines: {node: '>= 12.20.55'}
|
||||
hasBin: true
|
||||
|
||||
|
@ -1222,10 +1201,6 @@ packages:
|
|||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
|
||||
escalade@3.1.1:
|
||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
escalade@3.2.0:
|
||||
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
|
||||
engines: {node: '>=6'}
|
||||
|
@ -1531,6 +1506,10 @@ packages:
|
|||
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
http-proxy-agent@7.0.2:
|
||||
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
|
||||
engines: {node: '>= 14'}
|
||||
|
||||
http2-wrapper@1.0.3:
|
||||
resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
|
||||
engines: {node: '>=10.19.0'}
|
||||
|
@ -1539,6 +1518,10 @@ packages:
|
|||
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
https-proxy-agent@7.0.6:
|
||||
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
|
||||
engines: {node: '>= 14'}
|
||||
|
||||
humanize-ms@1.2.1:
|
||||
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
|
||||
|
||||
|
@ -1738,9 +1721,6 @@ packages:
|
|||
jsonfile@6.1.0:
|
||||
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
|
||||
|
||||
keyv@4.5.2:
|
||||
resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==}
|
||||
|
||||
keyv@4.5.4:
|
||||
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
||||
|
||||
|
@ -2222,10 +2202,6 @@ packages:
|
|||
resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==}
|
||||
hasBin: true
|
||||
|
||||
read-config-file@6.3.2:
|
||||
resolution: {integrity: sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
read-config-file@6.4.0:
|
||||
resolution: {integrity: sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
@ -2381,11 +2357,6 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
semver@7.5.4:
|
||||
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
semver@7.6.3:
|
||||
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
|
||||
engines: {node: '>=10'}
|
||||
|
@ -2796,14 +2767,6 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@electron/notarize@2.2.1':
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
fs-extra: 9.1.0
|
||||
promise-retry: 2.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@electron/notarize@2.3.2':
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
|
@ -2812,14 +2775,11 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@electron/osx-sign@1.0.5':
|
||||
'@electron/notarize@2.5.0':
|
||||
dependencies:
|
||||
compare-version: 0.1.2
|
||||
debug: 4.3.4
|
||||
fs-extra: 10.1.0
|
||||
isbinaryfile: 4.0.10
|
||||
minimist: 1.2.8
|
||||
plist: 3.1.0
|
||||
fs-extra: 9.1.0
|
||||
promise-retry: 2.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -2854,22 +2814,30 @@ snapshots:
|
|||
- bluebird
|
||||
- supports-color
|
||||
|
||||
'@electron/remote@2.1.2(electron@32.2.5)':
|
||||
'@electron/rebuild@3.6.1':
|
||||
dependencies:
|
||||
electron: 32.2.5
|
||||
|
||||
'@electron/universal@1.5.1':
|
||||
dependencies:
|
||||
'@electron/asar': 3.2.13
|
||||
'@malept/cross-spawn-promise': 1.1.1
|
||||
'@malept/cross-spawn-promise': 2.0.0
|
||||
chalk: 4.1.2
|
||||
debug: 4.3.4
|
||||
dir-compare: 3.3.0
|
||||
fs-extra: 9.1.0
|
||||
minimatch: 3.1.2
|
||||
plist: 3.1.0
|
||||
detect-libc: 2.0.3
|
||||
fs-extra: 10.1.0
|
||||
got: 11.8.6
|
||||
node-abi: 3.67.0
|
||||
node-api-version: 0.2.0
|
||||
node-gyp: 9.4.1
|
||||
ora: 5.4.1
|
||||
read-binary-file-arch: 1.0.6
|
||||
semver: 7.6.3
|
||||
tar: 6.2.1
|
||||
yargs: 17.7.2
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- supports-color
|
||||
|
||||
'@electron/remote@2.1.2(electron@32.2.7)':
|
||||
dependencies:
|
||||
electron: 32.2.7
|
||||
|
||||
'@electron/universal@2.0.1':
|
||||
dependencies:
|
||||
'@electron/asar': 3.2.13
|
||||
|
@ -3051,10 +3019,6 @@ snapshots:
|
|||
'@jridgewell/resolve-uri': 3.1.0
|
||||
'@jridgewell/sourcemap-codec': 1.4.14
|
||||
|
||||
'@malept/cross-spawn-promise@1.1.1':
|
||||
dependencies:
|
||||
cross-spawn: 7.0.6
|
||||
|
||||
'@malept/cross-spawn-promise@2.0.0':
|
||||
dependencies:
|
||||
cross-spawn: 7.0.6
|
||||
|
@ -3367,6 +3331,8 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
agent-base@7.1.3: {}
|
||||
|
||||
agentkeepalive@4.5.0:
|
||||
dependencies:
|
||||
humanize-ms: 1.2.1
|
||||
|
@ -3418,45 +3384,11 @@ snapshots:
|
|||
normalize-path: 3.0.0
|
||||
picomatch: 2.3.1
|
||||
|
||||
app-builder-bin@4.0.0: {}
|
||||
app-builder-bin@5.0.0-alpha.10: {}
|
||||
|
||||
app-builder-bin@5.0.0-alpha.7: {}
|
||||
|
||||
app-builder-lib@24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5):
|
||||
dependencies:
|
||||
'@develar/schema-utils': 2.6.5
|
||||
'@electron/notarize': 2.2.1
|
||||
'@electron/osx-sign': 1.0.5
|
||||
'@electron/universal': 1.5.1
|
||||
'@malept/flatpak-bundler': 0.4.0
|
||||
'@types/fs-extra': 9.0.13
|
||||
async-exit-hook: 2.0.1
|
||||
bluebird-lst: 1.0.9
|
||||
builder-util: 24.13.1
|
||||
builder-util-runtime: 9.2.4
|
||||
chromium-pickle-js: 0.2.0
|
||||
debug: 4.3.4
|
||||
dmg-builder: 24.13.3(electron-builder-squirrel-windows@25.0.5)
|
||||
ejs: 3.1.10
|
||||
electron-builder-squirrel-windows: 25.0.5(dmg-builder@24.13.3)
|
||||
electron-publish: 24.13.1
|
||||
form-data: 4.0.0
|
||||
fs-extra: 10.1.0
|
||||
hosted-git-info: 4.1.0
|
||||
is-ci: 3.0.1
|
||||
isbinaryfile: 5.0.0
|
||||
js-yaml: 4.1.0
|
||||
lazy-val: 1.0.5
|
||||
minimatch: 5.1.6
|
||||
read-config-file: 6.3.2
|
||||
sanitize-filename: 1.6.3
|
||||
semver: 7.5.4
|
||||
tar: 6.2.1
|
||||
temp-file: 3.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
app-builder-lib@25.0.5(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5):
|
||||
app-builder-lib@25.0.5(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.0.5):
|
||||
dependencies:
|
||||
'@develar/schema-utils': 2.6.5
|
||||
'@electron/notarize': 2.3.2
|
||||
|
@ -3471,9 +3403,9 @@ snapshots:
|
|||
builder-util-runtime: 9.2.5
|
||||
chromium-pickle-js: 0.2.0
|
||||
debug: 4.3.4
|
||||
dmg-builder: 24.13.3(electron-builder-squirrel-windows@25.0.5)
|
||||
dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.0.5)
|
||||
ejs: 3.1.10
|
||||
electron-builder-squirrel-windows: 25.0.5(dmg-builder@24.13.3)
|
||||
electron-builder-squirrel-windows: 25.0.5(dmg-builder@25.1.8)
|
||||
electron-publish: 25.0.3
|
||||
form-data: 4.0.0
|
||||
fs-extra: 10.1.0
|
||||
|
@ -3493,6 +3425,46 @@ snapshots:
|
|||
- bluebird
|
||||
- supports-color
|
||||
|
||||
app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.0.5):
|
||||
dependencies:
|
||||
'@develar/schema-utils': 2.6.5
|
||||
'@electron/notarize': 2.5.0
|
||||
'@electron/osx-sign': 1.3.1
|
||||
'@electron/rebuild': 3.6.1
|
||||
'@electron/universal': 2.0.1
|
||||
'@malept/flatpak-bundler': 0.4.0
|
||||
'@types/fs-extra': 9.0.13
|
||||
async-exit-hook: 2.0.1
|
||||
bluebird-lst: 1.0.9
|
||||
builder-util: 25.1.7
|
||||
builder-util-runtime: 9.2.10
|
||||
chromium-pickle-js: 0.2.0
|
||||
config-file-ts: 0.2.8-rc1
|
||||
debug: 4.3.4
|
||||
dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.0.5)
|
||||
dotenv: 16.4.5
|
||||
dotenv-expand: 11.0.6
|
||||
ejs: 3.1.10
|
||||
electron-builder-squirrel-windows: 25.0.5(dmg-builder@25.1.8)
|
||||
electron-publish: 25.1.7
|
||||
form-data: 4.0.0
|
||||
fs-extra: 10.1.0
|
||||
hosted-git-info: 4.1.0
|
||||
is-ci: 3.0.1
|
||||
isbinaryfile: 5.0.0
|
||||
js-yaml: 4.1.0
|
||||
json5: 2.2.3
|
||||
lazy-val: 1.0.5
|
||||
minimatch: 10.0.1
|
||||
resedit: 1.7.1
|
||||
sanitize-filename: 1.6.3
|
||||
semver: 7.6.3
|
||||
tar: 6.2.1
|
||||
temp-file: 3.4.0
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- supports-color
|
||||
|
||||
aproba@2.0.0: {}
|
||||
|
||||
archiver-utils@2.1.0:
|
||||
|
@ -3607,8 +3579,6 @@ snapshots:
|
|||
|
||||
buffer-crc32@0.2.13: {}
|
||||
|
||||
buffer-equal@1.0.1: {}
|
||||
|
||||
buffer-from@1.1.2: {}
|
||||
|
||||
buffer@5.7.1:
|
||||
|
@ -3616,7 +3586,7 @@ snapshots:
|
|||
base64-js: 1.5.1
|
||||
ieee754: 1.2.1
|
||||
|
||||
builder-util-runtime@9.2.4:
|
||||
builder-util-runtime@9.2.10:
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
sax: 1.2.4
|
||||
|
@ -3630,27 +3600,6 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
builder-util@24.13.1:
|
||||
dependencies:
|
||||
7zip-bin: 5.2.0
|
||||
'@types/debug': 4.1.7
|
||||
app-builder-bin: 4.0.0
|
||||
bluebird-lst: 1.0.9
|
||||
builder-util-runtime: 9.2.4
|
||||
chalk: 4.1.2
|
||||
cross-spawn: 7.0.6
|
||||
debug: 4.3.4
|
||||
fs-extra: 10.1.0
|
||||
http-proxy-agent: 5.0.0
|
||||
https-proxy-agent: 5.0.1
|
||||
is-ci: 3.0.1
|
||||
js-yaml: 4.1.0
|
||||
source-map-support: 0.5.21
|
||||
stat-mode: 1.0.0
|
||||
temp-file: 3.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
builder-util@25.0.3:
|
||||
dependencies:
|
||||
7zip-bin: 5.2.0
|
||||
|
@ -3672,6 +3621,27 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
builder-util@25.1.7:
|
||||
dependencies:
|
||||
7zip-bin: 5.2.0
|
||||
'@types/debug': 4.1.7
|
||||
app-builder-bin: 5.0.0-alpha.10
|
||||
bluebird-lst: 1.0.9
|
||||
builder-util-runtime: 9.2.10
|
||||
chalk: 4.1.2
|
||||
cross-spawn: 7.0.6
|
||||
debug: 4.3.4
|
||||
fs-extra: 10.1.0
|
||||
http-proxy-agent: 7.0.2
|
||||
https-proxy-agent: 7.0.6
|
||||
is-ci: 3.0.1
|
||||
js-yaml: 4.1.0
|
||||
source-map-support: 0.5.21
|
||||
stat-mode: 1.0.0
|
||||
temp-file: 3.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
cacache@16.1.3:
|
||||
dependencies:
|
||||
'@npmcli/fs': 2.1.2
|
||||
|
@ -3702,7 +3672,7 @@ snapshots:
|
|||
clone-response: 1.0.2
|
||||
get-stream: 5.2.0
|
||||
http-cache-semantics: 4.1.1
|
||||
keyv: 4.5.2
|
||||
keyv: 4.5.4
|
||||
lowercase-keys: 2.0.0
|
||||
normalize-url: 6.1.0
|
||||
responselike: 2.0.1
|
||||
|
@ -3821,11 +3791,6 @@ snapshots:
|
|||
|
||||
concat-map@0.0.1: {}
|
||||
|
||||
config-file-ts@0.2.6:
|
||||
dependencies:
|
||||
glob: 10.4.5
|
||||
typescript: 5.6.2
|
||||
|
||||
config-file-ts@0.2.8-rc1:
|
||||
dependencies:
|
||||
glob: 10.4.5
|
||||
|
@ -3920,27 +3885,23 @@ snapshots:
|
|||
detect-node@2.1.0:
|
||||
optional: true
|
||||
|
||||
dir-compare@3.3.0:
|
||||
dependencies:
|
||||
buffer-equal: 1.0.1
|
||||
minimatch: 3.1.2
|
||||
|
||||
dir-compare@4.2.0:
|
||||
dependencies:
|
||||
minimatch: 3.1.2
|
||||
p-limit: 3.1.0
|
||||
|
||||
dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5):
|
||||
dmg-builder@25.1.8(electron-builder-squirrel-windows@25.0.5):
|
||||
dependencies:
|
||||
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5)
|
||||
builder-util: 24.13.1
|
||||
builder-util-runtime: 9.2.4
|
||||
app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.0.5)
|
||||
builder-util: 25.1.7
|
||||
builder-util-runtime: 9.2.10
|
||||
fs-extra: 10.1.0
|
||||
iconv-lite: 0.6.3
|
||||
js-yaml: 4.1.0
|
||||
optionalDependencies:
|
||||
dmg-license: 1.0.11
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- electron-builder-squirrel-windows
|
||||
- supports-color
|
||||
|
||||
|
@ -3987,12 +3948,8 @@ snapshots:
|
|||
dependencies:
|
||||
dotenv: 16.4.5
|
||||
|
||||
dotenv-expand@5.1.0: {}
|
||||
|
||||
dotenv@16.4.5: {}
|
||||
|
||||
dotenv@9.0.2: {}
|
||||
|
||||
duplexer@0.1.2: {}
|
||||
|
||||
eastasianwidth@0.2.0: {}
|
||||
|
@ -4001,9 +3958,9 @@ snapshots:
|
|||
dependencies:
|
||||
jake: 10.8.5
|
||||
|
||||
electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3):
|
||||
electron-builder-squirrel-windows@25.0.5(dmg-builder@25.1.8):
|
||||
dependencies:
|
||||
app-builder-lib: 25.0.5(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5)
|
||||
app-builder-lib: 25.0.5(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.0.5)
|
||||
archiver: 5.3.2
|
||||
builder-util: 25.0.3
|
||||
fs-extra: 10.1.0
|
||||
|
@ -4012,35 +3969,23 @@ snapshots:
|
|||
- dmg-builder
|
||||
- supports-color
|
||||
|
||||
electron-builder@24.13.3(electron-builder-squirrel-windows@25.0.5):
|
||||
electron-builder@25.1.8(electron-builder-squirrel-windows@25.0.5):
|
||||
dependencies:
|
||||
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5)
|
||||
builder-util: 24.13.1
|
||||
builder-util-runtime: 9.2.4
|
||||
app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.0.5)
|
||||
builder-util: 25.1.7
|
||||
builder-util-runtime: 9.2.10
|
||||
chalk: 4.1.2
|
||||
dmg-builder: 24.13.3(electron-builder-squirrel-windows@25.0.5)
|
||||
dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.0.5)
|
||||
fs-extra: 10.1.0
|
||||
is-ci: 3.0.1
|
||||
lazy-val: 1.0.5
|
||||
read-config-file: 6.3.2
|
||||
simple-update-notifier: 2.0.0
|
||||
yargs: 17.7.2
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- electron-builder-squirrel-windows
|
||||
- supports-color
|
||||
|
||||
electron-publish@24.13.1:
|
||||
dependencies:
|
||||
'@types/fs-extra': 9.0.13
|
||||
builder-util: 24.13.1
|
||||
builder-util-runtime: 9.2.4
|
||||
chalk: 4.1.2
|
||||
fs-extra: 10.1.0
|
||||
lazy-val: 1.0.5
|
||||
mime: 2.6.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
electron-publish@25.0.3:
|
||||
dependencies:
|
||||
'@types/fs-extra': 9.0.13
|
||||
|
@ -4053,9 +3998,21 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
electron-publish@25.1.7:
|
||||
dependencies:
|
||||
'@types/fs-extra': 9.0.13
|
||||
builder-util: 25.1.7
|
||||
builder-util-runtime: 9.2.10
|
||||
chalk: 4.1.2
|
||||
fs-extra: 10.1.0
|
||||
lazy-val: 1.0.5
|
||||
mime: 2.6.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
electron-to-chromium@1.5.39: {}
|
||||
|
||||
electron@32.2.5:
|
||||
electron@32.2.7:
|
||||
dependencies:
|
||||
'@electron/get': 2.0.2
|
||||
'@types/node': 20.14.5
|
||||
|
@ -4128,8 +4085,6 @@ snapshots:
|
|||
'@esbuild/win32-ia32': 0.17.10
|
||||
'@esbuild/win32-x64': 0.17.10
|
||||
|
||||
escalade@3.1.1: {}
|
||||
|
||||
escalade@3.2.0: {}
|
||||
|
||||
escape-string-regexp@4.0.0: {}
|
||||
|
@ -4400,7 +4355,7 @@ snapshots:
|
|||
es6-error: 4.1.1
|
||||
matcher: 3.0.0
|
||||
roarr: 2.15.4
|
||||
semver: 7.5.4
|
||||
semver: 7.6.3
|
||||
serialize-error: 7.0.1
|
||||
optional: true
|
||||
|
||||
|
@ -4517,6 +4472,13 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
http-proxy-agent@7.0.2:
|
||||
dependencies:
|
||||
agent-base: 7.1.3
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
http2-wrapper@1.0.3:
|
||||
dependencies:
|
||||
quick-lru: 5.1.1
|
||||
|
@ -4529,6 +4491,13 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
https-proxy-agent@7.0.6:
|
||||
dependencies:
|
||||
agent-base: 7.1.3
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
humanize-ms@1.2.1:
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
|
@ -4697,10 +4666,6 @@ snapshots:
|
|||
optionalDependencies:
|
||||
graceful-fs: 4.2.11
|
||||
|
||||
keyv@4.5.2:
|
||||
dependencies:
|
||||
json-buffer: 3.0.1
|
||||
|
||||
keyv@4.5.4:
|
||||
dependencies:
|
||||
json-buffer: 3.0.1
|
||||
|
@ -5153,15 +5118,6 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
read-config-file@6.3.2:
|
||||
dependencies:
|
||||
config-file-ts: 0.2.6
|
||||
dotenv: 9.0.2
|
||||
dotenv-expand: 5.1.0
|
||||
js-yaml: 4.1.0
|
||||
json5: 2.2.3
|
||||
lazy-val: 1.0.5
|
||||
|
||||
read-config-file@6.4.0:
|
||||
dependencies:
|
||||
config-file-ts: 0.2.8-rc1
|
||||
|
@ -5322,10 +5278,6 @@ snapshots:
|
|||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
|
||||
semver@7.5.4:
|
||||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
|
||||
semver@7.6.3: {}
|
||||
|
||||
serialize-error@7.0.1:
|
||||
|
@ -5355,7 +5307,7 @@ snapshots:
|
|||
|
||||
simple-update-notifier@2.0.0:
|
||||
dependencies:
|
||||
semver: 7.5.4
|
||||
semver: 7.6.3
|
||||
|
||||
sirv@1.0.19:
|
||||
dependencies:
|
||||
|
@ -5701,7 +5653,7 @@ snapshots:
|
|||
yargs@17.7.2:
|
||||
dependencies:
|
||||
cliui: 8.0.1
|
||||
escalade: 3.1.1
|
||||
escalade: 3.2.0
|
||||
get-caller-file: 2.0.5
|
||||
require-directory: 2.1.1
|
||||
string-width: 4.2.3
|
||||
|
|
|
@ -291,6 +291,10 @@
|
|||
color: var(--b3-protyle-inline-blockref-color);
|
||||
}
|
||||
|
||||
.b3-menu__avemoji {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
&[data-wrap="true"] {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
transition: var(--b3-transition), opacity .3s cubic-bezier(0, 0, .2, 1) 0ms;
|
||||
line-height: 14px;
|
||||
|
||||
&:hover:not([disabled]):not(.ft__primary),
|
||||
&:hover:not([disabled]):not(.ft__primary):not(.block__icon--warning),
|
||||
&--active {
|
||||
color: var(--b3-theme-on-background);
|
||||
background-color: var(--b3-list-icon-hover);
|
||||
|
@ -100,6 +100,11 @@
|
|||
}
|
||||
}
|
||||
|
||||
&--warning:hover {
|
||||
color: var(--b3-theme-error);
|
||||
background-color: var(--b3-list-icon-hover);
|
||||
}
|
||||
|
||||
svg {
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
|
|
|
@ -409,14 +409,14 @@
|
|||
transition: var(--b3-transition);
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:hover:not(.dock__item--activefocus),
|
||||
&--active {
|
||||
background-color: var(--b3-theme-background-light);
|
||||
}
|
||||
|
||||
&--activefocus {
|
||||
color: var(--b3-theme-on-primary) !important;
|
||||
background-color: var(--b3-theme-primary) !important;
|
||||
color: var(--b3-theme-on-primary);
|
||||
background-color: var(--b3-theme-primary);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,7 @@
|
|||
@font-face {
|
||||
font-family: 'JetBrainsMono-Regular';
|
||||
src: url(../fonts/JetBrainsMono-2.304/JetBrainsMono-Regular.woff2) format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Emojis";
|
||||
src: url(../fonts/Noto-COLRv1-2.047/Noto-COLRv1.woff2) format("woff2"),
|
||||
local("Segoe UI Emoji"),
|
||||
local("Segoe UI Symbol"),
|
||||
local("Apple Color Emoji"),
|
||||
local("Twemoji Mozilla"),
|
||||
local("Noto Color Emoji"),
|
||||
local("Android Emoji"),
|
||||
local("EmojiSymbols");
|
||||
/* webpackIgnore: true */
|
||||
src: url(../../../appearance/fonts/JetBrainsMono-2.304/JetBrainsMono-Regular.woff2) format('woff2');
|
||||
}
|
||||
|
||||
.b3-typography,
|
||||
|
|
|
@ -493,7 +493,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
.av__views .block__icon {
|
||||
.av__views .block__icon,
|
||||
.av__row--footer .av__calc {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
<!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag
|
||||
<meta http-equiv="Content-Security-Policy" content="script-src 'self'"/>-->
|
||||
<style id="editorAttr" type="text/css"></style>
|
||||
<link rel="preload" href="../../../appearance/fonts/Noto-COLRv1-2.047/Noto-COLRv1.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="../../../appearance/fonts/JetBrainsMono-2.304/JetBrainsMono-Regular.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<script src="../../protyle/js/pdf/pdf.min.mjs?v=4.7.85" type="module"></script>
|
||||
</head>
|
||||
<body class="fn__flex-column">
|
||||
|
@ -38,7 +40,7 @@
|
|||
if (refreshElement) {
|
||||
refreshElement.style.display = ""
|
||||
}
|
||||
}, 2000)
|
||||
}, 7000)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -211,7 +211,7 @@ const hidePopover = (event: MouseEvent & { path: HTMLElement[] }) => {
|
|||
} else {
|
||||
// 浮窗上点击菜单,浮窗不能消失 https://ld246.com/article/1632668091023
|
||||
const menuElement = hasClosestByClassName(target, "b3-menu");
|
||||
if (menuElement) {
|
||||
if (menuElement && menuElement.getAttribute("data-name") !== "docTreeMore") {
|
||||
const blockPanel = window.siyuan.blockPanels.find((item) => {
|
||||
if (item.element.style.zIndex < menuElement.style.zIndex) {
|
||||
return true;
|
||||
|
|
9
app/src/boot/compatibleVersion.ts
Normal file
9
app/src/boot/compatibleVersion.ts
Normal file
|
@ -0,0 +1,9 @@
|
|||
export const img3115 = (imgElement: HTMLElement) => {
|
||||
// 移除 3.1.15 以前 .img width 样式
|
||||
if (imgElement.style.minWidth) {
|
||||
// 居中需要 minWidth 样式,不能移除 style 属性
|
||||
imgElement.style.width = "";
|
||||
} else {
|
||||
imgElement.removeAttribute("style");
|
||||
}
|
||||
};
|
|
@ -1366,14 +1366,14 @@ export const windowKeyDown = (app: App, event: KeyboardEvent) => {
|
|||
return;
|
||||
}
|
||||
// https://github.com/siyuan-note/siyuan/issues/8913#issuecomment-1679720605
|
||||
const confirmElement = document.querySelector("#confirmDialogConfirmBtn");
|
||||
if (confirmElement) {
|
||||
const confirmDialogElement = document.querySelector('.b3-dialog--open[data-key="dialog-confirm"]');
|
||||
if (confirmDialogElement) {
|
||||
if (event.key === "Enter") {
|
||||
confirmElement.dispatchEvent(new CustomEvent("click"));
|
||||
confirmDialogElement.dispatchEvent(new CustomEvent("click", {detail: event.key}));
|
||||
event.preventDefault();
|
||||
return;
|
||||
} else if (event.key === "Escape") {
|
||||
confirmElement.previousElementSibling.previousElementSibling.dispatchEvent(new CustomEvent("click"));
|
||||
confirmDialogElement.dispatchEvent(new CustomEvent("click", {detail: event.key}));
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -40,6 +40,11 @@ export const onGetConfig = (isStart: boolean, app: App) => {
|
|||
port: location.port
|
||||
});
|
||||
webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]);
|
||||
ipcRenderer.send(Constants.SIYUAN_CMD, {
|
||||
cmd: "setTrafficLightPosition",
|
||||
zoom: window.siyuan.storage[Constants.LOCAL_ZOOM],
|
||||
position: Constants.SIZE_ZOOM.find((item) => item.zoom === window.siyuan.storage[Constants.LOCAL_ZOOM]).position
|
||||
});
|
||||
/// #endif
|
||||
if (!window.siyuan.config.uiLayout || (window.siyuan.config.uiLayout && !window.siyuan.config.uiLayout.left)) {
|
||||
window.siyuan.config.uiLayout = Constants.SIYUAN_EMPTY_LAYOUT;
|
||||
|
|
|
@ -63,14 +63,6 @@ export const about = {
|
|||
<div class="fn__space"></div>
|
||||
<input class="b3-switch fn__flex-center" id="googleAnalytics" type="checkbox"${window.siyuan.config.system.disableGoogleAnalytics ? "" : " checked"}>
|
||||
</label>
|
||||
<label class="b3-label fn__flex">
|
||||
<div class="fn__flex-1">
|
||||
${window.siyuan.languages.about9}
|
||||
<div class="b3-label__text">${window.siyuan.languages.about10}</div>
|
||||
</div>
|
||||
<div class="fn__space"></div>
|
||||
<input class="b3-switch fn__flex-center" id="uploadErrLog" type="checkbox"${window.siyuan.config.system.uploadErrLog ? " checked" : ""}>
|
||||
</label>
|
||||
<label class="b3-label fn__flex">
|
||||
<div class="fn__flex-1">
|
||||
${window.siyuan.languages.about11}
|
||||
|
@ -368,15 +360,6 @@ ${checkUpdateHTML}
|
|||
});
|
||||
});
|
||||
});
|
||||
const uploadErrLogElement = about.element.querySelector("#uploadErrLog") as HTMLInputElement;
|
||||
uploadErrLogElement.addEventListener("change", () => {
|
||||
fetchPost("/api/system/setUploadErrLog", {uploadErrLog: uploadErrLogElement.checked}, () => {
|
||||
exportLayout({
|
||||
errorExit: true,
|
||||
cb: exitSiYuan
|
||||
});
|
||||
});
|
||||
});
|
||||
const downloadInstallPkgElement = about.element.querySelector("#downloadInstallPkg") as HTMLInputElement;
|
||||
downloadInstallPkgElement.addEventListener("change", () => {
|
||||
fetchPost("/api/system/setDownloadInstallPkg", {downloadInstallPkg: downloadInstallPkgElement.checked}, () => {
|
||||
|
|
|
@ -257,7 +257,7 @@ export const exportConfig = {
|
|||
exportConfig.element.querySelector("#exportData").addEventListener("click", async () => {
|
||||
/// #if BROWSER
|
||||
fetchPost("/api/export/exportData", {}, response => {
|
||||
window.location.href = response.data.zip;
|
||||
openByMobile(response.data.zip);
|
||||
});
|
||||
/// #else
|
||||
const result = await ipcRenderer.invoke(Constants.SIYUAN_GET, {
|
||||
|
|
|
@ -392,7 +392,7 @@ export const repos = {
|
|||
<option value="3" ${window.siyuan.config.sync.mode === 3 ? "selected" : ""}>${window.siyuan.languages.syncMode3}</option>
|
||||
</select>
|
||||
</div>
|
||||
<label class="fn__flex b3-label${(window.siyuan.config.sync.mode !== 1 || window.siyuan.config.system.container === "docker" || window.siyuan.config.sync.provider !== 0) ? " fn__none" : ""}">
|
||||
<div class="fn__flex b3-label${(window.siyuan.config.sync.mode !== 1) ? " fn__none" : ""}">
|
||||
<div class="fn__flex-1">
|
||||
${window.siyuan.languages.syncInterval}
|
||||
<div class="b3-label__text">${window.siyuan.languages.syncIntervalTip}</div>
|
||||
|
@ -401,7 +401,7 @@ export const repos = {
|
|||
<input type="number" min="30" max="43200" id="syncInterval" class="b3-text-field fn__flex-center" value="${window.siyuan.config.sync.interval}" >
|
||||
<span class="fn__space"></span>
|
||||
<span class="fn__flex-center ft__on-surface">${window.siyuan.languages.second}</span>
|
||||
</label>
|
||||
</div>
|
||||
<label class="fn__flex b3-label${(window.siyuan.config.sync.mode !== 1 || window.siyuan.config.system.container === "docker" || window.siyuan.config.sync.provider !== 0) ? " fn__none" : ""}">
|
||||
<div class="fn__flex-1">
|
||||
${window.siyuan.languages.syncPerception}
|
||||
|
@ -477,9 +477,12 @@ export const repos = {
|
|||
fetchPost("/api/sync/setSyncMode", {mode: parseInt(syncModeElement.value, 10)}, () => {
|
||||
if (syncModeElement.value === "1" && window.siyuan.config.sync.provider === 0 && window.siyuan.config.system.container !== "docker") {
|
||||
syncPerceptionElement.parentElement.classList.remove("fn__none");
|
||||
syncIntervalElement.parentElement.classList.remove("fn__none");
|
||||
} else {
|
||||
syncPerceptionElement.parentElement.classList.add("fn__none");
|
||||
}
|
||||
if (syncModeElement.value === "1") {
|
||||
syncIntervalElement.parentElement.classList.remove("fn__none");
|
||||
} else {
|
||||
syncIntervalElement.parentElement.classList.add("fn__none");
|
||||
}
|
||||
window.siyuan.config.sync.mode = parseInt(syncModeElement.value, 10);
|
||||
|
@ -502,9 +505,12 @@ export const repos = {
|
|||
syncConfigElement.classList.add("fn__none");
|
||||
if (window.siyuan.config.sync.mode !== 1 || window.siyuan.config.system.container === "docker" || window.siyuan.config.sync.provider !== 0) {
|
||||
syncPerceptionElement.parentElement.classList.add("fn__none");
|
||||
syncIntervalElement.parentElement.classList.add("fn__none");
|
||||
} else {
|
||||
syncPerceptionElement.parentElement.classList.remove("fn__none");
|
||||
}
|
||||
if (window.siyuan.config.sync.mode !== 1) {
|
||||
syncIntervalElement.parentElement.classList.add("fn__none");
|
||||
} else {
|
||||
syncIntervalElement.parentElement.classList.remove("fn__none");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -95,7 +95,7 @@ export const initConfigSearch = (element: HTMLElement, app: App) => {
|
|||
|
||||
// 关于
|
||||
getLang(["autoLaunch", "autoLaunchTip", "about", "about1", "about2", "about3", "about4", "about5", "about6",
|
||||
"about7", "about8", "about9", "about10", "about11", "about12", "about13", "about14", "about17", "config",
|
||||
"about7", "about8", "about11", "about12", "about13", "about14", "about17", "config",
|
||||
"dataRepoKey", "dataRepoKeyTip1", "dataRepoKeyTip2", "slogan", "currentVer", "checkUpdate", "updatePath",
|
||||
"systemLog", "importKey", "genKey", "genKeyByPW", "copyKey", "resetRepo", "systemLogTip", "export",
|
||||
"downloadLatestVer", "safeQuit", "directConnection", "siyuanNote", "key", "password", "copied", "resetRepoTip",
|
||||
|
|
|
@ -74,7 +74,45 @@ export abstract class Constants {
|
|||
public static readonly SIZE_UNDO = 64;
|
||||
public static readonly SIZE_TITLE = 512;
|
||||
public static readonly SIZE_EDITOR_WIDTH = 760;
|
||||
public static readonly SIZE_ZOOM = [0.25, 0.33, 0.5, 0.67, 0.75, 0.8, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3];
|
||||
public static readonly SIZE_ZOOM = [
|
||||
{
|
||||
zoom: 0.67,
|
||||
position: {x: 0, y: 2}
|
||||
},
|
||||
{
|
||||
zoom: 0.75,
|
||||
position: {x: 1, y: 4}
|
||||
}, {
|
||||
zoom: 0.8,
|
||||
position: {x: 2, y: 4}
|
||||
}, {
|
||||
zoom: 0.9,
|
||||
position: {x: 5, y: 6}
|
||||
}, {
|
||||
zoom: 1,
|
||||
position: {x: 8, y: 8}
|
||||
}, {
|
||||
zoom: 1.1,
|
||||
position: {x: 12, y: 9}
|
||||
}, {
|
||||
zoom: 1.25,
|
||||
position: {x: 18, y: 12}
|
||||
}, {
|
||||
zoom: 1.5,
|
||||
position: {x: 27, y: 16}
|
||||
}, {
|
||||
zoom: 1.75,
|
||||
position: {x: 36, y: 20}
|
||||
}, {
|
||||
zoom: 2,
|
||||
position: {x: 45, y: 23}
|
||||
}, {
|
||||
zoom: 2.5,
|
||||
position: {x: 63, y: 31}
|
||||
}, {
|
||||
zoom: 3,
|
||||
position: {x: 80, y: 39}
|
||||
}];
|
||||
|
||||
// ws callback
|
||||
public static readonly CB_MOVE_NOLIST = "cb-move-nolist";
|
||||
|
|
|
@ -16,23 +16,31 @@ export const confirmDialog = (title: string, text: string,
|
|||
<div class="ft__breakword">${text}</div>
|
||||
</div>
|
||||
<div class="b3-dialog__action">
|
||||
<button class="b3-button b3-button--cancel">${window.siyuan.languages.cancel}</button><div class="fn__space"></div>
|
||||
<button class="b3-button b3-button--cancel" id="cancelDialogConfirmBtn">${window.siyuan.languages.cancel}</button><div class="fn__space"></div>
|
||||
<button class="b3-button ${isDelete ? "b3-button--remove" : "b3-button--text"}" id="confirmDialogConfirmBtn">${window.siyuan.languages[isDelete ? "delete" : "confirm"]}</button>
|
||||
</div>`,
|
||||
width: isMobile() ? "92vw" : "520px",
|
||||
});
|
||||
const btnsElement = dialog.element.querySelectorAll(".b3-button");
|
||||
btnsElement[0].addEventListener("click", () => {
|
||||
if (cancel) {
|
||||
cancel(dialog);
|
||||
|
||||
dialog.element.addEventListener("click", (event) => {
|
||||
let target = event.target as HTMLElement;
|
||||
const isDispatch = typeof event.detail === "string";
|
||||
while (target && !target.isSameNode(dialog.element) || isDispatch) {
|
||||
if (target.id === "cancelDialogConfirmBtn" || (isDispatch && event.detail=== "Escape")) {
|
||||
if (cancel) {
|
||||
cancel(dialog);
|
||||
}
|
||||
dialog.destroy();
|
||||
break;
|
||||
} else if (target.id === "confirmDialogConfirmBtn" || (isDispatch && event.detail=== "Enter")) {
|
||||
if (confirm) {
|
||||
confirm(dialog);
|
||||
}
|
||||
dialog.destroy();
|
||||
break;
|
||||
}
|
||||
target = target.parentElement;
|
||||
}
|
||||
dialog.destroy();
|
||||
});
|
||||
btnsElement[1].addEventListener("click", () => {
|
||||
if (confirm) {
|
||||
confirm(dialog);
|
||||
}
|
||||
dialog.destroy();
|
||||
});
|
||||
dialog.element.setAttribute("data-key", Constants.DIALOG_CONFIRM);
|
||||
};
|
||||
|
|
|
@ -276,7 +276,7 @@ export const openFile = async (options: IOpenFileOptions) => {
|
|||
}
|
||||
wnd.showHeading();
|
||||
if (options.afterOpen) {
|
||||
options.afterOpen(createdTab.model);
|
||||
options.afterOpen(createdTab ? createdTab.model : undefined);
|
||||
}
|
||||
return createdTab;
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ const renderDoc = (element: HTMLElement, currentPage: number, id: string) => {
|
|||
pageNumElement.setAttribute("data-totalpage", response.data.pageCount.toString());
|
||||
pageNumElement.textContent = currentPage.toString();
|
||||
const pageInfoElement = nextElement.nextElementSibling.nextElementSibling;
|
||||
pageInfoElement.classList.remove("fn__none");
|
||||
pageInfoElement.textContent = window.siyuan.languages.pageCountAndHistoryCount.replace("${x}", response.data.pageCount).replace("${y}", response.data.totalCount);
|
||||
if (response.data.histories.length === 0) {
|
||||
listElement.innerHTML = `<li class="b3-list--empty">${window.siyuan.languages.emptyContent}</li>`;
|
||||
|
@ -76,7 +77,7 @@ export const openDocHistory = (options: {
|
|||
<button class="b3-button b3-button--text ft__selectnone" data-type="jumpRepoPage" disabled>1</button>
|
||||
<span data-type="docnext" class="block__icon block__icon--show b3-tooltips b3-tooltips__e" disabled="disabled" aria-label="${window.siyuan.languages.nextLabel}"><svg><use xlink:href="#iconRight"></use></svg></span>
|
||||
<span class="fn__space"></span>
|
||||
<span class="ft__on-surface fn__flex-shrink ft__selectnone">${window.siyuan.languages.pageCountAndHistoryCount}</span>
|
||||
<span class="ft__on-surface fn__flex-shrink ft__selectnone fn__none">${window.siyuan.languages.pageCountAndHistoryCount}</span>
|
||||
<span class="fn__space"></span>
|
||||
<div class="fn__flex-1"></div>
|
||||
<select data-type="opselect" class="b3-select">
|
||||
|
|
|
@ -60,6 +60,7 @@ export const getAllEditor = () => {
|
|||
};
|
||||
|
||||
export const getAllModels = () => {
|
||||
/// #if !MOBILE
|
||||
const models: IModels = {
|
||||
editor: [],
|
||||
graph: [],
|
||||
|
@ -109,6 +110,7 @@ export const getAllModels = () => {
|
|||
getTabs(window.siyuan.layout.layout);
|
||||
}
|
||||
return models;
|
||||
/// #endif
|
||||
};
|
||||
|
||||
export const getAllWnds = (layout: Layout, wnds: Wnd[]) => {
|
||||
|
|
|
@ -10,7 +10,7 @@ import {openSetting} from "../config";
|
|||
import {openSearch} from "../search/spread";
|
||||
import {App} from "../index";
|
||||
/// #if !BROWSER
|
||||
import {webFrame} from "electron";
|
||||
import {ipcRenderer, webFrame} from "electron";
|
||||
/// #endif
|
||||
import {Constants} from "../constants";
|
||||
import {isBrowser, isWindow} from "../util/functions";
|
||||
|
@ -262,39 +262,43 @@ export const initBar = (app: App) => {
|
|||
|
||||
export const setZoom = (type: "zoomIn" | "zoomOut" | "restore") => {
|
||||
/// #if !BROWSER
|
||||
const isTabWindow = isWindow();
|
||||
let zoom = 1;
|
||||
if (type === "zoomIn") {
|
||||
Constants.SIZE_ZOOM.find((item, index) => {
|
||||
if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) {
|
||||
zoom = Constants.SIZE_ZOOM[index + 1] || 3;
|
||||
if (item.zoom === window.siyuan.storage[Constants.LOCAL_ZOOM]) {
|
||||
zoom = Constants.SIZE_ZOOM[index + 1]?.zoom || 3;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
} else if (type === "zoomOut") {
|
||||
Constants.SIZE_ZOOM.find((item, index) => {
|
||||
if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) {
|
||||
zoom = Constants.SIZE_ZOOM[index - 1] || 0.25;
|
||||
if (item.zoom === window.siyuan.storage[Constants.LOCAL_ZOOM]) {
|
||||
zoom = Constants.SIZE_ZOOM[index - 1]?.zoom || 0.67;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
webFrame.setZoomFactor(zoom);
|
||||
ipcRenderer.send(Constants.SIYUAN_CMD, {
|
||||
cmd: "setTrafficLightPosition",
|
||||
zoom,
|
||||
position: Constants.SIZE_ZOOM.find((item) => item.zoom === zoom).position
|
||||
});
|
||||
window.siyuan.storage[Constants.LOCAL_ZOOM] = zoom;
|
||||
if (!isTabWindow) {
|
||||
setStorageVal(Constants.LOCAL_ZOOM, zoom);
|
||||
}
|
||||
const barZoomElement = document.getElementById("barZoom");
|
||||
if (zoom === 1) {
|
||||
barZoomElement.classList.add("fn__none");
|
||||
} else {
|
||||
if (zoom > 1) {
|
||||
barZoomElement.querySelector("use").setAttribute("xlink:href", "#iconZoomIn");
|
||||
setStorageVal(Constants.LOCAL_ZOOM, zoom);
|
||||
if (!isWindow()) {
|
||||
const barZoomElement = document.getElementById("barZoom");
|
||||
if (zoom === 1) {
|
||||
barZoomElement.classList.add("fn__none");
|
||||
} else {
|
||||
barZoomElement.querySelector("use").setAttribute("xlink:href", "#iconZoomOut");
|
||||
if (zoom > 1) {
|
||||
barZoomElement.querySelector("use").setAttribute("xlink:href", "#iconZoomIn");
|
||||
} else {
|
||||
barZoomElement.querySelector("use").setAttribute("xlink:href", "#iconZoomOut");
|
||||
}
|
||||
barZoomElement.classList.remove("fn__none");
|
||||
}
|
||||
barZoomElement.classList.remove("fn__none");
|
||||
}
|
||||
/// #endif
|
||||
};
|
||||
|
|
|
@ -380,8 +380,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => {
|
|||
click: () => {
|
||||
const msgId = showMessage(window.siyuan.languages.exporting, -1);
|
||||
fetchPost("/api/export/exportNotebookMd", {
|
||||
notebook: notebookId,
|
||||
path: "/"
|
||||
notebook: notebookId
|
||||
}, response => {
|
||||
hideMessage(msgId);
|
||||
openByMobile(response.data.zip);
|
||||
|
@ -705,6 +704,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l
|
|||
separatorPosition: "top",
|
||||
});
|
||||
}
|
||||
window.siyuan.menus.menu.element.setAttribute("data-name", "docTreeMore");
|
||||
return window.siyuan.menus.menu;
|
||||
};
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ import {Menu} from "../plugin/Menu";
|
|||
import {getFirstBlock} from "../protyle/wysiwyg/getBlock";
|
||||
import {popSearch} from "../mobile/menu/search";
|
||||
import {showMessage} from "../dialog/message";
|
||||
import {img3115} from "../boot/compatibleVersion";
|
||||
|
||||
const renderAssetList = (element: Element, k: string, position: IPosition, exts: string[] = []) => {
|
||||
fetchPost("/api/search/searchAsset", {
|
||||
|
@ -1027,7 +1028,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme
|
|||
element.style.maxWidth = "none";
|
||||
const textElements = element.querySelectorAll("textarea");
|
||||
textElements[0].addEventListener("input", (event: InputEvent) => {
|
||||
const value = (event.target as HTMLInputElement).value.replace(/\n|\r\n|\r|\u2028|\u2029/g, "");
|
||||
const value = (event.target as HTMLInputElement).value.replace(/\n|\r\n|\r|\u2028|\u2029/g, "").trim();
|
||||
imgElement.setAttribute("src", value);
|
||||
imgElement.setAttribute("data-src", value);
|
||||
if (value.startsWith("assets/")) {
|
||||
|
@ -1188,6 +1189,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme
|
|||
rangeElement.value = "0";
|
||||
rangeElement.parentElement.setAttribute("aria-label", inputElement.value ? (inputElement.value + "px") : window.siyuan.languages.default);
|
||||
|
||||
img3115(assetElement);
|
||||
imgElement.parentElement.style.width = inputElement.value ? (inputElement.value + "px") : "";
|
||||
imgElement.style.height = "";
|
||||
});
|
||||
|
@ -1218,6 +1220,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme
|
|||
bind(element) {
|
||||
rangeElement = element.querySelector("input");
|
||||
rangeElement.addEventListener("input", () => {
|
||||
img3115(assetElement);
|
||||
imgElement.parentElement.style.width = rangeElement.value + "%";
|
||||
imgElement.style.height = "";
|
||||
rangeElement.parentElement.setAttribute("aria-label", `${rangeElement.value}%`);
|
||||
|
@ -1251,6 +1254,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme
|
|||
rangeHeightElement.parentElement.setAttribute("aria-label", inputElement.value ? (inputElement.value + "px") : window.siyuan.languages.default);
|
||||
|
||||
imgElement.style.height = inputElement.value ? (inputElement.value + "px") : "";
|
||||
img3115(assetElement);
|
||||
imgElement.parentElement.style.width = "";
|
||||
});
|
||||
inputElement.addEventListener("blur", () => {
|
||||
|
@ -1280,6 +1284,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme
|
|||
bind(element) {
|
||||
rangeHeightElement = element.querySelector("input");
|
||||
rangeHeightElement.addEventListener("input", () => {
|
||||
img3115(assetElement);
|
||||
imgElement.parentElement.style.width = "";
|
||||
imgElement.style.height = rangeHeightElement.value + "vh";
|
||||
rangeHeightElement.parentElement.setAttribute("aria-label", `${rangeHeightElement.value}%`);
|
||||
|
@ -1820,6 +1825,7 @@ const genImageWidthMenu = (label: string, imgElement: HTMLElement, protyle: IPro
|
|||
label,
|
||||
click() {
|
||||
nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
|
||||
img3115(imgElement.parentElement.parentElement);
|
||||
imgElement.parentElement.style.width = label === window.siyuan.languages.default ? "" : label;
|
||||
imgElement.style.height = "";
|
||||
updateTransaction(protyle, id, nodeElement.outerHTML, html);
|
||||
|
@ -1835,6 +1841,7 @@ const genImageHeightMenu = (label: string, imgElement: HTMLElement, protyle: IPr
|
|||
click() {
|
||||
nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
|
||||
imgElement.style.height = label === window.siyuan.languages.default ? "" : parseInt(label) + "vh";
|
||||
img3115(imgElement.parentElement.parentElement);
|
||||
imgElement.parentElement.style.width = "";
|
||||
updateTransaction(protyle, id, nodeElement.outerHTML, html);
|
||||
focusBlock(nodeElement);
|
||||
|
@ -1854,7 +1861,7 @@ export const iframeMenu = (protyle: IProtyle, nodeElement: Element) => {
|
|||
bind(element) {
|
||||
element.style.maxWidth = "none";
|
||||
element.querySelector("textarea").addEventListener("change", (event) => {
|
||||
const value = (event.target as HTMLTextAreaElement).value.replace(/\n|\r\n|\r|\u2028|\u2029/g, "");
|
||||
const value = (event.target as HTMLTextAreaElement).value.replace(/\n|\r\n|\r|\u2028|\u2029/g, "").trim();
|
||||
const biliMatch = value.match(/(?:www\.|\/\/)bilibili\.com\/video\/(\w+)/);
|
||||
if (value.indexOf("bilibili.com") > -1 && (value.indexOf("bvid=") > -1 || (biliMatch && biliMatch[1]))) {
|
||||
const params: IObject = {
|
||||
|
@ -1925,7 +1932,7 @@ export const videoMenu = (protyle: IProtyle, nodeElement: Element, type: string)
|
|||
bind(element) {
|
||||
element.style.maxWidth = "none";
|
||||
element.querySelector("textarea").addEventListener("change", (event) => {
|
||||
videoElement.setAttribute("src", (event.target as HTMLTextAreaElement).value.replace(/\n|\r\n|\r|\u2028|\u2029/g, ""));
|
||||
videoElement.setAttribute("src", (event.target as HTMLTextAreaElement).value.replace(/\n|\r\n|\r|\u2028|\u2029/g, "").trim());
|
||||
updateTransaction(protyle, id, nodeElement.outerHTML, html);
|
||||
html = nodeElement.outerHTML;
|
||||
event.stopPropagation();
|
||||
|
|
|
@ -20,7 +20,7 @@ import {openMobileFileById} from "../mobile/editor";
|
|||
import {lockScreen, exitSiYuan} from "../dialog/processSystem";
|
||||
import {Model} from "../layout/Model";
|
||||
import {getDockByType} from "../layout/tabUtil";
|
||||
import {getAllEditor} from "../layout/getAll";
|
||||
import {getAllEditor, getAllModels} from "../layout/getAll";
|
||||
|
||||
let openTab;
|
||||
let openWindow;
|
||||
|
@ -198,5 +198,6 @@ export const API = {
|
|||
Menu,
|
||||
Setting,
|
||||
getAllEditor,
|
||||
getAllModels,
|
||||
platformUtils
|
||||
};
|
||||
|
|
|
@ -168,7 +168,7 @@ const renderPDF = async (id: string) => {
|
|||
.b3-label:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
${setInlineStyle(false)}
|
||||
${await setInlineStyle(false)}
|
||||
${document.getElementById("pluginsStyle").innerHTML}
|
||||
${getSnippetCSS()}
|
||||
</style>
|
||||
|
|
|
@ -443,7 +443,7 @@ export class Background {
|
|||
if (tags) {
|
||||
let html = "";
|
||||
const colors = ["secondary", "primary", "info", "success", "warning", "error", "pink"];
|
||||
new Set(tags.split(",")).forEach((item, index) => {
|
||||
Array.from(new Set(tags.split(",").map(item => item.trim()))).forEach((item, index) => {
|
||||
if (!item.replace(/ /g, "")) {
|
||||
return;
|
||||
}
|
||||
|
@ -526,7 +526,7 @@ export class Background {
|
|||
response.data.tags.forEach((item: string, index: number) => {
|
||||
html += `<div class="b3-list-item b3-list-item--narrow${index === 0 ? " b3-list-item--focus" : ""}">
|
||||
<div class="fn__flex-1">${item}</div>
|
||||
${currentTags.includes(Lute.UnEscapeHTMLStr(item))?'<svg class="b3-menu__checked"><use xlink:href="#iconSelect"></use></svg>':""}
|
||||
${currentTags.includes(Lute.UnEscapeHTMLStr(item)) ? '<svg class="b3-menu__checked"><use xlink:href="#iconSelect"></use></svg>' : ""}
|
||||
</div>`;
|
||||
});
|
||||
listElement.innerHTML = html;
|
||||
|
@ -562,7 +562,7 @@ export class Background {
|
|||
response.data.tags.forEach((item: string) => {
|
||||
searchHTML += `<div class="b3-list-item b3-list-item--narrow">
|
||||
<div class="fn__flex-1">${item}</div>
|
||||
${currentTags.includes(Lute.UnEscapeHTMLStr(item.replace(/<mark>/g,"").replace(/<\/mark>/g,"")))?'<svg class="b3-menu__checked"><use xlink:href="#iconSelect"></use></svg>':""}
|
||||
${currentTags.includes(Lute.UnEscapeHTMLStr(item.replace(/<mark>/g, "").replace(/<\/mark>/g, ""))) ? '<svg class="b3-menu__checked"><use xlink:href="#iconSelect"></use></svg>' : ""}
|
||||
</div>`;
|
||||
if (item === `<mark>${response.data.k}</mark>`) {
|
||||
hasKey = true;
|
||||
|
|
|
@ -440,6 +440,12 @@ export const hintRef = (key: string, protyle: IProtyle, source: THintSource): IH
|
|||
let value = `<span data-type="block-ref" data-id="${item.id}" data-subtype="d">${item.name || item.refText.replace(new RegExp(Constants.ZWSP, "g"), "")}</span>`;
|
||||
if (source === "search") {
|
||||
value = `<span data-type="block-ref" data-id="${item.id}" data-subtype="s">${key}${Constants.ZWSP}${item.name || item.refText.replace(new RegExp(Constants.ZWSP, "g"), "")}</span>`;
|
||||
} else if (source === "av") {
|
||||
let refText = item.name || item.refText.replace(new RegExp(Constants.ZWSP, "g"), "");
|
||||
if (nodeElement) {
|
||||
refText = item.ial["custom-sy-av-s-text-" + nodeElement.getAttribute("data-av-id")] || refText;
|
||||
}
|
||||
value = `<span data-type="block-ref" data-id="${item.id}" data-subtype="s">${refText}</span>`;
|
||||
}
|
||||
dataList.push({
|
||||
value,
|
||||
|
|
|
@ -339,7 +339,11 @@ ${unicode2Emoji(emoji.unicode)}</button>`;
|
|||
let blockRefHTML;
|
||||
if (source === "av") {
|
||||
// av 搜索时需要获取值 https://github.com/siyuan-note/siyuan/issues/12020
|
||||
blockRefHTML = `<span data-type="block-ref" data-id="${item.id}" data-subtype="s">${item.name || item.refText.replace(new RegExp(Constants.ZWSP, "g"), "")}</span>`;
|
||||
let refText = item.name || item.refText.replace(new RegExp(Constants.ZWSP, "g"), "");
|
||||
if (nodeElement) {
|
||||
refText = item.ial["custom-sy-av-s-text-" + nodeElement.getAttribute("data-av-id")] || refText;
|
||||
}
|
||||
blockRefHTML = `<span data-type="block-ref" data-id="${item.id}" data-subtype="s">${refText}</span>`;
|
||||
} else {
|
||||
blockRefHTML = `<span data-type="block-ref" data-id="${item.id}" data-subtype="s">${oldValue}</span>`;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ import {setStorageVal} from "./util/compatibility";
|
|||
import {merge} from "./util/merge";
|
||||
import {getAllModels} from "../layout/getAll";
|
||||
import {isSupportCSSHL} from "./render/searchMarkRender";
|
||||
import {renderAVAttribute} from "./render/av/blockAttr";
|
||||
|
||||
export class Protyle {
|
||||
|
||||
|
@ -463,4 +464,8 @@ export class Protyle {
|
|||
public enable() {
|
||||
enableProtyle(this.protyle);
|
||||
}
|
||||
|
||||
public renderAVAttribute(element: HTMLElement, id: string, cb?: (element: HTMLElement) => void) {
|
||||
renderAVAttribute(element, id, this.protyle, cb);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import {hintRef} from "../../hint/extend";
|
|||
import {focusBlock, focusByRange} from "../../util/selection";
|
||||
import {showMessage} from "../../../dialog/message";
|
||||
import {previewImage} from "../../preview/image";
|
||||
import {unicode2Emoji} from "../../../emoji";
|
||||
import {openEmojiPanel, unicode2Emoji} from "../../../emoji";
|
||||
import * as dayjs from "dayjs";
|
||||
import {openCalcMenu} from "./calc";
|
||||
import {avRender} from "./render";
|
||||
|
@ -214,7 +214,7 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle
|
|||
}
|
||||
const cellType = getTypeByCellElement(target);
|
||||
// TODO 点击单元格的时候, lineNumber 选中整行
|
||||
if (cellType === "updated" || cellType === "created" || cellType === "lineNumber" || (cellType === "block" && !target.getAttribute("data-detached"))) {
|
||||
if (cellType === "updated" || cellType === "created" || cellType === "lineNumber") {
|
||||
selectRow(rowElement.querySelector(".av__firstcol"), "toggle");
|
||||
} else {
|
||||
scrollElement.querySelectorAll(".av__row--select").forEach(item => {
|
||||
|
@ -233,6 +233,17 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle
|
|||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return true;
|
||||
} else if (target.classList.contains("b3-menu__avemoji")) {
|
||||
const rect = target.getBoundingClientRect();
|
||||
openEmojiPanel(target.parentElement.getAttribute("data-block-id"), "doc", {
|
||||
x: rect.left,
|
||||
y: rect.bottom,
|
||||
h: rect.height,
|
||||
w: rect.width,
|
||||
}, undefined, target.querySelector("img"));
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return true;
|
||||
}
|
||||
target = target.parentElement;
|
||||
}
|
||||
|
@ -318,7 +329,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi
|
|||
id: "copyBlockRef",
|
||||
iconHTML: "",
|
||||
label: window.siyuan.languages.copyBlockRef,
|
||||
click: async () => {
|
||||
click: () => {
|
||||
let text = "";
|
||||
for (let i = 0; i < ids.length; i++) {
|
||||
const id = ids[i];
|
||||
|
@ -327,8 +338,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi
|
|||
if (cellElement.getAttribute("data-detached") === "true") {
|
||||
content = cellElement.querySelector(".av__celltext").textContent;
|
||||
} else {
|
||||
const response = await fetchSyncPost("/api/block/getRefText", {id});
|
||||
content = `((${id} '${response.data}'))`;
|
||||
content = `((${id} '${cellElement.querySelector(".av__celltext").textContent}'))`;
|
||||
}
|
||||
if (ids.length > 1) {
|
||||
text += "* ";
|
||||
|
@ -388,7 +398,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi
|
|||
id: "copyProtocolInMd",
|
||||
iconHTML: "",
|
||||
label: window.siyuan.languages.copyProtocolInMd,
|
||||
click: async () => {
|
||||
click: () => {
|
||||
let text = "";
|
||||
for (let i = 0; i < ids.length; i++) {
|
||||
const id = ids[i];
|
||||
|
@ -397,8 +407,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi
|
|||
if (cellElement.getAttribute("data-detached") === "true") {
|
||||
content = cellElement.querySelector(".av__celltext").textContent;
|
||||
} else {
|
||||
const response = await fetchSyncPost("/api/block/getRefText", {id});
|
||||
content = `[${response.data}](siyuan://blocks/${id})`;
|
||||
content = `[${cellElement.querySelector(".av__celltext").textContent}](siyuan://blocks/${id})`;
|
||||
}
|
||||
if (ids.length > 1) {
|
||||
text += "* ";
|
||||
|
@ -573,18 +582,9 @@ ${window.siyuan.languages.insertRowAfter.replace("${x}", `<span class="fn__space
|
|||
});
|
||||
const editAttrSubmenu: IMenu[] = [];
|
||||
rowElement.parentElement.querySelectorAll(".av__row--header .av__cell").forEach((cellElement: HTMLElement) => {
|
||||
let hideBlock = false;
|
||||
const selectElements: HTMLElement[] = Array.from(blockElement.querySelectorAll(`.av__row--select:not(.av__row--header) .av__cell[data-col-id="${cellElement.dataset.colId}"]`));
|
||||
if (cellElement.dataset.dtype === "block") {
|
||||
selectElements.find(item => {
|
||||
if (!item.dataset.detached) {
|
||||
hideBlock = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
const type = cellElement.getAttribute("data-dtype") as TAVCol;
|
||||
if (!hideBlock && !["updated", "created"].includes(type)) {
|
||||
if (!["updated", "created"].includes(type)) {
|
||||
const icon = cellElement.dataset.icon;
|
||||
editAttrSubmenu.push({
|
||||
iconHTML: icon ? unicode2Emoji(icon, "b3-menu__icon", true) : `<svg class="b3-menu__icon"><use xlink:href="#${getColIconByType(type)}"></use></svg>`,
|
||||
|
|
|
@ -61,7 +61,7 @@ export const genAVValueHTML = (value: IAVCellValue) => {
|
|||
let html = "";
|
||||
switch (value.type) {
|
||||
case "block":
|
||||
html = `<div class="fn__flex-1" placeholder="${window.siyuan.languages.empty}">${value.block.content}</div>`;
|
||||
html = `<input value="${value.block.content}" type="text" class="b3-text-field b3-text-field--text fn__flex-1" placeholder="${window.siyuan.languages.empty}">`;
|
||||
break;
|
||||
case "text":
|
||||
html = `<textarea style="resize: vertical" rows="${value.text.content.split("\n").length}" class="b3-text-field b3-text-field--text fn__flex-1" placeholder="${window.siyuan.languages.empty}">${value.text.content}</textarea>`;
|
||||
|
@ -186,7 +186,7 @@ export const renderAVAttribute = (element: HTMLElement, id: string, protyle: IPr
|
|||
</div>
|
||||
<div class="fn__flex-1"></div>
|
||||
<span class="fn__space"></span>
|
||||
<span data-type="remove" class="block__icon block__icon--show b3-tooltips__w b3-tooltips" aria-label="${window.siyuan.languages.removeAV}"><svg><use xlink:href="#iconTrashcan"></use></svg></span>
|
||||
<span data-type="remove" class="block__icon block__icon--warning block__icon--show b3-tooltips__w b3-tooltips" aria-label="${window.siyuan.languages.removeAV}"><svg><use xlink:href="#iconTrashcan"></use></svg></span>
|
||||
</div>`;
|
||||
table.keyValues?.forEach(item => {
|
||||
innerHTML += `<div class="block__icons av__row" data-id="${id}" data-col-id="${item.key.id}">
|
||||
|
@ -198,7 +198,7 @@ export const renderAVAttribute = (element: HTMLElement, id: string, protyle: IPr
|
|||
<div data-av-id="${table.avID}" data-col-id="${item.values[0].keyID}" data-block-id="${item.values[0].blockID}" data-id="${item.values[0].id}" data-type="${item.values[0].type}"
|
||||
data-options="${item.key?.options ? escapeAttr(JSON.stringify(item.key.options)) : "[]"}"
|
||||
${["text", "number", "date", "url", "phone", "template", "email"].includes(item.values[0].type) ? "" : `placeholder="${window.siyuan.languages.empty}"`}
|
||||
class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone"].includes(item.values[0].type) ? "" : " custom-attr__avvalue"}${["block", "created", "updated"].includes(item.values[0].type) ? " custom-attr__avvalue--readonly" : ""}">${genAVValueHTML(item.values[0])}</div>
|
||||
class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"].includes(item.values[0].type) ? "" : " custom-attr__avvalue"}${["created", "updated"].includes(item.values[0].type) ? " custom-attr__avvalue--readonly" : ""}">${genAVValueHTML(item.values[0])}</div>
|
||||
</div>`;
|
||||
});
|
||||
innerHTML += `<div class="fn__hr"></div>
|
||||
|
@ -358,6 +358,10 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone"].includes
|
|||
action: "removeAttrViewBlock",
|
||||
srcIDs: [id],
|
||||
avID: blockElement.dataset.avId,
|
||||
}, {
|
||||
action: "doUpdateUpdated",
|
||||
id,
|
||||
data: dayjs().format("YYYYMMDDHHmmss"),
|
||||
}]);
|
||||
blockElement.remove();
|
||||
if (!element.innerHTML) {
|
||||
|
@ -408,6 +412,14 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone"].includes
|
|||
}
|
||||
};
|
||||
}
|
||||
} else if (type === "block") {
|
||||
value = {
|
||||
block: {
|
||||
content: item.value,
|
||||
id: item.parentElement.dataset.blockId,
|
||||
},
|
||||
isDetached: false
|
||||
};
|
||||
}
|
||||
fetchPost("/api/av/setAttributeViewBlockAttr", {
|
||||
avID: item.parentElement.dataset.avId,
|
||||
|
@ -417,6 +429,8 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone"].includes
|
|||
}, (setResponse) => {
|
||||
if (type === "number") {
|
||||
item.parentElement.querySelector(".fn__flex-center").textContent = setResponse.data.value.number.formattedContent;
|
||||
} else if (type === "block" && !item.value) {
|
||||
item.value = setResponse.data.value.block.content;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -78,6 +78,9 @@ export const genCellValueByElement = (colType: TAVCol, cellElement: HTMLElement)
|
|||
};
|
||||
if (colType === "block" && textElement.dataset.id) {
|
||||
cellValue.block.id = textElement.dataset.id;
|
||||
if (textElement.previousElementSibling?.classList.contains("b3-menu__avemoji")) {
|
||||
cellValue.block.icon = textElement.previousElementSibling.getAttribute("data-unicode");
|
||||
}
|
||||
}
|
||||
} else if (colType === "mSelect" || colType === "select") {
|
||||
const mSelect: IAVCellSelectValue[] = [];
|
||||
|
@ -275,7 +278,11 @@ export const genCellValue = (colType: TAVCol, value: string | any) => {
|
|||
}
|
||||
}
|
||||
if (colType === "block") {
|
||||
cellValue.isDetached = true;
|
||||
if (typeof value === "object" && value.id) {
|
||||
cellValue.isDetached = false;
|
||||
} else {
|
||||
cellValue.isDetached = true;
|
||||
}
|
||||
}
|
||||
return cellValue;
|
||||
};
|
||||
|
@ -365,9 +372,6 @@ export const popTextCell = (protyle: IProtyle, cellElements: HTMLElement[], type
|
|||
if (type === "updated" || type === "created" || document.querySelector(".av__mask")) {
|
||||
return;
|
||||
}
|
||||
if (type === "block" && (cellElements.length > 1 || !cellElements[0].getAttribute("data-detached"))) {
|
||||
return;
|
||||
}
|
||||
const blockElement = hasClosestBlock(cellElements[0]);
|
||||
if (!blockElement) {
|
||||
return;
|
||||
|
@ -391,7 +395,7 @@ export const popTextCell = (protyle: IProtyle, cellElements: HTMLElement[], type
|
|||
}
|
||||
|
||||
if (["text", "email", "phone", "block", "template"].includes(type)) {
|
||||
html = `<textarea ${style} spellcheck="false" class="b3-text-field">${cellElements[0].firstElementChild.textContent}</textarea>`;
|
||||
html = `<textarea ${style} spellcheck="false" class="b3-text-field">${cellElements[0].querySelector(".av__celltext").textContent}</textarea>`;
|
||||
} else if (type === "url") {
|
||||
html = `<textarea ${style} spellcheck="false" class="b3-text-field">${cellElements[0].firstElementChild.getAttribute("data-href")}</textarea>`;
|
||||
} else if (type === "number") {
|
||||
|
@ -614,10 +618,11 @@ export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, va
|
|||
json.push([]);
|
||||
}
|
||||
json[json.length - 1].push(oldValue);
|
||||
let newValue = value;
|
||||
// relation 为全部更新,以下类型为添加
|
||||
if (type === "mAsset") {
|
||||
if (Array.isArray(value)) {
|
||||
value = oldValue.mAsset.concat(value);
|
||||
newValue = oldValue.mAsset.concat(value);
|
||||
} else if (typeof value !== "undefined") { // 不传入为删除,传入字符串不进行处理
|
||||
let link = protyle.lute.GetLinkDest(value);
|
||||
let name = "";
|
||||
|
@ -645,14 +650,14 @@ export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, va
|
|||
}
|
||||
if (imgSrc) {
|
||||
// 支持解析 ![]() https://github.com/siyuan-note/siyuan/issues/11487
|
||||
value = oldValue.mAsset.concat({
|
||||
newValue = oldValue.mAsset.concat({
|
||||
type: "image",
|
||||
content: imgSrc,
|
||||
name: ""
|
||||
});
|
||||
} else {
|
||||
// 支持解析 https://github.com/siyuan-note/siyuan/issues/11463
|
||||
value = oldValue.mAsset.concat({
|
||||
newValue = oldValue.mAsset.concat({
|
||||
type: "file",
|
||||
content: link,
|
||||
name
|
||||
|
@ -685,10 +690,16 @@ export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, va
|
|||
color: colorIndex.toString()
|
||||
});
|
||||
});
|
||||
value = oldValue.mSelect.concat(newMSelectValue);
|
||||
newValue = oldValue.mSelect.concat(newMSelectValue);
|
||||
}
|
||||
} else if (type === "block" && typeof value === "string" && oldValue.block.id) {
|
||||
newValue = {
|
||||
content: value,
|
||||
id: oldValue.block.id,
|
||||
icon: oldValue.block.icon
|
||||
};
|
||||
}
|
||||
const cellValue = genCellValue(type, value);
|
||||
const cellValue = genCellValue(type, newValue);
|
||||
cellValue.id = cellId;
|
||||
if ((cellValue.type === "date" && typeof cellValue.date === "string") ||
|
||||
(cellValue.type === "relation" && typeof cellValue.relation === "string")) {
|
||||
|
@ -702,26 +713,16 @@ export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, va
|
|||
if (objEquals(cellValue, oldValue)) {
|
||||
return;
|
||||
}
|
||||
if (type === "block" && !item.dataset.detached) {
|
||||
const newId = Lute.NewNodeID();
|
||||
doOperations.push({
|
||||
action: "unbindAttrViewBlock",
|
||||
id: rowID,
|
||||
nextID: newId,
|
||||
avID,
|
||||
});
|
||||
rowElement.dataset.id = newId;
|
||||
item.dataset.blockId = newId;
|
||||
} else {
|
||||
doOperations.push({
|
||||
action: "updateAttrViewCell",
|
||||
id: cellId,
|
||||
avID,
|
||||
keyID: colId,
|
||||
rowID,
|
||||
data: cellValue
|
||||
});
|
||||
}
|
||||
|
||||
doOperations.push({
|
||||
action: "updateAttrViewCell",
|
||||
id: cellId,
|
||||
avID,
|
||||
keyID: colId,
|
||||
rowID,
|
||||
data: cellValue
|
||||
});
|
||||
|
||||
undoOperations.push({
|
||||
action: "updateAttrViewCell",
|
||||
id: cellId,
|
||||
|
@ -789,7 +790,7 @@ export const renderCell = (cellValue: IAVCellValue, rowIndex = 0) => {
|
|||
if (cellValue?.isDetached) {
|
||||
text = `<span class="av__celltext">${cellValue.block.content || ""}</span><span class="b3-chip b3-chip--info b3-chip--small" data-type="block-more">${window.siyuan.languages.more}</span>`;
|
||||
} else {
|
||||
text = `<span data-type="block-ref" data-id="${cellValue.block.id}" data-subtype="s" class="av__celltext av__celltext--ref">${cellValue.block.content || window.siyuan.languages.untitled}</span><span class="b3-chip b3-chip--info b3-chip--small" data-type="block-more">${window.siyuan.languages.update}</span>`;
|
||||
text = `${cellValue.block.icon ? `<span class="b3-menu__avemoji" data-unicode="${cellValue.block.icon}">${unicode2Emoji(cellValue.block.icon)}</span>` : ""}<span data-type="block-ref" data-id="${cellValue.block.id}" data-subtype="s" class="av__celltext av__celltext--ref">${cellValue.block.content}</span><span class="b3-chip b3-chip--info b3-chip--small" data-type="block-more">${window.siyuan.languages.update}</span>`;
|
||||
}
|
||||
} else if (cellValue.type === "number") {
|
||||
text = `<span class="av__celltext" data-content="${cellValue?.number.isNotEmpty ? cellValue?.number.content : ""}">${cellValue?.number.formattedContent || cellValue?.number.content || ""}</span>`;
|
||||
|
@ -877,7 +878,7 @@ const renderRollup = (cellValue: IAVCellValue) => {
|
|||
if (cellValue?.isDetached) {
|
||||
text = `<span class="av__celltext" data-id="${cellValue.block?.id}">${cellValue.block?.content || window.siyuan.languages.untitled}</span>`;
|
||||
} else {
|
||||
text = `<span data-type="block-ref" data-id="${cellValue.block?.id}" data-subtype="s" class="av__celltext av__celltext--ref">${cellValue.block?.content || window.siyuan.languages.untitled}</span>`;
|
||||
text = `${cellValue.block.icon ? `<span class="b3-menu__avemoji" data-unicode="${cellValue.block.icon}">${unicode2Emoji(cellValue.block.icon)}</span>` : ""}<span data-type="block-ref" data-id="${cellValue.block?.id}" data-subtype="s" class="av__celltext av__celltext--ref">${cellValue.block?.content || window.siyuan.languages.untitled}</span>`;
|
||||
}
|
||||
} else if (cellValue.type === "number") {
|
||||
text = cellValue?.number.formattedContent || cellValue?.number.content.toString() || "";
|
||||
|
|
|
@ -968,9 +968,10 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen
|
|||
});
|
||||
dialog.element.addEventListener("click", (event) => {
|
||||
let target = event.target as HTMLElement;
|
||||
while (target && !target.isSameNode(dialog.element)) {
|
||||
const isDispatch = typeof event.detail === "string";
|
||||
while (target && !target.isSameNode(dialog.element) || isDispatch) {
|
||||
const action = target.getAttribute("data-action");
|
||||
if (action === "delete") {
|
||||
if (action === "delete" || (isDispatch && event.detail === "Enter")) {
|
||||
removeColByMenu({
|
||||
protyle,
|
||||
colId,
|
||||
|
@ -998,13 +999,15 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen
|
|||
});
|
||||
dialog.destroy();
|
||||
break;
|
||||
} else if (target.classList.contains("b3-button--cancel")) {
|
||||
} else if (target.classList.contains("b3-button--cancel") || (isDispatch && event.detail === "Escape")) {
|
||||
dialog.destroy();
|
||||
break;
|
||||
}
|
||||
target = target.parentElement;
|
||||
}
|
||||
});
|
||||
dialog.element.querySelector("button").focus();
|
||||
dialog.element.setAttribute("data-key", Constants.DIALOG_CONFIRM);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1106,11 +1106,12 @@ export const openMenuPanel = (options: {
|
|||
<button class="fn__block b3-button b3-button--cancel">${window.siyuan.languages.cancel}</button>
|
||||
</div>`,
|
||||
});
|
||||
dialog.element.addEventListener("click", (event) => {
|
||||
let target = event.target as HTMLElement;
|
||||
while (target && !target.isSameNode(dialog.element)) {
|
||||
dialog.element.addEventListener("click", (dialogEvent) => {
|
||||
let target = dialogEvent.target as HTMLElement;
|
||||
const isDispatch = typeof dialogEvent.detail === "string";
|
||||
while (target && !target.isSameNode(dialog.element) || isDispatch) {
|
||||
const action = target.getAttribute("data-action");
|
||||
if (action === "delete") {
|
||||
if (action === "delete" || (isDispatch && dialogEvent.detail === "Enter")) {
|
||||
removeCol({
|
||||
protyle: options.protyle,
|
||||
data,
|
||||
|
@ -1140,13 +1141,14 @@ export const openMenuPanel = (options: {
|
|||
});
|
||||
dialog.destroy();
|
||||
break;
|
||||
} else if (target.classList.contains("b3-button--cancel")) {
|
||||
} else if (target.classList.contains("b3-button--cancel") || (isDispatch && dialogEvent.detail === "Escape")) {
|
||||
dialog.destroy();
|
||||
break;
|
||||
}
|
||||
target = target.parentElement;
|
||||
}
|
||||
});
|
||||
dialog.element.setAttribute("data-key", Constants.DIALOG_CONFIRM);
|
||||
} else {
|
||||
removeCol({
|
||||
protyle: options.protyle,
|
||||
|
|
|
@ -139,7 +139,7 @@ export const setColOption = (protyle: IProtyle, data: IAV, target: HTMLElement,
|
|||
if ((name === inputElement.value && desc === descElement.value) || !inputElement.value) {
|
||||
return;
|
||||
}
|
||||
// 不判断重名 https://github.com/siyuan-note/siyuan/issues/11484
|
||||
// cell 不判断重名 https://github.com/siyuan-note/siyuan/issues/11484
|
||||
transaction(protyle, [{
|
||||
action: "updateAttrViewColOption",
|
||||
id: colId,
|
||||
|
@ -163,13 +163,23 @@ export const setColOption = (protyle: IProtyle, data: IAV, target: HTMLElement,
|
|||
}]);
|
||||
data.view.columns.find(column => {
|
||||
if (column.id === colId) {
|
||||
// 重名不进行更新 https://github.com/siyuan-note/siyuan/issues/13554
|
||||
let hasName = false;
|
||||
column.options.find((item) => {
|
||||
if (item.name === name) {
|
||||
item.name = inputElement.value;
|
||||
item.desc = descElement.value;
|
||||
if (item.name === inputElement.value) {
|
||||
hasName = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
if (!hasName) {
|
||||
column.options.find((item) => {
|
||||
if (item.name === name) {
|
||||
item.name = inputElement.value;
|
||||
item.desc = descElement.value;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -138,6 +138,19 @@ export const isMac = () => {
|
|||
return navigator.platform.toUpperCase().indexOf("MAC") > -1;
|
||||
};
|
||||
|
||||
export const isWin11 = async () => {
|
||||
if (!(navigator as any).userAgentData || !(navigator as any).userAgentData.getHighEntropyValues) {
|
||||
return false;
|
||||
}
|
||||
const ua = await (navigator as any).userAgentData.getHighEntropyValues(["platformVersion"]);
|
||||
if ((navigator as any).userAgentData.platform === "Windows") {
|
||||
if (parseInt(ua.platformVersion.split(".")[0]) >= 13) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
export const isInAndroid = () => {
|
||||
return window.siyuan.config.system.container === "android" && window.JSAndroid;
|
||||
};
|
||||
|
|
|
@ -186,28 +186,52 @@ const processAV = (range: Range, html: string, protyle: IProtyle, blockElement:
|
|||
}
|
||||
|
||||
const text = protyle.lute.BlockDOM2Content(html);
|
||||
const cellsElement: HTMLElement[] = Array.from(blockElement.querySelectorAll(".av__cell--active, .av__cell--select"));
|
||||
const rowsElement = blockElement.querySelector(".av__row--select");
|
||||
const cellElements: HTMLElement[] = Array.from(blockElement.querySelectorAll(".av__cell--active, .av__cell--select"));
|
||||
const rowsElement = blockElement.querySelectorAll(".av__row--select");
|
||||
|
||||
if (rowsElement) {
|
||||
const textJSON: string[][] = [];
|
||||
text.split("\n").forEach(row => {
|
||||
textJSON.push(row.split("\t"));
|
||||
});
|
||||
if (rowsElement && textJSON.length === 1 && textJSON[0].length === 1) {
|
||||
updateCellsValue(protyle, blockElement as HTMLElement, text, undefined, columns, html);
|
||||
} else if (cellsElement.length > 0) {
|
||||
if (cellsElement.length > 1) {
|
||||
// 选择多个单元格时,逐行填充
|
||||
let rowIndex = 0;
|
||||
text.split("\n").find((row) => {
|
||||
if (!row) {
|
||||
return false;
|
||||
}
|
||||
if (cellsElement[rowIndex]) {
|
||||
updateCellsValue(protyle, blockElement as HTMLElement, row.trim(), [cellsElement[rowIndex]], columns, html);
|
||||
rowIndex++;
|
||||
return;
|
||||
}
|
||||
if (rowsElement) {
|
||||
rowsElement.forEach(rowElement => {
|
||||
rowElement.querySelectorAll(".av__cell").forEach((cellElement: HTMLElement) => {
|
||||
cellElements.push(cellElement);
|
||||
});
|
||||
});
|
||||
}
|
||||
if (cellElements.length > 0) {
|
||||
if (textJSON.length === 1 && textJSON[0].length === 1) {
|
||||
updateCellsValue(protyle, blockElement as HTMLElement, text, cellElements, columns, html);
|
||||
} else {
|
||||
let currentRowElement:Element;
|
||||
const firstColIndex = cellElements[0].getAttribute("data-col-id");
|
||||
textJSON.forEach((rowValue, rowIndex) => {
|
||||
if (!currentRowElement) {
|
||||
currentRowElement = cellElements[0].parentElement;
|
||||
} else {
|
||||
currentRowElement = currentRowElement.nextElementSibling;
|
||||
}
|
||||
if (!currentRowElement.classList.contains("av__row")) {
|
||||
return true;
|
||||
}
|
||||
let cellElement: HTMLElement;
|
||||
rowValue.forEach((cellValue, cellIndex) => {
|
||||
if (!cellElement) {
|
||||
cellElement = currentRowElement.querySelector(`.av__cell[data-col-id="${firstColIndex}"]`) as HTMLElement;
|
||||
} else {
|
||||
cellElement = cellElement.nextElementSibling as HTMLElement;
|
||||
}
|
||||
if (!cellElement.classList.contains("av__cell")) {
|
||||
return true;
|
||||
}
|
||||
updateCellsValue(protyle, blockElement as HTMLElement, cellValue, [cellElement], columns, html);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
updateCellsValue(protyle, blockElement as HTMLElement, text, cellsElement, columns, html);
|
||||
}
|
||||
document.querySelector(".av__panel")?.remove();
|
||||
} else if (hasClosestByClassName(range.startContainer, "av__title")) {
|
||||
|
|
|
@ -395,6 +395,10 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven
|
|||
const range = getEditorRange(protyle.wysiwyg.element);
|
||||
if (nodeElement.getAttribute("data-type") === "NodeCodeBlock" ||
|
||||
protyle.toolbar.getCurrentType(range).includes("code")) {
|
||||
// https://github.com/siyuan-note/siyuan/issues/13552
|
||||
textPlain = textPlain.replace(/\u200D```/g, "```");
|
||||
textPlain = textPlain.replace(/```/g, "\u200D```");
|
||||
|
||||
insertHTML(textPlain, protyle);
|
||||
return;
|
||||
} else if (siyuanHTML) {
|
||||
|
@ -434,6 +438,10 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven
|
|||
// 复制 HTML 块粘贴出来的不是 HTML 块 https://github.com/siyuan-note/siyuan/issues/12994
|
||||
tempInnerHTML = Lute.UnEscapeHTMLStr(tempInnerHTML);
|
||||
}
|
||||
|
||||
// https://github.com/siyuan-note/siyuan/issues/13552
|
||||
tempInnerHTML = tempInnerHTML.replace(/\u200D```/g, "```");
|
||||
|
||||
insertHTML(tempInnerHTML, protyle, isBlock, false, true);
|
||||
}
|
||||
filterClipboardHint(protyle, protyle.lute.BlockDOM2StdMd(tempInnerHTML));
|
||||
|
@ -531,6 +539,10 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// https://github.com/siyuan-note/siyuan/issues/13552
|
||||
textPlain = textPlain.replace(/\u200D```/g, "```");
|
||||
|
||||
const textPlainDom = protyle.lute.Md2BlockDOM(textPlain);
|
||||
insertHTML(textPlainDom, protyle, false, false, true);
|
||||
filterClipboardHint(protyle, textPlain);
|
||||
|
|
|
@ -95,6 +95,7 @@ import {openEmojiPanel, unicode2Emoji} from "../../emoji";
|
|||
import {openLink} from "../../editor/openLink";
|
||||
import {mathRender} from "../render/mathRender";
|
||||
import {editAssetItem} from "../render/av/asset";
|
||||
import {img3115} from "../../boot/compatibleVersion";
|
||||
|
||||
export class WYSIWYG {
|
||||
public lastHTMLs: { [key: string]: string } = {};
|
||||
|
@ -669,12 +670,17 @@ export class WYSIWYG {
|
|||
const dragElement = target.previousElementSibling as HTMLElement;
|
||||
const dragWidth = dragElement.clientWidth;
|
||||
const dragHeight = dragElement.clientHeight;
|
||||
|
||||
const imgElement = dragElement.parentElement.parentElement;
|
||||
if (dragElement.tagName === "IMG") {
|
||||
img3115(imgElement);
|
||||
}
|
||||
documentSelf.onmousemove = (moveEvent: MouseEvent) => {
|
||||
if (dragElement.tagName === "IMG") {
|
||||
dragElement.style.height = "";
|
||||
}
|
||||
if (moveEvent.clientX > x - dragWidth + 8 && moveEvent.clientX < mostRight) {
|
||||
const multiple = ((dragElement.tagName === "IMG" && !dragElement.parentElement.parentElement.style.minWidth && nodeElement.style.textAlign !== "center") || !isCenter) ? 1 : 2;
|
||||
const multiple = ((dragElement.tagName === "IMG" && !imgElement.style.minWidth && nodeElement.style.textAlign !== "center") || !isCenter) ? 1 : 2;
|
||||
if (dragElement.tagName === "IMG") {
|
||||
dragElement.parentElement.style.width = Math.max(17, dragWidth + (moveEvent.clientX - x) * multiple) + "px";
|
||||
} else {
|
||||
|
@ -1482,7 +1488,7 @@ export class WYSIWYG {
|
|||
}
|
||||
});
|
||||
tableSelectElement.removeAttribute("style");
|
||||
if (getSelection().rangeCount>0) {
|
||||
if (getSelection().rangeCount > 0) {
|
||||
const range = getSelection().getRangeAt(0);
|
||||
if (nodeElement.contains(range.startContainer)) {
|
||||
range.insertNode(document.createElement("wbr"));
|
||||
|
|
|
@ -853,8 +853,19 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
let nextSibling = hasNextSibling(range.startContainer) as Element;
|
||||
if (nextSibling) {
|
||||
if (nextSibling.nodeType === 3 && nextSibling.textContent === Constants.ZWSP) {
|
||||
if (!nextSibling.nextSibling) {
|
||||
// https://github.com/siyuan-note/siyuan/issues/13524
|
||||
const nextBlockElement = getNextBlock(nodeElement);
|
||||
if (nextBlockElement) {
|
||||
removeBlock(protyle, nextBlockElement, range, "remove");
|
||||
}
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
nextSibling = nextSibling.nextSibling as Element;
|
||||
}
|
||||
|
||||
if (nextSibling.nodeType === 1 && nextSibling.classList.contains("img")) {
|
||||
// 光标需在图片前 https://github.com/siyuan-note/siyuan/issues/12452
|
||||
const textPosition = getSelectionOffset(range.startContainer, protyle.wysiwyg.element, range);
|
||||
|
@ -1354,7 +1365,16 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
if (matchHotKey(window.siyuan.config.keymap.editor.list.outdent.custom, event)) {
|
||||
const selectElements = protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select");
|
||||
if (selectElements.length > 0) {
|
||||
if (selectElements[0].getAttribute("data-type") === "NodeListItem") {
|
||||
let isContinuous = true;
|
||||
selectElements.forEach((item, index) => {
|
||||
if (item.nextElementSibling && selectElements[index + 1]) {
|
||||
if (!selectElements[index + 1].isSameNode(item.nextElementSibling)) {
|
||||
isContinuous = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (isContinuous &&
|
||||
(selectElements[0].classList.contains("li") || selectElements[0].parentElement.classList.contains("li"))) {
|
||||
listOutdent(protyle, Array.from(selectElements), range);
|
||||
}
|
||||
event.preventDefault();
|
||||
|
@ -1371,7 +1391,16 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
if (matchHotKey(window.siyuan.config.keymap.editor.list.indent.custom, event)) {
|
||||
const selectElements = protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select");
|
||||
if (selectElements.length > 0) {
|
||||
if (selectElements[0].getAttribute("data-type") === "NodeListItem") {
|
||||
let isContinuous = true;
|
||||
selectElements.forEach((item, index) => {
|
||||
if (item.nextElementSibling && selectElements[index + 1]) {
|
||||
if (!selectElements[index + 1].isSameNode(item.nextElementSibling)) {
|
||||
isContinuous = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (isContinuous &&
|
||||
(selectElements[0].classList.contains("li") || selectElements[0].parentElement.classList.contains("li"))) {
|
||||
listIndent(protyle, Array.from(selectElements), range);
|
||||
}
|
||||
event.preventDefault();
|
||||
|
@ -1785,5 +1814,11 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
if (isNotCtrl(event) && event.key !== "Backspace" && event.key !== "Escape" && event.key !== "Delete" && !event.shiftKey && !event.altKey && event.key !== "Enter") {
|
||||
hideElements(["select"], protyle);
|
||||
}
|
||||
|
||||
if (matchHotKey("⌘B", event) || matchHotKey("⌘I", event) || matchHotKey("⌘U", event)) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -76,17 +76,23 @@ export const addSubList = (protyle: IProtyle, nodeElement: Element, range: Range
|
|||
};
|
||||
|
||||
export const listIndent = (protyle: IProtyle, liItemElements: Element[], range: Range) => {
|
||||
liItemElements.forEach(item => {
|
||||
item.removeAttribute("select-start");
|
||||
item.removeAttribute("select-end");
|
||||
});
|
||||
if (!liItemElements[0].classList.contains("li")) {
|
||||
if (liItemElements[0].parentElement.childElementCount === liItemElements.length + 2) {
|
||||
liItemElements = [liItemElements[0].parentElement];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
const previousElement = liItemElements[0].previousElementSibling as HTMLElement;
|
||||
if (!previousElement) {
|
||||
return;
|
||||
}
|
||||
range.collapse(false);
|
||||
range.insertNode(document.createElement("wbr"));
|
||||
liItemElements.forEach(item => {
|
||||
item.classList.remove("protyle-wysiwyg--select");
|
||||
item.removeAttribute("select-start");
|
||||
item.removeAttribute("select-end");
|
||||
});
|
||||
const html = previousElement.parentElement.outerHTML;
|
||||
if (previousElement.lastElementChild.previousElementSibling.getAttribute("data-type") === "NodeList") {
|
||||
// 上一个列表的最后一项为子列表
|
||||
|
@ -320,6 +326,17 @@ export const breakList = (protyle: IProtyle, blockElement: Element, range: Range
|
|||
* @param deleteElement 末尾反向删除时才会传入
|
||||
*/
|
||||
export const listOutdent = (protyle: IProtyle, liItemElements: Element[], range: Range, isDelete = false, deleteElement?: Element) => {
|
||||
liItemElements.forEach(item => {
|
||||
item.removeAttribute("select-start");
|
||||
item.removeAttribute("select-end");
|
||||
});
|
||||
if (!liItemElements[0].classList.contains("li")) {
|
||||
if (liItemElements[0].parentElement.childElementCount === liItemElements.length + 2) {
|
||||
liItemElements = [liItemElements[0].parentElement];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
const liElement = liItemElements[0].parentElement;
|
||||
const liId = liElement.getAttribute("data-node-id");
|
||||
if (!liId) {
|
||||
|
@ -348,9 +365,6 @@ export const listOutdent = (protyle: IProtyle, liItemElements: Element[], range:
|
|||
let nextElement = liItemElements[liItemElements.length - 1].nextElementSibling;
|
||||
let lastBlockElement = liItemElements[liItemElements.length - 1].lastElementChild.previousElementSibling;
|
||||
liItemElements.forEach(item => {
|
||||
item.classList.remove("protyle-wysiwyg--select");
|
||||
item.removeAttribute("select-start");
|
||||
item.removeAttribute("select-end");
|
||||
Array.from(item.children).forEach((blockElement, index) => {
|
||||
const id = blockElement.getAttribute("data-node-id");
|
||||
if (!id) {
|
||||
|
@ -506,11 +520,6 @@ export const listOutdent = (protyle: IProtyle, liItemElements: Element[], range:
|
|||
const doOperations: IOperation[] = [];
|
||||
const undoOperations: IOperation[] = [];
|
||||
const previousID = liItemElements[0].previousElementSibling?.getAttribute("data-node-id");
|
||||
liItemElements.forEach(item => {
|
||||
item.classList.remove("protyle-wysiwyg--select");
|
||||
item.removeAttribute("select-start");
|
||||
item.removeAttribute("select-end");
|
||||
});
|
||||
let startIndex;
|
||||
if (!liItemElements[0].previousElementSibling && liElement.getAttribute("data-subtype") === "o") {
|
||||
startIndex = parseInt(liItemElements[0].getAttribute("data-marker"));
|
||||
|
|
|
@ -14,7 +14,7 @@ import {isPaidUser} from "../util/needSubscribe";
|
|||
import {showMessage} from "../dialog/message";
|
||||
import {saveAssetKeyList} from "./toggleHistory";
|
||||
|
||||
export const openSearchAsset = (element: Element, isStick: boolean) => {
|
||||
export const openSearchAsset = (element: HTMLElement, isStick: boolean) => {
|
||||
/// #if !MOBILE
|
||||
window.siyuan.menus.menu.remove();
|
||||
element.previousElementSibling.classList.add("fn__none");
|
||||
|
@ -133,7 +133,7 @@ export const openSearchAsset = (element: Element, isStick: boolean) => {
|
|||
|
||||
nextElement.classList.remove("fn__flex-1");
|
||||
nextElement.style[direction === "lr" ? "width" : "height"] = nextSize + "px";
|
||||
|
||||
element.style.userSelect = "none";
|
||||
documentSelf.onmousemove = (moveEvent: MouseEvent) => {
|
||||
moveEvent.preventDefault();
|
||||
moveEvent.stopPropagation();
|
||||
|
@ -146,6 +146,7 @@ export const openSearchAsset = (element: Element, isStick: boolean) => {
|
|||
};
|
||||
|
||||
documentSelf.onmouseup = () => {
|
||||
element.style.userSelect = "none";
|
||||
documentSelf.onmousemove = null;
|
||||
documentSelf.onmouseup = null;
|
||||
documentSelf.ondragstart = null;
|
||||
|
|
|
@ -13,7 +13,7 @@ import {inputEvent} from "./util";
|
|||
|
||||
export const toggleReplaceHistory = (replaceInputElement: HTMLInputElement) => {
|
||||
const list = window.siyuan.storage[Constants.LOCAL_SEARCHKEYS];
|
||||
if (!list.replaceKeys || list.replaceKeys.length === 0) {
|
||||
if (!list.replaceKeys || list.replaceKeys.length === 0 || (list.length === 1 && list[0] === replaceInputElement.value)) {
|
||||
return;
|
||||
}
|
||||
const menu = new Menu("search-replace-history");
|
||||
|
@ -79,8 +79,9 @@ export const toggleReplaceHistory = (replaceInputElement: HTMLInputElement) => {
|
|||
};
|
||||
|
||||
export const toggleSearchHistory = (searchElement: Element, config: Config.IUILayoutTabSearchConfig, edit: Protyle) => {
|
||||
const searchInputElement = searchElement.querySelector("#searchInput, #toolbarSearch") as HTMLInputElement;
|
||||
const list = window.siyuan.storage[Constants.LOCAL_SEARCHKEYS];
|
||||
if (!list.keys || list.keys.length === 0) {
|
||||
if (!list.keys || list.keys.length === 0 || (list.length === 1 && list[0] === searchInputElement.value)) {
|
||||
return;
|
||||
}
|
||||
const menu = new Menu("search-history");
|
||||
|
@ -98,7 +99,6 @@ export const toggleSearchHistory = (searchElement: Element, config: Config.IUILa
|
|||
});
|
||||
const separatorElement = menu.addSeparator(1);
|
||||
let current = true;
|
||||
const searchInputElement = searchElement.querySelector("#searchInput, #toolbarSearch") as HTMLInputElement;
|
||||
list.keys.forEach((s: string) => {
|
||||
if (s !== searchInputElement.value && s) {
|
||||
const menuItem = menu.addItem({
|
||||
|
@ -153,8 +153,9 @@ export const toggleSearchHistory = (searchElement: Element, config: Config.IUILa
|
|||
};
|
||||
|
||||
export const toggleAssetHistory = (assetElement: Element) => {
|
||||
const assetInputElement = assetElement.querySelector("#searchAssetInput") as HTMLInputElement;
|
||||
const keys = window.siyuan.storage[Constants.LOCAL_SEARCHASSET].keys;
|
||||
if (!keys || keys.length === 0) {
|
||||
if (!keys || keys.length === 0 || (keys.length === 1 && keys[0] === assetInputElement.value)) {
|
||||
return;
|
||||
}
|
||||
const menu = new Menu("search-asset-history");
|
||||
|
@ -172,7 +173,6 @@ export const toggleAssetHistory = (assetElement: Element) => {
|
|||
});
|
||||
const separatorElement = menu.addSeparator(1);
|
||||
let current = true;
|
||||
const assetInputElement = assetElement.querySelector("#searchAssetInput") as HTMLInputElement;
|
||||
keys.forEach((s: string) => {
|
||||
if (s !== assetInputElement.value && s) {
|
||||
const menuItem = menu.addItem({
|
||||
|
@ -233,7 +233,7 @@ export const saveKeyList = (type: "keys" | "replaceKeys", value: string) => {
|
|||
setStorageVal(Constants.LOCAL_SEARCHKEYS, window.siyuan.storage[Constants.LOCAL_SEARCHKEYS]);
|
||||
};
|
||||
|
||||
export const saveAssetKeyList = (inputElement:HTMLInputElement) => {
|
||||
export const saveAssetKeyList = (inputElement: HTMLInputElement) => {
|
||||
if (!inputElement.value) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import {Protyle} from "../protyle";
|
|||
import {resize} from "../protyle/util/resize";
|
||||
import {Menu} from "../plugin/Menu";
|
||||
|
||||
export const openSearchUnRef = (element: Element, editor: Protyle) => {
|
||||
export const openSearchUnRef = (element: HTMLElement, editor: Protyle) => {
|
||||
window.siyuan.menus.menu.remove();
|
||||
element.previousElementSibling.previousElementSibling.classList.add("fn__none");
|
||||
element.classList.remove("fn__none");
|
||||
|
@ -46,7 +46,7 @@ export const openSearchUnRef = (element: Element, editor: Protyle) => {
|
|||
|
||||
nextElement.classList.remove("fn__flex-1");
|
||||
nextElement.style[direction === "lr" ? "width" : "height"] = nextSize + "px";
|
||||
|
||||
element.style.userSelect = "none";
|
||||
documentSelf.onmousemove = (moveEvent: MouseEvent) => {
|
||||
moveEvent.preventDefault();
|
||||
moveEvent.stopPropagation();
|
||||
|
@ -59,6 +59,7 @@ export const openSearchUnRef = (element: Element, editor: Protyle) => {
|
|||
};
|
||||
|
||||
documentSelf.onmouseup = () => {
|
||||
element.style.userSelect = "";
|
||||
documentSelf.onmousemove = null;
|
||||
documentSelf.onmouseup = null;
|
||||
documentSelf.ondragstart = null;
|
||||
|
|
|
@ -51,6 +51,7 @@ import {getUnRefList, openSearchUnRef, unRefMoreMenu} from "./unRef";
|
|||
import {getDefaultType} from "./getDefault";
|
||||
import {isSupportCSSHL, searchMarkRender} from "../protyle/render/searchMarkRender";
|
||||
import {saveKeyList, toggleAssetHistory, toggleReplaceHistory, toggleSearchHistory} from "./toggleHistory";
|
||||
import {highlightById} from "../util/highlightById";
|
||||
|
||||
export const openGlobalSearch = (app: App, text: string, replace: boolean, searchData?: Config.IUILayoutTabSearchConfig) => {
|
||||
text = text.trim();
|
||||
|
@ -84,7 +85,7 @@ export const openGlobalSearch = (app: App, text: string, replace: boolean, searc
|
|||
};
|
||||
|
||||
// closeCB 不存在为页签搜索
|
||||
export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, element: Element, closeCB?: () => void) => {
|
||||
export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, element: HTMLElement, closeCB?: () => void) => {
|
||||
let methodText = window.siyuan.languages.keyword;
|
||||
if (config.method === 1) {
|
||||
methodText = window.siyuan.languages.querySyntax;
|
||||
|
@ -311,7 +312,7 @@ export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, ele
|
|||
|
||||
nextElement.classList.remove("fn__flex-1");
|
||||
nextElement.style[direction === "lr" ? "width" : "height"] = nextSize + "px";
|
||||
|
||||
element.style.userSelect = "none";
|
||||
documentSelf.onmousemove = (moveEvent: MouseEvent) => {
|
||||
moveEvent.preventDefault();
|
||||
moveEvent.stopPropagation();
|
||||
|
@ -324,6 +325,7 @@ export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, ele
|
|||
};
|
||||
|
||||
documentSelf.onmouseup = () => {
|
||||
element.style.userSelect = "";
|
||||
documentSelf.onmousemove = null;
|
||||
documentSelf.onmouseup = null;
|
||||
documentSelf.ondragstart = null;
|
||||
|
@ -338,8 +340,8 @@ export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, ele
|
|||
});
|
||||
|
||||
const localSearch = window.siyuan.storage[Constants.LOCAL_SEARCHASSET] as ISearchAssetOption;
|
||||
const assetsElement = element.querySelector("#searchAssets");
|
||||
const unRefPanelElement = element.querySelector("#searchUnRefPanel");
|
||||
const assetsElement = element.querySelector("#searchAssets") as HTMLElement;
|
||||
const unRefPanelElement = element.querySelector("#searchUnRefPanel") as HTMLElement;
|
||||
element.addEventListener("click", (event: MouseEvent) => {
|
||||
let target = event.target as HTMLElement;
|
||||
const searchPathInputElement = element.querySelector("#searchPathInput");
|
||||
|
@ -1101,6 +1103,8 @@ export const getArticle = (options: {
|
|||
searchMarkRender(options.edit.protyle, getResponse.data.keywords, options.id, () => {
|
||||
if (options.edit.protyle.highlight.ranges.length > 0 && options.edit.protyle.highlight.ranges[options.edit.protyle.highlight.rangeIndex]) {
|
||||
options.edit.protyle.contentElement.scrollTop = options.edit.protyle.contentElement.scrollTop + options.edit.protyle.highlight.ranges[options.edit.protyle.highlight.rangeIndex].getBoundingClientRect().top - contentRect.top - contentRect.height / 2;
|
||||
} else {
|
||||
highlightById(options.edit.protyle, options.id);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
|
4
app/src/types/config.d.ts
vendored
4
app/src/types/config.d.ts
vendored
|
@ -1537,10 +1537,6 @@ declare namespace Config {
|
|||
* Operating system platform name
|
||||
*/
|
||||
osPlatform: string;
|
||||
/**
|
||||
* Whether to upload error logs
|
||||
*/
|
||||
uploadErrLog: boolean;
|
||||
/**
|
||||
* The absolute path of the workspace directory
|
||||
*/
|
||||
|
|
3
app/src/types/index.d.ts
vendored
3
app/src/types/index.d.ts
vendored
|
@ -874,7 +874,8 @@ interface IAVCellValue {
|
|||
mAsset?: IAVCellAssetValue[]
|
||||
block?: {
|
||||
content: string,
|
||||
id?: string
|
||||
id?: string,
|
||||
icon?: string
|
||||
}
|
||||
url?: {
|
||||
content: string
|
||||
|
|
|
@ -7,7 +7,7 @@ import {exportLayout} from "../layout/util";
|
|||
/// #endif
|
||||
import {fetchPost} from "./fetch";
|
||||
import {appearance} from "../config/appearance";
|
||||
import {isInAndroid, isInHarmony, isInIOS} from "../protyle/util/compatibility";
|
||||
import {isInAndroid, isInHarmony, isInIOS, isIPad, isIPhone, isMac, isWin11} from "../protyle/util/compatibility";
|
||||
|
||||
const loadThirdIcon = (iconURL: string, data: Config.IAppearance) => {
|
||||
addScript(iconURL, "iconDefaultScript").then(() => {
|
||||
|
@ -199,9 +199,78 @@ export const addGA = () => {
|
|||
}
|
||||
};
|
||||
|
||||
export const setInlineStyle = (set = true) => {
|
||||
export const setInlineStyle = async (set = true) => {
|
||||
const height = Math.floor(window.siyuan.config.editor.fontSize * 1.625);
|
||||
let style = `.b3-typography, .protyle-wysiwyg, .protyle-title {font-size:${window.siyuan.config.editor.fontSize}px !important}
|
||||
let style;
|
||||
|
||||
// Emojis Reset: 字体中包含了 emoji,需重置
|
||||
// Emojis Additional: 苹果/win11 字体中没有的 emoji
|
||||
if (isMac() || isIPad() || isIPhone()) {
|
||||
style = `@font-face {
|
||||
font-family: "Emojis Additional";
|
||||
src: url(../../../appearance/fonts/Noto-COLRv1-2.047/Noto-COLRv1.woff2) format("woff2");
|
||||
unicode-range: U+1fae9, U+1fac6, U+1fabe, U+1fadc, U+e50a, U+1fa89, U+1fadf, U+1f1e6-1f1ff, U+1fa8f;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Emojis Reset";
|
||||
src: local("Apple Color Emoji"),
|
||||
local("Segoe UI Emoji"),
|
||||
local("Segoe UI Symbol");
|
||||
unicode-range: U+26a1, U+21a9, U+21aa, U+2708, U+263a, U+1fae4, U+2194-2199, U+2934-2935, U+25b6, U+25c0, U+23cf,
|
||||
U+2640, U+2642, U+2611, U+303d,U+3030, U+1f170, U+1f171, U+24c2, U+1f17e, U+1f17f, U+1f250, U+1f21a, U+1f22f,
|
||||
U+1f232-1f23a, U+1f251, U+3297, U+3299, U+2639, U+2660, U+2666, U+2665, U+2663, U+26A0, U+a9, U+ae, U+2122;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Emojis";
|
||||
src: local("Apple Color Emoji"),
|
||||
local("Segoe UI Emoji"),
|
||||
local("Segoe UI Symbol");
|
||||
}`;
|
||||
} else {
|
||||
const isWin11Browser = await isWin11();
|
||||
if (isWin11Browser) {
|
||||
style = `@font-face {
|
||||
font-family: "Emojis Additional";
|
||||
src: url(../../../appearance/fonts/Noto-COLRv1-2.047/Noto-COLRv1.woff2) format("woff2");
|
||||
unicode-range: U+1fae9, U+1fac6, U+1fabe, U+1fadc, U+e50a, U+1fa89, U+1fadf, U+1f1e6-1f1ff, U+1f3f4, U+e0067, U+e0062,
|
||||
U+e0065, U+e006e, U+e0067, U+e007f, U+e0073, U+e0063, U+e0074, U+e0077, U+e006c;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Emojis Reset";
|
||||
src: local("Segoe UI Emoji"),
|
||||
local("Segoe UI Symbol");
|
||||
unicode-range: U+263a, U+21a9, U+2642, U+303d, U+2197, U+2198, U+2199, U+2196, U+2195, U+2194, U+2660, U+2665, U+2666,
|
||||
U+2663, U+3030, U+21aa, U+25b6, U+25c0, U+2640, U+203c, U+a9, U+ae, U+2122;;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Emojis";
|
||||
src: local("Segoe UI Emoji"),
|
||||
local("Segoe UI Symbol");
|
||||
}`;
|
||||
} else {
|
||||
style = `@font-face {
|
||||
font-family: "Emojis Reset";
|
||||
src: url(../../../appearance/fonts/Noto-COLRv1-2.047/Noto-COLRv1.woff2) format("woff2");
|
||||
unicode-range: U+263a, U+2194-2199, U+2934-2935, U+2639, U+26a0, U+25b6, U+25c0, U+23cf, U+2640, U+2642, U+203c, U+2049,
|
||||
U+2611, U+303d, U+1f170-1f171, U+24c2, U+1f17e, U+1f17f, U+1f22f, U+1f250, U+1f21a, U+1f232-1f23a, U+1f251, U+3297,
|
||||
U+3299, U+25aa, U+25ab, U+2660, U+2666, U+2665, U+2663, U+1f636, U+1f62e, U+1f642, U+1f635, U+2620, U+2763, U+2764,
|
||||
U+1f441, U+fe0f, U+1f5e8, U+270c, U+261d, U+270d, U+200d, U+e50a, U+3030, U+21aa, U+21a9, U+1f525, U+1fa79, U+1f4ab,
|
||||
U+1f4a8, U+1f32b, U+a9, U+ae, U+2122;;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Emojis";
|
||||
src: url(../../../appearance/fonts/Noto-COLRv1-2.047/Noto-COLRv1.woff2) format("woff2"),
|
||||
local("Segoe UI Emoji"),
|
||||
local("Segoe UI Symbol"),
|
||||
local("Apple Color Emoji"),
|
||||
local("Twemoji Mozilla"),
|
||||
local("Noto Color Emoji"),
|
||||
local("Android Emoji"),
|
||||
local("EmojiSymbols");
|
||||
}`;
|
||||
}
|
||||
}
|
||||
style += `.b3-typography, .protyle-wysiwyg, .protyle-title {font-size:${window.siyuan.config.editor.fontSize}px !important}
|
||||
.b3-typography code:not(.hljs), .protyle-wysiwyg span[data-type~=code] { font-variant-ligatures: ${window.siyuan.config.editor.codeLigatures ? "normal" : "none"} }
|
||||
.li > .protyle-action {height:${height + 8}px;line-height: ${height + 8}px}
|
||||
.protyle-wysiwyg [data-node-id].li > .protyle-action ~ .h1, .protyle-wysiwyg [data-node-id].li > .protyle-action ~ .h2, .protyle-wysiwyg [data-node-id].li > .protyle-action ~ .h3, .protyle-wysiwyg [data-node-id].li > .protyle-action ~ .h4, .protyle-wysiwyg [data-node-id].li > .protyle-action ~ .h5, .protyle-wysiwyg [data-node-id].li > .protyle-action ~ .h6 {line-height:${height + 8}px;}
|
||||
|
@ -219,7 +288,7 @@ export const setInlineStyle = (set = true) => {
|
|||
.protyle-wysiwyg .li {min-height:${height + 8}px}
|
||||
.protyle-gutters button svg {height:${height}px}`;
|
||||
if (window.siyuan.config.editor.fontFamily) {
|
||||
style += `\n.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title {font-family: "${window.siyuan.config.editor.fontFamily}", var(--b3-font-family)}`;
|
||||
style += `\n.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title {font-family: "Emojis Additional", "Emojis Reset", "${window.siyuan.config.editor.fontFamily}", var(--b3-font-family)}`;
|
||||
}
|
||||
// pad 端菜单移除显示,如工作空间
|
||||
if ("ontouchend" in document) {
|
||||
|
|
|
@ -154,8 +154,10 @@ export const movePathTo = (cb: (toPath: string[], toNotebook: string[]) => void,
|
|||
return;
|
||||
}
|
||||
const dialog = new Dialog({
|
||||
title: `${title || window.siyuan.languages.move}
|
||||
<div style="max-height: 16px;overflow: auto;line-height: 14px;-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0, #000 6px);padding-bottom: 4px;margin-bottom: -4px" class="ft__smaller ft__on-surface fn__hidescrollbar"></div>`,
|
||||
title: `<div style="padding: 8px;">
|
||||
${title || window.siyuan.languages.move}
|
||||
<div style="max-height: 16px;overflow: auto;line-height: 14px;-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0, #000 6px);padding-bottom: 4px;margin-bottom: -4px" class="ft__smaller ft__on-surface fn__hidescrollbar"></div>
|
||||
</div>`,
|
||||
content: `<div class="b3-form__icon" style="margin: 8px">
|
||||
<span data-menu="true" class="b3-form__icon-list fn__a b3-tooltips b3-tooltips__s" aria-label="${updateHotkeyTip("⌥↓")}">
|
||||
<svg class="svg--mid"><use xlink:href="#iconSearch"></use></svg>
|
||||
|
@ -178,6 +180,7 @@ export const movePathTo = (cb: (toPath: string[], toNotebook: string[]) => void,
|
|||
}
|
||||
}
|
||||
});
|
||||
dialog.element.querySelector(".b3-dialog__header").setAttribute("style", "padding:0");
|
||||
dialog.element.setAttribute("data-key", Constants.DIALOG_MOVEPATHTO);
|
||||
if (paths && paths.length > 0) {
|
||||
fetchPost("/api/filetree/getHPathsByPaths", {paths}, (response) => {
|
||||
|
@ -260,7 +263,7 @@ export const movePathTo = (cb: (toPath: string[], toNotebook: string[]) => void,
|
|||
|
||||
const toggleMovePathHistory = () => {
|
||||
const keys = window.siyuan.storage[Constants.LOCAL_MOVE_PATH].keys;
|
||||
if (!keys || keys.length === 0) {
|
||||
if (!keys || keys.length === 0 || (keys.length === 1 && keys[0] === inputElement.value)) {
|
||||
return;
|
||||
}
|
||||
const menu = new Menu("move-path-history");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import {Constants} from "../constants";
|
||||
import {webFrame} from "electron";
|
||||
import {ipcRenderer, webFrame} from "electron";
|
||||
import {fetchPost} from "../util/fetch";
|
||||
import {adjustLayout, getInstanceById, JSONToCenter} from "../layout/util";
|
||||
import {resizeTabs} from "../layout/tabUtil";
|
||||
|
@ -16,6 +16,11 @@ import {initWindowEvent} from "../boot/globalEvent/event";
|
|||
|
||||
export const init = (app: App) => {
|
||||
webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]);
|
||||
ipcRenderer.send(Constants.SIYUAN_CMD, {
|
||||
cmd: "setTrafficLightPosition",
|
||||
zoom: window.siyuan.storage[Constants.LOCAL_ZOOM],
|
||||
position: Constants.SIZE_ZOOM.find((item) => item.zoom === window.siyuan.storage[Constants.LOCAL_ZOOM]).position
|
||||
});
|
||||
initWindowEvent(app);
|
||||
fetchPost("/api/system/getEmojiConf", {}, response => {
|
||||
window.siyuan.emojis = response.data as IEmoji[];
|
||||
|
|
2
app/stage/protyle/js/lute/lute.min.js
vendored
2
app/stage/protyle/js/lute/lute.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -75,13 +75,6 @@ module.exports = (env, argv) => {
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.woff2$/,
|
||||
type: "asset/resource",
|
||||
generator: {
|
||||
filename: "../fonts/[name][ext]",
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.(png|svg)$/,
|
||||
use: [
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue