diff --git a/dist/BlueMarble-For-GreasyFork.user.css b/dist/BlueMarble-For-GreasyFork.user.css
index 51f4238..bb285a5 100644
--- a/dist/BlueMarble-For-GreasyFork.user.css
+++ b/dist/BlueMarble-For-GreasyFork.user.css
@@ -1,3 +1,192 @@
+/* src/WindowFilter.css */
+#bm-window-filter p svg {
+ display: inline;
+ height: 1em;
+ fill: white;
+}
+#bm-filter-flex {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: center;
+ gap: 1em 3ch;
+}
+#bm-window-filter .bm-filter-color {
+ width: fit-content;
+ max-width: 35ch;
+ background-color: rgba(21, 48, 99, 0.9);
+ border-radius: 1em;
+ padding: 0.5em;
+ gap: 1ch;
+ transition: background-color 0.3s ease;
+}
+#bm-window-filter .bm-filter-color:hover,
+#bm-window-filter.bm-filter-color:focus-within {
+ background-color: rgba(17, 40, 85, 0.9);
+}
+#bm-window-filter .bm-filter-container-rgb {
+ display: block;
+ border: thick double darkslategray;
+ width: fit-content;
+ height: fit-content;
+ padding: 1ch;
+}
+#bm-window-filter .bm-filter-color[data-id="-2"] .bm-filter-container-rgb {
+ background:
+ conic-gradient(
+ #aa0000 0%,
+ #aaaa00 16.6%,
+ #00aa00 33.3%,
+ #00aaaa 50%,
+ #0000aa 66.6%,
+ #aa00aa 83.3%,
+ #aa0000 100%);
+}
+#bm-window-filter .bm-filter-color[data-id="-1"] .bm-filter-container-rgb {
+ background: url('data:image/svg+xml;utf8,') repeat;
+ background-color: transparent !important;
+}
+#bm-window-filter .bm-filter-color[data-id="-1"] .bm-filter-container-rgb svg {
+ fill: white !important;
+}
+#bm-window-filter .bm-filter-color[data-id="0"] .bm-filter-container-rgb {
+ background-color: transparent !important;
+}
+#bm-window-filter .bm-filter-container-rgb button {
+ padding: 0.75em 0.5ch;
+}
+#bm-window-filter .bm-filter-container-rgb svg {
+ width: 4ch;
+}
+#bm-window-filter .bm-filter-color > .bm-flex-between {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 0;
+}
+#bm-window-filter .bm-filter-color small {
+ font-size: 0.75em;
+}
+#bm-window-filter .bm-filter-color.bm-color-hide {
+ display: none;
+}
+#bm-window-filter.bm-windowed #bm-filter-flex {
+ flex-direction: column;
+ gap: 0.25em;
+}
+#bm-window-filter.bm-windowed .bm-filter-color {
+ width: auto;
+ margin: 0;
+ padding: 0;
+}
+#bm-window-filter.bm-windowed .bm-filter-container-rgb {
+ display: flex;
+ width: 100%;
+ gap: 0.5ch;
+ align-items: center;
+ padding: 0.1em 0.5ch;
+ border: none;
+ border-radius: 1em;
+}
+#bm-window-filter.bm-windowed .bm-filter-container-rgb button {
+ padding: 0.5em 0.25ch;
+}
+#bm-window-filter.bm-windowed .bm-filter-container-rgb svg {
+ width: 3ch;
+}
+#bm-window-filter.bm-windowed .bm-filter-color h2 {
+ font-size: 0.75em;
+}
+#bm-window-filter #bm-filter-windowed-color-totals {
+ font-size: 1em;
+}
+
+/* src/WindowSettings.css */
+#bm-window-settings div:has(> .bm-highlight-preset-container) {
+ width: fit-content;
+ justify-content: flex-start;
+}
+#bm-window-settings .bm-highlight-preset-container {
+ display: flex;
+ flex-direction: column;
+ width: 13%;
+}
+#bm-window-settings .bm-highlight-preset-container span {
+ width: fit-content;
+ margin: auto;
+ font-size: 0.7em;
+}
+#bm-window-settings .bm-highlight-preset-container button {
+ width: fit-content;
+ padding: 0;
+ border-radius: 0;
+}
+#bm-window-settings .bm-highlight-preset-container svg {
+ stroke: #333;
+ stroke-width: 0.02px;
+ width: 100%;
+ min-width: 1.5ch;
+ max-width: 14.5ch;
+}
+#bm-window-settings .bm-highlight-preset-container button:hover svg,
+#bm-window-settings .bm-highlight-preset-container button:focus svg {
+ opacity: 0.9;
+}
+#bm-window-settings .bm-highlight-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ width: 25%;
+ min-width: 3ch;
+ max-width: 15ch;
+}
+#bm-window-settings .bm-highlight-grid > button {
+ width: 100%;
+ padding: 0;
+ aspect-ratio: 1 / 1;
+ background-color: white;
+ border: #333 1px solid;
+ border-radius: 0;
+ box-sizing: border-box;
+}
+#bm-window-settings .bm-highlight-grid > button[data-status=Incorrect] {
+ background-color: brown;
+}
+#bm-window-settings .bm-highlight-grid > button[data-status=Template] {
+ background-color: darkslategray;
+}
+#bm-window-settings .bm-highlight-grid > button:hover,
+#bm-window-settings .bm-highlight-grid > button:focus {
+ opacity: 0.8;
+}
+
+/* src/WindowWizard.css */
+#bm-wizard-tlist {
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+}
+#bm-wizard-tlist > .bm-container {
+ width: 100%;
+ justify-content: flex-start;
+ background-color: rgba(21, 48, 99, 0.9);
+ border-radius: 1em;
+ padding: 0.5em;
+ transition: background-color 0.3s ease;
+}
+#bm-wizard-tlist > .bm-container:hover,
+#bm-wizard-tlist > .bm-container:focus-within {
+ background-color: rgba(17, 40, 85, 0.9);
+}
+#bm-wizard-tlist .bm-wizard-template-container-image {
+ height: 100%;
+ font-size: xxx-large;
+}
+#bm-wizard-tlist .bm-wizard-template-container-flavor {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 0;
+}
+
/* src/confettiManager.css */
div:has(> confetti-piece) {
position: absolute;
@@ -287,193 +476,4 @@ input[type=file] {
font-size: 1em;
}
-/* src/WindowFilter.css */
-#bm-window-filter p svg {
- display: inline;
- height: 1em;
- fill: white;
-}
-#bm-filter-flex {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content: center;
- gap: 1em 3ch;
-}
-#bm-window-filter .bm-filter-color {
- width: fit-content;
- max-width: 35ch;
- background-color: rgba(21, 48, 99, 0.9);
- border-radius: 1em;
- padding: 0.5em;
- gap: 1ch;
- transition: background-color 0.3s ease;
-}
-#bm-window-filter .bm-filter-color:hover,
-#bm-window-filter.bm-filter-color:focus-within {
- background-color: rgba(17, 40, 85, 0.9);
-}
-#bm-window-filter .bm-filter-container-rgb {
- display: block;
- border: thick double darkslategray;
- width: fit-content;
- height: fit-content;
- padding: 1ch;
-}
-#bm-window-filter .bm-filter-color[data-id="-2"] .bm-filter-container-rgb {
- background:
- conic-gradient(
- #aa0000 0%,
- #aaaa00 16.6%,
- #00aa00 33.3%,
- #00aaaa 50%,
- #0000aa 66.6%,
- #aa00aa 83.3%,
- #aa0000 100%);
-}
-#bm-window-filter .bm-filter-color[data-id="-1"] .bm-filter-container-rgb {
- background: url('data:image/svg+xml;utf8,') repeat;
- background-color: transparent !important;
-}
-#bm-window-filter .bm-filter-color[data-id="-1"] .bm-filter-container-rgb svg {
- fill: white !important;
-}
-#bm-window-filter .bm-filter-color[data-id="0"] .bm-filter-container-rgb {
- background-color: transparent !important;
-}
-#bm-window-filter .bm-filter-container-rgb button {
- padding: 0.75em 0.5ch;
-}
-#bm-window-filter .bm-filter-container-rgb svg {
- width: 4ch;
-}
-#bm-window-filter .bm-filter-color > .bm-flex-between {
- flex-direction: column;
- align-items: flex-start;
- gap: 0;
-}
-#bm-window-filter .bm-filter-color small {
- font-size: 0.75em;
-}
-#bm-window-filter .bm-filter-color.bm-color-hide {
- display: none;
-}
-#bm-window-filter.bm-windowed #bm-filter-flex {
- flex-direction: column;
- gap: 0.25em;
-}
-#bm-window-filter.bm-windowed .bm-filter-color {
- width: auto;
- margin: 0;
- padding: 0;
-}
-#bm-window-filter.bm-windowed .bm-filter-container-rgb {
- display: flex;
- width: 100%;
- gap: 0.5ch;
- align-items: center;
- padding: 0.1em 0.5ch;
- border: none;
- border-radius: 1em;
-}
-#bm-window-filter.bm-windowed .bm-filter-container-rgb button {
- padding: 0.5em 0.25ch;
-}
-#bm-window-filter.bm-windowed .bm-filter-container-rgb svg {
- width: 3ch;
-}
-#bm-window-filter.bm-windowed .bm-filter-color h2 {
- font-size: 0.75em;
-}
-#bm-window-filter #bm-filter-windowed-color-totals {
- font-size: 1em;
-}
-
-/* src/WindowSettings.css */
-#bm-window-settings div:has(> .bm-highlight-preset-container) {
- width: fit-content;
- justify-content: flex-start;
-}
-#bm-window-settings .bm-highlight-preset-container {
- display: flex;
- flex-direction: column;
- width: 13%;
-}
-#bm-window-settings .bm-highlight-preset-container span {
- width: fit-content;
- margin: auto;
- font-size: 0.7em;
-}
-#bm-window-settings .bm-highlight-preset-container button {
- width: fit-content;
- padding: 0;
- border-radius: 0;
-}
-#bm-window-settings .bm-highlight-preset-container svg {
- stroke: #333;
- stroke-width: 0.02px;
- width: 100%;
- min-width: 1.5ch;
- max-width: 14.5ch;
-}
-#bm-window-settings .bm-highlight-preset-container button:hover svg,
-#bm-window-settings .bm-highlight-preset-container button:focus svg {
- opacity: 0.9;
-}
-#bm-window-settings .bm-highlight-grid {
- display: grid;
- grid-template-columns: 1fr 1fr 1fr;
- width: 25%;
- min-width: 3ch;
- max-width: 15ch;
-}
-#bm-window-settings .bm-highlight-grid > button {
- width: 100%;
- padding: 0;
- aspect-ratio: 1 / 1;
- background-color: white;
- border: #333 1px solid;
- border-radius: 0;
- box-sizing: border-box;
-}
-#bm-window-settings .bm-highlight-grid > button[data-status=Incorrect] {
- background-color: brown;
-}
-#bm-window-settings .bm-highlight-grid > button[data-status=Template] {
- background-color: darkslategray;
-}
-#bm-window-settings .bm-highlight-grid > button:hover,
-#bm-window-settings .bm-highlight-grid > button:focus {
- opacity: 0.8;
-}
-
-/* src/WindowWizard.css */
-#bm-wizard-tlist {
- display: flex;
- flex-direction: column;
- justify-content: flex-start;
- align-items: flex-start;
-}
-#bm-wizard-tlist > .bm-container {
- width: 100%;
- justify-content: flex-start;
- background-color: rgba(21, 48, 99, 0.9);
- border-radius: 1em;
- padding: 0.5em;
- transition: background-color 0.3s ease;
-}
-#bm-wizard-tlist > .bm-container:hover,
-#bm-wizard-tlist > .bm-container:focus-within {
- background-color: rgba(17, 40, 85, 0.9);
-}
-#bm-wizard-tlist .bm-wizard-template-container-image {
- height: 100%;
- font-size: xxx-large;
-}
-#bm-wizard-tlist .bm-wizard-template-container-flavor {
- flex-direction: column;
- align-items: flex-start;
- gap: 0;
-}
-
/* src/main.css */
diff --git a/dist/BlueMarble-For-GreasyFork.user.js b/dist/BlueMarble-For-GreasyFork.user.js
index 0589261..6eaa865 100644
--- a/dist/BlueMarble-For-GreasyFork.user.js
+++ b/dist/BlueMarble-For-GreasyFork.user.js
@@ -2,7 +2,7 @@
// @name Blue Marble
// @name:en Blue Marble
// @namespace https://github.com/SwingTheVine/
-// @version 0.91.116
+// @version 0.92.0
// @description A userscript to enhance the user experience on Wplace.live. This includes, but is not limited to: uploading images to display locally on a canvas, adding a button to move the Wplace color palette menu, and other QoL features.
// @description:en A userscript to enhance the user experience on Wplace.live. This includes, but is not limited to: uploading images to display locally on a canvas, adding a button to move the Wplace color palette menu, and other QoL features.
// @author SwingTheVine
diff --git a/dist/BlueMarble-Standalone.user.js b/dist/BlueMarble-Standalone.user.js
index 94c4e97..8401e77 100644
--- a/dist/BlueMarble-Standalone.user.js
+++ b/dist/BlueMarble-Standalone.user.js
@@ -2,7 +2,7 @@
// @name Blue Marble
// @name:en Blue Marble
// @namespace https://github.com/SwingTheVine/
-// @version 0.91.116
+// @version 0.92.0
// @description A userscript to enhance the user experience on Wplace.live. This includes, but is not limited to: uploading images to display locally on a canvas, adding a button to move the Wplace color palette menu, and other QoL features.
// @description:en A userscript to enhance the user experience on Wplace.live. This includes, but is not limited to: uploading images to display locally on a canvas, adding a button to move the Wplace color palette menu, and other QoL features.
// @author SwingTheVine
@@ -38,4 +38,4 @@
The "Blue Marble" image is owned by NASA.
*/
-(()=>{var t=t=>{throw TypeError(t)},e=(e,i,n)=>i.has(e)?t("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(e):i.set(e,n),i=(e,i,n)=>(((e,i)=>{i.has(e)||t("Cannot access private method")})(e,i),n);function n(t){return new Promise(e=>setTimeout(e,t))}function s(t){return(new Intl.NumberFormat).format(t)}function o(t){return new Intl.NumberFormat(void 0,{style:"percent",t:2,i:2}).format(t)}function a(t){return t.toLocaleString(void 0,{o:"long",l:"numeric",h:"2-digit",m:"2-digit",u:"2-digit"})}function r(t){const e=document.createElement("div");return e.textContent=t,e.innerHTML}function l(...t){(0,console.log)(...t)}function c(...t){(0,console.error)(...t)}function h(...t){(0,console.warn)(...t)}function m(t,e){if(0===t)return e[0];let i="";const n=e.length;for(;t>0;)i=e[t%n]+i,t=Math.floor(t/n);return i}function d(t,e){let i=0;const n=e.length;for(const s of t){const t=e.indexOf(s);-1==t&&c(`Invalid character '${s}' encountered whilst decoding! Is the decode alphabet/base incorrect?`),i=i*n+t}return i}function u(t){let e="";for(let i=0;i(t/=255)<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4));return.2126*e[0]+.7152*e[1]+.0722*e[2]}function f(t,e,i){return Array.isArray(t)&&([t,e,i]=t),(1<<24|t<<16|e<<8|i).toString(16).slice(1)}var g,w,x,y,$,v=[{id:0,premium:!1,name:"Transparent",rgb:[0,0,0]},{id:1,premium:!1,name:"Black",rgb:[0,0,0]},{id:2,premium:!1,name:"Dark Gray",rgb:[60,60,60]},{id:3,premium:!1,name:"Gray",rgb:[120,120,120]},{id:4,premium:!1,name:"Light Gray",rgb:[210,210,210]},{id:5,premium:!1,name:"White",rgb:[255,255,255]},{id:6,premium:!1,name:"Deep Red",rgb:[96,0,24]},{id:7,premium:!1,name:"Red",rgb:[237,28,36]},{id:8,premium:!1,name:"Orange",rgb:[255,127,39]},{id:9,premium:!1,name:"Gold",rgb:[246,170,9]},{id:10,premium:!1,name:"Yellow",rgb:[249,221,59]},{id:11,premium:!1,name:"Light Yellow",rgb:[255,250,188]},{id:12,premium:!1,name:"Dark Green",rgb:[14,185,104]},{id:13,premium:!1,name:"Green",rgb:[19,230,123]},{id:14,premium:!1,name:"Light Green",rgb:[135,255,94]},{id:15,premium:!1,name:"Dark Teal",rgb:[12,129,110]},{id:16,premium:!1,name:"Teal",rgb:[16,174,166]},{id:17,premium:!1,name:"Light Teal",rgb:[19,225,190]},{id:18,premium:!1,name:"Dark Blue",rgb:[40,80,158]},{id:19,premium:!1,name:"Blue",rgb:[64,147,228]},{id:20,premium:!1,name:"Cyan",rgb:[96,247,242]},{id:21,premium:!1,name:"Indigo",rgb:[107,80,246]},{id:22,premium:!1,name:"Light Indigo",rgb:[153,177,251]},{id:23,premium:!1,name:"Dark Purple",rgb:[120,12,153]},{id:24,premium:!1,name:"Purple",rgb:[170,56,185]},{id:25,premium:!1,name:"Light Purple",rgb:[224,159,249]},{id:26,premium:!1,name:"Dark Pink",rgb:[203,0,122]},{id:27,premium:!1,name:"Pink",rgb:[236,31,128]},{id:28,premium:!1,name:"Light Pink",rgb:[243,141,169]},{id:29,premium:!1,name:"Dark Brown",rgb:[104,70,52]},{id:30,premium:!1,name:"Brown",rgb:[149,104,42]},{id:31,premium:!1,name:"Beige",rgb:[248,178,119]},{id:32,premium:!0,name:"Medium Gray",rgb:[170,170,170]},{id:33,premium:!0,name:"Dark Red",rgb:[165,14,30]},{id:34,premium:!0,name:"Light Red",rgb:[250,128,114]},{id:35,premium:!0,name:"Dark Orange",rgb:[228,92,26]},{id:36,premium:!0,name:"Light Tan",rgb:[214,181,148]},{id:37,premium:!0,name:"Dark Goldenrod",rgb:[156,132,49]},{id:38,premium:!0,name:"Goldenrod",rgb:[197,173,49]},{id:39,premium:!0,name:"Light Goldenrod",rgb:[232,212,95]},{id:40,premium:!0,name:"Dark Olive",rgb:[74,107,58]},{id:41,premium:!0,name:"Olive",rgb:[90,148,74]},{id:42,premium:!0,name:"Light Olive",rgb:[132,197,115]},{id:43,premium:!0,name:"Dark Cyan",rgb:[15,121,159]},{id:44,premium:!0,name:"Light Cyan",rgb:[187,250,242]},{id:45,premium:!0,name:"Light Blue",rgb:[125,199,255]},{id:46,premium:!0,name:"Dark Indigo",rgb:[77,49,184]},{id:47,premium:!0,name:"Dark Slate Blue",rgb:[74,66,132]},{id:48,premium:!0,name:"Slate Blue",rgb:[122,113,196]},{id:49,premium:!0,name:"Light Slate Blue",rgb:[181,174,241]},{id:50,premium:!0,name:"Light Brown",rgb:[219,164,99]},{id:51,premium:!0,name:"Dark Beige",rgb:[209,128,81]},{id:52,premium:!0,name:"Light Beige",rgb:[255,197,165]},{id:53,premium:!0,name:"Dark Peach",rgb:[155,82,73]},{id:54,premium:!0,name:"Peach",rgb:[209,128,120]},{id:55,premium:!0,name:"Light Peach",rgb:[250,182,164]},{id:56,premium:!0,name:"Dark Tan",rgb:[123,99,82]},{id:57,premium:!0,name:"Tan",rgb:[156,132,107]},{id:58,premium:!0,name:"Dark Slate",rgb:[51,57,65]},{id:59,premium:!0,name:"Slate",rgb:[109,117,141]},{id:60,premium:!0,name:"Light Slate",rgb:[179,185,209]},{id:61,premium:!0,name:"Dark Stone",rgb:[109,100,63]},{id:62,premium:!0,name:"Stone",rgb:[148,140,107]},{id:63,premium:!0,name:"Light Stone",rgb:[205,197,158]}],M=class{constructor(t,i){e(this,g),this.name=t,this.version=i,this.p=null,this.$=null,this.v="bm-l",this.M=null,this.C=null,this.T=[]}S(t){this.p=t}k(t){this.$=t}D(){return this.T.length>0&&(this.C=this.T.pop()),this}L(t){t?.appendChild(this.M),this.M=null,this.C=null,this.T=[]}H(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"div",{},t)),this}O(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"p",{},t)),this}N(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"small",{},t)),this}B(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"span",{},t)),this}I(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"details",{},t)),this}P(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"summary",{},t)),this}A(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"img",{},t)),this}W(t,e={},n=()=>{}){return n(this,i(this,g,w).call(this,"h"+t,{},e)),this}F(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"hr",{},t)),this}V(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"br",{},t)),this}_(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"form",{},t)),this}U(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"fieldset",{},t)),this}G(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"legend",{},t)),this}R(t={},e=()=>{}){const n={};t.textContent?(n.textContent=t.textContent,delete t.textContent):t.innerHTML&&(n.innerHTML=t.innerHTML,delete t.textContent);const s=i(this,g,w).call(this,"label",n),o=i(this,g,w).call(this,"input",{type:"checkbox"},t);return s.insertBefore(o,s.firstChild),this.D(),e(this,s,o),this}j(t={},e=()=>{}){const n=i(this,g,w).call(this,"label",{textContent:t.textContent??"",for:t.id??""});return delete t.textContent,this.D(),e(this,n,i(this,g,w).call(this,"select",{},t)),this}Y(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"option",{},t)),this}J(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"ol",{},t)),this}X(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"ul",{},t)),this}q(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"menu",{},t)),this}Z(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"li",{},t)),this}K(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"table",{},t)),this}tt(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"caption",{},t)),this}et(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"thead",{},t)),this}it(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"tbody",{},t)),this}nt(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"tfoot",{},t)),this}st(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"tr",{},t)),this}ot(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"th",{},t)),this}rt(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"td",{},t)),this}lt(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"button",{},t)),this}ct(t={},e=()=>{}){const n=t.title??t.textContent??"Help: No info";delete t.textContent,t.title=`Help: ${n}`;const s={textContent:"?",className:"bm-R",onclick:()=>{this.ht(this.v,n)}};return e(this,i(this,g,w).call(this,"button",s,t)),this}dt(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"input",{},t)),this}ut(t={},e=()=>{}){const n=t.textContent??"";delete t.textContent;const s=i(this,g,w).call(this,"div"),o=i(this,g,w).call(this,"input",{type:"file",tabindex:"-1","aria-hidden":"true"},t);this.D();const a=i(this,g,w).call(this,"button",{textContent:n});return this.D(),this.D(),a.addEventListener("click",()=>{o.click()}),o.addEventListener("change",()=>{a.style.maxWidth=`${a.offsetWidth}px`,o.files.length>0?a.textContent=o.files[0].name:a.textContent=n}),e(this,s,o,a),this}bt(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"textarea",{},t)),this}ft(t={},e=()=>{}){return e(this,i(this,g,w).call(this,"div",{class:"bm-L"},t)),this}gt(t=Date.now(),e=500,n={},s=()=>{}){const o="bm-P",a=n?.id||o+"-"+crypto.randomUUID().slice(0,8),r={class:o},l=i(this,g,w).call(this,"time",r,n);return l.id=a,l.dataset.endDate=t,setInterval(()=>{if(!l.isConnected)return;const t=Math.max(l.dataset.endDate-Date.now(),0),e=Math.floor(t/1e3),i=Math.floor(e/3600),n=Math.floor(e%60),s=Math.floor(e%3600/60);l.setAttribute("datetime",`PT${i}H${s}M${n}S`),l.textContent=String(i).padStart(2,"0")+":"+String(s).padStart(2,"0")+":"+String(n).padStart(2,"0")},e),s(this,l),this}ht(t,e,i=!1){const n=document.getElementById(t.replace(/^#/,""));n&&(n instanceof HTMLInputElement?n.value=e:i?n.textContent=e:n.innerHTML=e)}wt(t){if(t.disabled)return;t.disabled=!0,t.style.textDecoration="none";const e=t.closest(".bm-N"),i=t.closest(".bm-L"),n=e.querySelector("h1"),s=e.querySelector(".bm-h");if(e.parentElement.append(e),"expanded"==t.dataset.buttonStatus){s.style.height=s.scrollHeight+"px",e.style.width=e.scrollWidth+"px",s.style.height="0",s.addEventListener("transitionend",function e(){s.style.display="none",t.disabled=!1,t.style.textDecoration="",s.removeEventListener("transitionend",e)});const i=n.cloneNode(!0),o=i.textContent;t.nextElementSibling.appendChild(i),t.textContent="▶",t.dataset.buttonStatus="collapsed",t.ariaLabel=`Unminimize window "${o}"`}else{const n=i.querySelector("h1"),o=n.textContent;n.remove(),s.style.display="",s.style.height="0",e.style.width="",s.style.height=s.scrollHeight+"px",s.addEventListener("transitionend",function e(){s.style.height="",t.disabled=!1,t.style.textDecoration="",s.removeEventListener("transitionend",e)}),t.textContent="▼",t.dataset.buttonStatus="expanded",t.ariaLabel=`Minimize window "${o}"`}}xt(t,e){const i=document.querySelector(t),n=document.querySelector(e);if(!i||!n)return void this.yt(`Can not drag! ${i?"":"moveMe"} ${i||n?"":"and "}${n?"":"iMoveThings "}was not found!`);let s,o=!1,a=0,r=null,l=0,c=0,h=0,m=0,d=null;const u=()=>{if(o){const t=Math.abs(l-h),e=Math.abs(c-m);(t>.5||e>.5)&&(l=h,c=m,i.style.transform=`translate(${l}px, ${c}px)`,i.style.left="0px",i.style.top="0px",i.style.right=""),r=requestAnimationFrame(u)}},b=(t,e)=>{o=!0,d=i.getBoundingClientRect(),s=t-d.left,a=e-d.top;const b=window.getComputedStyle(i).transform;if(b&&"none"!==b){const t=new DOMMatrix(b);l=t.m41,c=t.m42}else l=d.left,c=d.top;h=l,m=c,document.body.style.userSelect="none",n.classList.add("bm-F"),document.addEventListener("mousemove",f),document.addEventListener("touchmove",g,{passive:!1}),document.addEventListener("mouseup",p),document.addEventListener("touchend",p),document.addEventListener("touchcancel",p),r&&cancelAnimationFrame(r),u()},p=()=>{o=!1,r&&(cancelAnimationFrame(r),r=null),document.body.style.userSelect="",n.classList.remove("bm-F"),document.removeEventListener("mousemove",f),document.removeEventListener("touchmove",g),document.removeEventListener("mouseup",p),document.removeEventListener("touchend",p),document.removeEventListener("touchcancel",p)},f=t=>{o&&d&&(h=t.clientX-s,m=t.clientY-a)},g=t=>{if(o&&d){const e=t.touches[0];if(!e)return;h=e.clientX-s,m=e.clientY-a,t.preventDefault()}};n.addEventListener("mousedown",function(t){t.preventDefault(),b(t.clientX,t.clientY)}),n.addEventListener("touchstart",function(t){const e=t?.touches?.[0];e&&(b(e.clientX,e.clientY),t.preventDefault())},{passive:!1})}$t(t){(0,console.info)(`${this.name}: ${t}`),this.ht(this.v,"Status: "+t,!0)}yt(t){(0,console.error)(`${this.name}: ${t}`),this.ht(this.v,"Error: "+t,!0)}};g=new WeakSet,w=function(t,e={},n={}){const s=document.createElement(t);this.M?(this.C?.appendChild(s),this.T.push(this.C),this.C=s):(this.M=s,this.C=s);for(const[t,n]of Object.entries(e))i(this,g,x).call(this,s,t,n);for(const[t,e]of Object.entries(n))i(this,g,x).call(this,s,t,e);return s},x=function(t,e,i){"class"==e?t.classList.add(...i.split(/\s+/)):"for"==e?t.htmlFor=i:"tabindex"==e?t.tabIndex=Number(i):"readonly"==e?t.readOnly="true"==i||"1"==i:"maxlength"==e?t.maxLength=Number(i):e.startsWith("data")?t.dataset[e.slice(5).split("-").map((t,e)=>0==e?t:t[0].toUpperCase()+t.slice(1)).join("")]=i:e.startsWith("aria")?t.setAttribute(e,i):t[e]=i};var C,T,S,k,D,L=class extends M{constructor(t,i){super(t,i),e(this,y),this.window=null,this.vt="bm-N-settings",this.Mt=document.body}Ct(){document.querySelector(`#${this.vt}`)?document.querySelector(`#${this.vt}`).remove():(this.window=this.H({id:this.vt,class:"bm-N"}).ft().lt({class:"bm-n",textContent:"▼","aria-label":'Minimize window "Color Filter"',"data-button-status":"expanded"},(t,e)=>{e.onclick=()=>t.wt(e),e.ontouchend=()=>{e.click()}}).D().H().D().H({class:"bm-x"}).lt({class:"bm-n",textContent:"✖","aria-label":'Close window "Color Filter"'},(t,e)=>{e.onclick=()=>{document.querySelector(`#${this.vt}`)?.remove()},e.ontouchend=()=>{e.click()}}).D().D().D().H({class:"bm-h"}).H({class:"bm-E bm-d"}).W(1,{textContent:"Settings"}).D().D().F().D().O({textContent:"Settings take 5 seconds to save."}).D().H({class:"bm-E bm-A"},(t,e)=>{this.Tt(),this.St()}).D().D().D().L(this.Mt),this.xt(`#${this.vt}.bm-N`,`#${this.vt} .bm-L`))}Tt(){i(this,y,$).call(this,"Pixel Highlight")}St(){i(this,y,$).call(this,"Template")}};y=new WeakSet,$=function(t){this.window=this.H({class:"bm-E"}).W(2,{textContent:t}).D().F().D().O({innerHTML:`An error occured loading the ${t} category. SettingsManager failed to override the ${t} function inside WindowSettings.`}).D().D()},C=new WeakSet,T=function(t,e){t.disabled=!0;const i=t.dataset.status,n=this.kt?.highlight??[[1,0,1],[2,0,0],[1,-1,0],[1,1,0],[1,0,-1]];let s=[2,0,0];const o=n;switch(i){case"Disabled":t.dataset.status="Incorrect",t.ariaLabel="Sub-pixel incorrect",s=[1,...e];break;case"Incorrect":t.dataset.status="Template",t.ariaLabel="Sub-pixel template",s=[2,...e];break;case"Template":t.dataset.status="Disabled",t.ariaLabel="Sub-pixel disabled",s=[0,...e];break}const a=n.findIndex(([,t,e])=>t==s[1]&&e==s[2]);0!=s[0]?-1!=a?o[a]=s:o.push(s):-1!=a&&o.splice(a,1),this.kt.highlight=o,t.disabled=!1},S=async function(t){const e=document.querySelectorAll(".bm-Y button");for(const t of e)t.disabled=!0;let i=[0,0,0,0,2,0,0,0,0];switch(t){case"Cross":i=[0,1,0,1,2,1,0,1,0];break;case"X":i=[1,0,1,0,2,0,1,0,1];break;case"Full":i=[2,2,2,2,2,2,2,2,2];break}const s=document.querySelector(".bm-1g")?.childNodes??[];for(let t=0;t{const[n,s,o,a]=e.split(",").map(Number);(s>>24==0?0:s.get(e)??-2;const a=o.get(n);o.set(n,a?a+1:1)}return console.log(o),o};var O=class{constructor(){this.Et=Math.ceil(80/1300*window.innerWidth),this.Yt=v.slice(1)}Jt(t){const e=document.createElement("div");for(let t=0;t{t.parentNode.childElementCount<=1?t.parentNode.remove():t.remove()},e.appendChild(t)}t.appendChild(e)}},N=class extends HTMLElement{};customElements.define("confetti-piece",N);var B,I,P,A,W,F,V,z,_,U=class extends M{constructor(t,e){super(t,e),this.window=null,this.vt="bm-i",this.Mt=document.body}Ct(){document.querySelector(`#${this.vt}`)?document.querySelector(`#${this.vt}`).remove():(this.window=this.H({id:this.vt,class:"bm-N"},(t,e)=>{}).ft().lt({class:"bm-n",textContent:"▼","aria-label":'Minimize window "Credits"',"data-button-status":"expanded"},(t,e)=>{e.onclick=()=>t.wt(e),e.ontouchend=()=>{e.click()}}).D().H().D().lt({class:"bm-n",textContent:"✖","aria-label":'Close window "Credits"'},(t,e)=>{e.onclick=()=>{document.querySelector(`#${this.vt}`)?.remove()},e.ontouchend=()=>{e.click()}}).D().D().H({class:"bm-h"}).H({class:"bm-E bm-d"}).W(1,{textContent:"Credits"}).D().D().F().D().H({class:"bm-E bm-A"}).B({role:"img","aria-label":this.name}).B({innerHTML:"\n██████╗ ██╗ ██╗ ██╗███████╗\n██╔══██╗██║ ██║ ██║██╔════╝\n██████╔╝██║ ██║ ██║█████╗ \n██╔══██╗██║ ██║ ██║██╔══╝ \n██████╔╝███████╗╚██████╔╝███████╗\n╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝\n\n███╗ ███╗ █████╗ ██████╗ ██████╗ ██╗ ███████╗\n████╗ ████║██╔══██╗██╔══██╗██╔══██╗██║ ██╔════╝\n██╔████╔██║███████║██████╔╝██████╔╝██║ █████╗ \n██║╚██╔╝██║██╔══██║██╔══██╗██╔══██╗██║ ██╔══╝ \n██║ ╚═╝ ██║██║ ██║██║ ██║██████╔╝███████╗███████╗\n╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚══════╝╚══════╝\n",class:"bm-Q","aria-hidden":"true"}).D().D().V().D().F().D().V().D().B({textContent:'"Blue Marble" userscript is made by SwingTheVine.'}).D().V().D().B({innerHTML:'The Blue Marble Website is made by crqch.'}).D().V().D().B({textContent:`The Blue Marble Website used until ${a(new Date(175606932e4))} was made by Camille Daguin.`}).D().V().D().B({textContent:'The favicon "Blue Marble" is owned by NASA. (The image of the Earth is owned by NASA)'}).D().V().D().B({textContent:"Special Thanks:"}).D().X().Z({textContent:"Espresso, Meqa, and Robot for moderating SwingTheVine's community."}).D().Z({innerHTML:'nof, darkness for creating similar userscripts!'}).D().Z({innerHTML:'Wonda for the Blue Marble banner image!'}).D().Z({innerHTML:'BullStein, allanf181 for being early beta testers!'}).D().Z({innerHTML:'guidu_ and Nick-machado for the original "Minimize" Button code!'}).D().Z({innerHTML:'Nomad and Gustav for the tutorials!'}).D().Z({innerHTML:'cfp for creating the template overlay that Blue Marble was based on!'}).D().Z({innerHTML:'Force Network for hosting the telemetry server!'}).D().Z({innerHTML:'TheBlueCorner for getting me interested in online pixel canvases!'}).D().D().V().D().B({innerHTML:'Donators:'}).D().X().Z({textContent:"Soultree"}).D().Z({textContent:"Espresso"}).D().Z({textContent:"BEST FAN"}).D().Z({textContent:"FuchsDresden"}).D().Z({textContent:"Jack"}).D().Z({textContent:"raiken_au"}).D().Z({textContent:"Jacob"}).D().Z({textContent:"StupidOne"}).D().Z({textContent:"2 Anonymous Supporters"}).D().D().D().D().D().L(this.Mt),this.xt(`#${this.vt}.bm-N`,`#${this.vt} .bm-L`))}},G=class extends M{constructor(t){super(t.name,t.version),e(this,B),this.window=null,this.vt="bm-p",this.Xt="bm-y",this.Mt=document.body,this.qt=t.p?.qt,this.Zt='',this.Qt='';const{palette:i,jt:n}=this.qt.Kt;this.palette=i,this.te=0,this.ee=0,this.ie=new Map,this.ne=new Map,this.se=0,this.oe=0,this.timeRemaining=0,this.ae="",this.sortPrimary="id",this.sortSecondary="ascending",this.showUnused=!1}Ct(){if(document.querySelector(`#${this.vt}`))return void document.querySelector(`#${this.vt}`).remove();this.window=this.H({id:this.vt,class:"bm-N"},(t,e)=>{}).ft().lt({class:"bm-n",textContent:"▼","aria-label":'Minimize window "Color Filter"',"data-button-status":"expanded"},(t,e)=>{e.onclick=()=>t.wt(e),e.ontouchend=()=>{e.click()}}).D().H().D().H({class:"bm-x"}).lt({class:"bm-n",textContent:"🗗","aria-label":'Switch to windowed mode for "Color Filter"'},(t,e)=>{e.onclick=()=>{document.querySelector(`#${this.vt}`)?.remove(),this.re()},e.ontouchend=()=>{e.click()}}).D().lt({class:"bm-n",textContent:"✖","aria-label":'Close window "Color Filter"'},(t,e)=>{e.onclick=()=>{document.querySelector(`#${this.vt}`)?.remove()},e.ontouchend=()=>{e.click()}}).D().D().D().H({class:"bm-h"}).H({class:"bm-E bm-d"}).W(1,{textContent:"Color Filter"}).D().D().F().D().H({class:"bm-E bm-s bm-d",style:"gap: 1.5ch;"}).lt({textContent:"Hide All Colors"},(t,e)=>{e.onclick=()=>i(this,B,A).call(this,!1)}).D().lt({textContent:"Refresh Data"},(t,e)=>{e.onclick=()=>{e.disabled=!0,this.le(),e.disabled=!1}}).D().lt({textContent:"Show All Colors"},(t,e)=>{e.onclick=()=>i(this,B,A).call(this,!0)}).D().D().H({class:"bm-E bm-A"}).H({class:"bm-E",style:"margin-left: 2.5ch; margin-right: 2.5ch;"}).H({class:"bm-E"}).B({id:"bm-e",innerHTML:"Tiles Loaded: 0 / ???"}).D().V().D().B({id:"bm-9",innerHTML:"Correct Pixels: ???"}).D().V().D().B({id:"bm-f",innerHTML:"Total Pixels: ???"}).D().V().D().B({id:"bm-4",innerHTML:"Complete: ??? (???)"}).D().V().D().B({id:"bm-5",innerHTML:"??? ???"}).D().D().H({class:"bm-E"}).O({innerHTML:`Press the 🗗 button to make this window smaller. Colors with the icon ${this.Zt.replace("