Merge remote-tracking branch 'origin/master'

# Conflicts:
#	.github/workflows/cd.yml
#	.gitignore
#	README.md
#	app/package.json
#	app/src/config/account.ts
#	kernel/util/working.go
#	scripts/darwin-build.sh
#	scripts/parse-changelog.py
This commit is contained in:
Ying 2024-05-15 15:44:07 +08:00
commit ab54ef47d9
170 changed files with 10375 additions and 1421 deletions

View File

@ -0,0 +1,84 @@
name: Upload to AUR
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check tag aka check release type
id: checktag
run: |
if [[ "${{ github.ref }}" == *"dev"* ]]; then
echo "Skip the workflow as the tag contains 'dev'"
echo "::set-output name=skip::true"
else
echo "Continue the workflow"
echo "::set-output name=skip::false"
fi
shell: bash
- name: Extract tag name
id: get_version
run: echo ::set-output name=TAG_VERSION::${{ github.event.release.tag_name }}
- name: Extra tag name without v
id: get_version_without_v
run: echo ::set-output name=TAG_VERSION_WITHOUT_V::$(echo "${{ github.event.release.tag_name }}" | sed 's/^v//')
- name: Extract package_file_name
id: get_package_file_name
run: echo ::set-output name=PACKAGE_FILE_NAME::siyuan-${{ steps.get_version_without_v.outputs.TAG_VERSION_WITHOUT_V }}-linux.AppImage
- name: Create PKGBUILD
run: |
cat << EOF >> PKGBUILD
# maintainer: zxkmm (IHp4a21tQGhvdG1haWwuY29t)
# auto running on siyuan official repo
# PKGBUILD is modified from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=siyuan-appimage
# which is made by vvxxp8 <concatenate[g] the characters[x] in square[b] brackets[1] in[5] order[3] at gmail dot com>
pkgname=siyuan_stable
pkgver=${{ steps.get_version.outputs.TAG_VERSION }}
pkgrel=0
pkgdesc="auto upload to AUR when SiYuan stable release"
arch=("x86_64")
url="https://b3log.org/siyuan"
license=("AGPL-3.0-only")
_pkgname=${{ steps.get_package_file_name.outputs.PACKAGE_FILE_NAME }}
noextract=(${{ steps.get_package_file_name.outputs.PACKAGE_FILE_NAME }})
options=("!strip" "!debug")
depends=("fuse2")
optdepends=('pandoc: docx export')
source=("\${_pkgname}::https://github.com/siyuan-note/siyuan/releases/download/${{ steps.get_version.outputs.TAG_VERSION }}/${{ steps.get_package_file_name.outputs.PACKAGE_FILE_NAME }}")
sha256sums=('SKIP')
_installdir=/opt/appimages
prepare() {
chmod a+x \${_pkgname}
./\${_pkgname} --appimage-extract >/dev/null
sed -i "s+AppRun+\${_installdir}/siyuan.AppImage+" "squashfs-root/siyuan.desktop"
sed -i "s+^Icon=.*+Icon=siyuan_stable+" "squashfs-root/siyuan.desktop"
}
package() {
install -Dm755 \${_pkgname} "\${pkgdir}/\${_installdir}/siyuan.AppImage"
install -Dm644 "squashfs-root/resources/stage/icon.png" "\${pkgdir}/usr/share/icons/hicolor/512x512/apps/siyuan_stable.png"
install -Dm644 "squashfs-root/siyuan.desktop" "\${pkgdir}/usr/share/applications/siyuan_stable.desktop"
}
EOF
- name: Publish AUR package
uses: KSXGitHub/github-actions-deploy-aur@v2.7.1
with:
pkgname: siyuan_stable
pkgbuild: ./PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: Update AUR package
ssh_keyscan_types: rsa,dsa,ecdsa,ed25519

View File

@ -2,8 +2,8 @@ name: CD For SiYuan Unlock
on:
push:
branches:
- master
tags:
- 'v'
workflow_dispatch:
# ref https://docs.github.com/zh/actions/learn-github-actions/variables
@ -29,10 +29,10 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.11"
- run: pip install PyGithub
- id: thislatestR
- id: thisLatestRelease
uses: pozetroninc/github-action-get-latest-release@master
with:
# owner: siyuan-note
@ -41,26 +41,39 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
excludes: prerelease, draft
- name: Gather Release Information
id: release_info
run: |
echo "release_title=$(git show --format=%s --no-patch | head -1)" >> $GITHUB_OUTPUT
echo "release_version=$(TZ=Asia/Shanghai date +'v%Y%m%d%H%M')" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Extract version from package.json
uses: sergeysova/jq-action@v2
id: version
with:
cmd: 'jq .version ${{ env.package_json }} -r'
- name: Extract electronVersion from package.json
uses: sergeysova/jq-action@v2
id: electronVersion
with:
cmd: "jq .devDependencies.electron ${{ env.package_json }} -r"
- name: Extract packageManager from package.json
uses: sergeysova/jq-action@v2
id: packageManager
with:
cmd: "jq .packageManager ${{ env.package_json }} -r"
- name: Gather Release Information
id: release_info
run: |
echo "release_title=$(git show --format=%s --no-patch | head -1)" >> $GITHUB_OUTPUT
echo "release_version=$(TZ=Asia/Shanghai date +'v%Y%m%d%H%M')" >> $GITHUB_OUTPUT
changelog_header=$(python scripts/parse-changelog-HEAD.py -t ${{ github.ref }} -b ${{ steps.thisLatestRelease.outputs.release }} -e ${{ steps.electronVersion.outputs.value }} ${{ env.repo_owner }}/${{ env.repo_name }})
changelog=$(python scripts/parse-changelog.py -t ${{ github.ref }} ${{ env.repo_owner }}/${{ env.repo_name }})
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "release_body<<$EOF" >> $GITHUB_ENV
echo "$changelog_header" >> $GITHUB_ENV
echo "$changelog" >> $GITHUB_ENV
echo "$EOF" >> $GITHUB_ENV
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Release
id: create_release
uses: ncipollo/release-action@v1
@ -206,7 +219,7 @@ jobs:
run: ${{ github.workspace }}\go\${{ matrix.config.gobin }}\goversioninfo -platform-specific=true -icon="resource\icon.ico" -manifest="resource\goversioninfo.exe.manifest"
if: "contains( matrix.config.goos, 'windows')"
working-directory: ${{ github.workspace }}/go/src/github.com/${{ env.repo_owner }}/${{ env.repo_name }}/kernel
- name: Building Kernel
run: go build --tags fts5 -o "${{ matrix.config.kernel_path }}" -v -ldflags "${{ matrix.config.build_args_prefix }} github.com/${{ env.repo_owner }}/${{ env.repo_name }}/kernel/util.${{ matrix.config.build_args_suffix }}"
working-directory: ${{ github.workspace }}/go/src/github.com/${{ env.repo_owner }}/${{ env.repo_name }}/kernel
@ -216,8 +229,8 @@ jobs:
GOOS: ${{ matrix.config.goos }}
GOPATH: ${{ github.workspace }}/go
GOARCH: ${{ matrix.config.goarch }}
- name: Building Electron
- name: Building Electron App
run: pnpm run ${{ matrix.config.electron_args }}
working-directory: ${{ github.workspace }}/go/src/github.com/${{ env.repo_owner }}/${{ env.repo_name }}/app

4
.gitignore vendored
View File

@ -38,4 +38,6 @@ lerna-debug.log*
# NPM Package
package-lock.json
yarn.lock
*.directory
# workflows
**/__pycache__

View File

