Files
Maxed-Out-99andClaude Fable 5 4cb19be2e0 Restructure web/ into lib+nodes+vendor; merge power lora loader forks
- web/lib/: the shared rgthree-derived layer (mxd_* utils, dialogs, api,
  runtime) + its CSS, moved as a unit.
- web/nodes/: one extension file per node/feature, _mxd suffix dropped.
- web/vendor/zip_loader/: vendored zip import addon.
- index.js explicitly imports every module; loraloader_mxd_entry.js
  folded into it and deleted.

Power Lora Loader merge: new web/nodes/power_lora_base.js holds the
shared node machinery, header row, and single-strength lora row widget.
power_lora_loader.js (dual model/clip strengths) and
ltx2_power_lora_loader.js (per-layer strength rows) are now thin
subclasses (~450 duplicated lines removed). Serialization formats,
widget names, extension names, and node targets unchanged.

better_combos.js scoped to MXD latent loaders only: removed the
pysssss CheckpointLoader/LoraLoader patching (already disabled behind
ENABLE_PYSSSS_NODE_ENHANCEMENTS=false, so provably inert), the dead
' MXD' alias config entries, and the no-op refreshComboInNodes wrapper.

scripts/check_web.py clean; node schema unchanged (68 identical).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 06:41:35 -07:00

339 lines
9.0 KiB
CSS

