Fix H3 section control interactions
This commit is contained in:
@@ -17,7 +17,7 @@ const GROUPS = [
|
|||||||
{
|
{
|
||||||
id: "refs",
|
id: "refs",
|
||||||
label: "Refs",
|
label: "Refs",
|
||||||
defaultCollapsed: false,
|
defaultCollapsed: true,
|
||||||
widgets: ["ref_mode", "ref_image_size", "ref_noise_aug", "character_memory", "trim_seam", "vary_seed_per_shot", "handoff_offset"],
|
widgets: ["ref_mode", "ref_image_size", "ref_noise_aug", "character_memory", "trim_seam", "vary_seed_per_shot", "handoff_offset"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -178,6 +178,18 @@ function findWidget(node, name) {
|
|||||||
return (node.widgets || []).find((widget) => widget?.name === name) || null;
|
return (node.widgets || []).find((widget) => widget?.name === name) || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isInteractiveTarget(target) {
|
||||||
|
return !!target?.closest?.("button, input, textarea, select, label");
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopCanvasEvent(event) {
|
||||||
|
if (isInteractiveTarget(event.target)) event.stopPropagation();
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopCanvasKeyboard(event) {
|
||||||
|
if (isInteractiveTarget(event.target)) event.stopImmediatePropagation();
|
||||||
|
}
|
||||||
|
|
||||||
function setWidgetHidden(widget, hidden) {
|
function setWidgetHidden(widget, hidden) {
|
||||||
if (!widget) return;
|
if (!widget) return;
|
||||||
if (!widget._dh3lvOriginal) {
|
if (!widget._dh3lvOriginal) {
|
||||||
@@ -300,6 +312,11 @@ function setupNode(node) {
|
|||||||
const list = document.createElement("div");
|
const list = document.createElement("div");
|
||||||
list.className = "dh3lv-sections-list";
|
list.className = "dh3lv-sections-list";
|
||||||
root.append(head, list);
|
root.append(head, list);
|
||||||
|
root.addEventListener("pointerdown", stopCanvasEvent);
|
||||||
|
root.addEventListener("mousedown", stopCanvasEvent);
|
||||||
|
root.addEventListener("click", stopCanvasEvent);
|
||||||
|
root.addEventListener("dblclick", stopCanvasEvent);
|
||||||
|
root.addEventListener("keydown", stopCanvasKeyboard, true);
|
||||||
|
|
||||||
node._dh3lvUI = { root, list };
|
node._dh3lvUI = { root, list };
|
||||||
const widget = node.addDOMWidget(DOM_WIDGET_NAME, "custom", root, {
|
const widget = node.addDOMWidget(DOM_WIDGET_NAME, "custom", root, {
|
||||||
|
|||||||
Reference in New Issue
Block a user