@ -900,7 +900,7 @@
* `fromID`:定义块 ID
* `toID`:目标块 ID
* `refIDs`:指向定义块 ID 的引用所在块 ID可选如果不指定所有指向定义块 ID 的引用 ID 都会被转移
* `refIDs`:指向定义块 ID 的引用所在块 ID可选如果不指定所有指向定义块 ID 的引用 ID 都会被转移
* 返回值
```json

View File

@ -1,7 +1,7 @@
<p align="center">
<img alt="SiYuan" src="https://b3log.org/images/brand/siyuan-128.png">
<br>
重构你的思维
<em>重构你的思维</em>
<br><br>
<a title="Build Status" target="_blank" href="https://github.com/siyuan-note/siyuan/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/siyuan-note/siyuan/cd.yml?style=flat-square"></a>
<a title="Releases" target="_blank" href="https://github.com/siyuan-note/siyuan/releases"><img src="https://img.shields.io/github/release/siyuan-note/siyuan.svg?style=flat-square&color=9CF"></a>
@ -58,7 +58,7 @@
* 网页剪藏
* PDF 标注双链
* 导出
* 引用和嵌入块
* 引用和嵌入块
* 带 assets 文件夹的标准 Markdown
* PDF、Word 和 HTML
* 复制到微信公众号、知乎和语雀
@ -117,7 +117,7 @@
桌面端:
* [Microsoft Store](https://www.microsoft.com/store/apps/9P7HPMXP73K4)
* [Microsoft Store](https://apps.microsoft.com/detail/9p7hpmxp73k4)
### Docker 部署

View File

@ -1,4 +1,7 @@
{
"enterKey": "Enter",
"doubleClick": "Double Click",
"click": "Click",
"allowHTMLBLockScript": "Allow execution of scripts within HTML blocks",
"allowHTMLBLockScriptTip": "After enabling, the script in the HTML block will not be sanitized, Please be aware of the potential risk of XSS attacks",
"autoLaunchMode0": "Do not launch automatically",
@ -115,7 +118,7 @@
"freezeCol": "Freeze column",
"unfreezeCol": "Unfreeze column",
"snippetsTip": "The code snippet has been updated, do you want to save it?",
"addBelowAbove": "Click to add below<br>⌥Click to add above",
"addBelowAbove": "Click <span class='ft__on-surface'>Add below</span><br>⌥Click <span class='ft__on-surface'>Add above</span>",
"imported": "Import completed",
"mirrorTip": "Mirror database, all data updates will be synchronized to all other mirrors",
"includeTime": "Include time",
@ -422,9 +425,9 @@
"dynamicLoadBlocks": "Number of dynamically loaded blocks",
"dynamicLoadBlocksTip": "This value contains the number of subblocks. If there are many code blocks, formula blocks or chart blocks that need to be rendered, it is recommended not to set too large",
"backlinkExpand": "Backlink default expand",
"backlinkExpandTip": "If configured as <code class='fn__code'>0</code>, it will not be expanded",
"backlinkExpandTip": "If configured as <code class='fn__code'>0</code>",
"backmentionExpand": "Backmention default expand",
"backmentionExpandTip": "If configured as <code class='fn__code'>0</code>, it will not be expanded",
"backmentionExpandTip": "If configured as <code class='fn__code'>0</code>, it will not be expanded, if configured as <code class='fn__code'>-1</code>, the panel will be closed",
"googleAnalytics": "Google Analytics",
"googleAnalyticsTip": "After enabling, it will use <a href=\"https://analytics.google.com/\" target=\"_blank\">Google Analytics</a> to count the opening status of the application and will not collect users data and operations",
"floatWindowMode": "Floating window trigger method",
@ -781,9 +784,9 @@
"customSort": "Custom Sorting",
"collapse": "Collapse",
"blockEmbed": "Embed Block",
"rowTip": "Click to open menu<br>Drag to sort",
"gutterTip": "Click/⌘/ to open menu<br>⌘Click to focus<br>⌥Click/⌥→ to fold/expand<br>⇧Click/⌥⌘A to update attr<br>Drag to move<br>⌃Drag to duplicate<br>⌥Drag to ref<br> ⇧Drag to embed<br>",
"gutterTip2": "Click to open the menu<br>⇧Click Update attribute",
"rowTip": "Click <span class='ft__on-surface'>Open Menu</span><br>Drag <span class='ft__on-surface'>Sort</span>",
"gutterTip": "Click/⌘/ <span class='ft__on-surface'>Open Menu</span><br>⌘Click/⌥→ <span class='ft__on-surface'>Focus</span><br>⌥Click/⌘↑ <span class='ft__on-surface'>Collapse/Expand</span><br>⇧Click/⌥⌘A <span class='ft__on-surface'>Update attribute</span><br>Drag <span class='ft__on-surface'>Move position</span><br>⌃Drag <span class='ft__on-surface'>Repeat</span><br>⌥Drag <span class='ft__on-surface'>Generate block reference</span><br>⇧Drag <span class='ft__on-surface'>Generate embedded block</span>",
"gutterTip2": "Click <span class='ft__on-surface'>Open Menu</span><br>⇧Click <span class='ft__on-surface'>Update attribute</span>",
"linkDistance": "Link distance",
"collideStrength": "Collide strength",
"collideRadius": "Collide radius",
@ -1099,7 +1102,8 @@
"config": "Settings",
"userName": "Username",
"password": "Password",
"passphrase": "Passphrase",
"passphrase": "Password",
"reEnterPassphrase": "Enter the Password again",
"theme": "Theme",
"language": "Language",
"about": "About",
@ -1232,7 +1236,8 @@
"task.database.index.embedBlock": "Execute database index embed block",
"task.reload.ui": "Execute reload UI",
"task.asset.database.index.full": "Execute asset database rebuild index",
"task.asset.database.index.commit": "Execute asset database index commit"
"task.asset.database.index.commit": "Execute asset database index commit",
"task.cache.virtualBlockRef": "Execute cache virtual reference"
},
"_trayMenu": {
"showWindow": "Show Window",
@ -1496,6 +1501,7 @@
"243": "Only list the first [%d] tags (including subtags), if you need to adjust, please modify [Settings - Doc Tree - Maximum number to list]",
"244": "It did not exit normally after the last use. It is recommended to execute [Doc Tree - Rebuild Index]. In the future, please exit the program completely before shutting down the computer",
"245": "It did not exit normally after the last use. It is recommended to execute [Doc Tree - Rebuild Index]. In the future, please use [Exit Application] in the right panel to exit normally",
"246": "The document title cannot contain / and has been replaced with _"
"246": "The document title cannot contain / and has been replaced with _",
"247": "File [%s] is larger than the maximum limit [%s], and has been ignored for uploading to the cloud"
}
}

View File

@ -1,4 +1,7 @@
{
"enterKey": "Entrar",
"doubleClick": "Doble clic",
"click": "Hacer clic",
"allowHTMLBLockScript": "Permitir la ejecución de scripts dentro de bloques HTML",
"allowHTMLBLockScriptTip": "Después de habilitarlo, el script en el bloque HTML no se desinfectará. Tenga en cuenta el riesgo potencial de ataques XSS",
"autoLaunchMode0": "No iniciar automáticamente",
@ -115,7 +118,7 @@
"freezeCol": "Congelar columna",
"unfreezeCol": "Descongelar columna",
"snippetsTip": "El fragmento de código ha sido actualizado, ¿quieres guardarlo?",
"addBelowAbove": "Haga clic para agregar abajo<br>⌥Clic para agregar arriba",
"addBelowAbove": "Haga clic en <span class='ft__on-surface'>Agregar abajo</span><br>⌥Haga clic en <span class='ft__on-surface'>Agregar arriba</span>",
"imported": "Importación completada",
"mirrorTip": "Base de datos espejo, todas las actualizaciones de datos se sincronizarán con todos los demás espejos",
"includeTime": "Incluir tiempo",
@ -422,9 +425,9 @@
"dynamicLoadBlocks": "Número de bloques cargados dinámicamente",
"dynamicLoadBlocksTip": "Este valor contiene el número de subbloques. Si hay muchos bloques de código, bloques de fórmulas o bloques de gráficos que necesitan renderizarse, se recomienda no configurarlos demasiado grandes",
"backlinkExpand": "Expansión predeterminada de vínculo de retroceso",
"backlinkExpandTip": "Si se configura como <code class='fn__code'>0</code>, no se expandirá",
"backlinkExpandTip": "Si se configura como <code class='fn__code'>0</code>",
"backmentionExpand": "Expansión predeterminada de la mención",
"backmentionExpandTip": "Si se configura como <code class='fn__code'>0</code>, no se expandirá",
"backmentionExpandTip": "Si se configura como <code class='fn__code'>0</code>, no se expandirá, , si se configura como <code class='fn__code'>-1</code>, el panel se cerrará",
"googleAnalytics": "Google Analytics",
"googleAnalyticsTip": "Después de habilitarlo, usará <a href=\"https://analytics.google.com/\" target=\"_blank\">Google Analytics</a> para contar el estado de apertura del aplicación y no recopilará datos y operaciones de los usuarios",
"floatWindowMode": "Método de activación de ventana flotante",
@ -781,9 +784,9 @@
"customSort": "Clasificación personalizada",
"collapse": "Colapsar",
"blockEmbed": "Integrar Bloque",
"rowTip": "Haz clic para abrir el menú<br>Arrastra para ordenar",
"gutterTip": "Haga clic/⌘/ para abrir el menú<br>⌘Haga clic/⌥→ para enfocar<br>⌥Haga clic/⌥⌘A para plegar/expandir<br>⇧Haga clic para actualizar attr<br>Arrastre para mover<br>⌃Arrastre para duplicar<br>⌥ Arrastra para ref<br> ⇧Arrastra para incrustar<br>",
"gutterTip2": "Haga clic para abrir el menú<br>⇧Haga clic en Actualizar atributo",
"rowTip": "Haga clic en <span class='ft__on-surface'>Abrir menú</span><br>Arrastre <span class='ft__on-surface'>Ordenar</span>",
"gutterTip": "Haga clic/⌘/ <span class='ft__on-surface'>Abrir menú</span><br>⌘Haga clic/⌥→ <span class='ft__on-surface'>Enfoque</span><br>⌥Hacer clic/⌘↑ <span class='ft__on-surface'>Contraer/Expandir</span><br>⇧Hacer clic/⌥⌘A <span class='ft__on-surface'>Actualizar atributo</span><br>Arrastrar <span class='ft__on-surface'>Mover posición</span><br>⌃Arrastrar <span class='ft__on-surface'>Repetir</span><br>⌥Arrastra <span class='ft__on-surface'>Generar referencia a bloque</span><br>⇧Arrastrar <span class='ft__on-surface'>Generar bloque incrustado</span>",
"gutterTip2": "Haga clic en <span class='ft__on-surface'>Abrir menú</span><br>⇧Haga clic en <span class='ft__on-surface'>Actualizar atributo</span>",
"linkDistance": "Distancia de enlace",
"collideStrength": "Fuerza de colisión",
"collideRadius": "Radio de colisión",
@ -1099,7 +1102,8 @@
"config": "Configuración",
"userName": "Nombre de usuario",
"password": "Contraseña",
"passphrase": "Frase de contraseña",
"passphrase": "Contraseña",
"reEnterPassphrase": "Introduce la Contraseña nuevamente",
"theme": "Tema",
"language": "Idioma",
"about": "Acerca de",
@ -1232,7 +1236,8 @@
"task.database.index.embedBlock": "Ejecutar bloque de incrustación de índice de base de datos",
"task.reload.ui": "IU de recarga de tareas",
"task.asset.database.index.full": "Ejecutar índice de reconstrucción de base de datos de activos",
"task.asset.database.index.commit": "Ejecutar confirmación del índice de la base de datos de activos"
"task.asset.database.index.commit": "Ejecutar confirmación del índice de la base de datos de activos",
"task.cache.virtualBlockRef": "Ejecutar referencia virtual de caché"
},
"_trayMenu": {
"showWindow": "Mostrar ventana",
@ -1496,6 +1501,7 @@
"243": "Enumere solo las primeras [%d] etiquetas (incluidas las subetiquetas), modifique [Configuración - Árbol de documentos - Número máximo a listar]",
"244": "No salió normalmente después del último uso. Se recomienda ejecutar [Árbol de documentos - Reconstruir índice]. En el futuro, salga del programa por completo antes de apagar la computadora",
"245": "No salió normalmente después del último uso. Se recomienda ejecutar [Árbol de documentos - Reconstruir índice]. En el futuro, utilice [Salir de la aplicación] en el panel derecho para salir normalmente",
"246": "El título del documento no puede contener / y ha sido reemplazado por _"
"246": "El título del documento no puede contener / y ha sido reemplazado por _",
"247": "El archivo [%s] es más grande que el límite máximo [%s] y se ha ignorado para cargarlo en la nube"
}
}

View File

@ -1,4 +1,7 @@
{
"enterKey": "Entrer",
"doubleClick": "Double-clic",
"click": "Cliquez sur",
"allowHTMLBLockScript": "Autoriser l'exécution de scripts dans les blocs HTML",
"allowHTMLBLockScriptTip": "Après activation, le script dans le bloc HTML ne sera pas nettoyé. Veuillez être conscient du risque potentiel d'attaques XSS",
"autoLaunchMode0": "Ne pas lancer automatiquement",
@ -65,7 +68,7 @@
"selectRelation": "Veuillez d'abord sélectionner la colonne associée",
"backRelation": "Bidirectionnel",
"thisDatabase": "Cette base de données",
"relatedTo" : " Relation avec ",
"relatedTo": " Relation avec ",
"relation": "Relation",
"rollup": "Rollup",
"rollupProperty": "Propriété",
@ -115,7 +118,7 @@
"freezeCol": "Geler la colonne",
"unfreezeCol": "Dégeler la colonne",
"snippetsTip": "L'extrait de code a été mis à jour, voulez-vous le sauvegarder ?",
"addBelowAbove": "Cliquez pour ajouter ci-dessous<br>⌥Cliquez pour ajouter ci-dessus",
"addBelowAbove": "Cliquez sur <span class='ft__on-surface'>Ajouter ci-dessous</span><br>⌥Cliquez sur <span class='ft__on-surface'>Ajouter ci-dessus</span>",
"imported": "Importation terminée",
"mirrorTip": "Base de données miroir, toutes les mises à jour des données seront synchronisées avec tous les autres miroirs",
"includeTime": "Inclure l'heure",
@ -422,9 +425,9 @@
"dynamicLoadBlocks": "Nombre de blocs chargés dynamiquement",
"dynamicLoadBlocksTip": "Cette valeur contient le nombre de sous-blocs. S'il y a beaucoup de blocs de code, de blocs de formule ou de blocs de graphique qui doivent être rendus, il est recommandé de ne pas définir trop grand",
"backlinkExpand": "Développer le lien retour par défaut",
"backlinkExpandTip": "Si configuré comme <code class='fn__code'>0</code>, il ne sera pas développé",
"backlinkExpandTip": "Si configuré comme <code class='fn__code'>0</code>",
"backmentionExpand": "Développer la mention par défaut",
"backmentionExpandTip": "Si configuré comme <code class='fn__code'>0</code>, il ne sera pas développé",
"backmentionExpandTip": "Si configuré comme <code class='fn__code'>0</code>, il ne sera pas développé, s'il est configuré comme <code class='fn__code'>-1</code>, le panneau sera fermé",
"googleAnalytics": "Google Analytics",
"googleAnalyticsTip": "Après l'activation, il utilisera <a href=\"https://analytics.google.com/\" target=\"_blank\">Google Analytics</a> pour compter le statut d'ouverture du l'application et ne collectera pas les Données et Opérations des utilisateurs",
"floatWindowMode": "Méthode de déclenchement de fenêtre flottante",
@ -512,7 +515,7 @@
"copyKey": "Copier la chaîne de clé",
"importKey": "Importer la clé",
"keyPlaceholder": "Veuillez coller la chaîne de clé ici",
"clé": "Clé",
"key": "Clé",
"genKey": "Clé de gén automatique",
"genKeyByPW": "Clé gén par mot de passe",
"dataRepoKeyTip1": "Le référentiel de données est utilisé pour chiffrer et enregistrer des instantanés de données. Des instantanés peuvent être créés et restaurés dans l'historique des données",
@ -781,9 +784,9 @@
"customSort": "Tri personnalisé",
"collapse": "Collapse",
"blockEmbed": "incorporer le bloc",
"rowTip": "Cliquez pour ouvrir le menu<br>Faites glisser pour trier",
"gutterTip": "Cliquez/⌘/ pour ouvrir le menu<br>⌘Cliquez/⌥→ pour se concentrer<br>⌥Cliquez/⌥⌘A pour plier/agrandir<br>⇧Cliquez pour mettre à jour l'attribut<br>Faites glisser pour déplacer<br>⌃Faites glisser pour dupliquer<br>⌥ Faites glisser vers ref<br> ⇧Faites glisser pour incorporer<br>",
"gutterTip2": "Cliquez pour ouvrir le menu<br>⇧Click Modifier les attribut",
"rowTip": "Cliquez sur <span class='ft__on-surface'>Ouvrir le menu</span><br>Faites glisser <span class='ft__on-surface'>Tri</span>",
"gutterTip": "Cliquez/⌘/ <span class='ft__on-surface'>Ouvrir le menu</span><br>⌘Cliquez/⌥→ <span class='ft__on-surface'>Se concentrer</span><br>⌥Cliquez/⌘↑ <span class='ft__on-surface'>Réduire/Développer</span><br>⇧Cliquez/⌥⌘A <span class='ft__on-surface'>Mettre à jour l'attribut</span><br>Faites glisser <span class='ft__on-surface'>Déplacer la position</span><br>⌃Faites glisser <span class='ft__on-surface'>Répétez</span><br>⌥Faites glisser <span class='ft__on-surface'>Générer une référence de bloc</span><br>⇧Faites glisser <span class='ft__on-surface'>Générer un bloc intégré</span>",
"gutterTip2": "Cliquez sur <span class='ft__on-surface'>Ouvrir le menu</span><br>⇧Cliquez sur <span class='ft__on-surface'>Mettre à jour l'attribut</span>",
"linkDistance": "Distance du lien",
"collideStrength": "Force de collision",
"collideRadius": "Rayon de collision",
@ -1099,7 +1102,8 @@
"config": "Paramètres",
"userName": "Nom d'utilisateur",
"password": "Mot de passe",
"passphrase": "Phrase de passe",
"passphrase": "Mot de passe",
"reEnterPassphrase": "Entrez à nouveau la mot de passe",
"theme": "Thème",
"language": "Langue",
"about": "À propos de",
@ -1232,7 +1236,8 @@
"task.database.index.embedBlock": "Exécuter le bloc d'intégration d'index de base de données",
"task.reload.ui": "Interface utilisateur de rechargement de tâche",
"task.asset.database.index.full": "Exécuter l'index de reconstruction de la base de données d'actifs",
"task.asset.database.index.commit": "Exécuter la validation de l'index de la base de données des actifs"
"task.asset.database.index.commit": "Exécuter la validation de l'index de la base de données des actifs",
"task.cache.virtualBlockRef": "Effectuer une référence virtuelle du cache"
},
"_trayMenu": {
"showWindow": "Afficher la fenêtre principale",
@ -1496,6 +1501,7 @@
"243": "Répertorier uniquement les [%d] premières balises (y compris les sous-balises). veuillez modifier [Paramètres - Arbre des documents - Nombre maximum de documents à lister].",
"244": "Il ne s'est pas terminé normalement après la dernière utilisation. Il est recommandé d'exécuter [Doc Tree - Reconstruire l'index]. À l'avenir, veuillez quitter complètement le programme avant d'éteindre l'ordinateur",
"245": "Il ne s'est pas terminé normalement après la dernière utilisation. Il est recommandé d'exécuter [Doc Tree - Reconstruire l'index]. À l'avenir, veuillez utiliser [Quitter l'application] dans le panneau de droite pour quitter normalement",
"246": "Le titre du document ne peut pas contenir / et a été remplacé par _"
"246": "Le titre du document ne peut pas contenir / et a été remplacé par _",
"247": "Le fichier [%s] est plus grand que la limite maximale [%s] et a été ignoré pour le téléchargement vers le cloud"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,7 @@
{
"enterKey": "回車",
"doubleClick": "雙擊",
"click": "點擊",
"allowHTMLBLockScript": "允許執行 HTML 區塊內腳本",
"allowHTMLBLockScriptTip": "啟用後將不對 HTML 區塊中的程式碼進行安全過濾,請注意潛在的 XSS 攻擊風險",
"autoLaunchMode0": "不自動啟動",
@ -115,7 +118,7 @@
"freezeCol": "固定列",
"unfreezeCol": "取消列固定",
"snippetsTip": "程式碼片段已更新,是否儲存?",
"addBelowAbove": "Click 在下方新增<br>⌥Click 在上方新增",
"addBelowAbove": "點擊 <span class='ft__on-surface'>在下方新增</span><br>⌥點擊 <span class='ft__on-surface'>在上方新增</span>",
"imported": "導入完成",
"mirrorTip": "鏡像資料庫,所有資料更新會同步到其他所有鏡像中",
"includeTime": "具體時間",
@ -424,7 +427,7 @@
"backlinkExpand": "反向連結預設展開數",
"backlinkExpandTip": "配置為 <code class='fn__code'>0</code> 則不展開",
"backmentionExpand": "反向提及默認展開數",
"backmentionExpandTip": "配置為 <code class='fn__code'>0</code> 則不展開",
"backmentionExpandTip": "配置為 <code class='fn__code'>0</code> 則不展開,配置為 <code class='fn__code'>-1</code> 則收起面板",
"googleAnalytics": "Google Analytics",
"googleAnalyticsTip": "啟用後會通過 <a href=\"https://analytics.google.com/\" target=\"_blank\">Google Analytics</a> 統計應用打開狀態,不會收集用戶資料和操作",
"floatWindowMode": "浮窗觸發方式",
@ -781,9 +784,9 @@
"customSort": "自訂排序",
"collapse": "摺疊",
"blockEmbed": "嵌入塊",
"rowTip": "點擊 打開菜單<br>拖拽 排序",
"gutterTip": "點擊/⌘/ 打開菜單<br>⌘Click 聚焦<br>⌥Click/⌥→ 折疊/展開<br>⇧Click/⌥⌘A 修改屬性<br>拖拽 移動位置<br>⌃拖拽 重複<br>⌥拖拽 生成塊引用<br>⇧拖拽 生成嵌入塊<br>",
"gutterTip2": "點擊 打開功能表<br>⇧Click 修改屬性",
"rowTip": "點擊 <span class='ft__on-surface'>打開菜單</span><br>拖拽 <span class='ft__on-surface'>排序</span>",
"gutterTip": "點擊/⌘/ <span class='ft__on-surface'>打開菜單</span><br>⌘點擊 <span class='ft__on-surface'>聚焦</span><br>⌥點擊/⌥→ <span class='ft__on-surface'>折疊/展開</span><br>⇧點擊/⌥⌘A <span class='ft__on-surface'>修改屬性</span><br>拖拽 <span class='ft__on-surface'>移動位置</span><br>⌃拖拽 <span class='ft__on-surface'>重複</span><br>⌥拖拽 <span class='ft__on-surface'>生成塊引用</span><br>⇧拖拽 <span class='ft__on-surface'>生成嵌入塊</span>",
"gutterTip2": "點擊 <span class='ft__on-surface'>打開功能表</span><br>⇧點擊 <span class='ft__on-surface'>修改屬性</span>",
"linkDistance": "連結距離",
"collideStrength": "斥力強度",
"collideRadius": "斥力半徑",
@ -895,8 +898,8 @@
"confirmClearHistory": "確定要徹底刪除工作空間下的所有歷史資料嗎?",
"fileNameASC": "名稱字母昇冪",
"fileNameDESC": "名稱字母降冪",
"modifiedASC": "修改時間昇冪",
"modifiedDESC": "修改時間降冪",
"modifiedASC": "更新時間昇冪",
"modifiedDESC": "更新時間降冪",
"fileNameNatASC": "名稱自然昇冪",
"fileNameNatDESC": "名稱自然降冪",
"refCountASC": "引用數昇冪",
@ -914,7 +917,7 @@
"missingAssets": "丟失的資料文件",
"unreferencedAssets": "未引用的資料文件",
"paste": "貼上",
"pasteRef": "貼上引用",
"pasteRef": "貼上引用",
"pasteEmbed": "貼上塊嵌入",
"cut": "剪下",
"mentions": "提及",
@ -1015,7 +1018,7 @@
"fileTree20": "使用單行保存",
"fileTree21": "啟用後儲存 .sy 文件和資料庫 .json 時將使用單行 JSON 格式,大約能減少 30% 檔案大小並提升 50% 讀寫效率",
"export10": "例如 <code class='fn__code'>&lt;span style=\"color: #fff;background-color: black;padding: 4px;border-radius: 5px;float:right;\"&gt;SiYuan&lt;/span&gt;</code> ,為空時使用水印文字或浮水印檔案路徑。",
"export11": "匯出時關於引用內容的處理方式",
"export11": "匯出時關於引用內容的處理方式",
"export12": "匯出時關於嵌入塊內容的處理方式",
"export13": "錨文字包裹符號",
"export14": "請依次在輸入框中填寫錨文字左側符號和錨文字右側符號",
@ -1062,7 +1065,7 @@
"closeRight": "關閉右側分頁",
"closeUnmodified": "關閉未修改的分頁",
"newFileTip": "請先打開一個筆記本",
"copyBlockRef": "複製為引用",
"copyBlockRef": "複製為引用",
"copyBlockEmbed": "複製為嵌入塊",
"linkLevel": "層級",
"mark": "標記",
@ -1100,6 +1103,7 @@
"userName": "用戶名",
"password": "密碼",
"passphrase": "密碼",
"reEnterPassphrase": "再次輸入密碼",
"language": "語言",
"theme": "主題",
"about": "關於",
@ -1198,7 +1202,7 @@
"wysiwyg": "所見即所得",
"_label": "繁體中文",
"_time": {
"albl": "前",
"albl": "前",
"blbl": "距現在",
"now": "剛剛",
"1s": "1 秒%s",
@ -1232,7 +1236,8 @@
"task.database.index.embedBlock": "執行資料庫索引嵌入塊",
"task.reload.ui": "執行重載界面",
"task.asset.database.index.full": "執行資源文件數據庫重建索引",
"task.asset.database.index.commit": "執行資源文件數據庫索引提交"
"task.asset.database.index.commit": "執行資源文件數據庫索引提交",
"task.cache.virtualBlockRef": "執行快取虛擬引用"
},
"_trayMenu": {
"showWindow": "顯示主窗口",
@ -1496,6 +1501,7 @@
"243": "僅列出前 [%d] 個標籤(含子標籤),如需調整請修改 [設置 - 文檔樹 - 最大列出數量]",
"244": "上次使用後未正常退出,建議執行一次 [文檔樹 - 重建索引]。以後請完整退出程式後再關閉電腦",
"245": "上次使用後未正常退出,建議執行一次 [文檔樹 - 重建索引]。以後請使用右側欄面板中的 [退出應用] 進行正常退出",
"246": "文件標題不能包含 /,已經使用 _ 替換"
"246": "文件標題不能包含 /,已經使用 _ 替換",
"247": "檔案 [%s] 大於最大限制 [%s],已忽略上傳至社群圖床"
}
}

View File

@ -1,4 +1,7 @@
{
"enterKey": "回车",
"doubleClick": "双击",
"click": "点击",
"allowHTMLBLockScript": "允许执行 HTML 块内脚本",
"allowHTMLBLockScriptTip": "启用后将不对 HTML 块中的代码进行安全过滤,请注意潜在的 XSS 攻击风险",
"autoLaunchMode0": "不自动启动",
@ -115,7 +118,7 @@
"freezeCol": "固定列",
"unfreezeCol": "取消列固定",
"snippetsTip": "代码片段已更新,是否保存?",
"addBelowAbove": "Click 在下方添加<br>⌥Click 在上方添加",
"addBelowAbove": "点击 <span class='ft__on-surface'>在下方添加</span><br>⌥点击 <span class='ft__on-surface'>在上方添加</span>",
"imported": "导入完成",
"mirrorTip": "镜像数据库,所有数据更新会同步到其他所有镜像中",
"includeTime": "具体时间",
@ -424,7 +427,7 @@
"backlinkExpand": "反向链接默认展开数",
"backlinkExpandTip": "配置为 <code class='fn__code'>0</code> 则不展开",
"backmentionExpand": "反向提及默认展开数",
"backmentionExpandTip": "配置为 <code class='fn__code'>0</code> 则不展开",
"backmentionExpandTip": "配置为 <code class='fn__code'>0</code> 则不展开,配置为 <code class='fn__code'>-1</code> 则收起面板",
"googleAnalytics": "Google Analytics",
"googleAnalyticsTip": "启用后会通过 <a href=\"https://analytics.google.com/\" target=\"_blank\">Google Analytics</a> 统计应用打开状态,不会收集用户数据和操作",
"floatWindowMode": "浮窗触发方式",
@ -781,9 +784,9 @@
"customSort": "自定义排序",
"collapse": "折叠",
"blockEmbed": "嵌入块",
"rowTip": "点击 打开菜单<br>拖拽 排序",
"gutterTip": "点击/⌘/ 打开菜单<br>⌘Click/⌥→ 聚焦<br>⌥Click/⌘↑ 折叠/展开<br>⇧Click/⌥⌘A 修改属性<br>拖拽 移动位置<br>⌃拖拽 重复<br>⌥拖拽 生成块引用<br>⇧拖拽 生成嵌入块<br>",
"gutterTip2": "点击 打开菜单<br>⇧Click 修改属性",
"rowTip": "点击 <span class='ft__on-surface'>打开菜单</span><br>拖拽 <span class='ft__on-surface'>排序</span>",
"gutterTip": "点击/⌘/ <span class='ft__on-surface'>打开菜单</span><br>⌘点击/⌥→ <span class='ft__on-surface'>聚焦</span><br>⌥点击/⌘↑ <span class='ft__on-surface'>折叠/展开</span><br>⇧点击/⌥⌘A <span class='ft__on-surface'>修改属性</span><br>拖拽 <span class='ft__on-surface'>移动位置</span><br>⌃拖拽 <span class='ft__on-surface'>重复</span><br>⌥拖拽 <span class='ft__on-surface'>生成块引用</span><br>⇧拖拽 <span class='ft__on-surface'>生成嵌入块</span>",
"gutterTip2": "点击 <span class='ft__on-surface'>打开菜单</span><br>⇧点击 <span class='ft__on-surface'>修改属性</span>",
"linkDistance": "链接距离",
"collideStrength": "斥力强度",
"collideRadius": "斥力半径",
@ -895,8 +898,8 @@
"confirmClearHistory": "确定要彻底删除工作空间下的所有历史数据吗?",
"fileNameASC": "名称字母升序",
"fileNameDESC": "名称字母降序",
"modifiedASC": "修改时间升序",
"modifiedDESC": "修改时间降序",
"modifiedASC": "更新时间升序",
"modifiedDESC": "更新时间降序",
"fileNameNatASC": "名称自然升序",
"fileNameNatDESC": "名称自然降序",
"refCountASC": "引用数升序",
@ -914,7 +917,7 @@
"missingAssets": "丢失的资源文件",
"unreferencedAssets": "未引用的资源文件",
"paste": "粘贴",
"pasteRef": "粘贴引用",
"pasteRef": "粘贴引用",
"pasteEmbed": "粘贴块嵌入",
"cut": "剪切",
"mentions": "提及",
@ -1015,7 +1018,7 @@
"fileTree20": "使用单行保存",
"fileTree21": "启用后保存 .sy 文档和数据库 .json 时将使用单行 JSON 格式,大约能减少 30% 文件大小并提升 50% 读写效率",
"export10": "例如 <code class='fn__code'>&lt;span style=\"color: #fff;background-color: black;padding: 4px;border-radius: 5px;float:right;\"&gt;SiYuan&lt;/span&gt;</code> ,为空时使用水印文本或水印文件路径。",
"export11": "导出时关于引用内容的处理方式",
"export11": "导出时关于引用内容的处理方式",
"export12": "导出时关于嵌入块内容的处理方式",
"export13": "锚文本包裹符号",
"export14": "请依次在输入框中填写锚文本左侧符号和锚文本右侧符号",
@ -1062,7 +1065,7 @@
"closeRight": "关闭右侧页签",
"closeUnmodified": "关闭未修改的页签",
"newFileTip": "请先打开一个笔记本",
"copyBlockRef": "复制为引用",
"copyBlockRef": "复制为引用",
"copyBlockEmbed": "复制为嵌入块",
"linkLevel": "层级",
"mark": "标记",
@ -1100,6 +1103,7 @@
"userName": "用户名",
"password": "密码",
"passphrase": "密码",
"reEnterPassphrase": "再次输入密码",
"language": "语言",
"theme": "主题",
"about": "关于",
@ -1198,7 +1202,7 @@
"wysiwyg": "所见即所得",
"_label": "简体中文",
"_time": {
"albl": "前",
"albl": "前",
"blbl": "距现在",
"now": "刚刚",
"1s": "1 秒%s",
@ -1232,7 +1236,8 @@
"task.database.index.embedBlock": "执行数据库索引嵌入块",
"task.reload.ui": "执行重载界面",
"task.asset.database.index.full": "执行资源文件数据库重建索引",
"task.asset.database.index.commit": "执行资源文件数据库索引提交"
"task.asset.database.index.commit": "执行资源文件数据库索引提交",
"task.cache.virtualBlockRef": "执行缓存虚拟引用"
},
"_trayMenu": {
"showWindow": "显示主窗口",
@ -1496,6 +1501,7 @@
"243": "仅列出前 [%d] 个标签(含子标签),如需调整请修改 [设置 - 文档树 - 最大列出数量]",
"244": "上次使用后未正常退出,建议执行一次 [文档树 - 重建索引]。以后请完整退出程序后再关闭电脑",
"245": "上次使用后未正常退出,建议执行一次 [文档树 - 重建索引]。以后请使用右侧栏面板中的 [退出应用] 进行正常退出",
"246": "文档标题不能包含 /,已经使用 _ 替换"
"246": "文档标题不能包含 /,已经使用 _ 替换",
"247": "文件 [%s] 大于最大限制 [%s],已忽略上传到社区图床"
}
}

View File

@ -54,6 +54,7 @@
/* 提示 */
--b3-tooltips-background: rgba(0, 0, 0, .9);
--b3-tooltips-color: var(--b3-theme-background-light);
--b3-tooltips-second-color: #7d7c7a;
--b3-tooltips-shadow: 0 2px 8px rgba(0, 0, 0, .1);
/* av */
@ -175,6 +176,10 @@
--b3-pdf-dark: #212224;
}
:lang(ja_JP):root {
--b3-font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", sans-serif, "Apple Color Emoji", "Noto Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
}
/* https://github.com/siyuan-note/siyuan/issues/6440 */
.protyle-action--order:after {
mix-blend-mode: multiply;

View File

@ -2,7 +2,7 @@
"name": "daylight",
"author": "Vanessa",
"url": "https://github.com/Vanessa219",
"version": "1.0.6",
"version": "1.0.7",
"modes": [
"light"
]

View File

@ -54,6 +54,7 @@
/* 提示 */
--b3-tooltips-background: #030303;
--b3-tooltips-color: var(--b3-theme-on-surface-light);
--b3-tooltips-second-color: #7d7c7a;
--b3-tooltips-shadow: 0 2px 8px rgba(0, 0, 0, .3);
/* av */
@ -175,6 +176,10 @@
--b3-pdf-dark: #212224;
}
:lang(ja_JP):root {
--b3-font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", sans-serif, "Apple Color Emoji", "Noto Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
}
/* https://github.com/siyuan-note/siyuan/issues/6440 */
.protyle-action--order:after {
mix-blend-mode: screen;

View File

@ -2,7 +2,7 @@
"name": "midnight",
"author": "Vanessa",
"url": "https://github.com/Vanessa219",
"version": "1.0.6",
"version": "1.0.7",
"modes": [
"dark"
]

View File

@ -9,7 +9,7 @@
<Identity Name="89C2A984.SiYuan"
ProcessorArchitecture="x64"
Publisher="CN=087C656E-C1D9-42D8-8807-CED45A74FC0F"
Version="3.0.13.0"/>
Version="3.0.14.0"/>
<Properties>
<DisplayName>SiYuan</DisplayName>
<PublisherDisplayName>云南链滴科技有限公司</PublisherDisplayName>

View File

@ -0,0 +1,79 @@
## Overview
This version fixes some bugs and improves a lot of details.
## Changelogs
Below are the detailed changes in this version.
### Enhancement
* [Optimize rendering performance of databases containing relation fields](https://github.com/siyuan-note/siyuan/issues/11249)
* [Improve database text, email, url and phone field content escaping](https://github.com/siyuan-note/siyuan/issues/11255)
* [Improve backlink panel mention expansion configuration](https://github.com/siyuan-note/siyuan/issues/11262)
* [Improve responsiveness of code blocks](https://github.com/siyuan-note/siyuan/issues/11274)
* [Don't hide error messages when copying them](https://github.com/siyuan-note/siyuan/issues/11275)
* [Clear ZWSP when remove tag, code and kbd inline elements](https://github.com/siyuan-note/siyuan/issues/11285)
* [Improve sorting for `Add to Database`](https://github.com/siyuan-note/siyuan/issues/11286)
* [Improve link tip](https://github.com/siyuan-note/siyuan/issues/11294)
* [Improve editor preview](https://github.com/siyuan-note/siyuan/issues/11295)
* [Improve HTML code block clipping](https://github.com/siyuan-note/siyuan/issues/11296)
* [Improve database auto-fill value when enabling filter](https://github.com/siyuan-note/siyuan/issues/11297)
* [Improve data history tip](https://github.com/siyuan-note/siyuan/issues/11301)
* [In read-only mode, new files can be edited](https://github.com/siyuan-note/siyuan/issues/11302)
* [Improve `Optimize typography` for inline math](https://github.com/siyuan-note/siyuan/issues/11304)
* [Improve HTML a element clipping](https://github.com/siyuan-note/siyuan/issues/11310)
* [Improve browser extension clipping](https://github.com/siyuan-note/siyuan/issues/11315)
* [Improve selection text when over blocks](https://github.com/siyuan-note/siyuan/issues/11316)
* [Support database table view to load more when read-only](https://github.com/siyuan-note/siyuan/issues/11317)
* [The line number field no longer appears in the database attribute panel](https://github.com/siyuan-note/siyuan/issues/11319)
* [Improve Japanese translation and theme font rendering](https://github.com/siyuan-note/siyuan/pull/11322)
* [Improve multi-language support for click, double-click, and enter](https://github.com/siyuan-note/siyuan/issues/11323)
* [Improve doc tree modification time display](https://github.com/siyuan-note/siyuan/issues/11327)
* [Support Alt+Click in read-only mode](https://github.com/siyuan-note/siyuan/issues/11337)
* [Stick database table view header and footer in read-only mode](https://github.com/siyuan-note/siyuan/issues/11338)
* [Improve slash menu](https://github.com/siyuan-note/siyuan/issues/11345)
* [Triggering tag selection via `#` is no longer supported after disabling tag syntax](https://github.com/siyuan-note/siyuan/issues/11346)
* [Improve dynamic scroll bar](https://github.com/siyuan-note/siyuan/issues/11352)
* [Improve embed/ref block reindex](https://github.com/siyuan-note/siyuan/issues/11353)
* [Improve `Enter` in the last row of the table](https://github.com/siyuan-note/siyuan/issues/11355)
* [Support cancel two-way relation when related to the current database](https://github.com/siyuan-note/siyuan/issues/11356)
* [Improve the cursor when two images are connected](https://github.com/siyuan-note/siyuan/issues/11359)
* [Supports outline highlight with document sync on the mobile](https://github.com/siyuan-note/siyuan/issues/11360)
* [Improve two-way relation column name placeholder](https://github.com/siyuan-note/siyuan/issues/11361)
* [Improve `Display the VIP icon`](https://github.com/siyuan-note/siyuan/issues/11368)
* [Improve HTML inline code clipping](https://github.com/siyuan-note/siyuan/issues/11370)
* [Improve export preview mode](https://github.com/siyuan-note/siyuan/issues/11372)
* [The heading block update time is refreshed after editing the blocks under the heading](https://github.com/siyuan-note/siyuan/issues/11374)
### Bugfix
* [Lost URL content after `:` when pasting as a link](https://github.com/siyuan-note/siyuan/issues/11245)
* [Unable to create a new doc immediately after creating a new entry in the database](https://github.com/siyuan-note/siyuan/issues/11270)
* [The database cannot delete entries in rapid succession](https://github.com/siyuan-note/siyuan/issues/11271)
* [After uninstalling the plugin, data synchronization does not uninstall it](https://github.com/siyuan-note/siyuan/issues/11277)
* [Two-way relation is invalid when related to the current database](https://github.com/siyuan-note/siyuan/issues/11278)
* [`Convert network assets to local` in search cannot be refreshed](https://github.com/siyuan-note/siyuan/issues/11307)
* [Undo exception after folding heading is cut](https://github.com/siyuan-note/siyuan/issues/11312)
* [The maximum number of tags listed is incorrect](https://github.com/siyuan-note/siyuan/issues/11320)
* [HTML block content escaping is incorrect](https://github.com/siyuan-note/siyuan/issues/11321)
* [The parent doc cannot be folded after creating a new sub-doc](https://github.com/siyuan-note/siyuan/issues/11325)
* [Database table view continuously adds new rows above error](https://github.com/siyuan-note/siyuan/issues/11335)
* [Block attributes are not refreshed after data syncing](https://github.com/siyuan-note/siyuan/issues/11343)
* [Undo exception after Delete in the last line of the code block](https://github.com/siyuan-note/siyuan/issues/11362)
* [Opening notebook repeatedly causes reference count to increase](https://github.com/siyuan-note/siyuan/issues/11378)
### Document
* [Improve user guide](https://github.com/siyuan-note/siyuan/pull/11299)
### Development
* [Update plugin `loaded-protyle-dynamic` parameter positon to position](https://github.com/siyuan-note/siyuan/pull/11298)
* [Arch User Repository (AUR) auto release](https://github.com/siyuan-note/siyuan/pull/11309)
* [Add a kernel API `/api/block/getBlockTreeInfos`](https://github.com/siyuan-note/siyuan/issues/11311)
## Download
* [B3log](https://b3log.org/siyuan/en/download.html)
* [GitHub](https://github.com/siyuan-note/siyuan/releases)

View File

@ -0,0 +1,79 @@
## 概述
該版本修復了一些缺陷並改進了許多細節。
## 變更記錄
以下是此版本中的詳細變更。
### 改進功能
* [最佳化包含關聯欄位的資料庫的渲染效能](https://github.com/siyuan-note/siyuan/issues/11249)
* [改進資料庫文字、電子郵件、URL 和 電話欄位內容的轉義](https://github.com/siyuan-note/siyuan/issues/11255)
* [改進反向連結面板提及擴充配置](https://github.com/siyuan-note/siyuan/issues/11262)
* [提高程式碼區塊的自適應性](https://github.com/siyuan-note/siyuan/issues/11274)
* [複製時不隱藏錯誤訊息](https://github.com/siyuan-note/siyuan/issues/11275)
* [刪除標籤、程式碼和鍵盤行級元素時清除零寬空格](https://github.com/siyuan-note/siyuan/issues/11285)
* [改進 `加入資料庫` 的排序](https://github.com/siyuan-note/siyuan/issues/11286)
* [改進連結提示](https://github.com/siyuan-note/siyuan/issues/11294)
* [改進編輯器預覽](https://github.com/siyuan-note/siyuan/issues/11295)
* [改進 HTML 程式碼區塊剪藏](https://github.com/siyuan-note/siyuan/issues/11296)
* [啟用過濾器時改進資料庫自動填充值](https://github.com/siyuan-note/siyuan/issues/11297)
* [改進資料歷史提示](https://github.com/siyuan-note/siyuan/issues/11301)
* [在唯讀模式下,可以編輯新檔案](https://github.com/siyuan-note/siyuan/issues/11302)
* [改進行級公式的 `優化排版`](https://github.com/siyuan-note/siyuan/issues/11304)
* [改進 HTML a 元素剪藏](https://github.com/siyuan-note/siyuan/issues/11310)
* [改進瀏覽器剪藏擴充功能](https://github.com/siyuan-note/siyuan/issues/11315)
* [改進區塊上的選擇文字](https://github.com/siyuan-note/siyuan/issues/11316)
* [支援唯讀模式下的資料庫表格檢視載入更多](https://github.com/siyuan-note/siyuan/issues/11317)
* [資料庫屬性面板不再顯示行號欄位](https://github.com/siyuan-note/siyuan/issues/11319)
* [改進日文翻譯與主題字體渲染](https://github.com/siyuan-note/siyuan/pull/11322)
* [改進點擊、雙擊和輸入的多語言支援](https://github.com/siyuan-note/siyuan/issues/11323)
* [改進文件樹更新時間顯示](https://github.com/siyuan-note/siyuan/issues/11327)
* [支援唯讀模式下的 Alt+點擊](https://github.com/siyuan-note/siyuan/issues/11337)
* [在唯讀模式下貼上資料庫表格視圖的頭部和底部](https://github.com/siyuan-note/siyuan/issues/11338)
* [改進斜線選單](https://github.com/siyuan-note/siyuan/issues/11345)
* [禁用標籤語法後不再支援透過 `#` 觸發標籤選擇](https://github.com/siyuan-note/siyuan/issues/11346)
* [改進動態捲軸](https://github.com/siyuan-note/siyuan/issues/11352)
* [改進嵌入/引用區塊重建索引](https://github.com/siyuan-note/siyuan/issues/11353)
* [改進表格最後一行 `Enter`](https://github.com/siyuan-note/siyuan/issues/11355)
* [支援取消與目前資料庫相關的雙向關聯](https://github.com/siyuan-note/siyuan/issues/11356)
* [改進兩個影像連接時的遊標](https://github.com/siyuan-note/siyuan/issues/11359)
* [支援在行動裝置上與文件同步的大綱反白](https://github.com/siyuan-note/siyuan/issues/11360)
* [改進雙向關聯欄位名佔位符](https://github.com/siyuan-note/siyuan/issues/11361)
* [改進 `顯示VIP圖示`](https://github.com/siyuan-note/siyuan/issues/11368)
* [改進 HTML 行級程式碼元素剪藏](https://github.com/siyuan-note/siyuan/issues/11370)
* [改進匯出預覽模式](https://github.com/siyuan-note/siyuan/issues/11372)
* [標題下方區塊編輯後刷新標題區塊更新時間](https://github.com/siyuan-note/siyuan/issues/11374)
### 修復缺陷
* [貼為連結時,`:`後的 URL 內容遺失](https://github.com/siyuan-note/siyuan/issues/11245)
* [在資料庫中建立新條目後無法立即建立新文件](https://github.com/siyuan-note/siyuan/issues/11270)
* [資料庫無法連續刪除條目](https://github.com/siyuan-note/siyuan/issues/11271)
* [卸載插件後資料同步未同步卸載](https://github.com/siyuan-note/siyuan/issues/11277)
* [與目前資料庫相關時,雙向關聯無效](https://github.com/siyuan-note/siyuan/issues/11278)
* [搜尋中的 `將網路資源轉換為本地` 無法刷新](https://github.com/siyuan-note/siyuan/issues/11307)
* [折疊標題被剪切後撤銷異常](https://github.com/siyuan-note/siyuan/issues/11312)
* [列出的標籤最大數量不正確](https://github.com/siyuan-note/siyuan/issues/11320)
* [HTML 區塊內容轉義不正確](https://github.com/siyuan-note/siyuan/issues/11321)
* [建立新的子文件後無法折疊父親文件](https://github.com/siyuan-note/siyuan/issues/11325)
* [資料庫表格檢視連續在上方新增一行錯誤](https://github.com/siyuan-note/siyuan/issues/11335)
* [資料同步後區塊屬性不刷新](https://github.com/siyuan-note/siyuan/issues/11343)
* [在程式碼區塊的最後一行刪除後撤銷異常](https://github.com/siyuan-note/siyuan/issues/11362)
* [重複開啟筆記本導致引用計數增加](https://github.com/siyuan-note/siyuan/issues/11378)
### 改進文檔
* [改進使用者指南](https://github.com/siyuan-note/siyuan/pull/11299)
### 開發者
* [更新外掛程式 `loaded-protyle-dynamic` 參數 positon 為 position](https://github.com/siyuan-note/siyuan/pull/11298)
* [Arch 使用者倉庫 (AUR) 自動發布](https://github.com/siyuan-note/siyuan/pull/11309)
* [新增一個核心 API `/api/block/getBlockTreeInfos`](https://github.com/siyuan-note/siyuan/issues/11311)
## 下載
* [B3log](https://b3log.org/siyuan/download.html)
* [GitHub](https://github.com/siyuan-note/siyuan/releases)

View File

@ -0,0 +1,79 @@
## 概述
该版本修复了一些缺陷并改进了很多细节。
## 变更记录
以下是此版本中的详细变更。
### 改进功能
* [优化包含关联字段的数据库的渲染性能](https://github.com/siyuan-note/siyuan/issues/11249)
* [改进数据库文本、电子邮件、URL 和 电话字段内容的转义](https://github.com/siyuan-note/siyuan/issues/11255)
* [改进反向链接面板提及扩展配置](https://github.com/siyuan-note/siyuan/issues/11262)
* [提高代码块的自适应性](https://github.com/siyuan-note/siyuan/issues/11274)
* [复制时不隐藏错误消息](https://github.com/siyuan-note/siyuan/issues/11275)
* [删除标签、代码和键盘行级元素时清除零宽空格](https://github.com/siyuan-note/siyuan/issues/11285)
* [改进 `添加到数据库` 的排序](https://github.com/siyuan-note/siyuan/issues/11286)
* [改进链接提示](https://github.com/siyuan-note/siyuan/issues/11294)
* [改进编辑器预览](https://github.com/siyuan-note/siyuan/issues/11295)
* [改进 HTML 代码块剪藏](https://github.com/siyuan-note/siyuan/issues/11296)
* [启用过滤器时改进数据库自动填充值](https://github.com/siyuan-note/siyuan/issues/11297)
* [改进数据历史提示](https://github.com/siyuan-note/siyuan/issues/11301)
* [在只读模式下,可以编辑新文件](https://github.com/siyuan-note/siyuan/issues/11302)
* [改进行级公式的 `优化排版`](https://github.com/siyuan-note/siyuan/issues/11304)
* [改进 HTML a 元素剪藏](https://github.com/siyuan-note/siyuan/issues/11310)
* [改进浏览器剪藏扩展](https://github.com/siyuan-note/siyuan/issues/11315)
* [改进块上的选择文本](https://github.com/siyuan-note/siyuan/issues/11316)
* [支持只读模式下的数据库表格视图加载更多](https://github.com/siyuan-note/siyuan/issues/11317)
* [数据库属性面板不再显示行号字段](https://github.com/siyuan-note/siyuan/issues/11319)
* [改进日语翻译和主题字体渲染](https://github.com/siyuan-note/siyuan/pull/11322)
* [改进点击、双击和输入的多语言支持](https://github.com/siyuan-note/siyuan/issues/11323)
* [改进文档树更新时间显示](https://github.com/siyuan-note/siyuan/issues/11327)
* [支持只读模式下的 Alt+点击](https://github.com/siyuan-note/siyuan/issues/11337)
* [在只读模式下粘贴数据库表格视图的头部和底部](https://github.com/siyuan-note/siyuan/issues/11338)
* [改进斜杠菜单](https://github.com/siyuan-note/siyuan/issues/11345)
* [禁用标签语法后不再支持通过 `#` 触发标签选择](https://github.com/siyuan-note/siyuan/issues/11346)
* [改进动态滚动条](https://github.com/siyuan-note/siyuan/issues/11352)
* [改进嵌入/引用块重建索引](https://github.com/siyuan-note/siyuan/issues/11353)
* [改进表格最后一行 `Enter`](https://github.com/siyuan-note/siyuan/issues/11355)
* [支持取消与当前数据库相关的双向关联](https://github.com/siyuan-note/siyuan/issues/11356)
* [改进两个图像连接时的光标](https://github.com/siyuan-note/siyuan/issues/11359)
* [支持在移动设备上与文档同步的大纲突出显示](https://github.com/siyuan-note/siyuan/issues/11360)
* [改进双向关联字段名占位符](https://github.com/siyuan-note/siyuan/issues/11361)
* [改进 `显示VIP图标`](https://github.com/siyuan-note/siyuan/issues/11368)
* [改进 HTML 行级代码元素剪藏](https://github.com/siyuan-note/siyuan/issues/11370)
* [改进导出预览模式](https://github.com/siyuan-note/siyuan/issues/11372)
* [标题下方块编辑后刷新标题块更新时间](https://github.com/siyuan-note/siyuan/issues/11374)
### 修复缺陷
* [粘贴为链接时,`:`后的 URL 内容丢失](https://github.com/siyuan-note/siyuan/issues/11245)
* [在数据库中创建新条目后无法立即创建新文档](https://github.com/siyuan-note/siyuan/issues/11270)
* [数据库无法连续删除条目](https://github.com/siyuan-note/siyuan/issues/11271)
* [卸载插件后数据同步未同步卸载](https://github.com/siyuan-note/siyuan/issues/11277)
* [与当前数据库相关时,双向关联无效](https://github.com/siyuan-note/siyuan/issues/11278)
* [搜索中的 `将网络资源转换为本地` 无法刷新](https://github.com/siyuan-note/siyuan/issues/11307)
* [折叠标题被剪切后撤销异常](https://github.com/siyuan-note/siyuan/issues/11312)
* [列出的标签最大数量不正确](https://github.com/siyuan-note/siyuan/issues/11320)
* [HTML 块内容转义不正确](https://github.com/siyuan-note/siyuan/issues/11321)
* [创建新的子文档后无法折叠父文档](https://github.com/siyuan-note/siyuan/issues/11325)
* [数据库表格视图连续在上方添加新行错误](https://github.com/siyuan-note/siyuan/issues/11335)
* [数据同步后块属性不刷新](https://github.com/siyuan-note/siyuan/issues/11343)
* [在代码块的最后一行删除后撤销异常](https://github.com/siyuan-note/siyuan/issues/11362)
* [重复打开笔记本导致引用计数增加](https://github.com/siyuan-note/siyuan/issues/11378)
### 改进文档
* [改进用户指南](https://github.com/siyuan-note/siyuan/pull/11299)
### 开发者
* [更新插件 `loaded-protyle-dynamic` 参数 positon 为 position](https://github.com/siyuan-note/siyuan/pull/11298)
* [Arch 用户仓库 (AUR) 自动发布](https://github.com/siyuan-note/siyuan/pull/11309)
* [添加一个内核 API `/api/block/getBlockTreeInfos`](https://github.com/siyuan-note/siyuan/issues/11311)
## 下载
* [B3log](https://b3log.org/siyuan/download.html)
* [GitHub](https://github.com/siyuan-note/siyuan/releases)

View File

@ -551,7 +551,7 @@ const initKernel = (workspace, port, lang) => {
errorWindowId = showErrorWindow("⚠️ 初始化工作空间失败 Failed to create workspace directory", "<div>初始化工作空间失败。</div><div>Failed to init workspace.</div>");
break;
case 26:
errorWindowId = showErrorWindow("🚒 已成功避免潜在的数据损坏<br>Successfully avoid potential data corruption", "<div>工作空间下的文件正在被第三方软件(比如同步盘 iCloud/OneDrive/Dropbox/Google Drive/坚果云/百度网盘/腾讯微云等)扫描读取占用,继续使用会导致数据损坏,思源内核已经安全退出。<br><br>请将工作空间移动到其他路径后再打开,停止同步盘同步工作空间。如果以上步骤无法解决问题,请参考<a href=\"https://ld246.com/article/1684586140917\">这里</a>或者<a href=\"https://ld246.com/article/1649901726096\" target=\"_blank\">发帖</a>寻求帮助。</div><hr><div>The files in the workspace are being scanned and read by third-party software (such as sync disk iCloud/OneDrive/Dropbox/Google Drive/Nutstore/Baidu Netdisk/Tencent Weiyun, etc.), continuing to use it will cause data corruption, and the SiYuan kernel is already safe shutdown.<br><br>Move the workspace to another path and open it again, stop the sync disk to sync the workspace. If the above steps do not resolve the issue, please look for help or report bugs <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">here</a>.</div>");
errorWindowId = showErrorWindow("🚒 已成功避免潜在的数据损坏<br>Successfully avoid potential data corruption", "<div>工作空间下的文件正在被第三方软件(比如同步盘 iCloud/OneDrive/Dropbox/Google Drive/坚果云/百度网盘/腾讯微云等)扫描读取占用,继续使用会导致数据损坏,思源内核已经安全退出。<br><br>请将工作空间移动到其他路径后再打开,停止同步盘同步工作空间。如果以上步骤无法解决问题,请参考<a href=\"https://ld246.com/article/1684586140917\" target=\"_blank\">这里</a>或者<a href=\"https://ld246.com/article/1649901726096\" target=\"_blank\">发帖</a>寻求帮助。</div><hr><div>The files in the workspace are being scanned and read by third-party software (such as sync disk iCloud/OneDrive/Dropbox/Google Drive/Nutstore/Baidu Netdisk/Tencent Weiyun, etc.), continuing to use it will cause data corruption, and the SiYuan kernel is already safe shutdown.<br><br>Move the workspace to another path and open it again, stop the sync disk to sync the workspace. If the above steps do not resolve the issue, please look for help or report bugs <a href=\"https://liuyun.io/article/1686530886208\" target=\"_blank\">here</a>.</div>");
break;
case 0:
break;

File diff suppressed because it is too large Load Diff

View File

@ -6,16 +6,128 @@
"icon": "1f36b",
"id": "20210808180303-6yi0dv5",
"title": "Content Block",
"updated": "20210808180303"
"type": "doc",
"updated": "20240508004133"
},
"Children": [
{
"ID": "20210808180303-q8oudv4",
"ID": "20240508004133-v0dtdgq",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180303-q8oudv4",
"updated": "20210808180303"
}
"id": "20240508004133-v0dtdgq",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924101106-19z4kaa",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "What is a Content Block"
}
]
},
{
"ID": "20240508004133-jt7pj8w",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004133-jt7pj8w",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924101225-k254i8g",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Content Block Type"
}
]
},
{
"ID": "20240508004133-qii4jdf",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004133-qii4jdf",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924101256-f8b1sbi",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Ref Content Block"
}
]
},
{
"ID": "20240508004133-5dhbqvk",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004133-5dhbqvk",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924101200-gss5vee",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Navigate in the Content Block"
}
]
},
{
"ID": "20240508004133-q94afcq",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004133-q94afcq",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201210233038-3xr19g5",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Conversion of Document and Heading"
}
]
},
{
"ID": "20240508004133-uqr0mi8",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004133-uqr0mi8",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201117112518-dott91x",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Embed Content Block"
}
]
},
{
"ID": "20240508004133-vmv4jyo",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004133-vmv4jyo",
"updated": "20240508004133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210613191509-cbkxcbz",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Content Block Attribute"
}
]
}
]
}

View File

@ -6,7 +6,7 @@
"id": "20200924101225-k254i8g",
"title": "Content Block Type",
"type": "doc",
"updated": "20240427231144"
"updated": "20240513102037"
},
"Children": [
{
@ -1095,7 +1095,8 @@
"ID": "20210104091538-o0ti5xd",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104091538-o0ti5xd"
"id": "20210104091538-o0ti5xd",
"updated": "20210104091538"
},
"Children": [
{
@ -1104,6 +1105,70 @@
}
]
},
{
"ID": "20240513101855-fukkugx",
"Type": "NodeParagraph",
"Properties": {
"id": "20240513101855-fukkugx",
"updated": "20240513101900"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "tag",
"TextMarkTextContent": "Note"
},
{
"Type": "NodeText",
"Data": ":"
}
]
},
{
"ID": "20240513101855-sh0lm1f",
"Type": "NodeParagraph",
"Properties": {
"id": "20240513101855-sh0lm1f",
"updated": "20240513102037"
},
"Children": [
{
"Type": "NodeText",
"Data": "It is not recommended to use first-level headings in the text. It is recommended to use second-level heading as top-level headings. In this way, "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "Settings"
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "Export"
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "Add document title"
},
{
"Type": "NodeText",
"Data": ", the overall heading hierarchy will comply with normal logic when exported."
}
]
},
{
"ID": "20210104091538-u3ku9wo",
"Type": "NodeHeading",
@ -1814,7 +1879,8 @@
"ID": "20210104091538-9zkv22k",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104091538-9zkv22k"
"id": "20210104091538-9zkv22k",
"updated": "20210104091538"
},
"Children": [
{
@ -1834,6 +1900,20 @@
}
]
},
{
"ID": "20240510235622-zfu6ujw",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235622-zfu6ujw",
"updated": "20240510235721"
},
"Children": [
{
"Type": "NodeText",
"Data": "The unordered list block can only contain list item blocks, and neighboring unordered list blocks are widely spaced."
}
]
},
{
"ID": "20210104091538-lb00enw",
"Type": "NodeParagraph",
@ -2003,12 +2083,13 @@
"ID": "20210104091538-1ix6ueu",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104091538-1ix6ueu"
"id": "20210104091538-1ix6ueu",
"updated": "20240510235637"
},
"Children": [
{
"Type": "NodeText",
"Data": "An ordered list block is a type "
"Data": "The ordered list block is a type "
},
{
"Type": "NodeTextMark",
@ -2023,6 +2104,20 @@
}
]
},
{
"ID": "20240510235620-trltkc3",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235620-trltkc3",
"updated": "20240510235659"
},
"Children": [
{
"Type": "NodeText",
"Data": "The ordered list block can only contain list item blocks, and neighboring ordered list blocks are widely spaced."
}
]
},
{
"ID": "20210104091538-uz0na96",
"Type": "NodeHeading",
@ -2200,6 +2295,20 @@
}
]
},
{
"ID": "20240510235512-za4depm",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235512-za4depm",
"updated": "20240510235706"
},
"Children": [
{
"Type": "NodeText",
"Data": "The task list block can only contain list item blocks, and neighboring task list blocks are widely spaced."
}
]
},
{
"ID": "20210104091538-wqiaxdu",
"Type": "NodeHeading",
@ -2265,7 +2374,8 @@
"ID": "20210104091538-lbf2al4",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104091538-lbf2al4"
"id": "20210104091538-lbf2al4",
"updated": "20210104091538"
},
"Children": [
{
@ -2285,6 +2395,20 @@
}
]
},
{
"ID": "20240510235301-s4nj22e",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235301-s4nj22e",
"updated": "20240510235356"
},
"Children": [
{
"Type": "NodeText",
"Data": "List item blocks are contained within a list block, and neighboring list item blocks are less widely spaced."
}
]
},
{
"ID": "20210104091538-w91ot9s",
"Type": "NodeHeading",

View File

@ -6,7 +6,7 @@
"id": "20201117112518-dott91x",
"title": "Embed Content Block",
"type": "doc",
"updated": "20221007175159"
"updated": "20240508085416"
},
"Children": [
{
@ -419,7 +419,8 @@
"Type": "NodeBlockQueryEmbed",
"Properties": {
"id": "20210111231445-gwfrxnl",
"updated": "20211222185405"
"style": "height: 1120px;",
"updated": "20240508085416"
},
"Children": [
{
@ -430,7 +431,7 @@
},
{
"Type": "NodeBlockQueryEmbedScript",
"Data": "SELECT * FROM blocks WHERE content LIKE '%In SiYuan%' AND content LIKE '%core concept%' AND hpath NOT LIKE '%Embed Content Block%'"
"Data": "SELECT * FROM blocks WHERE content LIKE '%In SiYuan%' AND content LIKE '%core concept%' AND type = 'p' AND hpath NOT LIKE '%Embed Content Block%'"
},
{
"Type": "NodeCloseBrace"

View File

@ -6,16 +6,43 @@
"icon": "1f3a8",
"id": "20210808180303-axh6q1d",
"title": "Custom Appearance",
"updated": "20210808180303"
"type": "doc",
"updated": "20240508004341"
},
"Children": [
{
"ID": "20210808180303-j9oz1rg",
"ID": "20240508004341-z4ugefi",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180303-j9oz1rg",
"updated": "20210808180303"
}
"id": "20240508004341-z4ugefi",
"updated": "20240508004341"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100110-vcg96wy",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Icon"
}
]
},
{
"ID": "20240508004341-6pgvimp",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004341-6pgvimp",
"updated": "20240508004341"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924095938-a9p5450",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Theme"
}
]
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f371",
"id": "20210808180303-h361q1i",
"title": "Editor",
"updated": "20210808180303"
"type": "doc",
"updated": "20240508004216"
},
"Children": [
{
@ -177,12 +178,55 @@
]
},
{
"ID": "20210808180303-a0ht38y",
"ID": "20240508004216-2xo697q",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180303-a0ht38y",
"updated": "20210808180303"
}
"id": "20240508004216-2xo697q",
"updated": "20240508004216"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924093441-ft2rhps",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Formatting elements"
}
]
},
{
"ID": "20240508004216-zyuk3yd",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004216-zyuk3yd",
"updated": "20240508004216"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20220628204454-hhxohv5",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Optimize typography"
}
]
},
{
"ID": "20240508004216-4uhl2nh",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004216-4uhl2nh",
"updated": "20240508004216"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20221016204105-qx2aq0g",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Outline by Heading and List"
}
]
}
]
}

View File

@ -6,16 +6,94 @@
"icon": "1f50d",
"id": "20210808180303-l3qg72k",
"title": "Advanced search",
"updated": "20210808180303"
"type": "doc",
"updated": "20240508004303"
},
"Children": [
{
"ID": "20210808180303-1dj9ymv",
"ID": "20240508004303-nqo982y",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180303-1dj9ymv",
"updated": "20210808180303"
}
"id": "20240508004303-nqo982y",
"updated": "20240508004303"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20220415232231-pqcizol",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Query syntax"
}
]
},
{
"ID": "20240508004303-cfhkbkf",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004303-cfhkbkf",
"updated": "20240508004303"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201222100339-i5hzcph",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Database table"
}
]
},
{
"ID": "20240508004303-ybxo9fy",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004303-ybxo9fy",
"updated": "20240508004303"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201222100222-q47d64s",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Type filtering"
}
]
},
{
"ID": "20240508004303-is7baf3",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004303-is7baf3",
"updated": "20240508004303"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240119211017-1vbbt95",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Ignore indexing"
}
]
},
{
"ID": "20240508004303-axo1h8z",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004303-axo1h8z",
"updated": "20240508004303"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240119212048-0huuevw",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Ignore search"
}
]
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f68c",
"id": "20210808180303-xaduj2o",
"title": "General Operations",
"updated": "20210808180303"
"type": "doc",
"updated": "20240508004537"
},
"Children": [
{
@ -14,8 +15,391 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180303-1931idj",
"updated": "20210808180303"
}
"updated": "20240508004436"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230106104821-9nfphwm",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Workspace"
}
]
},
{
"ID": "20240508004438-d49y0r5",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004438-d49y0r5",
"updated": "20240508004438"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100808-j9sddk9",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Import and Export"
}
]
},
{
"ID": "20240508004440-0kxbkre",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004440-0kxbkre",
"updated": "20240508004440"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210505164949-c085p1d",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Web Clipping"
}
]
},
{
"ID": "20240508004443-yduv1h7",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004443-yduv1h7",
"updated": "20240508004443"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100906-0u4zfq3",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Window and Tab"
}
]
},
{
"ID": "20240508004445-8fs1grc",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004445-8fs1grc",
"updated": "20240508004446"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210110181011-fbhoesf",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Daily notes"
}
]
},
{
"ID": "20240508004448-m5bxg49",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004448-m5bxg49",
"updated": "20240508004448"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100635-ms0p9lb",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Bookmark and Tag"
}
]
},
{
"ID": "20240508004450-1n0jb1j",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004450-1n0jb1j",
"updated": "20240508004451"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240208172514-9dsv6na",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Database"
}
]
},
{
"ID": "20240508004453-q3oc1ma",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004453-q3oc1ma",
"updated": "20240508004453"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210824202056-udkf7wg",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Widgets"
}
]
},
{
"ID": "20240508004456-oi2vc7t",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004456-oi2vc7t",
"updated": "20240508004456"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230506205948-yah52eb",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Plugins"
}
]
},
{
"ID": "20240508004458-8ze29km",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004458-8ze29km",
"updated": "20240508004458"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100744-br924ar",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Assets"
}
]
},
{
"ID": "20240508004501-dsk470r",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004501-dsk470r",
"updated": "20240508004501"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201204184532-3qm9l8n",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Template snippet"
}
]
},
{
"ID": "20240508004503-igouzyi",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004503-igouzyi",
"updated": "20240508004503"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210127203829-qe2mzof",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "PDF annotation"
}
]
},
{
"ID": "20240508004506-l1o6uga",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004506-l1o6uga",
"updated": "20240508004506"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211010212318-3wx2kqb",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Virtual reference"
}
]
},
{
"ID": "20240508004508-qssxra9",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004508-qssxra9",
"updated": "20240508004509"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210331201142-4g923es",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Hyperlink"
}
]
},
{
"ID": "20240508004512-8jkoaay",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004512-8jkoaay",
"updated": "20240508004513"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210615213222-vs5tzbd",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Data history"
}
]
},
{
"ID": "20240508004516-03hidmo",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004516-03hidmo",
"updated": "20240508004516"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20221223221636-ms2b4w9",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Flashcards"
}
]
},
{
"ID": "20240508004518-1149qu7",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004518-1149qu7",
"updated": "20240508004519"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230304000547-ibldj1z",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Artificial Intelligence"
}
]
},
{
"ID": "20240508004522-vujpuw1",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004522-vujpuw1",
"updated": "20240508004522"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100950-9op5xi1",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Shortcuts"
}
]
},
{
"ID": "20240508004525-mkbjhje",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004525-mkbjhje",
"updated": "20240508004525"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201004194026-s8h2cog",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Use on browser"
}
]
},
{
"ID": "20240508004528-jzh49m5",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004528-jzh49m5",
"updated": "20240508004528"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201227201128-m1wrouw",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Docker hosting"
}
]
},
{
"ID": "20240508004531-frsd2ts",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004531-frsd2ts",
"updated": "20240508004531"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200924100717-yzwzn64",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Kernel parameter"
}
]
},
{
"ID": "20240508004534-qoadnms",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004534-qoadnms",
"updated": "20240508004534"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201227201751-gv0fpx2",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Kernel API"
}
]
},
{
"ID": "20240508004537-14enffy",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004537-14enffy",
"updated": "20240508004537"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230104152135-1iei0xa",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Share document"
}
]
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f308",
"id": "20210808180303-v9awwp0",
"title": "Cloud Services",
"updated": "20230805231707"
"type": "doc",
"updated": "20240508004725"
},
"Children": [
{
@ -29,9 +30,40 @@
"ListData": {},
"Properties": {
"id": "20230627215141-57hf66s",
"updated": "20230802131124"
"updated": "20240508004725"
},
"Children": [
{
"ID": "20240508004643-z5324av",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508004643-z5324av",
"updated": "20240508004644"
},
"Children": [
{
"ID": "20240508004643-4ge0n4r",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508004643-4ge0n4r",
"updated": "20240508004644"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210721112159-9p645xm",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Storage"
}
]
}
]
},
{
"ID": "20230627215143-rk0fvgy",
"Type": "NodeListItem",
@ -93,6 +125,37 @@
}
]
},
{
"ID": "20230627215154-orvtmhs",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20230627215154-orvtmhs",
"updated": "20240508004725"
},
"Children": [
{
"ID": "20230627215154-a5gj5qo",
"Type": "NodeParagraph",
"Properties": {
"id": "20230627215154-a5gj5qo",
"updated": "20230627215159"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210721160238-yvhbh0h",
"TextMarkBlockRefSubtype": "s",
"TextMarkTextContent": "Assets hosting"
}
]
}
]
},
{
"ID": "20230802131114-4anamcv",
"Type": "NodeListItem",
@ -123,36 +186,6 @@
]
}
]
},
{
"ID": "20230627215154-orvtmhs",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20230627215154-orvtmhs"
},
"Children": [
{
"ID": "20230627215154-a5gj5qo",
"Type": "NodeParagraph",
"Properties": {
"id": "20230627215154-a5gj5qo",
"updated": "20230627215159"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210721160238-yvhbh0h",
"TextMarkBlockRefSubtype": "s",
"TextMarkTextContent": "Assets hosting"
}
]
}
]
}
]
},

View File

@ -5,7 +5,8 @@
"Properties": {
"id": "20230802114825-2jkkct7",
"title": "Inbox",
"updated": "20230802115024"
"type": "doc",
"updated": "20240508010253"
},
"Children": [
{
@ -57,12 +58,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230802114928-gcmnpw5",
"updated": "20230802115037"
"updated": "20240508010253"
},
"Children": [
{
"Type": "NodeText",
"Data": "Currently, the following methods are provided for data access."
"Data": "Currently, the following method are provided for data access."
}
]
},

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,8 @@
"icon": "1f371",
"id": "20210808180320-abz7w6k",
"title": "编辑器",
"updated": "20210808180320"
"type": "doc",
"updated": "20240507235438"
},
"Children": [
{
@ -182,12 +183,55 @@
]
},
{
"ID": "20210808180320-vyqtyoi",
"ID": "20240507235438-05re3zi",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180320-vyqtyoi",
"updated": "20210808180320"
}
"id": "20240507235438-05re3zi",
"updated": "20240507235438"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200825162036-4dx365o",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "排版元素"
}
]
},
{
"ID": "20240507235438-ow9015t",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235438-ow9015t",
"updated": "20240507235438"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20220628204444-9n0y9h2",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "优化排版"
}
]
},
{
"ID": "20240507235438-dyw2otm",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235438-dyw2otm",
"updated": "20240507235438"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20221016213308-uz5af79",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "通过标题列表概述"
}
]
}
]
}

View File

@ -6,16 +6,128 @@
"icon": "1f36b",
"id": "20210808180320-fqgskfj",
"title": "内容块",
"updated": "20210808180320"
"type": "doc",
"updated": "20240507235241"
},
"Children": [
{
"ID": "20210808180320-vk0kg8n",
"ID": "20240507235241-gp3vbz4",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180320-vk0kg8n",
"updated": "20210808180320"
}
"id": "20240507235241-gp3vbz4",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200813004931-q4cu8na",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "什么是内容块"
}
]
},
{
"ID": "20240507235241-cc4dyv2",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235241-cc4dyv2",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200905090211-2vixtlf",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "内容块类型"
}
]
},
{
"ID": "20240507235241-g3chf5d",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235241-g3chf5d",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200813013559-sgbzl5k",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "引用内容块"
}
]
},
{
"ID": "20240507235241-wqz0d0o",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235241-wqz0d0o",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200813131152-0wk5akh",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "在内容块中遨游"
}
]
},
{
"ID": "20240507235241-kczvxta",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235241-kczvxta",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201210103036-1x3vm8t",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "文档块和标题块的转换"
}
]
},
{
"ID": "20240507235241-snnxghb",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235241-snnxghb",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201117101902-2ewjjum",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "嵌入内容块"
}
]
},
{
"ID": "20240507235241-a37u0gy",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235241-a37u0gy",
"updated": "20240507235241"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210612224500-ywcms1m",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "内容块属性"
}
]
}
]
}

View File

@ -371,7 +371,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "鼠标悬浮引用前面的标识会弹出预览浮窗"
"Data": "鼠标悬浮引用前面的标识会弹出预览浮窗"
}
]
}
@ -403,7 +403,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "单击反链列表中的引用进行跳转"
"Data": "单击反链列表中的引用进行跳转"
}
]
}

View File

@ -6,7 +6,7 @@
"id": "20200905090211-2vixtlf",
"title": "内容块类型",
"type": "doc",
"updated": "20240427230507"
"updated": "20240513102051"
},
"Children": [
{
@ -1091,6 +1091,70 @@
}
]
},
{
"ID": "20240513100721-6hasxsk",
"Type": "NodeParagraph",
"Properties": {
"id": "20240513100721-6hasxsk",
"updated": "20240513100725"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "tag",
"TextMarkTextContent": "注意"
},
{
"Type": "NodeText",
"Data": ""
}
]
},
{
"ID": "20240513100725-fefiba9",
"Type": "NodeParagraph",
"Properties": {
"id": "20240513100725-fefiba9",
"updated": "20240513102051"
},
"Children": [
{
"Type": "NodeText",
"Data": "不建议在正文中使用一级标题,建议使用二级标题作为顶层标题,这样在开启了 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "设置"
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "导出"
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "添加文档标题"
},
{
"Type": "NodeText",
"Data": " 后,整体的标题层级在导出时才符合正常逻辑。"
}
]
},
{
"ID": "20210104090624-a6yjlte",
"Type": "NodeHeading",
@ -1819,11 +1883,26 @@
}
]
},
{
"ID": "20240510234951-58h7o7g",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510234951-58h7o7g",
"updated": "20240510235019"
},
"Children": [
{
"Type": "NodeText",
"Data": "无序列表块只能包含列表项块,相邻的无序列表块间距较大。"
}
]
},
{
"ID": "20210104090624-5p4i03b",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104090624-5p4i03b"
"id": "20210104090624-5p4i03b",
"updated": "20210104090624"
},
"Children": [
{
@ -1837,7 +1916,7 @@
},
{
"Type": "NodeText",
"Data": "。"
"Data": "。"
}
]
},
@ -1987,7 +2066,8 @@
"ID": "20210104090624-13yo86l",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104090624-13yo86l"
"id": "20210104090624-13yo86l",
"updated": "20210104090624"
},
"Children": [
{
@ -2007,6 +2087,20 @@
}
]
},
{
"ID": "20240510234949-rphupr1",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510234949-rphupr1",
"updated": "20240510234959"
},
"Children": [
{
"Type": "NodeText",
"Data": "有序列表块只能包含列表项块,相邻的有序列表块间距较大。"
}
]
},
{
"ID": "20210104090624-mvu5j2d",
"Type": "NodeHeading",
@ -2184,6 +2278,20 @@
}
]
},
{
"ID": "20240510234858-y5tx7l9",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510234858-y5tx7l9",
"updated": "20240510234944"
},
"Children": [
{
"Type": "NodeText",
"Data": "任务列表块只能包含列表项块,相邻的任务列表块间距较大。"
}
]
},
{
"ID": "20210104090624-n9anlgh",
"Type": "NodeHeading",
@ -2249,7 +2357,8 @@
"ID": "20210104090624-wcbtwum",
"Type": "NodeParagraph",
"Properties": {
"id": "20210104090624-wcbtwum"
"id": "20210104090624-wcbtwum",
"updated": "20210104090624"
},
"Children": [
{
@ -2269,6 +2378,20 @@
}
]
},
{
"ID": "20240510234715-ystlvq4",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510234715-ystlvq4",
"updated": "20240510234833"
},
"Children": [
{
"Type": "NodeText",
"Data": "列表项块被包含在列表块内,相邻的列表项块间距较小。"
}
]
},
{
"ID": "20210104090624-37f19ny",
"Type": "NodeHeading",

View File

@ -6,7 +6,7 @@
"id": "20201117101902-2ewjjum",
"title": "嵌入内容块",
"type": "doc",
"updated": "20211223192455"
"updated": "20240508085440"
},
"Children": [
{
@ -419,7 +419,7 @@
"Type": "NodeBlockQueryEmbed",
"Properties": {
"id": "20210111224926-ju1sd4d",
"updated": "20211222185346"
"updated": "20240508085440"
},
"Children": [
{
@ -430,7 +430,7 @@
},
{
"Type": "NodeBlockQueryEmbedScript",
"Data": "SELECT * FROM blocks WHERE content LIKE '%在思源中%' AND content LIKE '%核心概念%' AND hpath NOT LIKE '%嵌入内容块%'"
"Data": "SELECT * FROM blocks WHERE content LIKE '%在思源中%' AND content LIKE '%核心概念%' AND type = 'p' AND hpath NOT LIKE '%嵌入内容块%'"
},
{
"Type": "NodeCloseBrace"

View File

@ -6,16 +6,94 @@
"icon": "1f50d",
"id": "20210808180320-gyngv2x",
"title": "搜索进阶",
"updated": "20210808180320"
"type": "doc",
"updated": "20240507235528"
},
"Children": [
{
"ID": "20210808180320-7qthcmd",
"ID": "20240507235528-fs3ue7a",
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180320-7qthcmd",
"updated": "20210808180320"
}
"id": "20240507235528-fs3ue7a",
"updated": "20240507235528"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20220415190432-r3xqn3r",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "查询语法"
}
]
},
{
"ID": "20240507235528-oyyqh0l",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235528-oyyqh0l",
"updated": "20240507235528"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201222093044-rx4zjoy",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "数据库表"
}
]
},
{
"ID": "20240507235528-mvec0bf",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235528-mvec0bf",
"updated": "20240507235528"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201222095049-hghafhe",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "类型过滤"
}
]
},
{
"ID": "20240507235528-ltl5jsc",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235528-ltl5jsc",
"updated": "20240507235528"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240119205452-o8xp4ve",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "忽略索引"
}
]
},
{
"ID": "20240507235528-tov8lr5",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235528-tov8lr5",
"updated": "20240507235528"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240119205543-hknwwrl",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "忽略搜索"
}
]
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f3a8",
"id": "20210808180320-qgr0b3q",
"title": "自定义外观",
"updated": "20210808180320"
"type": "doc",
"updated": "20240508000054"
},
"Children": [
{
@ -14,7 +15,40 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180320-20o026n",
"updated": "20210808180320"
"updated": "20240508000028"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200922101913-d5yitmq",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "图标"
}
]
},
{
"ID": "20240508000030-hqwj7ey",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508000030-hqwj7ey",
"updated": "20240508000031"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200922102318-oz84yu3",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "主题"
}
]
},
{
"ID": "20240508000054-oeruvuw",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508000054-oeruvuw"
}
}
]

View File

@ -6,7 +6,8 @@
"icon": "1f68c",
"id": "20210808180321-hbvl5c2",
"title": "通用操作",
"updated": "20210814001414"
"type": "doc",
"updated": "20240507235859"
},
"Children": [
{
@ -14,8 +15,391 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20210808180321-nvp3dph",
"updated": "20210814001414"
}
"updated": "20240507235744"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230106101434-e6g4av3",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "工作空间"
}
]
},
{
"ID": "20240507235746-hrw2wb8",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235746-hrw2wb8",
"updated": "20240507235747"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200813125307-pxsjela",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "导入和导出"
}
]
},
{
"ID": "20240507235749-1elyi8d",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235749-1elyi8d",
"updated": "20240507235750"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210505163537-oo97zov",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "剪藏"
}
]
},
{
"ID": "20240507235752-jdbytjn",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235752-jdbytjn",
"updated": "20240507235753"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200822191536-rm6hwid",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "窗口和页签"
}
]
},
{
"ID": "20240507235756-5ye4g2w",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235756-5ye4g2w",
"updated": "20240507235756"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210110175347-2xrwoiq",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "日记"
}
]
},
{
"ID": "20240507235759-wo0nq00",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235759-wo0nq00",
"updated": "20240507235759"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200910201551-h4twhas",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "书签和标签"
}
]
},
{
"ID": "20240507235802-jpoppsa",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235802-jpoppsa",
"updated": "20240507235802"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240208113259-nykkvaq",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "数据库"
}
]
},
{
"ID": "20240507235806-f9gp4ps",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235806-f9gp4ps",
"updated": "20240507235807"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210824201257-cy7icrc",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "挂件"
}
]
},
{
"ID": "20240507235810-wsg0j0j",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235810-wsg0j0j",
"updated": "20240507235810"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230506210010-houyyvy",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "插件"
}
]
},
{
"ID": "20240507235814-ytj8j2r",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235814-ytj8j2r",
"updated": "20240507235815"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200915214115-42b8zma",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "资源文件"
}
]
},
{
"ID": "20240507235817-hja9uy5",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235817-hja9uy5",
"updated": "20240507235818"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201204181006-7bkppue",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "模板片段"
}
]
},
{
"ID": "20240507235820-pofu4yi",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235820-pofu4yi",
"updated": "20240507235821"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210127202655-2334vvv",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "PDF 标注"
}
]
},
{
"ID": "20240507235823-6do0roc",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235823-6do0roc",
"updated": "20240507235823"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211010211311-ffz0wbu",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "虚拟引用"
}
]
},
{
"ID": "20240507235827-iguozve",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235827-iguozve",
"updated": "20240507235827"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210331200042-94gs1hh",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "超链接"
}
]
},
{
"ID": "20240507235831-vw2nw1r",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235831-vw2nw1r",
"updated": "20240507235832"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20210615211733-v6rzowm",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "数据历史"
}
]
},
{
"ID": "20240507235835-cys4qf8",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235835-cys4qf8",
"updated": "20240507235835"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20221223215557-o6gfsoy",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "闪卡"
}
]
},
{
"ID": "20240507235838-nor6t82",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235838-nor6t82",
"updated": "20240507235839"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230303235619-ex5l63e",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "人工智能"
}
]
},
{
"ID": "20240507235842-1tr1d6y",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235842-1tr1d6y",
"updated": "20240507235843"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200813004551-gm0pbn1",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "快捷键"
}
]
},
{
"ID": "20240507235846-14irwk5",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235846-14irwk5",
"updated": "20240507235846"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201004184819-nj8ibyg",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "在浏览器上使用"
}
]
},
{
"ID": "20240507235849-l7rtlvx",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235849-l7rtlvx",
"updated": "20240507235849"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201227173504-847cs1q",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Docker 伺服"
}
]
},
{
"ID": "20240507235852-ihdanz4",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235852-ihdanz4",
"updated": "20240507235853"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20200828105441-r76vmu5",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "内核参数"
}
]
},
{
"ID": "20240507235855-mffxcjb",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235855-mffxcjb",
"updated": "20240507235856"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20201227194925-7ipoiv6",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "内核 API"
}
]
},
{
"ID": "20240507235859-ys2qt7e",
"Type": "NodeParagraph",
"Properties": {
"id": "20240507235859-ys2qt7e",
"updated": "20240507235859"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230104144904-39br4c6",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "分享文档"
}
]
}
]
}

View File

@ -3445,7 +3445,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "复制该块为引用"
"Data": "复制该块为引用"
}
]
},

View File

@ -180,7 +180,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "在 PDF 中鼠标悬浮标注可预览引用块"
"Data": "在 PDF 中鼠标悬浮标注可预览引用标注的块"
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f308",
"id": "20230808120348-orm8sjf",
"title": "云端服务",
"updated": "20230828112142"
"type": "doc",
"updated": "20240508000309"
},
"Children": [
{
@ -29,9 +30,40 @@
"ListData": {},
"Properties": {
"id": "20230808120348-al8ydr7",
"updated": "20230828112127"
"updated": "20240508000309"
},
"Children": [
{
"ID": "20240508000308-no5cx7n",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508000308-no5cx7n",
"updated": "20240508000309"
},
"Children": [
{
"ID": "20240508000308-joowsf3",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508000308-joowsf3",
"updated": "20240508000309"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230808120347-pzvmkik",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "存储空间"
}
]
}
]
},
{
"ID": "20230808120348-tmqhiv2",
"Type": "NodeListItem",

View File

@ -1 +1 @@
{"20211226114339-dk0gtpr":8,"20211226114929-08ap1r0":9,"20211226115043-afhev0g":4,"20211226115227-r1rty9v":3,"20211226115423-d5z1joq":1,"20211226115825-mhcslw2":1,"20211226120055-9mityht":1,"20211226120147-ib6yy3i":2,"20211226120247-63nd8y5":3,"20211226120349-rbkmozu":4,"20211226120422-bkzsd2e":5,"20211226120508-yzh70eh":6,"20211226120802-77aj0is":7,"20211226120854-dr1jfx2":2,"20211226120933-vnjgwwh":3,"20211226121109-f060fkg":4,"20211226121203-rjjngpz":5,"20211226121319-emrk2yy":1,"20211226121322-9argcys":3,"20211226121329-c5v3dto":22,"20211226121332-irgblss":4,"20211226121438-xaafdo8":2,"20211226121503-k3jma6m":1,"20211226121808-fnxmngk":2,"20211226122358-hctqcn5":21,"20211226122459-08mi5cq":20,"20211226122523-rl8356a":19,"20211226122549-jktxego":18,"20211226122707-8cr09co":15,"20211226122728-cnqf7rz":14,"20211226122814-r1rdpcx":13,"20211226122943-st7fpcj":12,"20211226123004-dplpw0o":11,"20211226123038-4umgpxy":10,"20211226123101-qjw03ab":8,"20211226123130-jpeg5b2":6,"20211226123154-fd5e001":5,"20211226123216-tlxw66f":4,"20211226123241-51pujtr":3,"20211226123302-akitvb1":2,"20220105101348-corstqc":5,"20220415232129-shpzg6r":1,"20220628204420-ui79vkt":2,"20220708102441-u6wopo9":3,"20221016213639-1nag9jj":3,"20221223221501-mops33i":16,"20230104151953-48hwkwf":23,"20230106104645-o838uew":1,"20230304000829-9jwu3po":17,"20230405172131-yb16aax":6,"20230429115206-ob8nl8t":5,"20230506211210-1roopyo":9,"20230805232636-zh0adz2":6,"20230805232719-04mqbcx":2,"20230805232903-erdoerp":1,"20230805232920-5fdco36":2,"20240113110500-dz2ae4n":2,"20240119210914-a2tm8c4":4,"20240119212000-qkldbjm":5,"20240208171522-y7dxcno":7,"20240317202230-l8duv3r":7}
{"20211226114339-dk0gtpr":8,"20211226114929-08ap1r0":9,"20211226115043-afhev0g":4,"20211226115227-r1rty9v":3,"20211226115423-d5z1joq":1,"20211226115825-mhcslw2":1,"20211226120055-9mityht":1,"20211226120147-ib6yy3i":2,"20211226120247-63nd8y5":3,"20211226120349-rbkmozu":4,"20211226120422-bkzsd2e":5,"20211226120508-yzh70eh":6,"20211226120802-77aj0is":7,"20211226120854-dr1jfx2":2,"20211226120933-vnjgwwh":3,"20211226121109-f060fkg":4,"20211226121203-rjjngpz":5,"20211226121319-emrk2yy":1,"20211226121322-9argcys":3,"20211226121329-c5v3dto":22,"20211226121332-irgblss":4,"20211226121438-xaafdo8":2,"20211226121503-k3jma6m":1,"20211226121808-fnxmngk":2,"20211226122358-hctqcn5":21,"20211226122459-08mi5cq":20,"20211226122523-rl8356a":19,"20211226122549-jktxego":18,"20211226122707-8cr09co":15,"20211226122728-cnqf7rz":14,"20211226122814-r1rdpcx":13,"20211226122943-st7fpcj":12,"20211226123004-dplpw0o":11,"20211226123038-4umgpxy":10,"20211226123101-qjw03ab":8,"20211226123130-jpeg5b2":6,"20211226123154-fd5e001":5,"20211226123216-tlxw66f":4,"20211226123241-51pujtr":3,"20211226123302-akitvb1":2,"20220105101348-corstqc":6,"20220415232129-shpzg6r":1,"20220628204420-ui79vkt":2,"20220708102441-u6wopo9":3,"20221016213639-1nag9jj":3,"20221223221501-mops33i":16,"20230104151953-48hwkwf":23,"20230106104645-o838uew":1,"20230304000829-9jwu3po":17,"20230405172131-yb16aax":6,"20230429115206-ob8nl8t":5,"20230506211210-1roopyo":9,"20230805232636-zh0adz2":6,"20230805232719-04mqbcx":2,"20230805232903-erdoerp":1,"20230805232920-5fdco36":2,"20240113110500-dz2ae4n":2,"20240119210914-a2tm8c4":4,"20240119212000-qkldbjm":5,"20240208171522-y7dxcno":7,"20240317202230-l8duv3r":7,"20240508010647-8nuyk31":5}

File diff suppressed because it is too large Load Diff

View File

@ -6,20 +6,126 @@
"icon": "1f36b",
"id": "20211226115825-mhcslw2",
"title": "內容塊",
"updated": "20211226120052"
"type": "doc",
"updated": "20240508002615"
},
"Children": [
{
"ID": "20211226115825-cy05qlm",
"ID": "20240508002615-rrw1hp6",
"Type": "NodeParagraph",
"Properties": {
"id": "20211226115825-cy05qlm",
"updated": "20211226115839"
"id": "20240508002615-rrw1hp6",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeText",
"Data": "內容塊"
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120055-9mityht",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "什麼是內容塊"
}
]
},
{
"ID": "20240508002615-hyjmlq2",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002615-hyjmlq2",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120147-ib6yy3i",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "內容塊類型"
}
]
},
{
"ID": "20240508002615-ko8mxy7",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002615-ko8mxy7",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120247-63nd8y5",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "引用内容塊"
}
]
},
{
"ID": "20240508002615-chkzlm4",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002615-chkzlm4",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120349-rbkmozu",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "在内容塊中遨遊"
}
]
},
{
"ID": "20240508002615-ev6zjy7",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002615-ev6zjy7",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120422-bkzsd2e",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "文檔塊和標題塊的轉換"
}
]
},
{
"ID": "20240508002615-myu7mey",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002615-myu7mey",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120508-yzh70eh",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "嵌入內容塊"
}
]
},
{
"ID": "20240508002615-xr86o0l",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002615-xr86o0l",
"updated": "20240508002615"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226120802-77aj0is",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "内容塊屬性"
}
]
},

View File

@ -6,7 +6,7 @@
"id": "20211226120147-ib6yy3i",
"title": "內容塊類型",
"type": "doc",
"updated": "20240427230732"
"updated": "20240513102142"
},
"Children": [
{
@ -1076,6 +1076,70 @@
}
]
},
{
"ID": "20240513102059-nfnc22t",
"Type": "NodeParagraph",
"Properties": {
"id": "20240513102059-nfnc22t",
"updated": "20240513102059"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "tag",
"TextMarkTextContent": "注意"
},
{
"Type": "NodeText",
"Data": ""
}
]
},
{
"ID": "20240513102059-ttfrx4f",
"Type": "NodeParagraph",
"Properties": {
"id": "20240513102059-ttfrx4f",
"updated": "20240513102142"
},
"Children": [
{
"Type": "NodeText",
"Data": "不建議在正文中使用一級標題,建議使用二級標題作為頂層標題,這樣在開啟了 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "設定"
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "匯出"
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeTextMark",
"TextMarkType": "kbd",
"TextMarkTextContent": "新增文檔標題"
},
{
"Type": "NodeText",
"Data": " 後,整體的標題層級在匯出時才符合正常邏輯。"
}
]
},
{
"ID": "20211226120227-qntcfuy",
"Type": "NodeHeading",
@ -1763,6 +1827,20 @@
}
]
},
{
"ID": "20240510235226-7fqokpj",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235226-7fqokpj",
"updated": "20240510235233"
},
"Children": [
{
"Type": "NodeText",
"Data": "無序列表塊只能包含列表項塊,相鄰的無序列表塊間距較大。"
}
]
},
{
"ID": "20211226120227-wx6gvu6",
"Type": "NodeParagraph",
@ -1934,6 +2012,20 @@
}
]
},
{
"ID": "20240510235224-yj7efu2",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235224-yj7efu2",
"updated": "20240510235237"
},
"Children": [
{
"Type": "NodeText",
"Data": "有序列表塊只能包含列表項塊,相鄰的有序列表塊間距較大。"
}
]
},
{
"ID": "20211226120227-16ew3ez",
"Type": "NodeHeading",
@ -2089,6 +2181,20 @@
}
]
},
{
"ID": "20240510235222-wwcw8cn",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235222-wwcw8cn",
"updated": "20240510235243"
},
"Children": [
{
"Type": "NodeText",
"Data": "任務列表塊只能包含列表項塊,相鄰的任務列表塊間距較大。"
}
]
},
{
"ID": "20211226120227-ot6klof",
"Type": "NodeHeading",
@ -2168,6 +2274,20 @@
}
]
},
{
"ID": "20240510235159-gjhzzj5",
"Type": "NodeParagraph",
"Properties": {
"id": "20240510235159-gjhzzj5",
"updated": "20240510235159"
},
"Children": [
{
"Type": "NodeText",
"Data": "列表項塊被包含在列表塊內,相鄰的列表項塊間距較小。"
}
]
},
{
"ID": "20211226120227-7tg2ytf",
"Type": "NodeHeading",

View File

@ -326,7 +326,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "滑鼠懸浮引用前面的標識會彈出預覽浮窗"
"Data": "滑鼠懸浮引用前面的標識會彈出預覽浮窗"
}
]
}
@ -354,7 +354,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "單擊反連列表中的引用進行跳轉"
"Data": "單擊反連列表中的引用進行跳轉"
}
]
}

View File

@ -5,7 +5,8 @@
"Properties": {
"id": "20211226120508-yzh70eh",
"title": "嵌入內容塊",
"updated": "20211228141618"
"type": "doc",
"updated": "20240508085352"
},
"Children": [
{
@ -371,7 +372,8 @@
"Type": "NodeBlockQueryEmbed",
"Properties": {
"id": "20211226120744-om182d6",
"updated": "20211225234425"
"style": "height: 149px;",
"updated": "20240508085352"
},
"Children": [
{
@ -382,7 +384,7 @@
},
{
"Type": "NodeBlockQueryEmbedScript",
"Data": "SELECT * FROM blocks WHERE content LIKE '%在思源中%' AND content LIKE '%核心概念%' AND hpath NOT LIKE '%嵌入內容塊%'"
"Data": "SELECT * FROM blocks WHERE content LIKE '%在思源中%' AND content LIKE '%核心概念%' AND type = 'p' AND hpath NOT LIKE '%嵌入內容塊%'"
},
{
"Type": "NodeCloseBrace"

View File

@ -6,7 +6,8 @@
"icon": "1f371",
"id": "20211226120854-dr1jfx2",
"title": "編輯器",
"updated": "20211228134934"
"type": "doc",
"updated": "20240508002750"
},
"Children": [
{
@ -153,12 +154,55 @@
]
},
{
"ID": "20211226120930-hvh96zd",
"ID": "20240508002750-y6o1hwr",
"Type": "NodeParagraph",
"Properties": {
"id": "20211226120930-hvh96zd",
"updated": "20211226120930"
}
"id": "20240508002750-y6o1hwr",
"updated": "20240508002750"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121319-emrk2yy",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "排版元素"
}
]
},
{
"ID": "20240508002750-etdih28",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002750-etdih28",
"updated": "20240508002750"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20220628204420-ui79vkt",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "最佳化排版"
}
]
},
{
"ID": "20240508002750-46n6fhm",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002750-46n6fhm",
"updated": "20240508002750"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20221016213639-1nag9jj",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "通過標題列表概述"
}
]
}
]
}

View File

@ -6,16 +6,94 @@
"icon": "1f50d",
"id": "20211226120933-vnjgwwh",
"title": "搜索進階",
"updated": "20211226120946"
"type": "doc",
"updated": "20240508002838"
},
"Children": [
{
"ID": "20211226120933-12nrmzy",
"ID": "20240508002838-b2inby3",
"Type": "NodeParagraph",
"Properties": {
"id": "20211226120933-12nrmzy",
"updated": "20211226120933"
}
"id": "20240508002838-b2inby3",
"updated": "20240508002838"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20220415232129-shpzg6r",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "查詢語法"
}
]
},
{
"ID": "20240508002838-mfvpbim",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002838-mfvpbim",
"updated": "20240508002838"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121808-fnxmngk",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "資料庫表"
}
]
},
{
"ID": "20240508002838-uuy698x",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002838-uuy698x",
"updated": "20240508002838"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121322-9argcys",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "類型過濾"
}
]
},
{
"ID": "20240508002838-ocrviez",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002838-ocrviez",
"updated": "20240508002838"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240119210914-a2tm8c4",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "忽略索引"
}
]
},
{
"ID": "20240508002838-c82g88v",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002838-c82g88v",
"updated": "20240508002838"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240119212000-qkldbjm",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "忽略搜尋"
}
]
}
]
}

View File

@ -6,16 +6,43 @@
"icon": "1f3a8",
"id": "20211226121109-f060fkg",
"title": "自定義外觀",
"updated": "20211226121126"
"type": "doc",
"updated": "20240508002918"
},
"Children": [
{
"ID": "20211226121109-61imz19",
"ID": "20240508002918-f2jmry7",
"Type": "NodeParagraph",
"Properties": {
"id": "20211226121109-61imz19",
"updated": "20211226121109"
}
"id": "20240508002918-f2jmry7",
"updated": "20240508002918"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121633-qa2fjpl",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "圖示"
}
]
},
{
"ID": "20240508002918-i3a6dzu",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508002918-i3a6dzu",
"updated": "20240508002918"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121326-v5kpxfp",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "主題"
}
]
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f68c",
"id": "20211226121203-rjjngpz",
"title": "通用作業",
"updated": "20211228130734"
"type": "doc",
"updated": "20240508003139"
},
"Children": [
{
@ -14,8 +15,391 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20211226121203-2lvm3hr",
"updated": "20211226121203"
}
"updated": "20240508003034"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230106104645-o838uew",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "工作空間"
}
]
},
{
"ID": "20240508003036-ngvfniv",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003036-ngvfniv",
"updated": "20240508003036"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123302-akitvb1",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "導入和導出"
}
]
},
{
"ID": "20240508003039-ssunw2g",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003039-ssunw2g",
"updated": "20240508003039"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123302-akitvb1",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "導入和導出"
}
]
},
{
"ID": "20240508003041-rjcjjju",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003041-rjcjjju",
"updated": "20240508003041"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123216-tlxw66f",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "視窗和分頁"
}
]
},
{
"ID": "20240508003043-wrkhg1c",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003043-wrkhg1c",
"updated": "20240508003044"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123154-fd5e001",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "日記"
}
]
},
{
"ID": "20240508003046-8eqp4ro",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003046-8eqp4ro",
"updated": "20240508003046"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123130-jpeg5b2",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "書籤和標籤"
}
]
},
{
"ID": "20240508003049-fk0qyhi",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003049-fk0qyhi",
"updated": "20240508003049"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240208171522-y7dxcno",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "資料庫"
}
]
},
{
"ID": "20240508003051-720d9zi",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003051-720d9zi",
"updated": "20240508003052"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123101-qjw03ab",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "小工具"
}
]
},
{
"ID": "20240508003054-1b4hauq",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003054-1b4hauq",
"updated": "20240508003058"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230506211210-1roopyo",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "插件"
}
]
},
{
"ID": "20240508003101-sda446g",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003101-sda446g",
"updated": "20240508003101"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123038-4umgpxy",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "資料文件"
}
]
},
{
"ID": "20240508003104-25j0vfc",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003104-25j0vfc",
"updated": "20240508003104"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226123004-dplpw0o",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "範本片段"
}
]
},
{
"ID": "20240508003106-totmvjc",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003106-totmvjc",
"updated": "20240508003107"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122943-st7fpcj",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "PDF 標注"
}
]
},
{
"ID": "20240508003109-1469xk1",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003109-1469xk1",
"updated": "20240508003109"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122814-r1rdpcx",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "虛擬引用"
}
]
},
{
"ID": "20240508003112-jnd84rf",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003112-jnd84rf",
"updated": "20240508003112"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122728-cnqf7rz",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "超連結"
}
]
},
{
"ID": "20240508003115-7iqbc49",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003115-7iqbc49",
"updated": "20240508003115"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122707-8cr09co",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "資料歷史"
}
]
},
{
"ID": "20240508003117-14opi70",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003117-14opi70",
"updated": "20240508003118"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20221223221501-mops33i",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "閃卡"
}
]
},
{
"ID": "20240508003120-00umppc",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003120-00umppc",
"updated": "20240508003121"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230304000829-9jwu3po",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "人工智能"
}
]
},
{
"ID": "20240508003123-capfvnu",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003123-capfvnu",
"updated": "20240508003124"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122549-jktxego",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "快捷鍵"
}
]
},
{
"ID": "20240508003127-4m1c9pv",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003127-4m1c9pv",
"updated": "20240508003127"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122523-rl8356a",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "在瀏覽器上使用"
}
]
},
{
"ID": "20240508003130-2qsc91w",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003130-2qsc91w",
"updated": "20240508003130"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122459-08mi5cq",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Docker 伺服"
}
]
},
{
"ID": "20240508003133-3gshxxl",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003133-3gshxxl",
"updated": "20240508003133"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226122358-hctqcn5",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Kernel 參數"
}
]
},
{
"ID": "20240508003136-pkgugq9",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003136-pkgugq9",
"updated": "20240508003136"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121329-c5v3dto",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "Kernel API"
}
]
},
{
"ID": "20240508003139-rvtt3io",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003139-rvtt3io",
"updated": "20240508003139"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20230104151953-48hwkwf",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "分享文檔"
}
]
}
]
}

View File

@ -3441,7 +3441,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "複製該塊為引用"
"Data": "複製該塊為引用"
}
]
},
@ -6665,7 +6665,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "在下側打開引用"
"Data": "在下側打開引用"
}
]
},
@ -7444,7 +7444,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "引用"
"Data": "引用"
}
]
},

View File

@ -181,7 +181,7 @@
"Children": [
{
"Type": "NodeText",
"Data": "在 PDF 中滑鼠懸浮標注可預覽引用塊"
"Data": "在 PDF 中滑鼠懸浮標注可預覽引用標注的塊"
}
]
}

View File

@ -6,7 +6,8 @@
"icon": "1f308",
"id": "20211226121232-23s79xr",
"title": "雲端服務",
"updated": "20230805232827"
"type": "doc",
"updated": "20240508011443"
},
"Children": [
{
@ -29,9 +30,40 @@
"ListData": {},
"Properties": {
"id": "20230627214440-h0iez4q",
"updated": "20230627214441"
"updated": "20240508011443"
},
"Children": [
{
"ID": "20240508003304-en4q3yl",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508003304-en4q3yl",
"updated": "20240508003305"
},
"Children": [
{
"ID": "20240508003304-xj199m6",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508003304-xj199m6",
"updated": "20240508003305"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20211226121503-k3jma6m",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "存儲空間"
}
]
}
]
},
{
"ID": "20230627214441-1quupl3",
"Type": "NodeListItem",
@ -122,6 +154,37 @@
]
}
]
},
{
"ID": "20240508011443-qfxem3n",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508011443-qfxem3n",
"updated": "20240508011443"
},
"Children": [
{
"ID": "20240508011443-l0vn0ye",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508011443-l0vn0ye",
"updated": "20240508011443"
},
"Children": [
{
"Type": "NodeTextMark",
"TextMarkType": "block-ref",
"TextMarkBlockRefID": "20240508010647-8nuyk31",
"TextMarkBlockRefSubtype": "d",
"TextMarkTextContent": "收集箱"
}
]
}
]
}
]
},

View File