.mxd-info-dialog {
width: 90vw;
max-width: 960px;
}
.mxd-info-dialog .mxd-info-area {
list-style: none;
padding: 0;
margin: 0;
display: flex;
}
.mxd-info-dialog .mxd-info-area > li {
display: inline-flex;
margin: 0;
vertical-align: top;
}
.mxd-info-dialog .mxd-info-area > li + li {
margin-left: 6px;
}
.mxd-info-dialog .mxd-info-area > li:not(.-link) + li.-link {
margin-left: auto;
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-tag > * {
min-height: 24px;
border-radius: 4px;
line-height: 1;
color: rgba(255, 255, 255, 0.85);
background: color-mix(in srgb, var(--p-primary-color, rgb(69, 92, 85)) 45%, rgb(69, 92, 85));
font-size: 14px;
font-weight: bold;
text-decoration: none;
display: flex;
height: 1.6em;
padding-left: 0.5em;
padding-right: 0.5em;
padding-bottom: 0.1em;
align-content: center;
justify-content: center;
align-items: center;
box-shadow: inset 0px 0px 0 1px rgba(0, 0, 0, 0.5);
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-tag > * > svg {
width: 16px;
height: 16px;
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-tag > * > svg:last-child {
margin-left: 0.5em;
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-tag > *[href] {
box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.25), inset 0px -1px 0px rgba(0, 0, 0, 0.66);
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-tag > *:empty {
display: none;
}
.mxd-info-dialog .mxd-info-area > li.-type > * {
background: rgb(73, 54, 94);
color: rgb(228, 209, 248);
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-menu {
margin-left: auto;
}
:not(#fakeid) .mxd-info-dialog .mxd-info-area > li.mxd-info-menu .mxd-button {
margin: 0;
min-height: 24px;
padding: 0 12px;
}
.mxd-info-dialog .mxd-info-area > li.mxd-info-menu svg {
width: 16px;
height: 16px;
}
.mxd-info-dialog .mxd-info-table {
border-collapse: collapse;
margin: 16px 0px;
width: 100%;
font-size: 12px;
}
.mxd-info-dialog .mxd-info-table tr.editable button {
display: flex;
width: 28px;
height: 28px;
align-items: center;
justify-content: center;
}
.mxd-info-dialog .mxd-info-table tr.editable button svg + svg {
display: none;
}
.mxd-info-dialog .mxd-info-table tr.editable.-mxd-editing button svg {
display: none;
}
.mxd-info-dialog .mxd-info-table tr.editable.-mxd-editing button svg + svg {
display: inline-block;
}
.mxd-info-dialog .mxd-info-table td {
position: relative;
border: 1px solid var(--border-color, rgba(255, 255, 255, 0.25));
padding: 0;
vertical-align: top;
}
.mxd-info-dialog .mxd-info-table td:first-child {
background: var(--comfy-input-bg, rgba(255, 255, 255, 0.075));
width: 10px;
}
.mxd-info-dialog .mxd-info-table td:first-child > *:first-child {
white-space: nowrap;
padding-right: 32px;
}
.mxd-info-dialog .mxd-info-table td:first-child small {
display: block;
margin-top: 2px;
opacity: 0.75;
}
.mxd-info-dialog .mxd-info-table td:first-child small > [data-action] {
text-decoration: underline;
cursor: pointer;
}
.mxd-info-dialog .mxd-info-table td:first-child small > [data-action]:hover {
text-decoration: none;
}
.mxd-info-dialog .mxd-info-table td a, .mxd-info-dialog .mxd-info-table td a:hover, .mxd-info-dialog .mxd-info-table td a:visited {
color: inherit;
}
.mxd-info-dialog .mxd-info-table td svg {
width: 1.3333em;
height: 1.3333em;
vertical-align: -0.285em;
}
.mxd-info-dialog .mxd-info-table td svg.logo-civitai {
margin-right: 0.3333em;
}
.mxd-info-dialog .mxd-info-table td > *:first-child {
display: block;
padding: 6px 10px;
}
.mxd-info-dialog .mxd-info-table td > input, .mxd-info-dialog .mxd-info-table td > textarea {
padding: 5px 10px;
border: 1px solid var(--p-primary-color, rgba(255, 255, 255, 0.25));
border-radius: 4px;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.35);
font: inherit;
appearance: none;
background: var(--comfy-input-bg, #2a2a2a);
color: var(--input-text, #eee);
resize: vertical;
}
.mxd-info-dialog .mxd-info-table td > input:only-child, .mxd-info-dialog .mxd-info-table td > textarea:only-child {
width: 100%;
}
:not(#fakeid) .mxd-info-dialog .mxd-info-table td .mxd-button[data-action=fetch-civitai] {
font-size: inherit;
padding: 6px 16px;
margin: 2px;
}
.mxd-info-dialog .mxd-info-table tr[data-field-name=userNote] td > span:first-child {
white-space: pre;
}
.mxd-info-dialog .mxd-info-table tr.mxd-info-table-break-row td {
border: 0;
background: transparent;
padding: 12px 4px 4px;
font-size: 1.2em;
}
.mxd-info-dialog .mxd-info-table tr.mxd-info-table-break-row td > small {
font-style: italic;
opacity: 0.66;
}
.mxd-info-dialog .mxd-info-table tr.mxd-info-table-break-row td:empty {
padding: 4px;
}
.mxd-info-dialog .mxd-info-table td .-help {
border: 1px solid currentColor;
position: absolute;
right: 5px;
top: 6px;
line-height: 1;
font-size: 11px;
width: 12px;
height: 12px;
border-radius: 8px;
display: flex;
align-content: center;
justify-content: center;
cursor: help;
}
.mxd-info-dialog .mxd-info-table td .-help::before {
content: "?";
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list {
list-style: none;
padding: 2px 8px;
margin: 0;
display: flex;
flex-direction: row;
flex-wrap: wrap;
max-height: 15vh;
overflow: auto;
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list > li {
display: inline-flex;
margin: 2px;
vertical-align: top;
border-radius: 4px;
line-height: 1;
color: rgba(255, 255, 255, 0.85);
background: rgb(73, 91, 106);
font-size: 1.2em;
font-weight: 600;
text-decoration: none;
display: flex;
height: 1.6em;
align-content: center;
justify-content: center;
align-items: center;
box-shadow: inset 0px 0px 0 1px rgba(0, 0, 0, 0.5);
cursor: pointer;
white-space: nowrap;
max-width: 183px;
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list > li:hover {
background: rgb(68, 109, 142);
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list > li > svg {
width: auto;
height: 1.2em;
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list > li > span {
padding-left: 0.5em;
padding-right: 0.5em;
padding-bottom: 0.1em;
text-overflow: ellipsis;
overflow: hidden;
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list > li > small {
align-self: stretch;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5em;
background: rgba(0, 0, 0, 0.2);
}
.mxd-info-dialog .mxd-info-table td > ul.mxd-info-trained-words-list > li.-mxd-is-selected {
background: var(--p-primary-color, rgb(42, 126, 193));
color: var(--p-primary-contrast-color, rgba(255, 255, 255, 0.95));
}
.mxd-info-dialog .mxd-info-images {
list-style: none;
padding: 0;
margin: 0;
scroll-snap-type: x mandatory;
display: flex;
flex-direction: row;
overflow: auto;
}
.mxd-info-dialog .mxd-info-images > li {
scroll-snap-align: start;
max-width: 90%;
flex: 0 0 auto;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
overflow: hidden;
padding: 0;
margin: 6px;
font-size: 0;
position: relative;
}
.mxd-info-dialog .mxd-info-images > li figure {
margin: 0;
position: static;
}
.mxd-info-dialog .mxd-info-images > li figure video, .mxd-info-dialog .mxd-info-images > li figure img {
max-height: 45vh;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption {
position: absolute;
left: 0;
width: 100%;
bottom: 0;
padding: 12px;
font-size: 12px;
background: rgba(0, 0, 0, 0.85);
opacity: 0;
transform: translateY(50px);
transition: all 0.25s ease-in-out;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption > span {
display: inline-block;
padding: 2px 4px;
margin: 2px;
border-radius: 2px;
border: 1px solid rgba(255, 255, 255, 0.2);
word-break: break-word;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption > span label {
display: inline;
padding: 0;
margin: 0;
opacity: 0.5;
pointer-events: none;
user-select: none;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption > span a {
color: inherit;
text-decoration: underline;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption > span a:hover {
text-decoration: none;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption > span a svg {
height: 10px;
margin-left: 4px;
fill: currentColor;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption:empty {
text-align: center;
}
.mxd-info-dialog .mxd-info-images > li figure figcaption:empty::before {
content: "No data.";
}
.mxd-info-dialog .mxd-info-images > li:hover figure figcaption {
opacity: 1;
transform: translateY(0px);
}
.mxd-info-dialog .mxd-info-images > li .mxd-info-table {
width: calc(100% - 16px);
}
.mxd-info-dialog .mxd-info-civitai-link {
margin: 8px;
color: var(--input-text, #eee);
}
.mxd-info-dialog .mxd-info-civitai-link a, .mxd-info-dialog .mxd-info-civitai-link a:hover, .mxd-info-dialog .mxd-info-civitai-link a:visited {
color: inherit;
text-decoration: none;
}
.mxd-info-dialog .mxd-info-civitai-link > svg {
width: 16px;
height: 16px;
margin-right: 8px;
}