diff --git a/js/tweak/mape-helpers.js b/js/tweak/mape-helpers.js index 0ae24ea..c664bb9 100644 --- a/js/tweak/mape-helpers.js +++ b/js/tweak/mape-helpers.js @@ -7539,7 +7539,7 @@ const MapeTweak = () => { onMount(async () => { const res = await fetch(`https://comfyui.ma.pe/VERSION?c=${Date.now()}`); const remoteVersion = (await res.text()).trim(); - if (needsUpdate("0.5.0", remoteVersion)) { + if (needsUpdate("0.5.1", remoteVersion)) { setShowUpdate(`New version ${remoteVersion} is available.`); } }); @@ -8231,10 +8231,10 @@ This is finicky with PrimitiveNodes...`)) { })(), null); createRenderEffect((_p$) => { var _v$6 = !!hidden(), _v$7 = `Convert links to set/get ${!getSetting(`ignorePromptForExplodeHeal`) ? `(Hold Shift-key to skip prompt)` : ``}`, _v$8 = `Convert set/get to links ${!getSetting(`ignorePromptForExplodeHeal`) ? `(Hold Shift-key to skip prompt)` : ``}`, _v$9 = !!hidden(); - _v$6 !== _p$.e && _el$31.classList.toggle("hidden", _p$.e = _v$6); + _v$6 !== _p$.e && _el$31.classList.toggle("mapeHidden", _p$.e = _v$6); _v$7 !== _p$.t && setAttribute(_el$38, "title", _p$.t = _v$7); _v$8 !== _p$.a && setAttribute(_el$39, "title", _p$.a = _v$8); - _v$9 !== _p$.o && _el$44.classList.toggle("hidden", _p$.o = _v$9); + _v$9 !== _p$.o && _el$44.classList.toggle("mapeHidden", _p$.o = _v$9); return _p$; }, { e: void 0, @@ -8255,7 +8255,7 @@ const bar = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty( try { if (typeof document != "undefined") { var elementStyle = document.createElement("style"); - elementStyle.appendChild(document.createTextNode("@import 'https://fonts.googleapis.com/css?family=Material+Icons&display=block';.imagePreviews {\n background: repeating-radial-gradient(#181818 0 4px, #1f1f1f 5px 5px);\n font-family: arial;\n color: #fff;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n margin: 0;\n background-size: 10px 10px;\n display: flex;\n flex-direction: column;\n}\n.imagePreviews .content {\n display: flex;\n height: 100%;\n}\n.imagePreviews .value {\n position: static;\n}\n.imagePreviews .image {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n}\n.imagePreviews .imagePreviewTweaks {\n display: flex;\n background: #111;\n padding: 10px;\n justify-content: space-around;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px inset rgba(0, 0, 0, 0.5);\n gap: 10px;\n}\n.imagePreviews .imagePreviewTweaks .button {\n flex: auto;\n vertical-align: top;\n border: 0;\n text-transform: uppercase;\n text-shadow: 2px 2px 1px #000000;\n user-select: none;\n position: relative;\n display: inline-block;\n color: #fff;\n border-top: 1px solid #0f0f12;\n background: #0f0f0f;\n margin: 2px;\n border-radius: 4px;\n cursor: pointer;\n line-height: 1;\n transition: color 1s;\n padding: 5px;\n outline: none;\n text-align: center;\n opacity: 0.5;\n padding: 8px 10px;\n}\n.imagePreviews .imagePreviewTweaks .button.active {\n background: #490000;\n}\n.imagePreviews .imagePreviewTweaks .button:before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04));\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), inset 0 0 1px rgba(255, 255, 255, 0.2);\n content: '';\n pointer-events: none;\n}\n.imagePreviews .imagePreviewTweaks .button:hover:before {\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06));\n}\n.imagePreviews .imagePreviewTweaks .button:active:before {\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0));\n}\n.imagePreviews .imagePreviewTweaks .button:active {\n transform: translate(1px, 1px);\n}\n.imagePreviews .imagePreviewTweaks .button.active {\n opacity: 1;\n}\n.imagePreviews .imagePreviewTweaks label {\n text-transform: uppercase;\n padding: 8px 10px;\n color: rgba(255, 255, 255, 0.5);\n line-height: 21px;\n}\n.imagePreviews .value {\n width: 50px;\n}\n.imagePreviews .value {\n position: static;\n}\n.imagePreviews .bigPreview {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n cursor: move;\n}\n.imagePreviews .fullImage {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n max-width: 98%;\n max-height: calc(100vh - 80px);\n border: 1px solid rgba(255, 255, 255, 0.2);\n box-shadow: 0 0 60px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 0, 0, 0.3);\n transform-origin: top left;\n}\n.imagePreviews .thumbnails {\n display: flex;\n left: 0;\n right: 0;\n bottom: 0;\n background: #111;\n padding: 10px;\n justify-content: flex-start;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px inset rgba(0, 0, 0, 0.5);\n flex-direction: column;\n max-width: 100px;\n gap: 10px;\n width: 100px;\n}\n.imagePreviews .thumbnails .thumb {\n width: 100%;\n opacity: 0.2;\n cursor: pointer;\n position: relative;\n height: 100%;\n}\n.imagePreviews .thumbnails .thumb:hover {\n opacity: 0.7;\n}\n.imagePreviews .thumbnails .thumb.active {\n opacity: 1;\n}\n.imagePreviews .thumbnails .thumb img {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: 10px;\n}\n.imagePreviews .thumbnails .smallImage {\n border-radius: 5px;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n display: block;\n}\n.imagePreviews .mosaicGrid {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform-origin: top left;\n}\n.imagePreviews .mosaicGrid .inner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n display: flex;\n flex-direction: row;\n align-content: center;\n flex-wrap: wrap;\n justify-content: center;\n}\n.imagePreviews .mosaicGrid .mosaicImage {\n display: inline-block;\n transform: none;\n box-shadow: 0 0 60px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 0, 0, 0.3);\n}\n.imagePreviews .mosaicGrid .mosaicImage img {\n width: 100%;\n height: 100%;\n}\n.imagePreviews .zoom {\n font-size: 20px;\n font-weight: bold;\n position: absolute;\n top: 16px;\n right: 15px;\n text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);\n cursor: pointer !important;\n cursor: pointer;\n}\n.imagePreviews .zoom:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.imagePreviews .zoom:active {\n transform: scale(0.9);\n}\n.imagePreviews .flipbookFps {\n font-size: 20px;\n font-weight: bold;\n position: absolute;\n top: 15px;\n right: 100px;\n text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);\n cursor: pointer !important;\n}\n.imagePreviews .flipbookFps label {\n margin-right: 10px;\n}\n.imagePreviews .flipbookFps input {\n background: transparent;\n color: #fff;\n border: 0;\n background: rgba(0, 0, 0, 0.2);\n padding: 5px 3px;\n border-radius: 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 10px;\n width: 40px;\n position: relative;\n font-size: 16px;\n top: -1px;\n margin-right: 20px;\n}\n.imagePreviews .flipbookFps input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n position: relative;\n top: 3px;\n}\n.imagePreviews .flipbookFps input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.imagePreviews .flipbookFps input[type='checkbox']:checked {\n background: #fff;\n}\n.imagePreviews .flipbookFps input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.imagePreviews .imagePreviewHelp {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 10px;\n text-align: center;\n background: rgba(0, 0, 0, 0.2);\n padding: 5px 3px;\n border-radius: 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n}\n.imagePreviews .imagePreviewHelp p {\n padding: 0 20px;\n}\n.imagePreviews .imagePreviewHelp video {\n max-width: 90vw;\n max-height: calc(90vh - 50px);\n float: left;\n}\n.mapeBar .tweaks .promptTweaker {\n background: #333;\n padding: 5px 0 10px;\n border-radius: 0 0 5px 5px;\n position: relative;\n top: -5px;\n}\n.mapeBar .tweaks .promptTweaker * {\n box-sizing: border-box;\n}\n.mapeBar .tweaks .promptTweaker .promptTweakerPrompts {\n max-height: calc(100vh - 310px);\n overflow: auto;\n}\n.mapeBar .tweaks .promptTweaker .buttons {\n display: flex;\n padding: 0 10px 10px;\n}\n.mapeBar .tweaks .promptTweaker button {\n flex: auto;\n vertical-align: top;\n border: 0;\n text-transform: uppercase;\n text-shadow: 2px 2px 1px #000000;\n user-select: none;\n position: relative;\n display: inline-block;\n color: #fff;\n border-top: 1px solid #0f0f12;\n background: #0f0f0f;\n margin: 2px;\n border-radius: 4px;\n cursor: pointer;\n line-height: 1;\n transition: color 1s;\n padding: 5px;\n outline: none;\n white-space: nowrap;\n font-size: 11px;\n height: 23px;\n padding: 5px 8px;\n}\n.mapeBar .tweaks .promptTweaker button.active {\n background: #490000;\n}\n.mapeBar .tweaks .promptTweaker button:before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04));\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), inset 0 0 1px rgba(255, 255, 255, 0.2);\n content: '';\n pointer-events: none;\n}\n.mapeBar .tweaks .promptTweaker button:hover:before {\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06));\n}\n.mapeBar .tweaks .promptTweaker button:active:before {\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0));\n}\n.mapeBar .tweaks .promptTweaker button:active {\n transform: translate(1px, 1px);\n}\n.mapeBar .tweaks .promptTweaker button.remove {\n width: 25px;\n padding: 5px 8px;\n}\n.mapeBar .tweaks .promptTweaker .prompt {\n display: flex;\n padding: 0 5px;\n}\n.mapeBar .tweaks .promptTweaker .prompt label {\n max-width: 130px;\n min-width: 130px;\n height: auto;\n line-height: 1.5;\n padding: 2px;\n border-radius: 5px;\n}\n.mapeBar .tweaks .promptTweaker .prompt .weight {\n padding: 0 10px;\n line-height: 26px;\n min-width: 43px;\n max-width: 43px;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range'] {\n appearance: none;\n -webkit-appearance: none;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: #ffffff;\n margin-top: -3px;\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);\n cursor: pointer;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range']::-webkit-slider-runnable-track {\n width: 60%;\n height: 5px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 3rem;\n transition: all 0.5s;\n cursor: pointer;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range']:hover::-webkit-slider-runnable-track {\n background: rgba(255, 255, 255, 0.3);\n}\n.mapeBar .tweaks .promptTweaker .prompt.tmp {\n opacity: 0.5;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox']:checked {\n background: #fff;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows {\n padding: 3px 5px 3px 0;\n position: relative;\n top: 0px;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows .arrow {\n color: rgba(255, 255, 255, 0.2);\n font-size: 12px;\n line-height: 10px;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows .arrow.disabled {\n pointer-events: none;\n opacity: 0;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows .arrow:hover {\n cursor: pointer;\n color: rgba(255, 255, 255, 0.9);\n}\n.settingsPopup {\n position: fixed;\n background: #333;\n top: 30px;\n right: 0;\n color: #fff;\n font-family: arial;\n min-width: 500px;\n z-index: 1111111111;\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);\n border: 1px solid #444;\n}\n.settingsPopup .close {\n cursor: pointer;\n position: absolute;\n top: 10px;\n right: 10px;\n filter: saturate(0);\n}\n.settingsPopup .close:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.settingsPopup .close:active {\n transform: scale(0.9);\n}\n.settingsPopup .header {\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n font-size: 20px;\n padding: 10px 15px;\n text-transform: uppercase;\n}\n.settingsPopup .modalContent {\n max-height: calc(100vh - 100px);\n overflow: auto;\n}\n.settingsPopup .mapeSetting {\n display: flex;\n position: relative;\n padding: 1px 0;\n margin: 0 3px;\n z-index: 1;\n}\n.settingsPopup .mapeSetting .name {\n background: rgba(0, 0, 0, 0.2);\n padding: 8px 10px;\n border-radius: 5px 0 0 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 10px;\n min-width: 400px;\n line-height: 1.5;\n}\n.settingsPopup .mapeSetting input {\n padding: 5px;\n height: 22px;\n color: #fff;\n font-size: 11px;\n width: 100%;\n border: 0;\n background: transparent;\n resize: none;\n font-family: monospace;\n}\n.settingsPopup .mapeSetting input:focus,\n.settingsPopup .mapeSetting input:active {\n outline: 1px solid transparent;\n}\n.settingsPopup .mapeSetting input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n margin: 0 auto;\n display: block;\n}\n.settingsPopup .mapeSetting input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.settingsPopup .mapeSetting input[type='checkbox']:checked {\n background: #fff;\n}\n.settingsPopup .mapeSetting input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.settingsPopup .mapeSetting input:focus {\n color: #ffa;\n}\n.settingsPopup .mapeSetting input[type='color'] {\n margin: -15px 0 -10px;\n height: 36px;\n position: relative;\n top: 4px;\n}\n.settingsPopup .mapeSetting .reset {\n padding: 5px;\n filter: saturate(0);\n}\n.settingsPopup .mapeSetting .reset:hover {\n filter: saturate(1);\n}\n.settingsPopup .mapeSetting .value {\n width: 100%;\n position: relative;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n background: #222;\n border-radius: 0 5px 5px 0;\n padding: 8px 10px;\n}\n.helpPopup {\n position: fixed;\n background: #333;\n top: 30px;\n right: 0;\n color: #fff;\n font-family: arial;\n min-width: 500px;\n z-index: 1111111111;\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);\n border: 1px solid #444;\n}\n.helpPopup .close {\n cursor: pointer;\n position: absolute;\n top: 10px;\n right: 10px;\n filter: saturate(0);\n}\n.helpPopup .close:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.helpPopup .close:active {\n transform: scale(0.9);\n}\n.helpPopup .header {\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n font-size: 20px;\n padding: 10px 15px;\n text-transform: uppercase;\n}\n.helpPopup .modalContent {\n max-height: calc(100vh - 100px);\n overflow: auto;\n}\n.helpPopup .modalContent {\n display: flex;\n}\n.helpPopup .modalContent .help {\n padding: 15px;\n}\n.helpPopup .modalContent .help .video,\n.helpPopup .modalContent .help .image {\n width: 720px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);\n background: rgba(0, 0, 0, 0.8);\n}\n.helpPopup .modalContent .help .info {\n border: 1px solid rgba(255, 255, 255, 0.1);\n background: rgba(0, 0, 0, 0.1);\n margin: 10px 0;\n border-radius: 10px;\n overflow: hidden;\n}\n.helpPopup .modalContent .help .title {\n font-size: 25px;\n padding: 15px 20px;\n font-weight: bold;\n text-transform: uppercase;\n background: rgba(0, 0, 0, 0.2);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n.helpPopup .modalContent .help .text {\n max-width: 720px;\n font-size: 15px;\n padding: 20px 0;\n font-size: 17px;\n color: rgba(255, 255, 255, 0.8);\n white-space: pre-wrap;\n}\n.helpPopup .modalContent .help .text p {\n margin: 0;\n padding: 0 20px 1em;\n line-height: 1.5;\n}\n.helpPopup .modalContent .help .text p:last-child {\n padding-bottom: 0;\n}\n.helpPopup .modalContent .help .text code {\n outline: 1px solid rgba(0, 0, 0, 0.3);\n background: rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n padding: 5px;\n margin: 0 0.2em;\n}\n.helpPopup .modalContent .menu {\n background-color: #222;\n margin: 0;\n padding: 0;\n}\n.helpPopup .modalContent .menu li {\n background: linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0));\n border-left: 1px solid #555;\n padding: 10px 15px;\n list-style: none;\n color: rgba(255, 255, 255, 0.5);\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n}\n.helpPopup .modalContent .menu li:nth-child(odd) {\n background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.1) 20%, rgba(0, 0, 0, 0.1));\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n}\n.helpPopup .modalContent .menu li:hover {\n color: #ffffff;\n cursor: pointer;\n}\n.helpPopup .modalContent .menu li.active {\n background: #333;\n color: #fff;\n box-shadow: 6px 2px 6px #0003;\n border-left: 1px solid transparent;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n background: linear-gradient(to right, #333, #424242 20%, #333);\n}\n.helpPopup .modalContent .menu li.active:first-child {\n border-top: 0;\n}\n.mapeConfirmPrompt {\n font-family: arial;\n position: fixed;\n padding: 10px;\n background: #333;\n border-bottom: 1px solid #444;\n font-size: 13px;\n z-index: 111;\n border-radius: 10px;\n border: 2px solid #555;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);\n transform: translate(-50%, -50%);\n}\n.mapeConfirmPrompt * {\n box-sizing: border-box;\n}\n.mapeConfirmPrompt .title {\n white-space: nowrap;\n text-transform: uppercase;\n padding: 0 0 5px;\n text-align: center;\n}\n.mapeConfirmPrompt input {\n position: relative;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px #0000004d inset;\n background: #222;\n color: #fff;\n border-radius: 5px;\n padding: 8px 10px;\n width: 100%;\n}\n.mapeConfirmPrompt input:focus,\n.mapeConfirmPrompt input:active {\n outline: 1px solid transparent;\n}\n.mapeConfirmPrompt .suggestions {\n background: #333;\n border-bottom: 1px solid #444;\n font-size: 13px;\n z-index: 111;\n border-radius: 10px;\n border: 2px solid #555;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n border-radius: 5px;\n}\n.mapeConfirmPrompt .suggestions .suggestion {\n padding: 5px;\n}\n.mapeConfirmPrompt .suggestions .suggestion:nth-child(odd) {\n background: rgba(0, 0, 0, 0.1);\n}\n.mapeConfirmPrompt .suggestions .suggestion:hover,\n.mapeConfirmPrompt .suggestions .suggestion.selected {\n color: #ffa;\n background: rgba(0, 0, 0, 0.3);\n cursor: pointer;\n}\n.mapeConfirmPrompt .suggestions .suggestion small {\n opacity: 0.5;\n float: right;\n}\n.mapeConfirmPrompt .suggestions .suggestion.missingType {\n opacity: 0.3;\n}\n.warningsPopup {\n position: fixed;\n background: #333;\n top: 30px;\n right: 0;\n color: #fff;\n font-family: arial;\n min-width: 500px;\n z-index: 1111111111;\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);\n border: 1px solid #444;\n}\n.warningsPopup .close {\n cursor: pointer;\n position: absolute;\n top: 10px;\n right: 10px;\n filter: saturate(0);\n}\n.warningsPopup .close:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.warningsPopup .close:active {\n transform: scale(0.9);\n}\n.warningsPopup .header {\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n font-size: 20px;\n padding: 10px 15px;\n text-transform: uppercase;\n}\n.warningsPopup .modalContent {\n max-height: calc(100vh - 100px);\n overflow: auto;\n}\n.warningsPopup .mapeSetting {\n display: flex;\n position: relative;\n padding: 4px 0;\n margin: 0 3px;\n z-index: 1;\n}\n.warningsPopup .mapeSetting .name {\n background: rgba(0, 0, 0, 0.2);\n padding: 8px 10px;\n border-radius: 5px 0 0 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: #fff;\n line-height: 10px;\n line-height: 1.5;\n width: 100%;\n font-size: 16px;\n}\n.warningsPopup .mapeSetting .name small {\n padding: 0 10px;\n color: rgba(255, 255, 255, 0.6);\n}\n.warningsPopup .mapeSetting button {\n flex: auto;\n vertical-align: top;\n border: 0;\n text-transform: uppercase;\n text-shadow: 2px 2px 1px #000000;\n user-select: none;\n position: relative;\n display: inline-block;\n color: #fff;\n border-top: 1px solid #0f0f12;\n background: #0f0f0f;\n margin: 2px;\n border-radius: 4px;\n cursor: pointer;\n line-height: 1;\n transition: color 1s;\n padding: 5px;\n outline: none;\n padding: 0 10px;\n white-space: nowrap;\n}\n.warningsPopup .mapeSetting button.active {\n background: #490000;\n}\n.warningsPopup .mapeSetting button:before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04));\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), inset 0 0 1px rgba(255, 255, 255, 0.2);\n content: '';\n pointer-events: none;\n}\n.warningsPopup .mapeSetting button:hover:before {\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06));\n}\n.warningsPopup .mapeSetting button:active:before {\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0));\n}\n.warningsPopup .mapeSetting button:active {\n transform: translate(1px, 1px);\n}\n\n@media only screen and (max-height: 850px) {\n html body .comfy-menu {\n top: 30px !important;\n }\n}\n.mapeRoot * {\n box-sizing: border-box;\n font-family: arial;\n user-select: none;\n}\n.mapeRoot *::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: linear-gradient(to right, #111, #222);\n}\n.mapeRoot *::-webkit-scrollbar-thumb {\n background: linear-gradient(to bottom, #fff, #aaa);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.mapeBar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 30px;\n background: #333;\n border-bottom: 1px solid #444;\n display: flex;\n font-size: 13px;\n z-index: 1111111;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: linear-gradient(to bottom, #353535, #313131 30%, #333);\n}\n.mapeBar.hidden {\n opacity: 0;\n pointer-events: none;\n}\n.mapeBar:after {\n content: '';\n display: block;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n height: 20px;\n background: linear-gradient(to bottom, #0000002f, #00000000);\n border-top: 2px solid rgba(0, 0, 0, 0.3);\n pointer-events: none;\n}\n.mapeBar .logo {\n background: url(https://comfyui.ma.pe/logo.svg);\n background-size: contain;\n background-repeat: no-repeat;\n min-width: 26px;\n max-width: 26px;\n margin: 8px;\n cursor: pointer;\n}\n.mapeBar .logo:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.mapeBar .logo:active {\n transform: scale(0.9);\n}\n.mapeBar .tweakHighlight {\n position: relative;\n}\n.mapeBar .tweakHighlight.siblingActive {\n opacity: 0.1;\n}\n.mapeBar .tweakHighlight.active {\n opacity: 1;\n}\n.mapeBar .tweaks {\n display: flex;\n}\n.mapeBar .tweaks .tweak {\n display: flex;\n position: relative;\n padding: 4px 0;\n margin: 0 3px;\n z-index: 1;\n}\n.mapeBar .tweaks .tweak label {\n background: rgba(0, 0, 0, 0.2);\n padding: 5px 8px;\n height: 22px;\n border-radius: 5px 0 0 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 10px;\n}\n.mapeBar .tweaks .tweak label.interactable {\n cursor: pointer;\n}\n.mapeBar .tweaks .tweak label.interactable:hover {\n color: #fff;\n}\n.mapeBar .tweaks .tweak.defaultContainer label {\n border-radius: 5px;\n}\n.mapeBar .tweaks .tweak input,\n.mapeBar .tweaks .tweak textarea {\n padding: 5px;\n height: 22px;\n color: #fff;\n font-size: 11px;\n width: 100%;\n border: 0;\n background: transparent;\n resize: none;\n font-family: monospace;\n}\n.mapeBar .tweaks .tweak input:focus,\n.mapeBar .tweaks .tweak textarea:focus,\n.mapeBar .tweaks .tweak input:active,\n.mapeBar .tweaks .tweak textarea:active {\n outline: 1px solid transparent;\n}\n.mapeBar .tweaks .tweak input:focus {\n color: #ffa;\n}\n.mapeBar .tweaks .tweak .image {\n position: absolute;\n top: 0;\n left: 0px;\n width: 50px;\n height: 50px;\n border-radius: 5px;\n background: #000;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center center;\n}\n.mapeBar .tweaks .tweak .value {\n width: 70px;\n position: relative;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n background: #222;\n height: 22px;\n border-radius: 0 5px 5px 0;\n}\n.mapeBar .tweaks .tweak.stringContainer.focused .value {\n width: 450px;\n}\n.mapeBar .tweaks .tweak.stringContainer.focused textarea {\n height: 150px;\n padding: 10px;\n line-height: 1.5;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n background: #222;\n}\n.mapeBar .tweaks .tweak.imageContainer {\n cursor: pointer;\n}\n.mapeBar .tweaks .tweak.imageContainer .value {\n width: 50px;\n}\n.mapeBar .tweaks .tweak.imageContainer .missingImage {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: rgba(255, 255, 255, 0.5);\n width: 50px;\n text-align: center;\n}\n.mapeBar .tweaks .tweak.imageContainer .missing {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 20px;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused {\n display: block;\n background: repeating-radial-gradient(#181818 0 4px, #1f1f1f 5px 5px);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n margin: 0;\n background-size: 10px 10px;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused label {\n display: none;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused .value {\n position: static;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused .image {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused.hasMultiple {\n top: 150px;\n}\n.mapeBar .tweaks .tweak.imageContainer .fullImage {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n max-width: 98%;\n max-height: 98%;\n border: 1px solid rgba(255, 255, 255, 0.2);\n box-shadow: 0 0 60px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 0, 0, 0.3);\n}\n.mapeBar .tweaks .tweak.imageContainer .thumbnails {\n display: flex;\n position: absolute;\n height: 150px;\n left: 0;\n right: 0;\n bottom: 100%;\n background: #111;\n padding: 10px;\n justify-content: space-around;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px inset rgba(0, 0, 0, 0.5);\n}\n.mapeBar .tweaks .tweak.imageContainer .thumbnails .thumb {\n width: 100%;\n}\n.mapeBar .tweaks .tweak.imageContainer .thumbnails .smallImage {\n border-radius: 5px;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n display: block;\n}\n.mapeBar button {\n width: 100px;\n}\n.mapeBar .options {\n position: absolute;\n top: 0px;\n font-weight: 900;\n color: #fff;\n line-height: 28px;\n font-size: 18px;\n background: linear-gradient(to bottom, #353535, #313131 30%, #333);\n display: flex;\n right: 5px;\n height: 29px;\n gap: 5px;\n padding: 0 5px;\n z-index: 9;\n}\n.mapeBar .options .interact {\n filter: saturate(0.8);\n cursor: pointer;\n}\n.mapeBar .options .interact:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.mapeBar .options .interact:active {\n transform: scale(0.9);\n}\n.mapeBar .options .interact small {\n position: absolute;\n top: 6px;\n left: 12px;\n font-size: 62%;\n}\n@keyframes fadeInOut {\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n}\n.mapeBar .options .blink {\n animation: fadeInOut 1s ease-in-out infinite;\n}\n.mapeBar .tweak.floating {\n display: block;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);\n padding: 0;\n}\n.mapeBar .tweak.floating .promptTweaker {\n margin: 0 0 -5px;\n border-radius: 0;\n}\n.mapeBar .tweak.floating > label {\n display: none;\n}\n.mapeBar .tweak.floating .moveArea {\n cursor: move;\n}\n.mapeBar .tweak.floating .moveArea .name {\n display: block;\n}\n.mapeBar .tweak.floating textarea {\n resize: vertical;\n /* This allows resizing only vertically */\n}\n.mapeBar .tweak.floating .value {\n height: auto;\n border-radius: 0;\n}\n.mapeBar .moveBar {\n position: relative;\n height: 20px;\n background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.3) 0px, rgba(0, 0, 0, 0.3) 2px, rgba(0, 0, 0, 0.2) 2px, rgba(0, 0, 0, 0.2) 9px);\n}\n.mapeBar .moveBar .moveArea {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 30px;\n}\n.mapeBar .moveBar .moveArea .name {\n font-size: 11px;\n padding: 4px 6px;\n display: none;\n}\n.mapeBar .moveBar .toggleFloating {\n position: absolute;\n top: -1px;\n right: 5px;\n filter: saturate(0);\n cursor: pointer;\n font-size: 15px;\n}\n.mapeBar .moveBar .toggleFloating:hover {\n filter: saturate(1);\n}\n.mapeBar .groupToggle {\n position: relative;\n}\n.mapeBar .groupToggle > span {\n cursor: pointer;\n display: block;\n}\n.mapeBar .groupToggle > span:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.mapeBar .groupToggle > span:active {\n transform: scale(0.9);\n}\n.mapeBar .groupToggle .groups {\n position: absolute;\n top: 100%;\n left: 0;\n background: #333;\n padding: 0 5px;\n border-radius: 0 0 5px 5px;\n transform: translate(-50%, 0);\n}\n.mapeBar .groupToggle .groups .group {\n display: flex;\n white-space: nowrap;\n border-right: 0;\n font-size: 11px;\n color: #fff9;\n font-weight: normal;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 5px;\n padding: 0 10px;\n margin: 5px 0;\n}\n.mapeBar .groupToggle .groups .group:nth-child(odd) {\n background: rgba(0, 0, 0, 0.1);\n}\n.mapeBar .groupToggle .groups .group .groupName {\n width: 100%;\n padding-right: 10px;\n line-height: 22px;\n max-width: 300px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mapeBar .groupToggle .groups input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n position: relative;\n top: 6px;\n margin: 0;\n min-width: 10px;\n min-height: 10px;\n height: 10px;\n width: 10px;\n}\n.mapeBar .groupToggle .groups input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mapeBar .groupToggle .groups input[type='checkbox']:checked {\n background: #fff;\n}\n.mapeBar .groupToggle .groups input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.mapeBarToggle {\n position: fixed;\n top: 0;\n right: 0;\n width: 7px;\n height: 30px;\n background: #4b4b4b;\n z-index: 100000000;\n cursor: zoom-out;\n border-radius: 5px 0 0 5px;\n}\n.mapeBarToggle.hidden {\n cursor: zoom-in;\n}")); + elementStyle.appendChild(document.createTextNode("@import 'https://fonts.googleapis.com/css?family=Material+Icons&display=block';.imagePreviews {\n background: repeating-radial-gradient(#181818 0 4px, #1f1f1f 5px 5px);\n font-family: arial;\n color: #fff;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n margin: 0;\n background-size: 10px 10px;\n display: flex;\n flex-direction: column;\n}\n.imagePreviews .content {\n display: flex;\n height: 100%;\n}\n.imagePreviews .value {\n position: static;\n}\n.imagePreviews .image {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n}\n.imagePreviews .imagePreviewTweaks {\n display: flex;\n background: #111;\n padding: 10px;\n justify-content: space-around;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px inset rgba(0, 0, 0, 0.5);\n gap: 10px;\n}\n.imagePreviews .imagePreviewTweaks .button {\n flex: auto;\n vertical-align: top;\n border: 0;\n text-transform: uppercase;\n text-shadow: 2px 2px 1px #000000;\n user-select: none;\n position: relative;\n display: inline-block;\n color: #fff;\n border-top: 1px solid #0f0f12;\n background: #0f0f0f;\n margin: 2px;\n border-radius: 4px;\n cursor: pointer;\n line-height: 1;\n transition: color 1s;\n padding: 5px;\n outline: none;\n text-align: center;\n opacity: 0.5;\n padding: 8px 10px;\n}\n.imagePreviews .imagePreviewTweaks .button.active {\n background: #490000;\n}\n.imagePreviews .imagePreviewTweaks .button:before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04));\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), inset 0 0 1px rgba(255, 255, 255, 0.2);\n content: '';\n pointer-events: none;\n}\n.imagePreviews .imagePreviewTweaks .button:hover:before {\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06));\n}\n.imagePreviews .imagePreviewTweaks .button:active:before {\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0));\n}\n.imagePreviews .imagePreviewTweaks .button:active {\n transform: translate(1px, 1px);\n}\n.imagePreviews .imagePreviewTweaks .button.active {\n opacity: 1;\n}\n.imagePreviews .imagePreviewTweaks label {\n text-transform: uppercase;\n padding: 8px 10px;\n color: rgba(255, 255, 255, 0.5);\n line-height: 21px;\n}\n.imagePreviews .value {\n width: 50px;\n}\n.imagePreviews .value {\n position: static;\n}\n.imagePreviews .bigPreview {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n cursor: move;\n}\n.imagePreviews .fullImage {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n max-width: 98%;\n max-height: calc(100vh - 80px);\n border: 1px solid rgba(255, 255, 255, 0.2);\n box-shadow: 0 0 60px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 0, 0, 0.3);\n transform-origin: top left;\n}\n.imagePreviews .thumbnails {\n display: flex;\n left: 0;\n right: 0;\n bottom: 0;\n background: #111;\n padding: 10px;\n justify-content: flex-start;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px inset rgba(0, 0, 0, 0.5);\n flex-direction: column;\n max-width: 100px;\n gap: 10px;\n width: 100px;\n}\n.imagePreviews .thumbnails .thumb {\n width: 100%;\n opacity: 0.2;\n cursor: pointer;\n position: relative;\n height: 100%;\n}\n.imagePreviews .thumbnails .thumb:hover {\n opacity: 0.7;\n}\n.imagePreviews .thumbnails .thumb.active {\n opacity: 1;\n}\n.imagePreviews .thumbnails .thumb img {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: 10px;\n}\n.imagePreviews .thumbnails .smallImage {\n border-radius: 5px;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n display: block;\n}\n.imagePreviews .mosaicGrid {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform-origin: top left;\n}\n.imagePreviews .mosaicGrid .inner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n display: flex;\n flex-direction: row;\n align-content: center;\n flex-wrap: wrap;\n justify-content: center;\n}\n.imagePreviews .mosaicGrid .mosaicImage {\n display: inline-block;\n transform: none;\n box-shadow: 0 0 60px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 0, 0, 0.3);\n}\n.imagePreviews .mosaicGrid .mosaicImage img {\n width: 100%;\n height: 100%;\n}\n.imagePreviews .zoom {\n font-size: 20px;\n font-weight: bold;\n position: absolute;\n top: 16px;\n right: 15px;\n text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);\n cursor: pointer !important;\n cursor: pointer;\n}\n.imagePreviews .zoom:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.imagePreviews .zoom:active {\n transform: scale(0.9);\n}\n.imagePreviews .flipbookFps {\n font-size: 20px;\n font-weight: bold;\n position: absolute;\n top: 15px;\n right: 100px;\n text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);\n cursor: pointer !important;\n}\n.imagePreviews .flipbookFps label {\n margin-right: 10px;\n}\n.imagePreviews .flipbookFps input {\n background: transparent;\n color: #fff;\n border: 0;\n background: rgba(0, 0, 0, 0.2);\n padding: 5px 3px;\n border-radius: 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 10px;\n width: 40px;\n position: relative;\n font-size: 16px;\n top: -1px;\n margin-right: 20px;\n}\n.imagePreviews .flipbookFps input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n position: relative;\n top: 3px;\n}\n.imagePreviews .flipbookFps input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.imagePreviews .flipbookFps input[type='checkbox']:checked {\n background: #fff;\n}\n.imagePreviews .flipbookFps input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.imagePreviews .imagePreviewHelp {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 10px;\n text-align: center;\n background: rgba(0, 0, 0, 0.2);\n padding: 5px 3px;\n border-radius: 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n}\n.imagePreviews .imagePreviewHelp p {\n padding: 0 20px;\n}\n.imagePreviews .imagePreviewHelp video {\n max-width: 90vw;\n max-height: calc(90vh - 50px);\n float: left;\n}\n.mapeBar .tweaks .promptTweaker {\n background: #333;\n padding: 5px 0 10px;\n border-radius: 0 0 5px 5px;\n position: relative;\n top: -5px;\n}\n.mapeBar .tweaks .promptTweaker * {\n box-sizing: border-box;\n}\n.mapeBar .tweaks .promptTweaker .promptTweakerPrompts {\n max-height: calc(100vh - 310px);\n overflow: auto;\n}\n.mapeBar .tweaks .promptTweaker .buttons {\n display: flex;\n padding: 0 10px 10px;\n}\n.mapeBar .tweaks .promptTweaker button {\n flex: auto;\n vertical-align: top;\n border: 0;\n text-transform: uppercase;\n text-shadow: 2px 2px 1px #000000;\n user-select: none;\n position: relative;\n display: inline-block;\n color: #fff;\n border-top: 1px solid #0f0f12;\n background: #0f0f0f;\n margin: 2px;\n border-radius: 4px;\n cursor: pointer;\n line-height: 1;\n transition: color 1s;\n padding: 5px;\n outline: none;\n white-space: nowrap;\n font-size: 11px;\n height: 23px;\n padding: 5px 8px;\n}\n.mapeBar .tweaks .promptTweaker button.active {\n background: #490000;\n}\n.mapeBar .tweaks .promptTweaker button:before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04));\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), inset 0 0 1px rgba(255, 255, 255, 0.2);\n content: '';\n pointer-events: none;\n}\n.mapeBar .tweaks .promptTweaker button:hover:before {\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06));\n}\n.mapeBar .tweaks .promptTweaker button:active:before {\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0));\n}\n.mapeBar .tweaks .promptTweaker button:active {\n transform: translate(1px, 1px);\n}\n.mapeBar .tweaks .promptTweaker button.remove {\n width: 25px;\n padding: 5px 8px;\n}\n.mapeBar .tweaks .promptTweaker .prompt {\n display: flex;\n padding: 0 5px;\n}\n.mapeBar .tweaks .promptTweaker .prompt label {\n max-width: 130px;\n min-width: 130px;\n height: auto;\n line-height: 1.5;\n padding: 2px;\n border-radius: 5px;\n}\n.mapeBar .tweaks .promptTweaker .prompt .weight {\n padding: 0 10px;\n line-height: 26px;\n min-width: 43px;\n max-width: 43px;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range'] {\n appearance: none;\n -webkit-appearance: none;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: #ffffff;\n margin-top: -3px;\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);\n cursor: pointer;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range']::-webkit-slider-runnable-track {\n width: 60%;\n height: 5px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 3rem;\n transition: all 0.5s;\n cursor: pointer;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='range']:hover::-webkit-slider-runnable-track {\n background: rgba(255, 255, 255, 0.3);\n}\n.mapeBar .tweaks .promptTweaker .prompt.tmp {\n opacity: 0.5;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox']:checked {\n background: #fff;\n}\n.mapeBar .tweaks .promptTweaker .prompt input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows {\n padding: 3px 5px 3px 0;\n position: relative;\n top: 0px;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows .arrow {\n color: rgba(255, 255, 255, 0.2);\n font-size: 12px;\n line-height: 10px;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows .arrow.disabled {\n pointer-events: none;\n opacity: 0;\n}\n.mapeBar .tweaks .promptTweaker .prompt .arrows .arrow:hover {\n cursor: pointer;\n color: rgba(255, 255, 255, 0.9);\n}\n.settingsPopup {\n position: fixed;\n background: #333;\n top: 30px;\n right: 0;\n color: #fff;\n font-family: arial;\n min-width: 500px;\n z-index: 1111111111;\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);\n border: 1px solid #444;\n}\n.settingsPopup .close {\n cursor: pointer;\n position: absolute;\n top: 10px;\n right: 10px;\n filter: saturate(0);\n}\n.settingsPopup .close:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.settingsPopup .close:active {\n transform: scale(0.9);\n}\n.settingsPopup .header {\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n font-size: 20px;\n padding: 10px 15px;\n text-transform: uppercase;\n}\n.settingsPopup .modalContent {\n max-height: calc(100vh - 100px);\n overflow: auto;\n}\n.settingsPopup .mapeSetting {\n display: flex;\n position: relative;\n padding: 1px 0;\n margin: 0 3px;\n z-index: 1;\n}\n.settingsPopup .mapeSetting .name {\n background: rgba(0, 0, 0, 0.2);\n padding: 8px 10px;\n border-radius: 5px 0 0 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 10px;\n min-width: 400px;\n line-height: 1.5;\n}\n.settingsPopup .mapeSetting input {\n padding: 5px;\n height: 22px;\n color: #fff;\n font-size: 11px;\n width: 100%;\n border: 0;\n background: transparent;\n resize: none;\n font-family: monospace;\n}\n.settingsPopup .mapeSetting input:focus,\n.settingsPopup .mapeSetting input:active {\n outline: 1px solid transparent;\n}\n.settingsPopup .mapeSetting input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n margin: 0 auto;\n display: block;\n}\n.settingsPopup .mapeSetting input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.settingsPopup .mapeSetting input[type='checkbox']:checked {\n background: #fff;\n}\n.settingsPopup .mapeSetting input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.settingsPopup .mapeSetting input:focus {\n color: #ffa;\n}\n.settingsPopup .mapeSetting input[type='color'] {\n margin: -15px 0 -10px;\n height: 36px;\n position: relative;\n top: 4px;\n}\n.settingsPopup .mapeSetting .reset {\n padding: 5px;\n filter: saturate(0);\n}\n.settingsPopup .mapeSetting .reset:hover {\n filter: saturate(1);\n}\n.settingsPopup .mapeSetting .value {\n width: 100%;\n position: relative;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n background: #222;\n border-radius: 0 5px 5px 0;\n padding: 8px 10px;\n}\n.helpPopup {\n position: fixed;\n background: #333;\n top: 30px;\n right: 0;\n color: #fff;\n font-family: arial;\n min-width: 500px;\n z-index: 1111111111;\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);\n border: 1px solid #444;\n}\n.helpPopup .close {\n cursor: pointer;\n position: absolute;\n top: 10px;\n right: 10px;\n filter: saturate(0);\n}\n.helpPopup .close:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.helpPopup .close:active {\n transform: scale(0.9);\n}\n.helpPopup .header {\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n font-size: 20px;\n padding: 10px 15px;\n text-transform: uppercase;\n}\n.helpPopup .modalContent {\n max-height: calc(100vh - 100px);\n overflow: auto;\n}\n.helpPopup .modalContent {\n display: flex;\n}\n.helpPopup .modalContent .help {\n padding: 15px;\n}\n.helpPopup .modalContent .help .video,\n.helpPopup .modalContent .help .image {\n width: 720px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);\n background: rgba(0, 0, 0, 0.8);\n}\n.helpPopup .modalContent .help .info {\n border: 1px solid rgba(255, 255, 255, 0.1);\n background: rgba(0, 0, 0, 0.1);\n margin: 10px 0;\n border-radius: 10px;\n overflow: hidden;\n}\n.helpPopup .modalContent .help .title {\n font-size: 25px;\n padding: 15px 20px;\n font-weight: bold;\n text-transform: uppercase;\n background: rgba(0, 0, 0, 0.2);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n.helpPopup .modalContent .help .text {\n max-width: 720px;\n font-size: 15px;\n padding: 20px 0;\n font-size: 17px;\n color: rgba(255, 255, 255, 0.8);\n white-space: pre-wrap;\n}\n.helpPopup .modalContent .help .text p {\n margin: 0;\n padding: 0 20px 1em;\n line-height: 1.5;\n}\n.helpPopup .modalContent .help .text p:last-child {\n padding-bottom: 0;\n}\n.helpPopup .modalContent .help .text code {\n outline: 1px solid rgba(0, 0, 0, 0.3);\n background: rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n padding: 5px;\n margin: 0 0.2em;\n}\n.helpPopup .modalContent .menu {\n background-color: #222;\n margin: 0;\n padding: 0;\n}\n.helpPopup .modalContent .menu li {\n background: linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0));\n border-left: 1px solid #555;\n padding: 10px 15px;\n list-style: none;\n color: rgba(255, 255, 255, 0.5);\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n}\n.helpPopup .modalContent .menu li:nth-child(odd) {\n background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.1) 20%, rgba(0, 0, 0, 0.1));\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n}\n.helpPopup .modalContent .menu li:hover {\n color: #ffffff;\n cursor: pointer;\n}\n.helpPopup .modalContent .menu li.active {\n background: #333;\n color: #fff;\n box-shadow: 6px 2px 6px #0003;\n border-left: 1px solid transparent;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n background: linear-gradient(to right, #333, #424242 20%, #333);\n}\n.helpPopup .modalContent .menu li.active:first-child {\n border-top: 0;\n}\n.mapeConfirmPrompt {\n font-family: arial;\n position: fixed;\n padding: 10px;\n background: #333;\n border-bottom: 1px solid #444;\n font-size: 13px;\n z-index: 111;\n border-radius: 10px;\n border: 2px solid #555;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);\n transform: translate(-50%, -50%);\n}\n.mapeConfirmPrompt * {\n box-sizing: border-box;\n}\n.mapeConfirmPrompt .title {\n white-space: nowrap;\n text-transform: uppercase;\n padding: 0 0 5px;\n text-align: center;\n}\n.mapeConfirmPrompt input {\n position: relative;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px #0000004d inset;\n background: #222;\n color: #fff;\n border-radius: 5px;\n padding: 8px 10px;\n width: 100%;\n}\n.mapeConfirmPrompt input:focus,\n.mapeConfirmPrompt input:active {\n outline: 1px solid transparent;\n}\n.mapeConfirmPrompt .suggestions {\n background: #333;\n border-bottom: 1px solid #444;\n font-size: 13px;\n z-index: 111;\n border-radius: 10px;\n border: 2px solid #555;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n border-radius: 5px;\n}\n.mapeConfirmPrompt .suggestions .suggestion {\n padding: 5px;\n}\n.mapeConfirmPrompt .suggestions .suggestion:nth-child(odd) {\n background: rgba(0, 0, 0, 0.1);\n}\n.mapeConfirmPrompt .suggestions .suggestion:hover,\n.mapeConfirmPrompt .suggestions .suggestion.selected {\n color: #ffa;\n background: rgba(0, 0, 0, 0.3);\n cursor: pointer;\n}\n.mapeConfirmPrompt .suggestions .suggestion small {\n opacity: 0.5;\n float: right;\n}\n.mapeConfirmPrompt .suggestions .suggestion.missingType {\n opacity: 0.3;\n}\n.warningsPopup {\n position: fixed;\n background: #333;\n top: 30px;\n right: 0;\n color: #fff;\n font-family: arial;\n min-width: 500px;\n z-index: 1111111111;\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);\n border: 1px solid #444;\n}\n.warningsPopup .close {\n cursor: pointer;\n position: absolute;\n top: 10px;\n right: 10px;\n filter: saturate(0);\n}\n.warningsPopup .close:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.warningsPopup .close:active {\n transform: scale(0.9);\n}\n.warningsPopup .header {\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n font-size: 20px;\n padding: 10px 15px;\n text-transform: uppercase;\n}\n.warningsPopup .modalContent {\n max-height: calc(100vh - 100px);\n overflow: auto;\n}\n.warningsPopup .mapeSetting {\n display: flex;\n position: relative;\n padding: 4px 0;\n margin: 0 3px;\n z-index: 1;\n}\n.warningsPopup .mapeSetting .name {\n background: rgba(0, 0, 0, 0.2);\n padding: 8px 10px;\n border-radius: 5px 0 0 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: #fff;\n line-height: 10px;\n line-height: 1.5;\n width: 100%;\n font-size: 16px;\n}\n.warningsPopup .mapeSetting .name small {\n padding: 0 10px;\n color: rgba(255, 255, 255, 0.6);\n}\n.warningsPopup .mapeSetting button {\n flex: auto;\n vertical-align: top;\n border: 0;\n text-transform: uppercase;\n text-shadow: 2px 2px 1px #000000;\n user-select: none;\n position: relative;\n display: inline-block;\n color: #fff;\n border-top: 1px solid #0f0f12;\n background: #0f0f0f;\n margin: 2px;\n border-radius: 4px;\n cursor: pointer;\n line-height: 1;\n transition: color 1s;\n padding: 5px;\n outline: none;\n padding: 0 10px;\n white-space: nowrap;\n}\n.warningsPopup .mapeSetting button.active {\n background: #490000;\n}\n.warningsPopup .mapeSetting button:before {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04));\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), inset 0 0 1px rgba(255, 255, 255, 0.2);\n content: '';\n pointer-events: none;\n}\n.warningsPopup .mapeSetting button:hover:before {\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06));\n}\n.warningsPopup .mapeSetting button:active:before {\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0));\n}\n.warningsPopup .mapeSetting button:active {\n transform: translate(1px, 1px);\n}\n\n@media only screen and (max-height: 850px) {\n html body .comfy-menu {\n top: 30px !important;\n }\n}\n.mapeRoot * {\n box-sizing: border-box;\n font-family: arial;\n user-select: none;\n}\n.mapeRoot *::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: linear-gradient(to right, #111, #222);\n}\n.mapeRoot *::-webkit-scrollbar-thumb {\n background: linear-gradient(to bottom, #fff, #aaa);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.mapeBar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 30px;\n background: #333;\n border-bottom: 1px solid #444;\n display: flex;\n font-size: 13px;\n z-index: 1111111;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: linear-gradient(to bottom, #353535, #313131 30%, #333);\n}\n.mapeBar.mapeHidden {\n opacity: 0;\n pointer-events: none;\n}\n.mapeBar:after {\n content: '';\n display: block;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n height: 20px;\n background: linear-gradient(to bottom, #0000002f, #00000000);\n border-top: 2px solid rgba(0, 0, 0, 0.3);\n pointer-events: none;\n}\n.mapeBar .logo {\n background: url(https://comfyui.ma.pe/logo.svg);\n background-size: contain;\n background-repeat: no-repeat;\n min-width: 26px;\n max-width: 26px;\n margin: 8px;\n cursor: pointer;\n}\n.mapeBar .logo:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.mapeBar .logo:active {\n transform: scale(0.9);\n}\n.mapeBar .tweakHighlight {\n position: relative;\n}\n.mapeBar .tweakHighlight.siblingActive {\n opacity: 0.1;\n}\n.mapeBar .tweakHighlight.active {\n opacity: 1;\n}\n.mapeBar .tweaks {\n display: flex;\n}\n.mapeBar .tweaks .tweak {\n display: flex;\n position: relative;\n padding: 4px 0;\n margin: 0 3px;\n z-index: 1;\n}\n.mapeBar .tweaks .tweak label {\n background: rgba(0, 0, 0, 0.2);\n padding: 5px 8px;\n height: 22px;\n border-radius: 5px 0 0 5px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n border-right: 0;\n font-size: 11px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 10px;\n}\n.mapeBar .tweaks .tweak label.interactable {\n cursor: pointer;\n}\n.mapeBar .tweaks .tweak label.interactable:hover {\n color: #fff;\n}\n.mapeBar .tweaks .tweak.defaultContainer label {\n border-radius: 5px;\n}\n.mapeBar .tweaks .tweak input,\n.mapeBar .tweaks .tweak textarea {\n padding: 5px;\n height: 22px;\n color: #fff;\n font-size: 11px;\n width: 100%;\n border: 0;\n background: transparent;\n resize: none;\n font-family: monospace;\n}\n.mapeBar .tweaks .tweak input:focus,\n.mapeBar .tweaks .tweak textarea:focus,\n.mapeBar .tweaks .tweak input:active,\n.mapeBar .tweaks .tweak textarea:active {\n outline: 1px solid transparent;\n}\n.mapeBar .tweaks .tweak input:focus {\n color: #ffa;\n}\n.mapeBar .tweaks .tweak .image {\n position: absolute;\n top: 0;\n left: 0px;\n width: 50px;\n height: 50px;\n border-radius: 5px;\n background: #000;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center center;\n}\n.mapeBar .tweaks .tweak .value {\n width: 70px;\n position: relative;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n background: #222;\n height: 22px;\n border-radius: 0 5px 5px 0;\n}\n.mapeBar .tweaks .tweak.stringContainer.focused .value {\n width: 450px;\n}\n.mapeBar .tweaks .tweak.stringContainer.focused textarea {\n height: 150px;\n padding: 10px;\n line-height: 1.5;\n border: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) inset;\n background: #222;\n}\n.mapeBar .tweaks .tweak.imageContainer {\n cursor: pointer;\n}\n.mapeBar .tweaks .tweak.imageContainer .value {\n width: 50px;\n}\n.mapeBar .tweaks .tweak.imageContainer .missingImage {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: rgba(255, 255, 255, 0.5);\n width: 50px;\n text-align: center;\n}\n.mapeBar .tweaks .tweak.imageContainer .missing {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 20px;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused {\n display: block;\n background: repeating-radial-gradient(#181818 0 4px, #1f1f1f 5px 5px);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n margin: 0;\n background-size: 10px 10px;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused label {\n display: none;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused .value {\n position: static;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused .image {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n}\n.mapeBar .tweaks .tweak.imageContainer.focused.hasMultiple {\n top: 150px;\n}\n.mapeBar .tweaks .tweak.imageContainer .fullImage {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n max-width: 98%;\n max-height: 98%;\n border: 1px solid rgba(255, 255, 255, 0.2);\n box-shadow: 0 0 60px rgba(0, 0, 0, 0.3), 0 0 30px rgba(0, 0, 0, 0.3);\n}\n.mapeBar .tweaks .tweak.imageContainer .thumbnails {\n display: flex;\n position: absolute;\n height: 150px;\n left: 0;\n right: 0;\n bottom: 100%;\n background: #111;\n padding: 10px;\n justify-content: space-around;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n box-shadow: 0 0 10px inset rgba(0, 0, 0, 0.5);\n}\n.mapeBar .tweaks .tweak.imageContainer .thumbnails .thumb {\n width: 100%;\n}\n.mapeBar .tweaks .tweak.imageContainer .thumbnails .smallImage {\n border-radius: 5px;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n display: block;\n}\n.mapeBar button {\n width: 100px;\n}\n.mapeBar .options {\n position: absolute;\n top: 0px;\n font-weight: 900;\n color: #fff;\n line-height: 28px;\n font-size: 18px;\n background: linear-gradient(to bottom, #353535, #313131 30%, #333);\n display: flex;\n right: 5px;\n height: 29px;\n gap: 5px;\n padding: 0 5px;\n z-index: 9;\n}\n.mapeBar .options .interact {\n filter: saturate(0.8);\n cursor: pointer;\n}\n.mapeBar .options .interact:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.mapeBar .options .interact:active {\n transform: scale(0.9);\n}\n.mapeBar .options .interact small {\n position: absolute;\n top: 6px;\n left: 12px;\n font-size: 62%;\n}\n@keyframes fadeInOut {\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n}\n.mapeBar .options .blink {\n animation: fadeInOut 1s ease-in-out infinite;\n}\n.mapeBar .tweak.floating {\n display: block;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);\n padding: 0;\n}\n.mapeBar .tweak.floating .promptTweaker {\n margin: 0 0 -5px;\n border-radius: 0;\n}\n.mapeBar .tweak.floating > label {\n display: none;\n}\n.mapeBar .tweak.floating .moveArea {\n cursor: move;\n}\n.mapeBar .tweak.floating .moveArea .name {\n display: block;\n}\n.mapeBar .tweak.floating textarea {\n resize: vertical;\n /* This allows resizing only vertically */\n}\n.mapeBar .tweak.floating .value {\n height: auto;\n border-radius: 0;\n}\n.mapeBar .moveBar {\n position: relative;\n height: 20px;\n background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.3) 0px, rgba(0, 0, 0, 0.3) 2px, rgba(0, 0, 0, 0.2) 2px, rgba(0, 0, 0, 0.2) 9px);\n}\n.mapeBar .moveBar .moveArea {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 30px;\n}\n.mapeBar .moveBar .moveArea .name {\n font-size: 11px;\n padding: 4px 6px;\n display: none;\n}\n.mapeBar .moveBar .toggleFloating {\n position: absolute;\n top: -1px;\n right: 5px;\n filter: saturate(0);\n cursor: pointer;\n font-size: 15px;\n}\n.mapeBar .moveBar .toggleFloating:hover {\n filter: saturate(1);\n}\n.mapeBar .groupToggle {\n position: relative;\n}\n.mapeBar .groupToggle > span {\n cursor: pointer;\n display: block;\n}\n.mapeBar .groupToggle > span:hover {\n transform: scale(1.1);\n filter: saturate(1);\n}\n.mapeBar .groupToggle > span:active {\n transform: scale(0.9);\n}\n.mapeBar .groupToggle .groups {\n position: absolute;\n top: 100%;\n left: 0;\n background: #333;\n padding: 0 5px;\n border-radius: 0 0 5px 5px;\n transform: translate(-50%, 0);\n}\n.mapeBar .groupToggle .groups .group {\n display: flex;\n white-space: nowrap;\n border-right: 0;\n font-size: 11px;\n color: #fff9;\n font-weight: normal;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 5px;\n padding: 0 10px;\n margin: 5px 0;\n}\n.mapeBar .groupToggle .groups .group:nth-child(odd) {\n background: rgba(0, 0, 0, 0.1);\n}\n.mapeBar .groupToggle .groups .group .groupName {\n width: 100%;\n padding-right: 10px;\n line-height: 22px;\n max-width: 300px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mapeBar .groupToggle .groups input[type='checkbox'] {\n vertical-align: top;\n min-width: 15px;\n max-width: 15px;\n min-height: 15px;\n max-height: 15px;\n background-color: rgba(0, 0, 0, 0.2);\n display: inline-block;\n margin-right: 0.8vh;\n border-radius: 100%;\n margin-top: 0.45vh;\n box-shadow: 0 0 0 0.1vh rgba(255, 255, 255, 0.2);\n padding: 0.5vh;\n -webkit-appearance: none;\n outline: none;\n position: relative;\n top: 6px;\n margin: 0;\n min-width: 10px;\n min-height: 10px;\n height: 10px;\n width: 10px;\n}\n.mapeBar .groupToggle .groups input[type='checkbox']:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mapeBar .groupToggle .groups input[type='checkbox']:checked {\n background: #fff;\n}\n.mapeBar .groupToggle .groups input[type='checkbox']:disabled {\n opacity: 0.2;\n}\n.mapeBarToggle {\n position: fixed;\n top: 0;\n right: 0;\n width: 7px;\n height: 30px;\n background: #4b4b4b;\n z-index: 100000000;\n cursor: zoom-out;\n border-radius: 5px 0 0 5px;\n}\n.mapeBarToggle.mapeHidden {\n cursor: zoom-in;\n}")); document.head.appendChild(elementStyle); } } catch (e) { diff --git a/pyproject.toml b/pyproject.toml index dcc3c87..a14a407 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui-mape-helpers" description = "Multi-monitor image preview, Variable Assigment/Wireless Nodes, Prompt Tweaking, Command Palette, Pinned favourite nodes, Node navigation, Fuzzy search, Node time tracking, Organizing and Error management. For more info visit: [a/https://comfyui.ma.pe/](https://comfyui.ma.pe/)" -version = "0.5.0" +version = "0.5.1" license = "LICENSE" [project.urls]