@ -0,0 +1,697 @@
{
"ID": "20240508010647-8nuyk31",
"Spec": "1",
"Type": "NodeDocument",
"Properties": {
"id": "20240508010647-8nuyk31",
"title": "收集箱",
"type": "doc",
"updated": "20240508011412"
},
"Children": [
{
"ID": "20240508010825-a5ohhsl",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20240508010825-a5ohhsl",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "概述"
}
]
},
{
"ID": "20240508010825-8vvng9y",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-8vvng9y",
"updated": "20240508010826"
},
"Children": [
{
"Type": "NodeText",
"Data": "我們可以通過雲端收集箱對外部數據進行收集,然後在思源中通過收集箱面板從雲端獲取這些數據並發送到筆記本中進行進一步整理。"
}
]
},
{
"ID": "20240508010825-n1qh9ep",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20240508010825-n1qh9ep",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "使用方式"
}
]
},
{
"ID": "20240508010825-qong9t1",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-qong9t1",
"updated": "20240508010826"
},
"Children": [
{
"Type": "NodeText",
"Data": "目前提供以下兩種方式進行數據接入。"
}
]
},
{
"ID": "20240508010825-saua2mg",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20240508010825-saua2mg",
"updated": "20240508010826"
},
"Children": [
{
"Type": "NodeText",
"Data": "微信輸入"
}
]
},
{
"ID": "20240508010825-zwyfsd0",
"Type": "NodeList",
"ListData": {
"Typ": 1
},
"Properties": {
"id": "20240508010825-zwyfsd0",
"updated": "20240508011210"
},
"Children": [
{
"ID": "20240508010825-39hxocl",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "MS4=",
"Num": 1
},
"Properties": {
"id": "20240508010825-39hxocl",
"updated": "20240508010825"
},
"Children": [
{
"ID": "20240508010825-exlddpe",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-exlddpe",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "在 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "a",
"TextMarkAHref": "https://ld246.com/settings/account",
"TextMarkTextContent": "鏈滴 - 設置 - 賬號"
},
{
"Type": "NodeText",
"Data": " 中綁定微信"
}
]
}
]
},
{
"ID": "20240508010825-3cvt679",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "Mi4=",
"Num": 2
},
"Properties": {
"id": "20240508010825-3cvt679",
"updated": "20240508011210"
},
"Children": [
{
"ID": "20240508010825-p7i3zpr",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-p7i3zpr",
"updated": "20240508011210"
},
"Children": [
{
"Type": "NodeText",
"Data": "關註 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": "B3log开源"
},
{
"Type": "NodeText",
"Data": " 公眾號"
}
]
},
{
"ID": "20240508010825-6j0yi8j",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-6j0yi8j",
"updated": "20240508011115"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeImage",
"Data": "span",
"Children": [
{
"Type": "NodeBang"
},
{
"Type": "NodeOpenBracket"
},
{
"Type": "NodeLinkText",
"Data": "image.png"
},
{
"Type": "NodeCloseBracket"
},
{
"Type": "NodeOpenParen"
},
{
"Type": "NodeLinkDest",
"Data": "assets/image-20240507233205-gidj803.png"
},
{
"Type": "NodeCloseParen"
}
]
},
{
"Type": "NodeText",
"Data": ""
}
]
}
]
},
{
"ID": "20240508010825-vct5bio",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "My4=",
"Num": 3
},
"Properties": {
"id": "20240508010825-vct5bio",
"updated": "20240508010825"
},
"Children": [
{
"ID": "20240508010825-v2yx4o9",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-v2yx4o9",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "關註後點擊右下角綁定賬號"
}
]
}
]
},
{
"ID": "20240508010825-8k3begd",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "NC4=",
"Num": 4
},
"Properties": {
"id": "20240508010825-8k3begd",
"updated": "20240508010825"
},
"Children": [
{
"ID": "20240508010825-8027gkq",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-8027gkq",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "對該公眾號發送消息(可從收藏中選擇待發送消息),僅支持文本、圖片和超鏈接"
}
]
}
]
},
{
"ID": "20240508010825-o51n5ay",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "NS4=",
"Num": 5
},
"Properties": {
"id": "20240508010825-o51n5ay",
"updated": "20240508010825"
},
"Children": [
{
"ID": "20240508010825-eqcdlnq",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-eqcdlnq",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "在思源中打開收集箱面板Alt+6"
}
]
}
]
}
]
},
{
"ID": "20240508010825-e5tq32s",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-e5tq32s",
"updated": "20240508011232"
},
"Children": [
{
"Type": "NodeText",
"Data": "關註公眾號並綁定賬號後除了可以通過公眾號輸入,也可以通過添加 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": "思源小助手"
},
{
"Type": "NodeText",
"Data": " 為聯系人後輸入,這樣可以直接轉發聊天記錄。"
}
]
},
{
"ID": "20240508010825-p85yv3d",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-p85yv3d",
"updated": "20240508011143"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeImage",
"Data": "span",
"Children": [
{
"Type": "NodeBang"
},
{
"Type": "NodeOpenBracket"
},
{
"Type": "NodeLinkText",
"Data": "image"
},
{
"Type": "NodeCloseBracket"
},
{
"Type": "NodeOpenParen"
},
{
"Type": "NodeLinkDest",
"Data": "assets/image-20240508085927-fg29hvp.png"
},
{
"Type": "NodeCloseParen"
}
]
},
{
"Type": "NodeText",
"Data": ""
}
]
},
{
"ID": "20240508010825-c0ejrb7",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-c0ejrb7",
"updated": "20240508010826"
},
"Children": [
{
"Type": "NodeText",
"Data": "支持的消息類型為文本、圖片、語音、視頻和文件,單個圖片、語音、視頻和文件的大小不超過 20MB。"
}
]
},
{
"ID": "20240508010825-pik289x",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-pik289x",
"updated": "20240508011319"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "tag",
"TextMarkTextContent": "注意"
},
{
"Type": "NodeText",
"Data": ""
}
]
},
{
"ID": "20240508010825-6jxdqrf",
"Type": "NodeList",
"ListData": {},
"Properties": {
"id": "20240508010825-6jxdqrf",
"updated": "20240508010826"
},
"Children": [
{
"ID": "20240508010825-thd1752",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508010825-thd1752",
"updated": "20240508010825"
},
"Children": [
{
"ID": "20240508010825-jlv9f7d",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-jlv9f7d",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "僅限訂閱會員使用,未訂閱或者訂閱過期後聯系人關系會被刪除"
}
]
}
]
}
]
},
{
"ID": "20240508010825-3ill9v5",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20240508010825-3ill9v5",
"updated": "20240508010826"
},
"Children": [
{
"Type": "NodeText",
"Data": "API"
}
]
},
{
"ID": "20240508010825-fvc7vnm",
"Type": "NodeList",
"ListData": {},
"Properties": {
"id": "20240508010825-fvc7vnm",
"updated": "20240508011401"
},
"Children": [
{
"ID": "20240508010825-bwf2ttf",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508010825-bwf2ttf",
"updated": "20240508011333"
},
"Children": [
{
"ID": "20240508010825-ga2w93e",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-ga2w93e",
"updated": "20240508011333"
},
"Children": [
{
"Type": "NodeText",
"Data": "POST "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": "https://ld246.com/apis/siyuan/inbox/addCloudShorthand"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
]
},
{
"ID": "20240508010825-cv6df2j",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508010825-cv6df2j",
"updated": "20240508011341"
},
"Children": [
{
"ID": "20240508010825-vtk2lql",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-vtk2lql",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "Body"
}
]
},
{
"ID": "20240508010825-7t3bxt0",
"Type": "NodeCodeBlock",
"IsFencedCodeBlock": true,
"Properties": {
"id": "20240508010825-7t3bxt0",
"updated": "20240508011341"
},
"Children": [
{
"Type": "NodeCodeBlockFenceOpenMarker",
"Data": "```"
},
{
"Type": "NodeCodeBlockFenceInfoMarker",
"CodeBlockInfo": "anNvbg=="
},
{
"Type": "NodeCodeBlockCode",
"Data": "{\n \"title\": \"A simple text title\",\n \"content\": \"Content with **Markdown**.\"\n}"
},
{
"Type": "NodeCodeBlockFenceCloseMarker",
"Data": "```"
}
]
}
]
},
{
"ID": "20240508010825-977fyz4",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508010825-977fyz4",
"updated": "20240508011401"
},
"Children": [
{
"ID": "20240508010825-olfkbn4",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-olfkbn4",
"updated": "20240508011401"
},
"Children": [
{
"Type": "NodeText",
"Data": "鑒權方式為 HTTP 請求標頭 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": "Authorization"
},
{
"Type": "NodeText",
"Data": "​,值為 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": "token {Your API Token}"
},
{
"Type": "NodeText",
"Data": "註意大小寫和空格API Token 可以 "
},
{
"Type": "NodeTextMark",
"TextMarkType": "a",
"TextMarkAHref": "https://ld246.com/settings/account",
"TextMarkTextContent": "鏈滴 - 設置 - 賬號"
},
{
"Type": "NodeText",
"Data": " 中找到"
}
]
}
]
}
]
},
{
"ID": "20240508010825-grwgife",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-grwgife",
"updated": "20240508011412"
},
"Children": [
{
"Type": "NodeText",
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "tag",
"TextMarkTextContent": "注意"
},
{
"Type": "NodeText",
"Data": ""
}
]
},
{
"ID": "20240508010825-tat0cjy",
"Type": "NodeList",
"ListData": {},
"Properties": {
"id": "20240508010825-tat0cjy",
"updated": "20240508010826"
},
"Children": [
{
"ID": "20240508010825-fikzqon",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20240508010825-fikzqon",
"updated": "20240508010825"
},
"Children": [
{
"ID": "20240508010825-asx6c5u",
"Type": "NodeParagraph",
"Properties": {
"id": "20240508010825-asx6c5u",
"updated": "20240508010825"
},
"Children": [
{
"Type": "NodeText",
"Data": "頻率限製:每 24 小時最多插入 128 條"
}
]
}
]
}
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -1,6 +1,6 @@
{
"name": "SiYuan",
"version": "103.0.13",
"version": "103.0.14",
"description": "Refactor your thinking",
"homepage": "https://b3log.org/siyuan",
"main": "./electron/main.js",

View File

@ -52,8 +52,6 @@ Mobile #menu & .side-panel: 7
#windowControls: 999998
.b3-snackbar: 999999
.b3-tooltips: 1000000
*/

View File

@ -12,7 +12,7 @@
position: fixed;
right: 12px;
top: 22px;
z-index: 999999;
// 不能设置死否则右键菜单会被遮盖 z-index: 999999;
max-height: calc(100vh - 32px);
display: flex;
flex-direction: column;

View File

@ -31,6 +31,10 @@
&--error {
background: var(--b3-theme-error);
}
.ft__on-surface {
color: var(--b3-tooltips-second-color);
}
}
.b3-tooltips {

View File

@ -414,6 +414,8 @@
margin: 0 auto;
max-width: 100%;
user-select: none;
word-break: keep-all;
white-space: nowrap;
& > span:nth-child(1),
& > span:nth-child(3) {

View File

@ -55,6 +55,12 @@
.b3-slider {
width: var(--b3-dynamicscroll-width);
display: block;
&::-webkit-slider-runnable-track,
&::-webkit-slider-thumb {
background-color: var(--b3-border-color);
box-shadow: none;
}
}
}
}

View File

@ -643,7 +643,10 @@
.av {
.b3-chip[data-type="block-more"],
.av__row--util,
.av__row--util:not(.av__readonly--show),
.av__row--footer:not(.av__readonly--show),
.av__row--util .b3-button[data-type="av-add-bottom"],
.av__row--util svg[data-type="set-page-size"],
.av__row--header > .block__icons,
.av__views .fn__space,
.av__views .block__icon:not([data-type="av-search-icon"]),
@ -651,7 +654,7 @@
display: none;
}
.av__row--footer {
.av__row--util:not(.av__readonly--show) + .av__row--footer.av__readonly--show {
border-top-color: transparent;
}
@ -662,5 +665,10 @@
.av__row--footer:hover .av__calc:not(.av__calc--ashow) {
opacity: 0;
}
.av__row--footer .av__calc:hover,
.av__cell--header:hover {
background-color: transparent;
}
}
}

View File

