kingkont 0.7.92 → 0.7.94
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 +24 -12
- package/renderer/styles.css +15 -3
package/package.json
CHANGED
package/renderer/settings.js
CHANGED
|
@@ -179,11 +179,21 @@ function renderLabelNodeBody(node, body) {
|
|
|
179
179
|
ed.addEventListener('mousedown', e => {
|
|
180
180
|
// В edit-режиме: не пускаем drag-обработчик (нужно поставить курсор/выделить текст).
|
|
181
181
|
if (ed.isContentEditable) e.stopPropagation();
|
|
182
|
-
// В read-режиме:
|
|
183
|
-
//
|
|
182
|
+
// В read-режиме: drag-handler (привязан ниже) обработает single-click
|
|
183
|
+
// как «выбрать ноду» и подхватит drag.
|
|
184
184
|
});
|
|
185
185
|
|
|
186
186
|
body.appendChild(ed);
|
|
187
|
+
|
|
188
|
+
// Привязываем drag-handler ИМЕННО ЗДЕСЬ — потому что refreshNodeDOM
|
|
189
|
+
// (вызывается при смене шрифта/размера/курсива через ПКМ) пересоздаёт
|
|
190
|
+
// .label-text. Если drag вешать в attachDrag (вызывается один раз в
|
|
191
|
+
// createNodeEl), то после refreshNodeDOM новый элемент окажется без
|
|
192
|
+
// обработчика — и ноду нельзя будет двигать.
|
|
193
|
+
const nodeEl = body.closest('.node');
|
|
194
|
+
if (nodeEl) {
|
|
195
|
+
ed.addEventListener('mousedown', makeDragHandler(nodeEl, node));
|
|
196
|
+
}
|
|
187
197
|
}
|
|
188
198
|
|
|
189
199
|
async function renderNodeBody(node, body) {
|
|
@@ -739,15 +749,18 @@ function attachResize(el, node, handle) {
|
|
|
739
749
|
|
|
740
750
|
function attachDrag(el, node) {
|
|
741
751
|
const header = el.querySelector('.node-header');
|
|
742
|
-
//
|
|
743
|
-
//
|
|
744
|
-
//
|
|
745
|
-
|
|
746
|
-
if (
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
752
|
+
// Header-source: drag вешается один раз при создании ноды. .label-text
|
|
753
|
+
// отдельно привязывается из renderLabelNodeBody — потому что при смене
|
|
754
|
+
// шрифта/размера через ПКМ refreshNodeDOM пересоздаёт DOM-элемент
|
|
755
|
+
// .label-text, и старый listener умирает вместе со старым элементом.
|
|
756
|
+
if (header) header.addEventListener('mousedown', makeDragHandler(el, node));
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
// Создаёт drag-handler для конкретной (el, node) пары. Вынесено отдельно
|
|
760
|
+
// чтобы можно было вешать на новый .label-text после refreshNodeDOM
|
|
761
|
+
// (renderLabelNodeBody делает это при каждом рендере).
|
|
762
|
+
function makeDragHandler(el, node) {
|
|
763
|
+
return e => {
|
|
751
764
|
// Edit-режим label — не таскаем (контекст редактирования текста).
|
|
752
765
|
if (e.currentTarget?.classList?.contains('label-text') && e.currentTarget.isContentEditable) return;
|
|
753
766
|
if (e.target.closest('.delete')) return;
|
|
@@ -907,7 +920,6 @@ function attachDrag(el, node) {
|
|
|
907
920
|
document.addEventListener('mousemove', onMove);
|
|
908
921
|
document.addEventListener('mouseup', onUp);
|
|
909
922
|
};
|
|
910
|
-
for (const src of sources) if (src) src.addEventListener('mousedown', handler);
|
|
911
923
|
}
|
|
912
924
|
|
|
913
925
|
// Добавить ноду как клип в указанную дорожку с ripple-вставкой по времени
|
package/renderer/styles.css
CHANGED
|
@@ -700,15 +700,27 @@
|
|
|
700
700
|
}
|
|
701
701
|
.add-menu button:hover { background: #2c2c2c; }
|
|
702
702
|
|
|
703
|
-
/* === Fullscreen viewer ===
|
|
703
|
+
/* === Fullscreen viewer ===
|
|
704
|
+
.fs-modal — фон + контейнер для absolute-позиционированных контролов
|
|
705
|
+
(× close, ← prev, → next).
|
|
706
|
+
.fs-stage — absolute inset:0 (гарантированный fill viewport'а), flex-
|
|
707
|
+
центровка картинки. Раньше .fs-modal был flex-row с align-items:center,
|
|
708
|
+
и .fs-stage с height:100% не растягивался на cross-axis (брал NATURAL
|
|
709
|
+
высоту), → картинка центрировалась не в полный viewport → казалось
|
|
710
|
+
что внизу куча пустого места. */
|
|
704
711
|
.fs-modal {
|
|
705
712
|
position: fixed; inset: 0; background: rgba(0,0,0,0.95);
|
|
706
|
-
z-index: 1000;
|
|
713
|
+
z-index: 1000;
|
|
707
714
|
}
|
|
708
715
|
.fs-modal.hidden { display: none; }
|
|
709
|
-
.fs-stage {
|
|
716
|
+
.fs-stage {
|
|
717
|
+
position: absolute; inset: 0;
|
|
718
|
+
display: flex; align-items: center; justify-content: center;
|
|
719
|
+
padding: 16px 64px; /* по бокам — место под nav-кнопки */
|
|
720
|
+
}
|
|
710
721
|
.fs-stage img, .fs-stage video {
|
|
711
722
|
max-width: 100%; max-height: 100%; object-fit: contain;
|
|
723
|
+
display: block;
|
|
712
724
|
}
|
|
713
725
|
.fs-modal #fsClose {
|
|
714
726
|
position: absolute; top: 16px; right: 16px;
|