diff options
-rw-r--r-- | src/css/dumbymap.css | 2 | ||||
-rw-r--r-- | src/editor.mjs | 22 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/css/dumbymap.css b/src/css/dumbymap.css index 416c216..7ddb21a 100644 --- a/src/css/dumbymap.css +++ b/src/css/dumbymap.css | |||
@@ -761,7 +761,7 @@ root { | |||
761 | .dragging-geolink { | 761 | .dragging-geolink { |
762 | user-select: none; | 762 | user-select: none; |
763 | 763 | ||
764 | .dumby-block > :not(:has(.mapclay)) { | 764 | .dumby-block > :not(:has(.mapclay[data-render="fulfilled"])) { |
765 | opacity: 0.3; | 765 | opacity: 0.3; |
766 | } | 766 | } |
767 | } | 767 | } |
diff --git a/src/editor.mjs b/src/editor.mjs index c3c51ef..cdbd5cc 100644 --- a/src/editor.mjs +++ b/src/editor.mjs | |||
@@ -2,7 +2,7 @@ | |||
2 | import { markdown2HTML, generateMaps } from './dumbymap' | 2 | import { markdown2HTML, generateMaps } from './dumbymap' |
3 | import { defaultAliases, parseConfigsFromYaml } from 'mapclay' | 3 | import { defaultAliases, parseConfigsFromYaml } from 'mapclay' |
4 | import * as menuItem from './MenuItem' | 4 | import * as menuItem from './MenuItem' |
5 | import { addAnchorByPoint } from './dumbyUtils.mjs' | 5 | import { addAnchorByPoint, createGeoLink } from './dumbyUtils.mjs' |
6 | import { shiftByWindow } from './utils.mjs' | 6 | import { shiftByWindow } from './utils.mjs' |
7 | import LeaderLine from 'leader-line' | 7 | import LeaderLine from 'leader-line' |
8 | import * as tutorial from './tutorial' | 8 | import * as tutorial from './tutorial' |
@@ -1084,6 +1084,7 @@ dumbyContainer.onmousedown = (e) => { | |||
1084 | const geoLink = document.createElement('a') | 1084 | const geoLink = document.createElement('a') |
1085 | geoLink.textContent = range.toString() | 1085 | geoLink.textContent = range.toString() |
1086 | geoLink.classList.add('with-leader-line', 'geolink', 'drag') | 1086 | geoLink.classList.add('with-leader-line', 'geolink', 'drag') |
1087 | const originContent = range.cloneContents() | ||
1087 | range.deleteContents() | 1088 | range.deleteContents() |
1088 | range.insertNode(geoLink) | 1089 | range.insertNode(geoLink) |
1089 | 1090 | ||
@@ -1113,15 +1114,16 @@ dumbyContainer.onmousedown = (e) => { | |||
1113 | line?.remove() | 1114 | line?.remove() |
1114 | lineEnd.remove() | 1115 | lineEnd.remove() |
1115 | dumbymap.utils.renderedMaps().forEach(map => map.style.removeProperty('cursor')) | 1116 | dumbymap.utils.renderedMaps().forEach(map => map.style.removeProperty('cursor')) |
1116 | const resumeContent = () => updateDumbyMap(newDumbymap => { | 1117 | const resumeContent = () => { |
1117 | const scrollTop = dumbymap.htmlHolder.scrollTop | 1118 | range.deleteContents() |
1118 | newDumbymap.htmlHolder.scrollBy(0, scrollTop) | 1119 | range.insertNode(originContent) |
1119 | }) | 1120 | } |
1120 | 1121 | ||
1121 | const map = document.elementFromPoint(e.clientX, e.clientY).closest('.mapclay') | 1122 | const map = document.elementFromPoint(e.clientX, e.clientY) |
1123 | .closest('.mapclay[data-render="fulfilled"]') | ||
1122 | const selection = cm.getSelection() | 1124 | const selection = cm.getSelection() |
1123 | if (!map || !selection) { | 1125 | if (!map || !selection) { |
1124 | resumeContent() | 1126 | resumeContent('map/selection') |
1125 | return | 1127 | return |
1126 | } | 1128 | } |
1127 | 1129 | ||
@@ -1132,16 +1134,20 @@ dumbyContainer.onmousedown = (e) => { | |||
1132 | validateAnchorName, | 1134 | validateAnchorName, |
1133 | }) | 1135 | }) |
1134 | if (!refLink) { | 1136 | if (!refLink) { |
1135 | resumeContent() | 1137 | resumeContent('reflink') |
1136 | return | 1138 | return |
1137 | } | 1139 | } |
1138 | 1140 | ||
1141 | const scrollTop = dumbymap.htmlHolder.scrollTop | ||
1142 | geoLink.href = refLink.link | ||
1143 | createGeoLink(geoLink) | ||
1139 | appendRefLink(cm, refLink) | 1144 | appendRefLink(cm, refLink) |
1140 | if (selection === refLink.ref) { | 1145 | if (selection === refLink.ref) { |
1141 | cm.replaceSelection(`[${selection}]`) | 1146 | cm.replaceSelection(`[${selection}]`) |
1142 | } else { | 1147 | } else { |
1143 | cm.replaceSelection(`[${selection}][${refLink.ref}]`) | 1148 | cm.replaceSelection(`[${selection}][${refLink.ref}]`) |
1144 | } | 1149 | } |
1150 | dumbymap.htmlHolder.scrollBy(0, scrollTop) | ||
1145 | } | 1151 | } |
1146 | } | 1152 | } |
1147 | 1153 | ||