@ -120,7 +120,7 @@
width: 100%;
bottom: 0;
align-content: center;
z-index: 1;
z-index: 3; // 需大于 database table view
align-items: center;
&--top {

View File

@ -66,7 +66,8 @@ export const initBlockPopover = (app: App) => {
}
}
if (tip && !aElement.classList.contains("b3-tooltips")) {
showTooltip(tip, aElement);
// https://github.com/siyuan-note/siyuan/issues/11294
showTooltip(decodeURIComponent(tip), aElement);
event.stopPropagation();
} else {
hideTooltip();

View File

@ -0,0 +1,237 @@
import {newDailyNote} from "../../../util/mount";
import {openHistory} from "../../../history/history";
import {Editor} from "../../../editor";
/// #if MOBILE
import {openDock} from "../../../mobile/dock/util";
import {popMenu} from "../../../mobile/menu";
import {popSearch} from "../../../mobile/menu/search";
/// #else
import {openSearch} from "../../../search/spread";
import {goBack, goForward} from "../../../util/backForward";
import {getAllTabs} from "../../../layout/getAll";
import {getInstanceById} from "../../../layout/util";
import {closeTabByType, getActiveTab, getDockByType, switchTabByIndex} from "../../../layout/tabUtil";
import {openSetting} from "../../../config";
import {Tab} from "../../../layout/Tab";
/// #endif
import {App} from "../../../index";
import {Constants} from "../../../constants";
import {setReadOnly} from "../../../config/util/setReadOnly";
export const globalCommand = (command: string, app: App) => {
/// #if MOBILE
switch (command) {
case "fileTree":
openDock("file");
return true;
case "outline":
case "bookmark":
case "tag":
case "inbox":
openDock(command);
return true;
case "backlinks":
openDock("backlink");
return true;
case "config":
popMenu();
return true;
case "globalSearch":
popSearch(app);
return true;
}
/// #else
switch (command) {
case "fileTree":
getDockByType("file").toggleModel("file");
return true;
case "outline":
getDockByType("outline").toggleModel("outline");
return true;
case "bookmark":
case "tag":
case "inbox":
getDockByType(command).toggleModel(command);
return true;
case "backlinks":
getDockByType("backlink").toggleModel("backlink");
return true;
case "graphView":
getDockByType("graph").toggleModel("graph");
return true;
case "globalGraph":
getDockByType("globalGraph").toggleModel("globalGraph");
return true;
case "config":
openSetting(app);
return true;
case "globalSearch":
openSearch({
app,
hotkey: Constants.DIALOG_GLOBALSEARCH,
});
return true;
case "goBack":
goBack(app);
return true;
case "goForward":
goForward(app);
return true;
case "goToTab1":
switchTabByIndex(0);
return true;
case "goToTab2":
switchTabByIndex(1);
return true;
case "goToTab3":
switchTabByIndex(2);
return true;
case "goToTab4":
switchTabByIndex(3);
return true;
case "goToTab5":
switchTabByIndex(4);
return true;
case "goToTab6":
switchTabByIndex(5);
return true;
case "goToTab7":
switchTabByIndex(6);
return true;
case "goToTab8":
switchTabByIndex(7);
return true;
case "goToTab9":
switchTabByIndex(-1);
return true;
case "goToTabNext":
switchTabByIndex(-3);
return true;
case "goToTabPrev":
switchTabByIndex(-2);
return true;
}
if (command === "goToEditTabNext" || command === "goToEditTabPrev") {
let currentTabElement = document.querySelector(".layout__wnd--active ul.layout-tab-bar > .item--focus");
if (!currentTabElement) {
currentTabElement = document.querySelector("ul.layout-tab-bar > .item--focus");
}
if (!currentTabElement) {
return true;
}
const tabs = getAllTabs().sort((itemA, itemB) => {
return itemA.headElement.getAttribute("data-activetime") > itemB.headElement.getAttribute("data-activetime") ? -1 : 1;
});
const currentId = currentTabElement.getAttribute("data-id");
tabs.find((item, index) => {
if (currentId === item.id) {
let newItem: Tab;
if (command === "goToEditTabPrev") {
if (index === 0) {
newItem = tabs[tabs.length - 1];
} else {
newItem = tabs[index - 1];
}
} else {
if (index === tabs.length - 1) {
newItem = tabs[0];
} else {
newItem = tabs[index + 1];
}
}
const tab = getInstanceById(newItem.id) as Tab;
tab.parent.switchTab(newItem.headElement);
tab.parent.showHeading();
}
});
return true;
}
if (command === "closeUnmodified") {
const tab = getActiveTab(false);
if (tab) {
const unmodifiedTabs: Tab[] = [];
tab.parent.children.forEach((item: Tab) => {
const editor = item.model as Editor;
if (!editor || (editor.editor?.protyle && !editor.editor?.protyle.updated)) {
unmodifiedTabs.push(item);
}
});
if (unmodifiedTabs.length > 0) {
closeTabByType(tab, "other", unmodifiedTabs);
}
}
return true;
}
if (command === "closeTab") {
const activeTabElement = document.querySelector(".layout__tab--active");
if (activeTabElement && activeTabElement.getBoundingClientRect().width > 0) {
let type = "";
Array.from(activeTabElement.classList).find(item => {
if (item.startsWith("sy__")) {
type = item.replace("sy__", "");
return true;
}
});
if (type) {
getDockByType(type)?.toggleModel(type, false, true);
}
return true;
}
const tab = getActiveTab(false);
if (tab) {
tab.parent.removeTab(tab.id);
}
return true;
}
if (command === "closeOthers" || command === "closeAll") {
const tab = getActiveTab(false);
if (tab) {
closeTabByType(tab, command);
}
return true;
}
if (command === "closeLeft" || command === "closeRight") {
const tab = getActiveTab(false);
if (tab) {
const leftTabs: Tab[] = [];
const rightTabs: Tab[] = [];
let midIndex = -1;
tab.parent.children.forEach((item: Tab, index: number) => {
if (item.id === tab.id) {
midIndex = index;
}
if (midIndex === -1) {
leftTabs.push(item);
} else if (index > midIndex) {
rightTabs.push(item);
}
});
if (command === "closeLeft") {
if (leftTabs.length > 0) {
closeTabByType(tab, "other", leftTabs);
}
} else {
if (rightTabs.length > 0) {
closeTabByType(tab, "other", rightTabs);
}
}
}
return true;
}
/// #endif
switch (command) {
case "dailyNote":
newDailyNote(app);
return true;
case "dataHistory":
openHistory(app);
return true;
case "editReadonly":
setReadOnly(!window.siyuan.config.editor.readOnly);
return true;
}
return false;
};

View File

@ -1,30 +1,26 @@
import {Dialog} from "../../dialog";
import {App} from "../../index";
import {upDownHint} from "../../util/upDownHint";
import {updateHotkeyTip} from "../../protyle/util/compatibility";
import {isMobile} from "../../util/functions";
import {Constants} from "../../constants";
import {Editor} from "../../editor";
import {Dialog} from "../../../dialog";
import {App} from "../../../index";
import {upDownHint} from "../../../util/upDownHint";
import {updateHotkeyTip} from "../../../protyle/util/compatibility";
import {isMobile} from "../../../util/functions";
import {Constants} from "../../../constants";
import {Editor} from "../../../editor";
/// #if MOBILE
import {getCurrentEditor} from "../../mobile/editor";
import {openDock} from "../../mobile/dock/util";
import {popMenu} from "../../mobile/menu";
import {getCurrentEditor} from "../../../mobile/editor";
/// #else
import {closeTabByType, getActiveTab, getDockByType} from "../../layout/tabUtil";
import {Custom} from "../../layout/dock/Custom";
import {getAllModels} from "../../layout/getAll";
import {Files} from "../../layout/dock/Files";
import {Search} from "../../search";
import {openSetting} from "../../config";
import {Tab} from "../../layout/Tab";
import {getActiveTab, getDockByType} from "../../../layout/tabUtil";
import {Custom} from "../../../layout/dock/Custom";
import {getAllModels} from "../../../layout/getAll";
import {Files} from "../../../layout/dock/Files";
import {Search} from "../../../search";
/// #endif
import {openHistory} from "../../history/history";
import {addEditorToDatabase, addFilesToDatabase} from "../../protyle/render/av/addToDatabase";
import {hasClosestByClassName} from "../../protyle/util/hasClosest";
import {newDailyNote} from "../../util/mount";
import {addEditorToDatabase, addFilesToDatabase} from "../../../protyle/render/av/addToDatabase";
import {hasClosestByClassName} from "../../../protyle/util/hasClosest";
import {onluProtyleCommand} from "./protyle";
import {globalCommand} from "./global";
export const commandPanel = (app: App) => {
const range = getSelection().getRangeAt(0);
const range = getSelection().rangeCount > 0 ? getSelection().getRangeAt(0) : undefined;
const dialog = new Dialog({
width: isMobile() ? "92vw" : "80vw",
height: isMobile() ? "80vh" : "70vh",
@ -37,7 +33,7 @@ export const commandPanel = (app: App) => {
<ul class="b3-list b3-list--background search__list" id="commands"></ul>
<div class="search__tip">
<kbd>/</kbd> ${window.siyuan.languages.searchTip1}
<kbd>Enter/Click</kbd> ${window.siyuan.languages.confirm}
<kbd>${window.siyuan.languages.enterKey}/${window.siyuan.languages.click}</kbd> ${window.siyuan.languages.confirm}
<kbd>Esc</kbd> ${window.siyuan.languages.close}
</div>
</div>`
@ -49,11 +45,14 @@ export const commandPanel = (app: App) => {
let keys;
/// #if MOBILE
keys = ["addToDatabase", "fileTree", "outline", "bookmark", "tag", "dailyNote", "inbox", "backlinks", "config",
"dataHistory"];
"dataHistory", "editReadonly", "enter", "enterBack", "globalSearch"];
/// #else
keys = ["addToDatabase", "fileTree", "outline", "bookmark", "tag", "dailyNote", "inbox", "backlinks",
"graphView", "globalGraph", "closeAll", "closeLeft", "closeOthers", "closeRight", "closeTab",
"closeUnmodified", "config", "dataHistory"];
"closeUnmodified", "config", "dataHistory", "editReadonly", "enter", "enterBack", "globalSearch", "goBack",
"goForward", "goToEditTabNext", "goToEditTabPrev", "goToTab1", "goToTab2", "goToTab3", "goToTab4",
"goToTab5", "goToTab6", "goToTab7", "goToTab8", "goToTab9", "goToTabNext", "goToTabPrev"];
/// #endif
if (keys.includes(key)) {
html += `<li class="b3-list-item" data-command="${key}">
@ -165,131 +164,9 @@ export const execByCommand = (options: {
protyle?: IProtyle,
fileLiElements?: Element[]
}) => {
/// #if MOBILE
switch (options.command) {
case "fileTree":
openDock("file");
return;
case "outline":
case "bookmark":
case "tag":
case "inbox":
openDock(options.command);
return;
case "backlinks":
openDock("backlink");
return;
case "config":
popMenu();
return;
}
/// #else
switch (options.command) {
case "fileTree":
getDockByType("file").toggleModel("file");
return;
case "outline":
getDockByType("outline").toggleModel("outline");
return;
case "bookmark":
case "tag":
case "inbox":
getDockByType(options.command).toggleModel(options.command);
return;
case "backlinks":
getDockByType("backlink").toggleModel("backlink");
return;
case "graphView":
getDockByType("graph").toggleModel("graph");
return;
case "globalGraph":
getDockByType("globalGraph").toggleModel("globalGraph");
return;
case "config":
openSetting(options.app);
return;
}
if (options.command === "closeUnmodified") {
const tab = getActiveTab(false);
if (tab) {
const unmodifiedTabs: Tab[] = [];
tab.parent.children.forEach((item: Tab) => {
const editor = item.model as Editor;
if (!editor || (editor.editor?.protyle && !editor.editor?.protyle.updated)) {
unmodifiedTabs.push(item);
}
});
if (unmodifiedTabs.length > 0) {
closeTabByType(tab, "other", unmodifiedTabs);
}
}
if (globalCommand(options.command, options.app)) {
return;
}
if (options.command === "closeTab") {
const activeTabElement = document.querySelector(".layout__tab--active");
if (activeTabElement && activeTabElement.getBoundingClientRect().width > 0) {
let type = "";
Array.from(activeTabElement.classList).find(item => {
if (item.startsWith("sy__")) {
type = item.replace("sy__", "");
return true;
}
});
if (type) {
getDockByType(type)?.toggleModel(type, false, true);
}
return;
}
const tab = getActiveTab(false);
if (tab) {
tab.parent.removeTab(tab.id);
}
return;
}
if (options.command === "closeOthers" || options.command === "closeAll") {
const tab = getActiveTab(false);
if (tab) {
closeTabByType(tab, options.command);
}
return;
}
if (options.command === "closeLeft" || options.command === "closeRight") {
const tab = getActiveTab(false);
if (tab) {
const leftTabs: Tab[] = [];
const rightTabs: Tab[] = [];
let midIndex = -1;
tab.parent.children.forEach((item: Tab, index: number) => {
if (item.id === tab.id) {
midIndex = index;
}
if (midIndex === -1) {
leftTabs.push(item);
} else if (index > midIndex) {
rightTabs.push(item);
}
});
if (options.command === "closeLeft") {
if (leftTabs.length > 0) {
closeTabByType(tab, "other", leftTabs);
}
} else {
if (rightTabs.length > 0) {
closeTabByType(tab, "other", rightTabs);
}
}
}
return;
}
/// #endif
switch (options.command) {
case "dailyNote":
newDailyNote(options.app);
return;
case "dataHistory":
openHistory(options.app);
return;
}
const isFileFocus = document.querySelector(".layout__tab--active")?.classList.contains("sy__file");
@ -387,6 +264,16 @@ export const execByCommand = (options: {
}
}
}
// only protyle
if (!isFileFocus && onluProtyleCommand({
command: options.command,
previousRange: range,
protyle
})) {
return;
}
if (isFileFocus && !fileLiElements) {
const dockFile = getDockByType("file");
if (!dockFile) {
@ -396,6 +283,7 @@ export const execByCommand = (options: {
fileLiElements = Array.from(files.element.querySelectorAll(".b3-list-item--focus"));
}
// protyle and file tree
switch (options.command) {
case "addToDatabase":
if (!isFileFocus) {

View File

@ -0,0 +1,28 @@
import {hasClosestBlock} from "../../../protyle/util/hasClosest";
import {getTopAloneElement} from "../../../protyle/wysiwyg/getBlock";
import {enterBack, zoomOut} from "../../../menus/protyle";
export const onluProtyleCommand = (options: {
command: string,
previousRange: Range,
protyle: IProtyle,
}) => {
const nodeElement = hasClosestBlock(options.previousRange.startContainer);
if (!nodeElement) {
return false;
}
if (options.command === "enter") {
let topNodeElement = getTopAloneElement(nodeElement);
if (topNodeElement.parentElement.classList.contains("li") && topNodeElement.parentElement.parentElement.classList.contains("list") &&
topNodeElement.nextElementSibling?.classList.contains("list") && topNodeElement.previousElementSibling.classList.contains("protyle-action")) {
topNodeElement = topNodeElement.parentElement;
}
zoomOut({protyle: options.protyle, id: topNodeElement.getAttribute("data-node-id")});
return true;
}
if (options.command === "enterBack") {
enterBack(options.protyle, nodeElement.getAttribute("data-node-id"));
return true;
}
return false;
};

View File

@ -43,7 +43,6 @@ import {escapeHtml} from "../../util/escape";
import {syncGuide} from "../../sync/syncGuide";
import {getStartEndElement, goEnd, goHome} from "../../protyle/wysiwyg/commonHotkey";
import {getNextFileLi, getPreviousFileLi} from "../../protyle/wysiwyg/getBlock";
import {editor} from "../../config/editor";
import {hintMoveBlock} from "../../protyle/hint/extend";
import {Backlink} from "../../layout/dock/Backlink";
/// #if !BROWSER
@ -72,8 +71,9 @@ import {openNewWindow} from "../../window/openNewWindow";
import {historyKeydown} from "../../history/keydown";
import {zoomOut} from "../../menus/protyle";
import {getPlainText} from "../../protyle/util/paste";
import {commandPanel, execByCommand} from "./commandPanel";
import {commandPanel, execByCommand} from "./command/panel";
import {filterHotkey} from "./commonHotkey";
import {setReadOnly} from "../../config/util/setReadOnly";
const switchDialogEvent = (app: App, event: MouseEvent) => {
event.preventDefault();
@ -1266,7 +1266,7 @@ export const windowKeyDown = (app: App, event: KeyboardEvent) => {
}
if (matchHotKey(window.siyuan.config.keymap.general.editReadonly.custom, event)) {
event.preventDefault();
editor.setReadonly(!window.siyuan.config.editor.readOnly);
setReadOnly(!window.siyuan.config.editor.readOnly);
return;
}
if (matchHotKey(window.siyuan.config.keymap.general.lockScreen.custom, event)) {

View File

@ -109,7 +109,7 @@ ${window.siyuan.config.flashcard.list ? "card__block--hideli" : ""}" data-type="
(p / q)
</button>
<span class="fn__space"></span>
<button data-type="-1" class="b3-button fn__flex-1">${window.siyuan.languages.cardShowAnswer} (${window.siyuan.languages.space} / Enter)</button>
<button data-type="-1" class="b3-button fn__flex-1">${window.siyuan.languages.cardShowAnswer} (${window.siyuan.languages.space} / ${window.siyuan.languages.enterKey})</button>
</div>
<div class="fn__flex card__action fn__none">
<div>
@ -135,7 +135,7 @@ ${window.siyuan.config.flashcard.list ? "card__block--hideli" : ""}" data-type="
</div>
<div>
<span></span>
<button data-type="3" aria-label="3 / l / d / ${window.siyuan.languages.space} / Enter" class="b3-button b3-button--info b3-tooltips__n b3-tooltips">
<button data-type="3" aria-label="3 / l / d / ${window.siyuan.languages.space} / ${window.siyuan.languages.enterKey}" class="b3-button b3-button--info b3-tooltips__n b3-tooltips">
<div class="card__icon">😊</div>
${window.siyuan.languages.cardRatingGood} (3)
</button>

View File

@ -29,10 +29,9 @@ const genSVGBG = () => {
export const account = {
element: undefined as Element,
genHTML: (onlyPayHTML = false) => {
const payHTML = `
<a class="b3-button b3-button--big" href="${getIndexURL("pricing.html")}" target="_blank">
<svg><use xlink:href="#iconVIP"></use></svg>${window.siyuan.languages.account1}
</a>
const payHTML = `<a class="b3-button b3-button--big" href="${getIndexURL("pricing.html")}" target="_blank">
<svg><use xlink:href="#iconVIP"></use></svg>${window.siyuan.languages[window.siyuan.user?.userSiYuanOneTimePayStatus === 1 ? "account4" : "account1"]}
</a>
<div class="fn__hr--b"></div>
<span class="b3-chip b3-chip--primary b3-chip--hover${(window.siyuan.user && window.siyuan.user.userSiYuanSubscriptionStatus === 2) ? " fn__none" : ""}" id="trialSub">
<svg class="ft__secondary"><use xlink:href="#iconVIP"></use></svg>
@ -449,23 +448,26 @@ ${renewHTML}
return;
}
let html = "";
if (window.siyuan.config.account.displayVIP && window.siyuan.user) {
if (window.siyuan.user.userSiYuanProExpireTime === -1) {
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account12}">${Constants.SIYUAN_IMAGE_VIP}</div>`;
} else if (window.siyuan.user.userSiYuanProExpireTime > 0) {
if (window.siyuan.user.userSiYuanSubscriptionPlan === 2) {
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account3}"><svg><use xlink:href="#iconVIP"></use></svg></div>`;
} else {
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account10}"><svg class="ft__secondary"><use xlink:href="#iconVIP"></use></svg></div>`;
if (window.siyuan.config.account.displayVIP) {
if (window.siyuan.user) {
if (window.siyuan.user.userSiYuanProExpireTime === -1) { // 终身会员
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account12}">${Constants.SIYUAN_IMAGE_VIP}</div>`;
} else if (window.siyuan.user.userSiYuanProExpireTime > 0) { // 订阅中
if (window.siyuan.user.userSiYuanSubscriptionPlan === 2) { // 试用订阅
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account3}"><svg><use xlink:href="#iconVIP"></use></svg></div>`;
} else { // 正常订阅
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account10}"><svg class="ft__secondary"><use xlink:href="#iconVIP"></use></svg></div>`;
}
} else if (window.siyuan.user.userSiYuanSubscriptionStatus === -1) { // 未订阅
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.freeSub}"><svg class="ft__error"><use xlink:href="#iconVIP"></use></svg></div>`;
}
}
if (window.siyuan.user.userSiYuanOneTimePayStatus === 1) {
html += `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.onepay}"><svg><use xlink:href="#iconVIP"></use></svg></div>`;
if (window.siyuan.user.userSiYuanOneTimePayStatus === 1) { // 一次性付费功能特性
html += `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.onepay}"><svg><use xlink:href="#iconVIP"></use></svg></div>`;
}
} else { // 未登录
html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.freeSub}"><svg class="ft__error"><use xlink:href="#iconVIP"></use></svg></div>`;
}
}
// if (!window.siyuan.user || (window.siyuan.user && window.siyuan.user.userSiYuanSubscriptionStatus === -1)) {
// html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.freeSub}"><svg class="ft__error"><use xlink:href="#iconVIP"></use></svg></div>`;
// }
if (window.siyuan.config.account.displayTitle && window.siyuan.user) {
window.siyuan.user.userTitles.forEach(item => {
html += `<div class="toolbar__item ariaLabel" aria-label="${item.name}${item.desc}">${item.icon}</div>`;

View File

@ -97,7 +97,7 @@ export const bazaar = {
<div class="fn__space"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input class="b3-text-field b3-form__icon-input" placeholder="Enter ${window.siyuan.languages.search}">
<input class="b3-text-field b3-form__icon-input" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}">
</div>
<div class="fn__space"></div>
<div class="fn__flex-1"></div>
@ -127,7 +127,7 @@ export const bazaar = {
<div class="fn__space"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input class="b3-text-field b3-form__icon-input" placeholder="Enter ${window.siyuan.languages.search}">
<input class="b3-text-field b3-form__icon-input" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}">
</div>
<div class="fn__space"></div>
<div class="fn__flex-1"></div>
@ -150,7 +150,7 @@ export const bazaar = {
<div class="fn__space"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input class="b3-text-field b3-form__icon-input" placeholder="Enter ${window.siyuan.languages.search}">
<input class="b3-text-field b3-form__icon-input" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}">
</div>
<div class="fn__space"></div>
<div class="fn__flex-1"></div>
@ -173,7 +173,7 @@ export const bazaar = {
<div class="fn__space"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input class="b3-text-field b3-form__icon-input" placeholder="Enter ${window.siyuan.languages.search}">
<input class="b3-text-field b3-form__icon-input" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}">
</div>
<div class="fn__space"></div>
<div class="fn__flex-1"></div>
@ -196,7 +196,7 @@ export const bazaar = {
<div class="fn__space"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input class="b3-text-field b3-form__icon-input" placeholder="Enter ${window.siyuan.languages.search}">
<input class="b3-text-field b3-form__icon-input" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}">
</div>
<div class="fn__space"></div>
<div class="fn__flex-1"></div>
@ -219,7 +219,7 @@ export const bazaar = {
<div class="fn__space"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input class="b3-text-field b3-form__icon-input" placeholder="Enter ${window.siyuan.languages.search}">
<input class="b3-text-field b3-form__icon-input" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}">
</div>
<div class="fn__space"></div>
<div class="fn__flex-1"></div>

View File

@ -6,13 +6,10 @@ import {reloadProtyle} from "../protyle/util/reload";
import {updateHotkeyTip} from "../protyle/util/compatibility";
import {Constants} from "../constants";
import {resize} from "../protyle/util/resize";
import {setReadOnly} from "./util/setReadOnly";
export const editor = {
element: undefined as Element,
setReadonly: (readOnly: boolean) => {
window.siyuan.config.editor.readOnly = readOnly;
fetchPost("/api/setting/setEditor", window.siyuan.config.editor);
},
genHTML: () => {
let fontFamilyHTML = "";
fontFamilyHTML = '<select id="fontFamily" class="b3-select fn__flex-center fn__size200"></select>';
@ -192,7 +189,7 @@ export const editor = {
<div class="b3-label__text">${window.siyuan.languages.backmentionExpandTip}</div>
</div>
<span class="fn__space"></span>
<input class="b3-text-field fn__flex-center fn__size200" id="backmentionExpandCount" type="number" min="0" max="512" value="${window.siyuan.config.editor.backmentionExpandCount}"/>
<input class="b3-text-field fn__flex-center fn__size200" id="backmentionExpandCount" type="number" min="-1" max="512" value="${window.siyuan.config.editor.backmentionExpandCount}"/>
</div>
<div class="fn__flex b3-label config__item">
<div class="fn__flex-1">
@ -401,7 +398,7 @@ export const editor = {
_onSetEditor: (editorData: Config.IEditor) => {
const changeReadonly = editorData.readOnly !== window.siyuan.config.editor.readOnly;
if (changeReadonly) {
editor.setReadonly(editorData.readOnly);
setReadOnly(editorData.readOnly);
}
window.siyuan.config.editor = editorData;
getAllModels().editor.forEach((item) => {

View File

@ -0,0 +1,6 @@
import {fetchPost} from "../../util/fetch";
export const setReadOnly = (readOnly: boolean) => {
window.siyuan.config.editor.readOnly = readOnly;
fetchPost("/api/setting/setEditor", window.siyuan.config.editor);
};

View File

@ -65,7 +65,7 @@ export const openSnippets = () => {
<div class="fn__flex-1"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input data-type="css" data-action="search" type="text" placeholder="Enter ${window.siyuan.languages.search}" class="b3-text-field b3-form__icon-input">
<input data-type="css" data-action="search" type="text" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}" class="b3-text-field b3-form__icon-input">
</div>
<div class="fn__space"></div>
<span aria-label="${window.siyuan.languages.addAttr} CSS" id="addCodeSnippetCSS" class="b3-tooltips b3-tooltips__sw block__icon block__icon--show">
@ -81,7 +81,7 @@ export const openSnippets = () => {
<div class="fn__flex-1"></div>
<div class="b3-form__icon">
<svg class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
<input data-type="js" data-action="search" type="text" placeholder="Enter ${window.siyuan.languages.search}" class="b3-text-field b3-form__icon-input">
<input data-type="js" data-action="search" type="text" placeholder="${window.siyuan.languages.enterKey} ${window.siyuan.languages.search}" class="b3-text-field b3-form__icon-input">
</div>
<div class="fn__space"></div>
<span aria-label="${window.siyuan.languages.addAttr} JS" id="addCodeSnippetJS" class="b3-tooltips b3-tooltips__sw block__icon block__icon--show">

View File

@ -93,6 +93,7 @@ export abstract class Constants {
public static readonly CB_GET_ROOTSCROLL = "cb-get-rootscroll"; // 如果为 rootID 就滚动到指定位置,必有 rootID
public static readonly CB_GET_HTML = "cb-get-html"; // 直接渲染,不需要再 /api/block/getDocInfo否则搜索表格无法定位
public static readonly CB_GET_HISTORY = "cb-get-history"; // 历史渲染
public static readonly CB_GET_OPENNEW = "cb-get-opennew"; // 编辑器只读后新建文件需为临时解锁状态
// localstorage
public static readonly LOCAL_ZOOM = "local-zoom";

View File

@ -22,7 +22,9 @@ export const initMessage = () => {
} else if (target.tagName === "A" || target.tagName === "BUTTON") {
break;
} else if (target.classList.contains("b3-snackbar")) {
hideMessage(target.getAttribute("data-id"));
if (getSelection().rangeCount === 0 || !getSelection().getRangeAt(0).toString()) {
hideMessage(target.getAttribute("data-id"));
}
event.preventDefault();
event.stopPropagation();
break;
@ -44,7 +46,7 @@ export const showMessage = (message: string, timeout = 6000, type = "info", mess
const messageVersion = message + (type === "error" ? " v" + Constants.SIYUAN_VERSION : "");
if (existElement) {
window.clearTimeout(parseInt(existElement.getAttribute("data-timeoutid")));
existElement.innerHTML = `<div class="b3-snackbar__content${timeout === 0 ? " b3-snackbar__content--close" : ""}">${messageVersion}</div>${timeout === 0 ? '<svg class="b3-snackbar__close"><use xlink:href="#iconCloseRound"></use></svg>' : ""}`;
existElement.innerHTML = `<div data-type="textMenu" class="b3-snackbar__content${timeout === 0 ? " b3-snackbar__content--close" : ""}">${messageVersion}</div>${timeout === 0 ? '<svg class="b3-snackbar__close"><use xlink:href="#iconCloseRound"></use></svg>' : ""}`;
if (type === "error") {
existElement.classList.add("b3-snackbar--error");
} else {
@ -58,7 +60,7 @@ export const showMessage = (message: string, timeout = 6000, type = "info", mess
}
return;
}
let messageHTML = `<div data-id="${id}" class="b3-snackbar--hide b3-snackbar${type === "error" ? " b3-snackbar--error" : ""}"><div class="b3-snackbar__content${timeout === 0 ? " b3-snackbar__content--close" : ""}">${messageVersion}</div>`;
let messageHTML = `<div data-id="${id}" class="b3-snackbar--hide b3-snackbar${type === "error" ? " b3-snackbar--error" : ""}"><div data-type="textMenu" class="b3-snackbar__content${timeout === 0 ? " b3-snackbar__content--close" : ""}">${messageVersion}</div>`;
if (timeout === 0) {
messageHTML += '<svg class="b3-snackbar__close"><use xlink:href="#iconCloseRound"></use></svg>';
} else if (timeout !== -1) { // -1 时需等待请求完成后手动关闭
@ -68,6 +70,7 @@ export const showMessage = (message: string, timeout = 6000, type = "info", mess
messageHTML = messageHTML.replace("<div data-id", `<div data-timeoutid="${timeoutId}" data-id`);
}
messagesElement.parentElement.classList.add("b3-snackbars--show");
messagesElement.parentElement.style.zIndex = (++window.siyuan.zIndex).toString();
messagesElement.insertAdjacentHTML("afterbegin", messageHTML + "</div>");
setTimeout(() => {
messagesElement.querySelectorAll(".b3-snackbar--hide").forEach(item => {

View File

@ -599,11 +599,11 @@ const bindEvent = (app: App, element: Element, dialog?: Dialog) => {
chipClass += "b3-chip--warning ";
ariaLabel = window.siyuan.languages.historyOutline;
}
html += `<li data-notebook-id="${docItem.notebook}" title="${escapeAttr(docItem.title)}" data-created="${created}" data-type="${typeElement.value === "2" ? "assets" : "doc"}" data-path="${docItem.path}" class="b3-list-item b3-list-item--hide-action" style="padding-left: 22px">
<span class="${opElement.value === "all" ? "" : "fn__none"}${chipClass}b3-tooltips b3-tooltips__n" aria-label="${ariaLabel}">${docItem.op.substring(0, 1).toUpperCase()}</span>
<span class="b3-list-item__text">${escapeHtml(docItem.title)}</span>
html += `<li data-notebook-id="${docItem.notebook}" data-created="${created}" data-type="${typeElement.value === "2" ? "assets" : "doc"}" data-path="${docItem.path}" class="b3-list-item b3-list-item--hide-action" style="padding-left: 22px">
<span class="${opElement.value === "all" ? "" : "fn__none"}${chipClass}ariaLabel" data-position="6bottom" aria-label="${ariaLabel}">${docItem.op.substring(0, 1).toUpperCase()}</span>
<span class="b3-list-item__text" title="${escapeAttr(docItem.title)}">${escapeHtml(docItem.title)}</span>
<span class="fn__space"></span>
<span class="b3-list-item__action b3-tooltips b3-tooltips__n" data-type="rollback" aria-label="${window.siyuan.languages.rollback}">
<span class="b3-list-item__action ariaLabel" data-type="rollback" data-position="6bottom" aria-label="${window.siyuan.languages.rollback}">
<svg><use xlink:href="#iconUndo"></use></svg>
</span>
</li>`;

View File

@ -61,7 +61,7 @@ export class App {
if (data) {
switch (data.cmd) {
case "reloadPlugin":
reloadPlugin(this);
reloadPlugin(this, data.data);
break;
case "syncMergeResult":
reloadSync(this, data.data);

View File

@ -587,7 +587,7 @@ export class Backlink extends Model {
backlinkMOpenIds: [],
backlinkMStatus: 3
};
if (data.mentionsCount === 0) {
if (data.mentionsCount === 0 || window.siyuan.config.editor.backmentionExpandCount === -1) {
this.status[this.blockId].backlinkMStatus = 3;
} else {
Array.from({length: window.siyuan.config.editor.backmentionExpandCount}).forEach((item, index) => {

View File

@ -921,7 +921,9 @@ export class Files extends Model {
// 文件展开时,刷新
liElement.nextElementSibling.remove();
}
liElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
const arrowElement = liElement.querySelector(".b3-list-item__arrow");
arrowElement.classList.add("b3-list-item__arrow--open");
arrowElement.parentElement.classList.remove("fn__hidden");
liElement.insertAdjacentHTML("afterend", `<ul>${fileHTML}</ul>`);
this.setCurrent(this.element.querySelector(`ul[data-url="${data.box}"] li[data-path="${filePath}"]`));
}
@ -1005,7 +1007,7 @@ export class Files extends Model {
if (item.count && item.count > 0) {
countHTML = `<span class="popover__block counter b3-tooltips b3-tooltips__nw" aria-label="${window.siyuan.languages.ref}">${item.count}</span>`;
}
const ariaLabel = `${getDisplayName(item.name, true, true)} ${item.hSize}${item.bookmark ? "<br>" + window.siyuan.languages.bookmark + " " + item.bookmark : ""}${item.name1 ? "<br>" + window.siyuan.languages.name + " " + item.name1 : ""}${item.alias ? "<br>" + window.siyuan.languages.alias + " " + item.alias : ""}${item.memo ? "<br>" + window.siyuan.languages.memo + " " + item.memo : ""}${item.subFileCount !== 0 ? window.siyuan.languages.includeSubFile.replace("x", item.subFileCount) : ""}<br>${window.siyuan.languages.modifiedAt} ${item.hMtime}<br>${window.siyuan.languages.createdAt} ${item.hCtime}`;
const ariaLabel = `${getDisplayName(item.name, true, true)} <small class='ft__on-surface'>${item.hSize}</small>${item.bookmark ? "<br>" + window.siyuan.languages.bookmark + " " + item.bookmark : ""}${item.name1 ? "<br>" + window.siyuan.languages.name + " " + item.name1 : ""}${item.alias ? "<br>" + window.siyuan.languages.alias + " " + item.alias : ""}${item.memo ? "<br>" + window.siyuan.languages.memo + " " + item.memo : ""}${item.subFileCount !== 0 ? window.siyuan.languages.includeSubFile.replace("x", item.subFileCount) : ""}<br>${window.siyuan.languages.modifiedAt} ${item.hMtime}<br>${window.siyuan.languages.createdAt} ${item.hCtime}`;
return `<li data-node-id="${item.id}" data-name="${Lute.EscapeHTMLStr(item.name)}" draggable="true" data-count="${item.subFileCount}"
data-type="navigation-file"
style="--file-toggle-width:${(item.path.split("/").length - 2) * 18 + 40}px"

View File

@ -430,6 +430,23 @@ export class Outline extends Model {
}
}
public setCurrentByPreview(nodeElement: Element) {
if (!nodeElement) {
return;
}
let previousElement = nodeElement;
while (previousElement && !previousElement.classList.contains("b3-typography")) {
if (["H1", "H2", "H3", "H4", "H5", "H6"].includes(previousElement.tagName)) {
break;
} else {
previousElement = previousElement.previousElementSibling || previousElement.parentElement;
}
}
if (previousElement && previousElement.id) {
this.setCurrentById(previousElement.id);
}
}
private setCurrentById(id: string) {
this.element.querySelectorAll(".b3-list-item.b3-list-item--focus").forEach(item => {
item.classList.remove("b3-list-item--focus");

View File

@ -19,7 +19,7 @@ import {fetchPost} from "../util/fetch";
import {needSubscribe} from "../util/needSubscribe";
import * as dayjs from "dayjs";
import {exportLayout} from "./util";
import {commandPanel} from "../boot/globalEvent/commandPanel";
import {commandPanel} from "../boot/globalEvent/command/panel";
export const initBar = (app: App) => {
const toolbarElement = document.getElementById("toolbar");

View File

@ -683,7 +683,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
/// #if MOBILE
submenu.push({
label: isInAndroid() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
accelerator: showAccelerator ? "Click" : "",
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
openByMobile(src);
}
@ -697,7 +697,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
submenu.push({
icon: "iconLayoutRight",
label: window.siyuan.languages.insertRight,
accelerator: showAccelerator ? "Click" : "",
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click() {
openAsset(app, src.trim(), parseInt(getSearch("page", src)), "right");
}
@ -705,7 +705,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
submenu.push({
label: window.siyuan.languages.openBy,
icon: "iconOpen",
accelerator: showAccelerator ? "⌥Click" : "",
accelerator: showAccelerator ? "⌥" + window.siyuan.languages.click : "",
click() {
openAsset(app, src.trim(), parseInt(getSearch("page", src)));
}
@ -721,14 +721,14 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
submenu.push({
icon: "iconFolder",
label: window.siyuan.languages.showInFolder,
accelerator: showAccelerator ? "⌘Click" : "",
accelerator: showAccelerator ? "⌘" + window.siyuan.languages.click : "",
click: () => {
openBy(src, "folder");
}
});
submenu.push({
label: window.siyuan.languages.useDefault,
accelerator: showAccelerator ? "⇧Click" : "",
accelerator: showAccelerator ? "⇧" + window.siyuan.languages.click : "",
click() {
openBy(src, "app");
}
@ -738,7 +738,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
/// #if !BROWSER
submenu.push({
label: window.siyuan.languages.useDefault,
accelerator: showAccelerator ? "Click" : "",
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click() {
openBy(src, "app");
}
@ -746,7 +746,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
submenu.push({
icon: "iconFolder",
label: window.siyuan.languages.showInFolder,
accelerator: showAccelerator ? "⌘Click" : "",
accelerator: showAccelerator ? "⌘" + window.siyuan.languages.click : "",
click: () => {
openBy(src, "folder");
}
@ -754,7 +754,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
/// #else
submenu.push({
label: isInAndroid() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
accelerator: showAccelerator ? "Click" : "",
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
openByMobile(src);
}
@ -770,7 +770,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
/// #if !BROWSER
submenu.push({
label: window.siyuan.languages.useDefault,
accelerator: showAccelerator ? "Click" : "",
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
shell.openExternal(src).catch((e) => {
showMessage(e);
@ -780,7 +780,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
/// #else
submenu.push({
label: isInAndroid() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
accelerator: showAccelerator ? "Click" : "",
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
openByMobile(src);
}

View File

@ -13,6 +13,7 @@ import {Menu} from "./Menu";
import {hasClosestByClassName, hasTopClosestByTag} from "../protyle/util/hasClosest";
import {App} from "../index";
import {Constants} from "../constants";
import {textMenu} from "./text";
export class Menus {
@ -89,7 +90,15 @@ export class Menus {
initDockMenu(target).popup({x: event.clientX, y: event.clientY});
event.stopPropagation();
break;
} else if (dataType === "textMenu") {
/// #if !BROWSER
textMenu(target).open({x: event.clientX, y: event.clientY});
event.stopPropagation();
event.preventDefault();
break;
/// #endif
}
target = target.parentElement;
}
}, false);

View File

@ -363,7 +363,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.openBy,
icon: "iconOpen",
accelerator: window.siyuan.config.keymap.editor.general.openBy.custom + "/Click",
accelerator: window.siyuan.config.keymap.editor.general.openBy.custom + "/" + window.siyuan.languages.click,
click() {
checkFold(refBlockId, (zoomIn, action) => {
openFileById({
@ -378,7 +378,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.refTab,
icon: "iconEyeoff",
accelerator: window.siyuan.config.keymap.editor.general.refTab.custom + "/⌘Click",
accelerator: window.siyuan.config.keymap.editor.general.refTab.custom + "/⌘" + window.siyuan.languages.click,
click() {
checkFold(refBlockId, (zoomIn) => {
openFileById({
@ -394,7 +394,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.insertRight,
icon: "iconLayoutRight",
accelerator: window.siyuan.config.keymap.editor.general.insertRight.custom + "/⌥Click",
accelerator: window.siyuan.config.keymap.editor.general.insertRight.custom + "/⌥" + window.siyuan.languages.click,
click() {
checkFold(refBlockId, (zoomIn, action) => {
openFileById({
@ -410,7 +410,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.insertBottom,
icon: "iconLayoutBottom",
accelerator: window.siyuan.config.keymap.editor.general.insertBottom.custom + (window.siyuan.config.keymap.editor.general.insertBottom.custom ? "/" : "") + "⇧Click",
accelerator: window.siyuan.config.keymap.editor.general.insertBottom.custom + (window.siyuan.config.keymap.editor.general.insertBottom.custom ? "/" : "") + "⇧" + window.siyuan.languages.click,
click() {
checkFold(refBlockId, (zoomIn, action) => {
openFileById({
@ -1392,7 +1392,7 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => {
/// #if !MOBILE
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.search,
accelerator: "Click",
accelerator: window.siyuan.languages.click,
icon: "iconSearch",
click() {
openGlobalSearch(protyle.app, `#${tagElement.textContent}#`, false);
@ -1935,7 +1935,7 @@ export const setFold = (protyle: IProtyle, nodeElement: Element, isOpen?: boolea
const id = nodeElement.getAttribute("data-node-id");
if (nodeElement.getAttribute("data-type") === "NodeHeading") {
if (hasFold) {
nodeElement.insertAdjacentHTML("beforeend", '<div spin="1" style="text-align: center"><img width="24px" src="/stage/loading-pure.svg"></div>');
nodeElement.insertAdjacentHTML("beforeend", '<div spin="1" style="text-align: center"><img width="24px" height="24px" src="/stage/loading-pure.svg"></div>');
transaction(protyle, [{
action: "unfoldHeading",
id,

26
app/src/menus/text.ts Normal file
View File

@ -0,0 +1,26 @@
import {Menu} from "../plugin/Menu";
export const textMenu = (target: Element) => {
const menu = new Menu();
if (menu.isOpen) {
return;
}
menu.addItem({
label: window.siyuan.languages.copy,
icon: "iconCopy",
click() {
document.execCommand("copy");
}
});
menu.addItem({
label: window.siyuan.languages.selectAll,
icon: "iconSelect",
click() {
if (getSelection().rangeCount === 0) {
return;
}
getSelection().getRangeAt(0).selectNode(target);
}
});
return menu;
};

View File

@ -31,13 +31,12 @@ export const exportAsset = (src: string) => {
/// #endif
};
export const openEditorTab = (app: App, ids: string[], notebookId?: string, pathString?: string) => {
/// #if !MOBILE
const openSubmenus: IMenu[] = [{
icon: "iconLayoutRight",
label: window.siyuan.languages.insertRight,
accelerator: ids.length === 1 ? `${updateHotkeyTip(window.siyuan.config.keymap.editor.general.insertRight.custom)}/${updateHotkeyTip("⌥Click")}` : undefined,
accelerator: ids.length === 1 ? `${updateHotkeyTip(window.siyuan.config.keymap.editor.general.insertRight.custom)}/${updateHotkeyTip("⌥" + window.siyuan.languages.click)}` : undefined,
click: () => {
if (notebookId) {
openFileById({
@ -63,7 +62,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path
}, {
icon: "iconLayoutBottom",
label: window.siyuan.languages.insertBottom,
accelerator: ids.length === 1 ? "⇧Click" : "",
accelerator: ids.length === 1 ? "⇧" + window.siyuan.languages.click : "",
click: () => {
if (notebookId) {
openFileById({
@ -90,7 +89,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path
if (window.siyuan.config.fileTree.openFilesUseCurrentTab) {
openSubmenus.push({
label: window.siyuan.languages.openInNewTab,
accelerator: ids.length === 1 ? "⌥⌘Click" : undefined,
accelerator: ids.length === 1 ? "⌥⌘" + window.siyuan.languages.click : undefined,
click: () => {
if (notebookId) {
openFileById({

View File

@ -6,6 +6,8 @@ import {getEventName} from "../../protyle/util/compatibility";
import {App} from "../../index";
import {closePanel} from "../util/closePanel";
import {checkFold} from "../../util/noRelyPCFunction";
import {hasClosestBlock} from "../../protyle/util/hasClosest";
import {getPreviousBlock} from "../../protyle/wysiwyg/getBlock";
export class MobileOutline {
private tree: Tree;
@ -57,8 +59,13 @@ export class MobileOutline {
public update() {
if (!window.siyuan.mobile.editor.protyle.preview.element.classList.contains("fn__none")) {
const blockId = window.siyuan.mobile.editor.protyle.preview.element.querySelector(".selected")?.id;
window.siyuan.mobile.editor.protyle.preview.render(window.siyuan.mobile.editor.protyle, (outlineData) => {
this.tree.updateData(outlineData);
if (blockId) {
this.setCurrentByPreview(this.element.querySelector("#" + blockId));
return;
}
});
return;
}
@ -83,6 +90,13 @@ export class MobileOutline {
this.openNodes[blockId] = this.tree.getExpandIds();
}
if (window.siyuan.mobile.editor?.protyle?.toolbar.range) {
const blockElement = hasClosestBlock(window.siyuan.mobile.editor.protyle.toolbar.range.startContainer);
if (blockElement) {
this.setCurrent(blockElement);
return;
}
}
if (currentId) {
currentElement = this.element.querySelector(`[data-node-id="${currentId}"]`);
if (currentElement) {
@ -91,4 +105,68 @@ export class MobileOutline {
}
});
}
private setCurrentByPreview(nodeElement: Element) {
if (!nodeElement) {
return;
}
let previousElement = nodeElement;
while (previousElement && !previousElement.classList.contains("b3-typography")) {
if (["H1", "H2", "H3", "H4", "H5", "H6"].includes(previousElement.tagName)) {
break;
} else {
previousElement = previousElement.previousElementSibling || previousElement.parentElement;
}
}
if (previousElement.id) {
this.setCurrentById(previousElement.id);
}
}
private setCurrentById(id: string) {
this.element.querySelectorAll(".b3-list-item.b3-list-item--focus").forEach(item => {
item.classList.remove("b3-list-item--focus");
});
let currentElement = this.element.querySelector(`.b3-list-item[data-node-id="${id}"]`) as HTMLElement;
while (currentElement && currentElement.clientHeight === 0) {
currentElement = currentElement.parentElement.previousElementSibling as HTMLElement;
}
if (currentElement) {
currentElement.classList.add("b3-list-item--focus");
this.tree.element.scrollTop = currentElement.offsetTop - this.element.clientHeight / 2 - 30;
}
}
private setCurrent(nodeElement: HTMLElement) {
if (!nodeElement) {
return;
}
if (nodeElement.getAttribute("data-type") === "NodeHeading") {
this.setCurrentById(nodeElement.getAttribute("data-node-id"));
} else {
let previousElement = getPreviousBlock(nodeElement);
while (previousElement) {
if (previousElement.getAttribute("data-type") === "NodeHeading") {
break;
} else {
previousElement = getPreviousBlock(previousElement);
}
}
if (previousElement) {
this.setCurrentById(previousElement.getAttribute("data-node-id"));
} else {
fetchPost("/api/block/getBlockBreadcrumb", {
id: nodeElement.getAttribute("data-node-id"),
excludeTypes: []
}, (response) => {
response.data.reverse().find((item: IBreadcrumb) => {
if (item.type === "NodeHeading") {
this.setCurrentById(item.id);
return true;
}
});
});
}
}
}
}

View File

@ -20,7 +20,7 @@ import {isHuawei, isInAndroid, isInIOS} from "../../protyle/util/compatibility";
import {newFile} from "../../util/newFile";
import {afterLoadPlugin} from "../../plugin/loader";
import {Menu} from "../../plugin/Menu";
import {commandPanel} from "../../boot/globalEvent/commandPanel";
import {commandPanel} from "../../boot/globalEvent/command/panel";
export const popMenu = () => {
activeBlur();

View File

@ -203,7 +203,7 @@ export const initEditor = () => {
<div class="b3-label fn__displayblock">
${window.siyuan.languages.backmentionExpand}
<span class="fn__hr"></span>
<input class="b3-text-field fn__block" id="backmentionExpandCount" type="number" min="0" max="512" value="${window.siyuan.config.editor.backmentionExpandCount}"/>
<input class="b3-text-field fn__block" id="backmentionExpandCount" type="number" min="-1" max="512" value="${window.siyuan.config.editor.backmentionExpandCount}"/>
<div class="b3-label__text">${window.siyuan.languages.backmentionExpandTip}</div>
</div>
<div class="b3-label fn__displayblock">

View File

@ -1,5 +1,5 @@
import {App} from "../../index";
import {execByCommand} from "../../boot/globalEvent/commandPanel";
import {execByCommand} from "../../boot/globalEvent/command/panel";
import {matchHotKey} from "../../protyle/util/hotKey";
import {getCurrentEditor} from "../editor";
import {filterHotkey} from "../../boot/globalEvent/commonHotkey";

View File

@ -8,7 +8,7 @@ export const onMessage = (app: App, data: IWebSocketData) => {
if (data) {
switch (data.cmd) {
case "reloadPlugin":
reloadPlugin(app);
reloadPlugin(app, data.data);
break;
case "syncMergeResult":
reloadSync(app, data.data);

View File

@ -25,12 +25,14 @@ const runCode = (code: string, sourceURL: string) => {
return window.eval("(function anonymous(require, module, exports){".concat(code, "\n})\n//# sourceURL=").concat(sourceURL, "\n"));
};
export const loadPlugins = async (app: App) => {
export const loadPlugins = async (app: App, names?: string[]) => {
const response = await fetchSyncPost("/api/petal/loadPetals", {frontend: getFrontend()});
let css = "";
// 为加快启动速度,不进行 await
response.data.forEach((item: IPluginData) => {
loadPluginJS(app, item);
if (!names || (names && names.includes(item.name))) {
loadPluginJS(app, item);
}
css += item.css || "" + "\n";
});
const pluginsStyle = document.getElementById("pluginsStyle");
@ -197,13 +199,15 @@ export const afterLoadPlugin = (plugin: Plugin) => {
/// #endif
};
export const reloadPlugin = (app: App) => {
app.plugins.forEach((item) => {
uninstall(this, item.name);
export const reloadPlugin = async (app: App, data: { upsertPlugins: string[], removePlugins: string[] }) => {
data.removePlugins.concat(data.upsertPlugins).forEach((item) => {
uninstall(app, item);
});
loadPlugins(this).then(() => {
loadPlugins(app, data.upsertPlugins).then(() => {
app.plugins.forEach(item => {
afterLoadPlugin(item);
if (data.upsertPlugins.includes(item.name)) {
afterLoadPlugin(item);
}
});
});
/// #if !MOBILE

View File

@ -1,5 +1,5 @@
/// #if !MOBILE
import {getAllModels, getAllWnds} from "../../layout/getAll";
import {getAllEditor, getAllModels, getAllWnds} from "../../layout/getAll";
/// #endif
import {addLoading} from "../ui/initUI";
import {fetchPost} from "../../util/fetch";
@ -24,9 +24,9 @@ export const net2LocalAssets = (protyle: IProtyle, type: "Assets" | "Img") => {
/// #if MOBILE
reloadProtyle(protyle, false);
/// #else
getAllModels().editor.forEach(item => {
if (item.editor.protyle.block.rootID === protyle.block.rootID) {
reloadProtyle(item.editor.protyle, item.editor.protyle.element.isSameNode(protyle.element));
getAllEditor().forEach(item => {
if (item.protyle.block.rootID === protyle.block.rootID) {
reloadProtyle(item.protyle, item.protyle.element.isSameNode(protyle.element));
}
});
/// #endif

View File

@ -450,7 +450,9 @@ ${padHTML}
}, getResponse => {
onGet({data: getResponse, protyle});
});
/// #if !MOBILE
saveLayout();
/// #endif
}
}, {
current: !protyle.preview.element.classList.contains("fn__none"),
@ -460,7 +462,9 @@ ${padHTML}
click: () => {
setEditMode(protyle, "preview");
window.siyuan.menus.menu.remove();
/// #if !MOBILE
saveLayout();
/// #endif
}
}]
}).element);

View File

@ -422,6 +422,7 @@ const renderPDF = async (id: string) => {
config: {
appearance: { mode: 0, codeBlockThemeDark: "${window.siyuan.config.appearance.codeBlockThemeDark}", codeBlockThemeLight: "${window.siyuan.config.appearance.codeBlockThemeLight}" },
editor: {
allowHTMLBLockScript: ${window.siyuan.config.editor.allowHTMLBLockScript},
fontSize: ${window.siyuan.config.editor.fontSize},
codeLineWrap: true,
codeLigatures: ${window.siyuan.config.editor.codeLigatures},

View File

@ -62,12 +62,13 @@ export class Gutter {
private gutterTip: string;
constructor(protyle: IProtyle) {
if (!isMac()) {
if (isMac()) {
this.gutterTip = window.siyuan.languages.gutterTip;
} else {
this.gutterTip = window.siyuan.languages.gutterTip.replace("⌥→", updateHotkeyTip(window.siyuan.config.keymap.general.enter.custom))
.replace("⌘↑", updateHotkeyTip(window.siyuan.config.keymap.editor.general.collapse.custom))
.replace("⌥⌘A", updateHotkeyTip(window.siyuan.config.keymap.editor.general.attr.custom)).replace(/⌘/g, "Ctrl+").replace(/⌥/g, "Alt+").replace(/⇧/g, "Shift+").replace(/⌃/g, "Ctrl+");
.replace("⌥⌘A", updateHotkeyTip(window.siyuan.config.keymap.editor.general.attr.custom))
.replace(/⌘/g, "Ctrl+").replace(/⌥/g, "Alt+").replace(/⇧/g, "Shift+").replace(/⌃/g, "Ctrl+");
}
this.element = document.createElement("div");
this.element.className = "protyle-gutters";
@ -263,6 +264,11 @@ export class Gutter {
data: blockElement.getAttribute("updated")
}]);
insertAttrViewBlockAnimation(protyle, blockElement, srcIDs, previousID, avID);
if (event.altKey) {
this.element.querySelectorAll("button").forEach(item => {
item.dataset.rowId = srcIDs[0];
});
}
blockElement.setAttribute("updated", newUpdated);
} else {
avContextmenu(protyle, rowElement as HTMLElement, {
@ -277,7 +283,7 @@ export class Gutter {
}
if (isOnlyMeta(event)) {
zoomOut({protyle, id});
} else if (event.altKey && !protyle.disabled) {
} else if (event.altKey) {
let foldElement: Element;
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${id}"]`)).find(item => {
if (!hasClosestByAttribute(item.parentElement, "data-type", "NodeBlockQueryEmbed") &&
@ -1595,7 +1601,7 @@ export class Gutter {
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
if (!protyle.options.backlinkData) {
window.siyuan.menus.menu.append(new MenuItem({
accelerator: `${updateHotkeyTip(window.siyuan.config.keymap.general.enter.custom)}/${updateHotkeyTip("⌘Click")}`,
accelerator: `${updateHotkeyTip(window.siyuan.config.keymap.general.enter.custom)}/${updateHotkeyTip("⌘" + window.siyuan.languages.click)}`,
label: window.siyuan.languages.enter,
click: () => {
zoomOut({protyle, id});
@ -1665,7 +1671,7 @@ export class Gutter {
if (type !== "NodeThematicBreak") {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.fold,
accelerator: `${updateHotkeyTip(window.siyuan.config.keymap.editor.general.collapse.custom)}/${updateHotkeyTip("⌥Click")}`,
accelerator: `${updateHotkeyTip(window.siyuan.config.keymap.editor.general.collapse.custom)}/${updateHotkeyTip("⌥" + window.siyuan.languages.click)}`,
click() {
setFold(protyle, nodeElement);
focusBlock(nodeElement);
@ -1675,7 +1681,7 @@ export class Gutter {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.attr,
icon: "iconAttr",
accelerator: window.siyuan.config.keymap.editor.general.attr.custom + "/" + updateHotkeyTip("⇧Click"),
accelerator: window.siyuan.config.keymap.editor.general.attr.custom + "/" + updateHotkeyTip("⇧" + window.siyuan.languages.click),
click() {
openAttr(nodeElement, "bookmark", protyle);
}

Some files were not shown because too many files have changed in this diff Show More