kingkont 0.7.87 → 0.7.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/renderer/settings.js +26 -6
- package/renderer/styles.css +11 -0
package/package.json
CHANGED
package/renderer/settings.js
CHANGED
|
@@ -727,6 +727,12 @@ function attachDrag(el, node) {
|
|
|
727
727
|
// Edit-режим label — не таскаем (контекст редактирования текста).
|
|
728
728
|
if (e.currentTarget?.classList?.contains('label-text') && e.currentTarget.isContentEditable) return;
|
|
729
729
|
if (e.target.closest('.delete')) return;
|
|
730
|
+
// Источник mousedown'а: header или label-text. Для label-text НЕ
|
|
731
|
+
// вызываем preventDefault и canvas.appendChild на mousedown — они
|
|
732
|
+
// ломают браузерный счётчик кликов и dblclick на label не срабатывает.
|
|
733
|
+
// Z-promote и preventDefault выполнятся ниже, в onMove, когда drag
|
|
734
|
+
// реально начнётся (перешёл порог 4px).
|
|
735
|
+
const sourceIsLabelText = e.currentTarget?.classList?.contains('label-text');
|
|
730
736
|
// Multi-select c модификаторами — без drag
|
|
731
737
|
if (e.metaKey || e.ctrlKey || e.shiftKey) {
|
|
732
738
|
e.preventDefault();
|
|
@@ -741,16 +747,18 @@ function attachDrag(el, node) {
|
|
|
741
747
|
state.selectedNodeIds.add(node.id);
|
|
742
748
|
renderSelection();
|
|
743
749
|
}
|
|
744
|
-
e.preventDefault();
|
|
750
|
+
if (!sourceIsLabelText) e.preventDefault();
|
|
745
751
|
const startX = e.clientX, startY = e.clientY;
|
|
746
752
|
const origX = node.x, origY = node.y;
|
|
747
753
|
el.classList.add('selected');
|
|
748
|
-
canvas.appendChild(el);
|
|
749
754
|
const arr = state.currentBoard.metadata.nodes;
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
arr.
|
|
753
|
-
arr.
|
|
755
|
+
if (!sourceIsLabelText) {
|
|
756
|
+
canvas.appendChild(el);
|
|
757
|
+
const idx = arr.indexOf(node);
|
|
758
|
+
if (idx >= 0 && idx < arr.length - 1) {
|
|
759
|
+
arr.splice(idx, 1);
|
|
760
|
+
arr.push(node);
|
|
761
|
+
}
|
|
754
762
|
}
|
|
755
763
|
|
|
756
764
|
// Multi-drag: если выделено несколько нод и кликнули по одной из них —
|
|
@@ -780,6 +788,18 @@ function attachDrag(el, node) {
|
|
|
780
788
|
const onMove = ev => {
|
|
781
789
|
const dx = ev.clientX - startX, dy = ev.clientY - startY;
|
|
782
790
|
if (!dragInitialized && Math.hypot(dx, dy) < 4) return;
|
|
791
|
+
// Первый раз перешли порог — для label-text z-promote отложен сюда,
|
|
792
|
+
// чтобы не ломать dblclick. Также гасим случайно стартовавший
|
|
793
|
+
// text-selection в read-режиме.
|
|
794
|
+
if (!dragInitialized && sourceIsLabelText) {
|
|
795
|
+
canvas.appendChild(el);
|
|
796
|
+
const idx = arr.indexOf(node);
|
|
797
|
+
if (idx >= 0 && idx < arr.length - 1) {
|
|
798
|
+
arr.splice(idx, 1);
|
|
799
|
+
arr.push(node);
|
|
800
|
+
}
|
|
801
|
+
try { window.getSelection()?.removeAllRanges(); } catch {}
|
|
802
|
+
}
|
|
783
803
|
dragInitialized = true;
|
|
784
804
|
// Проверяем — курсор над таймлайном?
|
|
785
805
|
const tlTrackEl = document.elementsFromPoint(ev.clientX, ev.clientY)
|
package/renderer/styles.css
CHANGED
|
@@ -526,6 +526,17 @@
|
|
|
526
526
|
природу» ноды, в read-mode сигнал что dblclick → редактировать. */
|
|
527
527
|
.node.label-node .label-text { cursor: text; }
|
|
528
528
|
.node.label-node:hover .label-text:not([contenteditable]) { cursor: pointer; }
|
|
529
|
+
/* В read-режиме блокируем text-selection — чтобы single-click не выделял
|
|
530
|
+
слово, и mousedown без preventDefault (для работы dblclick) не давал
|
|
531
|
+
браузеру стартовать selection-drag. В edit-режиме выделение разрешено. */
|
|
532
|
+
.node.label-node .label-text:not([contenteditable]) {
|
|
533
|
+
user-select: none;
|
|
534
|
+
-webkit-user-select: none;
|
|
535
|
+
}
|
|
536
|
+
.node.label-node .label-text[contenteditable] {
|
|
537
|
+
user-select: text;
|
|
538
|
+
-webkit-user-select: text;
|
|
539
|
+
}
|
|
529
540
|
/* === Label-шрифты ===
|
|
530
541
|
Все варианты — bundled woff2 (см. assets/fonts/), кириллица поддержана. */
|
|
531
542
|
.node.label-node .label-text[data-font="pencil"] {
|