mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-20 16:40:13 +01:00
This commit is contained in:
parent
fdd9973d24
commit
ad3aaab34a
5 changed files with 575 additions and 146 deletions
|
|
@ -7,7 +7,7 @@
|
||||||
"id": "20200924100950-9op5xi1",
|
"id": "20200924100950-9op5xi1",
|
||||||
"title": "Shortcuts",
|
"title": "Shortcuts",
|
||||||
"type": "doc",
|
"type": "doc",
|
||||||
"updated": "20221109143648"
|
"updated": "20221123220150"
|
||||||
},
|
},
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
|
|
@ -7603,7 +7603,7 @@
|
||||||
"Properties": {
|
"Properties": {
|
||||||
"colgroup": "|",
|
"colgroup": "|",
|
||||||
"id": "20210601185420-1s8e9uy",
|
"id": "20210601185420-1s8e9uy",
|
||||||
"updated": "20221105230819"
|
"updated": "20221123220150"
|
||||||
},
|
},
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
|
|
@ -7642,41 +7642,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"Type": "NodeTableRow",
|
|
||||||
"Data": "tr",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeTableCell",
|
|
||||||
"Data": "td",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": "Move"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeTableCell",
|
|
||||||
"Data": "td",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeTextMark",
|
|
||||||
"TextMarkType": "kbd",
|
|
||||||
"TextMarkTextContent": "Drag"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"Type": "NodeTableRow",
|
"Type": "NodeTableRow",
|
||||||
"Data": "tr",
|
"Data": "tr",
|
||||||
|
|
@ -7847,6 +7812,173 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "Move"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "Copy and move"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Ctrl+Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⌃+Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "Generate block ref"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Alt+Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⌥+Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "Generate embed block"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Shift+Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⇧+Drag"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
"id": "20200813004551-gm0pbn1",
|
"id": "20200813004551-gm0pbn1",
|
||||||
"title": "快捷键",
|
"title": "快捷键",
|
||||||
"type": "doc",
|
"type": "doc",
|
||||||
"updated": "20221109143355"
|
"updated": "20221123214805"
|
||||||
},
|
},
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
|
|
@ -7572,7 +7572,7 @@
|
||||||
"Properties": {
|
"Properties": {
|
||||||
"colgroup": "|",
|
"colgroup": "|",
|
||||||
"id": "20210526200223-xyuqsge",
|
"id": "20210526200223-xyuqsge",
|
||||||
"updated": "20221105230414"
|
"updated": "20221123214805"
|
||||||
},
|
},
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
|
|
@ -7607,41 +7607,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"Type": "NodeTableRow",
|
|
||||||
"Data": "tr",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeTableCell",
|
|
||||||
"Data": "td",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": "移动"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeTableCell",
|
|
||||||
"Data": "td",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeTextMark",
|
|
||||||
"TextMarkType": "kbd",
|
|
||||||
"TextMarkTextContent": "拖拽"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"Type": "NodeTableRow",
|
"Type": "NodeTableRow",
|
||||||
"Data": "tr",
|
"Data": "tr",
|
||||||
|
|
@ -7671,7 +7636,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": ""
|
"Data": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -7706,7 +7671,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": " / "
|
"Data": " / "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeTextMark",
|
"Type": "NodeTextMark",
|
||||||
|
|
@ -7715,7 +7680,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": ""
|
"Data": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -7750,7 +7715,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": " / "
|
"Data": " / "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeTextMark",
|
"Type": "NodeTextMark",
|
||||||
|
|
@ -7759,7 +7724,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": ""
|
"Data": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -7794,16 +7759,187 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": " / "
|
"Data": " / "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Type": "NodeTextMark",
|
"Type": "NodeTextMark",
|
||||||
"TextMarkType": "kbd",
|
"TextMarkType": "kbd",
|
||||||
"TextMarkTextContent": "⇧Click"
|
"TextMarkTextContent": "⇧Click"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "移动"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
{
|
{
|
||||||
"Type": "NodeText",
|
"Type": "NodeText",
|
||||||
"Data": ""
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "复制并移动"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Ctrl+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⌃+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "生成块"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "引用"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Alt+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⌥+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "生成嵌入块"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Shift+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⇧+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
"icon": "2328",
|
"icon": "2328",
|
||||||
"id": "20211226122549-jktxego",
|
"id": "20211226122549-jktxego",
|
||||||
"title": "快捷鍵",
|
"title": "快捷鍵",
|
||||||
"updated": "20221109143714"
|
"updated": "20221123220121"
|
||||||
},
|
},
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
|
|
@ -7604,7 +7604,7 @@
|
||||||
"Properties": {
|
"Properties": {
|
||||||
"colgroup": "|",
|
"colgroup": "|",
|
||||||
"id": "20211226122652-ykdt6pc",
|
"id": "20211226122652-ykdt6pc",
|
||||||
"updated": "20221105230731"
|
"updated": "20221123220121"
|
||||||
},
|
},
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
|
|
@ -7639,41 +7639,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"Type": "NodeTableRow",
|
|
||||||
"Data": "tr",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeTableCell",
|
|
||||||
"Data": "td",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": "移動"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeTableCell",
|
|
||||||
"Data": "td",
|
|
||||||
"Children": [
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeTextMark",
|
|
||||||
"TextMarkType": "kbd",
|
|
||||||
"TextMarkTextContent": "拖拽"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Type": "NodeText",
|
|
||||||
"Data": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"Type": "NodeTableRow",
|
"Type": "NodeTableRow",
|
||||||
"Data": "tr",
|
"Data": "tr",
|
||||||
|
|
@ -7844,6 +7809,173 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "移動"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "複製並移動"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Ctrl+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⌃+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "生成塊引用"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Alt+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⌥+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableRow",
|
||||||
|
"Data": "tr",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": "生成嵌入塊"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTableCell",
|
||||||
|
"Data": "td",
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "Shift+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": " / "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeTextMark",
|
||||||
|
"TextMarkType": "kbd",
|
||||||
|
"TextMarkTextContent": "⇧+拖拽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Type": "NodeText",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,8 @@ import {insertHTML} from "./insertHTML";
|
||||||
import {isBrowser} from "../../util/functions";
|
import {isBrowser} from "../../util/functions";
|
||||||
import {hideElements} from "../ui/hideElements";
|
import {hideElements} from "../ui/hideElements";
|
||||||
|
|
||||||
const moveTo = async (protyle: IProtyle, sourceElements: Element[], targetElement: Element, isSameDoc: boolean, position: InsertPosition) => {
|
const moveTo = async (protyle: IProtyle, sourceElements: Element[], targetElement: Element,
|
||||||
|
isSameDoc: boolean, position: InsertPosition, isCopy: boolean) => {
|
||||||
let topSourceElement;
|
let topSourceElement;
|
||||||
const doOperations: IOperation[] = [];
|
const doOperations: IOperation[] = [];
|
||||||
const undoOperations: IOperation[] = [];
|
const undoOperations: IOperation[] = [];
|
||||||
|
|
@ -43,28 +44,57 @@ const moveTo = async (protyle: IProtyle, sourceElements: Element[], targetElemen
|
||||||
item.removeAttribute("fold");
|
item.removeAttribute("fold");
|
||||||
foldHeadingIds.push({id, parentID});
|
foldHeadingIds.push({id, parentID});
|
||||||
}
|
}
|
||||||
undoOperations.push({
|
let copyId
|
||||||
action: "move",
|
let copyElement
|
||||||
id,
|
if (isCopy) {
|
||||||
previousID: item.previousElementSibling?.getAttribute("data-node-id"),
|
copyId = Lute.NewNodeID();
|
||||||
parentID,
|
undoOperations.push({
|
||||||
});
|
action: "delete",
|
||||||
if (!isSameDoc) {
|
id: copyId,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
undoOperations.push({
|
||||||
|
action: "move",
|
||||||
|
id,
|
||||||
|
previousID: item.previousElementSibling?.getAttribute("data-node-id"),
|
||||||
|
parentID,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!isSameDoc && !isCopy) {
|
||||||
// 打开两个相同的文档
|
// 打开两个相同的文档
|
||||||
const sameElement = protyle.wysiwyg.element.querySelector(`[data-node-id="${id}"]`);
|
const sameElement = protyle.wysiwyg.element.querySelector(`[data-node-id="${id}"]`);
|
||||||
if (sameElement) {
|
if (sameElement) {
|
||||||
sameElement.remove();
|
sameElement.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tempTargetElement.insertAdjacentElement(position, item);
|
|
||||||
doOperations.push({
|
if (isCopy) {
|
||||||
action: "move",
|
copyElement = item.cloneNode(true) as HTMLElement;
|
||||||
id,
|
copyElement.setAttribute("data-node-id", copyId);
|
||||||
previousID: position === "afterend" ? targetId : item.previousElementSibling?.getAttribute("data-node-id"), // 不能使用常量,移动后会被修改
|
copyElement.querySelectorAll("[data-node-id]").forEach((e) => {
|
||||||
parentID: item.parentElement?.getAttribute("data-node-id") || protyle.block.parentID || protyle.block.rootID,
|
const newId = Lute.NewNodeID();
|
||||||
});
|
e.setAttribute("data-node-id", newId);
|
||||||
|
e.setAttribute("updated", newId.split("-")[0]);
|
||||||
|
});
|
||||||
|
tempTargetElement.insertAdjacentElement(position, copyElement);
|
||||||
|
doOperations.push({
|
||||||
|
action: "insert",
|
||||||
|
id: copyId,
|
||||||
|
data: copyElement.outerHTML,
|
||||||
|
previousID: position === "afterend" ? targetId : item.previousElementSibling?.getAttribute("data-node-id"), // 不能使用常量,移动后会被修改
|
||||||
|
parentID: item.parentElement?.getAttribute("data-node-id") || protyle.block.parentID || protyle.block.rootID,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
tempTargetElement.insertAdjacentElement(position, item);
|
||||||
|
doOperations.push({
|
||||||
|
action: "move",
|
||||||
|
id,
|
||||||
|
previousID: position === "afterend" ? targetId : item.previousElementSibling?.getAttribute("data-node-id"), // 不能使用常量,移动后会被修改
|
||||||
|
parentID: item.parentElement?.getAttribute("data-node-id") || protyle.block.parentID || protyle.block.rootID,
|
||||||
|
});
|
||||||
|
}
|
||||||
if (position !== "afterend") {
|
if (position !== "afterend") {
|
||||||
tempTargetElement = item;
|
tempTargetElement = isCopy ? copyElement : item;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
undoOperations.reverse();
|
undoOperations.reverse();
|
||||||
|
|
@ -353,7 +383,7 @@ const dragSb = async (protyle: IProtyle, sourceElements: Element[], targetElemen
|
||||||
focusBlock(sourceElements[0]);
|
focusBlock(sourceElements[0]);
|
||||||
};
|
};
|
||||||
|
|
||||||
const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElement: Element, isBottom: boolean) => {
|
const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElement: Element, isBottom: boolean, isCopy: boolean) => {
|
||||||
const isSameDoc = protyle.element.contains(sourceElements[0]);
|
const isSameDoc = protyle.element.contains(sourceElements[0]);
|
||||||
const doOperations: IOperation[] = [];
|
const doOperations: IOperation[] = [];
|
||||||
const undoOperations: IOperation[] = [];
|
const undoOperations: IOperation[] = [];
|
||||||
|
|
@ -425,7 +455,7 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
|
||||||
id: newSourceElement.getAttribute("data-node-id"),
|
id: newSourceElement.getAttribute("data-node-id"),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const moveToResult = await moveTo(protyle, sourceElements, targetElement, isSameDoc, "afterend");
|
const moveToResult = await moveTo(protyle, sourceElements, targetElement, isSameDoc, "afterend", isCopy);
|
||||||
doOperations.push(...moveToResult.doOperations);
|
doOperations.push(...moveToResult.doOperations);
|
||||||
undoOperations.push(...moveToResult.undoOperations);
|
undoOperations.push(...moveToResult.undoOperations);
|
||||||
topSourceElement = moveToResult.topSourceElement;
|
topSourceElement = moveToResult.topSourceElement;
|
||||||
|
|
@ -485,7 +515,7 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
|
||||||
id: newSourceElement.getAttribute("data-node-id"),
|
id: newSourceElement.getAttribute("data-node-id"),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const moveToResult = await moveTo(protyle, sourceElements, targetElement, isSameDoc, "beforebegin");
|
const moveToResult = await moveTo(protyle, sourceElements, targetElement, isSameDoc, "beforebegin", isCopy);
|
||||||
doOperations.push(...moveToResult.doOperations);
|
doOperations.push(...moveToResult.doOperations);
|
||||||
undoOperations.push(...moveToResult.undoOperations);
|
undoOperations.push(...moveToResult.undoOperations);
|
||||||
topSourceElement = moveToResult.topSourceElement;
|
topSourceElement = moveToResult.topSourceElement;
|
||||||
|
|
@ -515,7 +545,8 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (oldSourceParentElement && oldSourceParentElement.classList.contains("list") &&
|
if (!isCopy &&
|
||||||
|
oldSourceParentElement && oldSourceParentElement.classList.contains("list") &&
|
||||||
oldSourceParentElement.getAttribute("data-subtype") === "o" &&
|
oldSourceParentElement.getAttribute("data-subtype") === "o" &&
|
||||||
!oldSourceParentElement.isSameNode(sourceElements[0].parentElement) && oldSourceParentElement.childElementCount > 1) {
|
!oldSourceParentElement.isSameNode(sourceElements[0].parentElement) && oldSourceParentElement.childElementCount > 1) {
|
||||||
Array.from(oldSourceParentElement.children).forEach((item) => {
|
Array.from(oldSourceParentElement.children).forEach((item) => {
|
||||||
|
|
@ -550,7 +581,7 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除空元素
|
// 删除空元素
|
||||||
if (topSourceElement) {
|
if (!isCopy && topSourceElement) {
|
||||||
doOperations.push({
|
doOperations.push({
|
||||||
action: "delete",
|
action: "delete",
|
||||||
id: topSourceElement.getAttribute("data-node-id"),
|
id: topSourceElement.getAttribute("data-node-id"),
|
||||||
|
|
@ -572,12 +603,12 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (oldSourceParentElement && oldSourceParentElement.classList.contains("sb") && oldSourceParentElement.childElementCount === 2) {
|
if (!isCopy && oldSourceParentElement && oldSourceParentElement.classList.contains("sb") && oldSourceParentElement.childElementCount === 2) {
|
||||||
// 拖拽后,sb 只剩下一个元素
|
// 拖拽后,sb 只剩下一个元素
|
||||||
const sbData = cancelSB(protyle, oldSourceParentElement);
|
const sbData = cancelSB(protyle, oldSourceParentElement);
|
||||||
doOperations.push(sbData.doOperations[0], sbData.doOperations[1]);
|
doOperations.push(sbData.doOperations[0], sbData.doOperations[1]);
|
||||||
undoOperations.splice(0, 0, sbData.undoOperations[0], sbData.undoOperations[1]);
|
undoOperations.splice(0, 0, sbData.undoOperations[0], sbData.undoOperations[1]);
|
||||||
} else if (oldSourceParentElement && oldSourceParentElement.classList.contains("protyle-wysiwyg") && oldSourceParentElement.childElementCount === 0) {
|
} else if (!isCopy && oldSourceParentElement && oldSourceParentElement.classList.contains("protyle-wysiwyg") && oldSourceParentElement.childElementCount === 0) {
|
||||||
/// #if !MOBILE
|
/// #if !MOBILE
|
||||||
// 拖拽后,根文档原内容为空,且不为悬浮窗
|
// 拖拽后,根文档原内容为空,且不为悬浮窗
|
||||||
const protyleElement = hasClosestByClassName(oldSourceParentElement, "protyle", true);
|
const protyleElement = hasClosestByClassName(oldSourceParentElement, "protyle", true);
|
||||||
|
|
@ -599,7 +630,7 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
|
||||||
}
|
}
|
||||||
/// #endif
|
/// #endif
|
||||||
}
|
}
|
||||||
if (isSameDoc) {
|
if (isSameDoc || isCopy) {
|
||||||
transaction(protyle, doOperations, undoOperations);
|
transaction(protyle, doOperations, undoOperations);
|
||||||
} else {
|
} else {
|
||||||
// 跨文档不支持撤销
|
// 跨文档不支持撤销
|
||||||
|
|
@ -686,7 +717,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
||||||
if (targetElement.parentElement.getAttribute("data-type") === "NodeSuperBlock" &&
|
if (targetElement.parentElement.getAttribute("data-type") === "NodeSuperBlock" &&
|
||||||
targetElement.parentElement.getAttribute("data-sb-layout") === "col") {
|
targetElement.parentElement.getAttribute("data-sb-layout") === "col") {
|
||||||
if (targetClass.includes("dragover__left") || targetClass.includes("dragover__right")) {
|
if (targetClass.includes("dragover__left") || targetClass.includes("dragover__right")) {
|
||||||
dragSame(protyle, sourceElements, targetElement, targetClass.includes("dragover__right"));
|
dragSame(protyle, sourceElements, targetElement, targetClass.includes("dragover__right"), event.ctrlKey);
|
||||||
} else {
|
} else {
|
||||||
dragSb(protyle, sourceElements, targetElement, targetClass.includes("dragover__bottom"), "row");
|
dragSb(protyle, sourceElements, targetElement, targetClass.includes("dragover__bottom"), "row");
|
||||||
}
|
}
|
||||||
|
|
@ -694,7 +725,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
||||||
if (targetClass.includes("dragover__left") || targetClass.includes("dragover__right")) {
|
if (targetClass.includes("dragover__left") || targetClass.includes("dragover__right")) {
|
||||||
dragSb(protyle, sourceElements, targetElement, targetClass.includes("dragover__right"), "col");
|
dragSb(protyle, sourceElements, targetElement, targetClass.includes("dragover__right"), "col");
|
||||||
} else {
|
} else {
|
||||||
dragSame(protyle, sourceElements, targetElement, targetClass.includes("dragover__bottom"));
|
dragSame(protyle, sourceElements, targetElement, targetClass.includes("dragover__bottom"), event.ctrlKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -227,9 +227,7 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven
|
||||||
const newId = Lute.NewNodeID();
|
const newId = Lute.NewNodeID();
|
||||||
e.setAttribute("data-node-id", newId);
|
e.setAttribute("data-node-id", newId);
|
||||||
e.classList.remove("protyle-wysiwyg--select", "protyle-wysiwyg--hl");
|
e.classList.remove("protyle-wysiwyg--select", "protyle-wysiwyg--hl");
|
||||||
if (e.getAttribute("updated")) {
|
e.setAttribute("updated", newId.split("-")[0]);
|
||||||
e.setAttribute("updated", newId.split("-")[0]);
|
|
||||||
}
|
|
||||||
isBlock = true;
|
isBlock = true;
|
||||||
});
|
});
|
||||||
if (nodeElement.classList.contains("table")) {
|
if (nodeElement.classList.contains("table")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue