NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Chat Customization // @namespace torn.com // @version 0.8.4 // @author Ahab [1735214] // @updateURL https://openuserjs.org/meta/Ahab/Chat_Customization.meta.js // @downloadURL https://openuserjs.org/install/Ahab/Chat_Customization.user.js // @require https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js // @require https://raw.githubusercontent.com/seballot/spectrum/59bfa41e0dac01d5db8fa1dd63322e9f72561c5e/src/spectrum.js // @require https://raw.githubusercontent.com/wipeautcrafter/jsfontpicker/refs/heads/main/dist/fontpicker.iife.min.js // @include *torn.com* // @grant GM_addStyle // @license MIT // ==/UserScript== const sharedStyles = ` [class*="root"][class*="online"]{ background-image: linear-gradient(#c0ff00,#c0ff00)!important; } [class*="root"][class*="idle___"]{ background-image: linear-gradient(#ff8000,#ff8000)!important; } #optionsLabel{ text-align: center; } .optionsRow{ display: flex; justify-content: space-evenly; } .optionsRowB{ display: flex; justify-items: center; flex-direction: row; justify-content: flex-start; align-items: center; } .optionsRowC{ display: flex; justify-content: center; align-items: center; } #myRange{ appearance: none; border-radius: 8px; height: 4px; width: 68%; --chat-range-range-color: var(--chat-theme-dark, #000) var(--chat-theme-light, #e5e5e5); --chat-range-progress-color-default: var(--chat-theme-dark, #00698c) var(--chat-theme-light, rgba(0, 102, 153, .4)); --chat-range-progress-color-hover: var(--chat-theme-dark, #6edbff) var(--chat-theme-light, rgba(0, 102, 153, .8)); } #myRange::-webkit-slider-thumb{ -webkit-appearance: none; background-color: var(--chat-color-surface); border-color: #6edbff #8cb5c9; border-color: var(--chat-theme-dark,#6edbff) var(--chat-theme-light,#8cb5c9); border-radius: 50%; border-style: solid; border-width: 2px; cursor: pointer; height: 14px; width: 14px } #myRange:hover{ background: linear-gradient(to right, var(--chat-range-progress-color-hover) 100.00%, var(--chat-range-range-color) 100.00%, var(--chat-range-range-color) 100%); } .chatOptions { display: flex; flex-direction: column; flex-wrap: wrap; padding-bottom: 5px; } .chatInput{ width: fit-content; align-self: center; margin-bottom: 5px; -webkit-appearance: none; appearance: none; background: var(--input-background-color); color: var(--input-color); border-radius: 5px; border: 1px solid; border-color: var(--input-border-color); text-align: center; } .chatInput::-webkit-outer-spin-button, .chatInput::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } .chatInput:hover { border-color: var(--input-hover-border-color); } .fontCheckbox { margin: 2px 2px 3px 14px; align-items: center; appearance: none; border: 2px solid; border-image-slice: 1; border-image-source: linear-gradient(180deg,#ccc,#999) linear-gradient(0deg,#ccc,#aaa); border-image-source: var(--chat-theme-dark, linear-gradient(180deg, #ccc 0, #999 100%)) var(--chat-theme-light, linear-gradient(0deg, #ccc 0, #aaa 100%)); box-shadow: 0 0 2px 0 rgba(0, 0, 0, .651); box-shadow: var(--chat-theme-dark, 0 0 2px rgba(0, 0, 0, .651)) var(--chat-theme-light, 0); display: flex; font: inherit; height: 13px; justify-content: center; width: 13px; } .fontCheckbox:hover { border-image-source: linear-gradient(0deg,#fff,#ccc) linear-gradient(0deg,#999,#666); border-image-source: var(--chat-theme-dark, linear-gradient(0deg, #fff 0, #ccc 100%)) var(--chat-theme-light, linear-gradient(0deg, #999 0, #666 100%)); } .fontCheckbox:before { background: linear-gradient(180deg,#ccc,#999) linear-gradient(0deg,#ccc,#aaa); background: var(--chat-theme-dark, linear-gradient(180deg, #ccc 0, #999 100%)) var(--chat-theme-light, linear-gradient(0deg, #ccc 0, #aaa 100%)); content: ""; height: 5px; opacity: 0; transition: opacity .12s ease-in-out; width: 5px; } .fontCheckbox:checked:before { opacity: 1; } .optionText{ font-weight: 700; line-height: 14px; color: var(--chat-theme-dark, #ddd) var(--chat-theme-light, #444); width: 36%; margin-right: 2px; } .h7{ font-size: 1rem; padding-top: 5px; } .sp-container{ background-color: var(--chat-color-background)!important; } .sp-input:hover{ border-color: var(--input-hover-border-color); } .sp-container{position:absolute;top:0;left:0;display:inline-block;*display:inline;*zoom:1;z-index:9999994;overflow:hidden}.sp-container.sp-flat{position:relative}.sp-container,.sp-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.sp-top{position:relative;width:100%;display:inline-block}.sp-top-inner{position:absolute;top:0;left:0;bottom:0;right:0}.sp-color{position:absolute;top:0;left:0;bottom:0;right:20%}.sp-hue{position:absolute;top:0;right:0;bottom:0;left:84%;height:100%}.sp-clear-enabled .sp-hue{top:33px;height:77.5%}.sp-fill{padding-top:80%}.sp-sat,.sp-val{position:absolute;top:0;left:0;right:0;bottom:0}.sp-alpha-enabled .sp-top{margin-bottom:18px}.sp-alpha-enabled .sp-alpha{display:block}.sp-alpha-handle{position:absolute;top:-4px;bottom:-4px;width:6px;left:50%;cursor:pointer;border:1px solid black;background:white;opacity:.8}.sp-alpha{display:none;position:absolute;bottom:-14px;right:0;left:0;height:8px}.sp-alpha-inner{border:solid 1px #333}.sp-clear{display:none}.sp-clear.sp-clear-display{background-position:center}.sp-clear-enabled .sp-clear{display:block;position:absolute;top:0;right:0;bottom:0;left:84%;height:28px}.sp-container,.sp-replacer,.sp-preview,.sp-dragger,.sp-slider,.sp-alpha,.sp-clear,.sp-alpha-handle,.sp-container.sp-dragging .sp-input,.sp-container button{-webkit-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;user-select:none}.sp-container.sp-input-disabled .sp-input-container{display:none}.sp-container.sp-buttons-disabled .sp-button-container{display:none}.sp-container.sp-palette-buttons-disabled .sp-palette-button-container{display:none}.sp-palette-only .sp-picker-container{display:none}.sp-palette-disabled .sp-palette-container{display:none}.sp-initial-disabled .sp-initial{display:none}.sp-sat{background-image:-webkit-gradient(linear,0 0,100% 0,from(#FFF),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(left,#FFF,rgba(204,154,129,0));background-image:-moz-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-o-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-ms-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:linear-gradient(to right,#fff,rgba(204,154,129,0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";filter:progid:DXImageTransform.Microsoft.gradient(GradientType = 1,startColorstr='#FFFFFFFF',endColorstr='#00CC9A81')}.sp-val{background-image:-webkit-gradient(linear,0 100%,0 0,from(#000),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-moz-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-o-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-ms-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:linear-gradient(to top,#000,rgba(204,154,129,0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81',endColorstr='#FF000000')}.sp-hue{background:-moz-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:-ms-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:-o-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:-webkit-gradient(linear,left top,left bottom,from(#f00),color-stop(0.17,#ff0),color-stop(0.33,#0f0),color-stop(0.5,#0ff),color-stop(0.67,#00f),color-stop(0.83,#f0f),to(#f00));background:-webkit-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:linear-gradient(to bottom,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%)}.sp-1{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000',endColorstr='#ffff00')}.sp-2{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00',endColorstr='#00ff00')}.sp-3{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00',endColorstr='#00ffff')}.sp-4{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff',endColorstr='#0000ff')}.sp-5{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff',endColorstr='#ff00ff')}.sp-6{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff',endColorstr='#ff0000')}.sp-hidden{display:none !important}.sp-cf:before,.sp-cf:after{content:"";display:table}.sp-cf:after{clear:both}.sp-cf{*zoom:1}@media(max-device-width:480px){.sp-color{right:40%}.sp-hue{left:63%}.sp-fill{padding-top:60%}}.sp-dragger{border-radius:5px;height:5px;width:5px;border:1px solid #fff;background:#000;cursor:pointer;position:absolute;top:0;left:0}.sp-slider{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:white;opacity:.8}.sp-container{border-radius:0;background-color:#ececec;border:solid 1px #000000;padding:0}.sp-container,.sp-container button,.sp-container input,.sp-color,.sp-hue,.sp-clear{font:normal 12px "Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.sp-top{margin-bottom:3px}.sp-color,.sp-hue,.sp-clear{border:solid 1px #666}.sp-input-container{float:right;width:100px;margin-bottom:4px}.sp-initial-disabled .sp-input-container{width:100%}.sp-input{font-size:12px !important;border:1px inset;padding:4px 5px;margin:0;width:100%;background:var(--input-background-color);border-radius:3px;color: var(--input-color);border-color: var(--input-border-color);}.sp-input:focus{border:1px solid orange}.sp-input.sp-validation-error{border:1px solid red;background:#fdd}.sp-picker-container,.sp-palette-container{float:left;position:relative;padding:10px;padding-bottom:300px;margin-bottom:-290px}.sp-picker-container{width:172px;}.sp-palette-container{border-right:solid 1px #ccc}.sp-palette-only .sp-palette-container{border:0}.sp-palette .sp-thumb-el{display:block;position:relative;float:left;width:24px;height:15px;margin:3px;cursor:pointer;border:solid 2px transparent}.sp-palette .sp-thumb-el:hover,.sp-palette .sp-thumb-el.sp-thumb-active{border-color:orange}.sp-thumb-el{position:relative}.sp-initial{float:left;border:solid 1px #333}.sp-initial span{width:30px;height:25px;border:0;display:block;float:left;margin:0;box-shadow: var(--chat-theme-dark, 0 0 2px #000) var(--chat-theme-light, 0);}.sp-initial .sp-clear-display{background-position:center}.sp-palette-button-container,.sp-button-container{float:right}.sp-replacer{margin-bottom:3px;overflow:hidden;cursor:pointer;padding:4px;display:inline-block;*zoom:1;*display:inline;border: var(--chat-theme-dark, 0) var(--chat-theme-light, 1px solid #ccc);background: var(--chat-theme-dark, linear-gradient(180deg, #555 0, #333 100%)) var(--chat-theme-light, linear-gradient(180deg, #fff 0, #ddd 100%));color:var(--chat-theme-dark, #ddd) var(--chat-theme-light, #666) !important;box-shadow: var(--chat-theme-dark, 0 0 2px #000) var(--chat-theme-light, 0);vertical-align:middle}.sp-replacer:hover,.sp-replacer.sp-active{background: var(--chat-theme-dark, linear-gradient(180deg, #666 0, #444 100%)) var(--chat-theme-light, #fff);color:#111}.sp-replacer.sp-disabled{cursor:default;border-color:silver;color:silver}.sp-dd{padding:2px 0;height:16px;line-height:16px;float:left;font-size:10px}.sp-preview{position:relative;width:25px;height:20px;border:solid 1px #222;margin-right:5px;float:left;z-index:0}.sp-palette{*width:220px;max-width:220px}.sp-palette .sp-thumb-el{width:16px;height:16px;margin:2px 1px;border:solid 1px #d0d0d0}.sp-container{padding-bottom:0}.sp-container button{background-color:#eee;background-image:-webkit-linear-gradient(top,#eee,#ccc);background-image:-moz-linear-gradient(top,#eee,#ccc);background-image:-ms-linear-gradient(top,#eee,#ccc);background-image:-o-linear-gradient(top,#eee,#ccc);background-image:linear-gradient(to bottom,#eee,#ccc);border:1px solid #ccc;border-bottom:1px solid #bbb;border-radius:3px;color:#333;font-size:14px;line-height:1;padding:5px 4px;text-align:center;text-shadow:0 1px 0 #eee;vertical-align:middle}.sp-container button:hover{background-color:#ddd;background-image:-webkit-linear-gradient(top,#ddd,#bbb);background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-ms-linear-gradient(top,#ddd,#bbb);background-image:-o-linear-gradient(top,#ddd,#bbb);background-image:linear-gradient(to bottom,#ddd,#bbb);border:1px solid #bbb;border-bottom:1px solid #999;cursor:pointer;text-shadow:0 1px 0 #ddd}.sp-container button:active{border:1px solid #aaa;border-bottom:1px solid #888;-webkit-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-moz-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-ms-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-o-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee}.sp-cancel{font-size:11px;color:#d93f3f !important;margin:0;padding:2px;margin-right:5px;vertical-align:middle;text-decoration:none}.sp-cancel:hover{color:#d93f3f !important;text-decoration:underline}.sp-palette span:hover,.sp-palette span.sp-thumb-active{border-color:#000}.sp-preview,.sp-alpha,.sp-thumb-el{position:relative;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.sp-preview-inner,.sp-alpha-inner,.sp-thumb-inner{display:block;position:absolute;top:0;left:0;bottom:0;right:0}.sp-palette .sp-thumb-inner{background-position:50% 50%;background-repeat:no-repeat}.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=)}.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=)}.sp-clear-display{background-repeat:no-repeat;background-position:center;background-image:url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==)} /* Theming */ [data-bs-theme='dark'], [data-fp-theme='dark'] { --fp-select-toggle-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") !important; --fp-body-bg: #212529 !important; --fp-body-color: #dee2e6 !important; --fp-body-bg-rgb: 33, 37, 41 !important; --fp-border-color: #495057 !important; --fp-border-color-rgb: 73, 80, 87 !important; --fp-border-color-translucent: rgba(255, 255, 255, 0.15) !important; --fp-tertiary-color: rgba(222, 226, 230, 0.5) !important; } :root, [data-bs-theme='light'], [data-fp-theme='light'] { --fp-select-toggle-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); --fp-body-bg: #fff; --fp-body-color: #212529; --fp-body-bg-rgb: 255, 255, 255; --fp-border-color: #dee2e6; --fp-border-color-rgb: 222, 226, 230; --fp-border-color-translucent: rgba(0, 0, 0, 0.175); --fp-tertiary-color: rgba(33, 37, 41, 0.5); } :root { --fp-dark: #212529; --fp-light: #fff; --fp-primary: #0d6efd; --fp-secondary: #ff8239; --fp-hover-color: #0b5ed7; --fp-ring-color: #86b7fe; --fp-ring-shadow: rgba(13, 110, 253, 0.25) 0 0 0 0.25rem; --fp-danger-rgb: 220, 53, 69; --fp-border-radius-sm: 0.25rem; --fp-border-radius: 0.375rem; --fp-border-radius-lg: 0.5rem; --fp-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); --fp-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); } /* Global */ .fpb__input, .fpb__input *, .fpb__input ::before, .fpb__input ::after, .fpb__modal, .fpb__modal *, .fpb__modal ::before, .fpb__modal ::after { box-sizing: border-box; } /* Default component styling */ .fpb__input, .fpb__modal { color: var(--fp-body-color); font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } /* Inputs */ .fpb__input { display: block; font-size: 1rem; font-weight: 400; line-height: 1.5; color: var(--chat-theme-dark, #fff) var(--chat-theme-light, #444); appearance: none; background: var(--input-background-color); padding: 0.375rem 0.75rem; border: 1px solid var(--input-border-color); border-radius: 5px; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } input:autofill { background-color: var(--input-background-color) !important; } input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus { -webkit-box-shadow: 0 0 0 30px var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)) inset !important; -webkit-text-fill-color: var(--input-color) !important; transition: background-color 5000s ease-in-out 0s; } .fpb__input:hover { border-color: var(--input-hover-border-color); } .fpb__input:focus { outline: 0; border-color: var(--fp-ring-color); box-shadow: var(--fp-ring-shadow); } .fpb__input:disabled { pointer-events: none; cursor: not-allowed; opacity: 0.75; } .fpb__dropdown { margin: unset; /* CSS reset */ padding: 0.375rem 0.775rem 0.375rem 0.75rem; background-image: var(--fp-select-toggle-img); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 16px 12px; margin: 0 auto; } .fpb__dropdown:hover{ background: var(--chat-theme-dark, linear-gradient(180deg, #666 0, #444 100%)) var(--chat-theme-light, #fff); } #fp__subsets{ background: var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)); border-color: var(--chat-theme-dark, #444) var(--chat-theme-light, #fff); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .149); cursor: pointer; } #fp__width{ background: var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)); border-color: var(--chat-theme-dark, #444) var(--chat-theme-light, #fff); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .149); cursor: pointer; } #fp__thickness{ background: var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)); border-color: var(--chat-theme-dark, #444) var(--chat-theme-light, #fff); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .149); cursor: pointer; } #fp__complexity{ background: var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)); border-color: var(--chat-theme-dark, #444) var(--chat-theme-light, #fff); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .149); cursor: pointer; } #fp__curvature{ background: var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)); border-color: var(--chat-theme-dark, #444) var(--chat-theme-light, #fff); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .149); cursor: pointer; } #fp__sort{ background: var(--chat-theme-dark, #000) var(--chat-theme-light, linear-gradient(180deg, #e4e4e4 0, #f2f2f2 100%)); border-color: var(--chat-theme-dark, #444) var(--chat-theme-light, #fff); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .149); cursor: pointer; } /* Modals */ .fpb__modal { position: fixed; max-width: 32rem; width: calc(100vw - 1rem); height: calc(100vh - 3rem); top: 50%; left: 15%; background: var(--chat-theme-dark, linear-gradient(180deg, #555 0, #333 100%)) var(--chat-theme-light, linear-gradient(180deg, #fff 0, #ddd 100%)); color: var(--chat-theme-dark, #ddd) var(--chat-theme-light, #666); border: 1px solid var(--fp-border-color-translucent); border-radius: var(--fp-border-radius-lg); background-color: var(--fp-body-bg); box-shadow: var(--fp-box-shadow); display: flex; flex-direction: column; overflow: hidden; opacity: 0; pointer-events: none; transform: translate(-50%, -51%); transition: opacity 0.5s, transform 0.5s; z-index: 9999999999; } .fpb__modal ::-webkit-scrollbar { width: 12px; } .fpb__modal ::-webkit-scrollbar-track { background: #ddd; background: var(--chat-box-scroll-track); } .fpb__modal ::-webkit-scrollbar-thumb { background: #f2f2f2; background: var(--chat-box-scroll-thumb-bg); background-clip: content-box; border: 3px solid transparent; border-radius: 8px; } .fpb__modal.fpb__open { opacity: 1; pointer-events: all; transform: translate(-50%, -50%); } .fpb__backdrop { position: fixed; width: 100vw; height: 100vh; inset: 0; z-index: 1054; background-color: #000; opacity: 0; pointer-events: none; transition: opacity 0.5s; } .fpb__modal.fpb__open + .fpb__backdrop { opacity: 0.5; pointer-events: all; } .fpb__modal-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem; } .fp__modal-title { margin: 0; font-size: 1.25rem; font-weight: 700; font-family: inherit; } .fpb__modal button:hover { background-color: transparent !important; /* CSS reset */ } .fpb__modal-footer { display: flex; align-items: center; padding: 1rem; gap: 1rem; border-top: 1px solid var(--sidebar-horizontal-divider-bg-color); } .fpb__modal .fpb__input { width: 100%; } .fpb__btn-close { display: grid; place-items: center; color: var(--fp-tertiary-color); font-size: 2rem; width: 0.75em; height: 0.75em; padding: 0; line-height: 0; appearance: none; background: none; border: none; border-radius: var(--fp-border-radius); } .fpb__btn-close:hover { color: var(--fp-body-color); } .fpb__btn-close:focus-visible { outline: 0; box-shadow: var(--fp-ring-shadow); } /* Accordion */ .fpb__accordion-item { margin-top: -1px; } .fpb__accordion-toggle { --fp-accordion-toggle-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); display: flex; width: 100%; align-items: center; color: var(--fp-body-color); font-size: 1rem; text-align: start; appearance: none; background: none; border: none; border-radius: 0; border-bottom: 1px solid var(--sidebar-horizontal-divider-shadow-color); border-top: 1px solid var(--sidebar-horizontal-divider-bg-color); padding: 0.5rem 1rem; margin: 0; transition: border-color 0.15s, box-shadow 0.15s; } .fpb__accordion-toggle::after { content: ''; margin-left: auto; width: 1.25rem; height: 1.25rem; background-image: var(--fp-accordion-toggle-img); background-repeat: no-repeat; background-size: 100% 100%; transition: transform 0.2s; } .fpb__accordion-item.fpb__open > .fpb__accordion-toggle::after { transform: rotate(-180deg); } .fpb__accordion-content { --fpb-height: 0; max-height: 0; overflow: hidden; visibility: hidden; transition: max-height 0.2s; } .fpb__accordion-content > * { padding: 0.5rem 1rem; border-top: 1px solid var(--sidebar-horizontal-divider-bg-color); } .fpb__accordion-item.fpb__open .fpb__accordion-content { --fpb-height: fit-content; max-height: var(--fpb-height); visibility: visible; } .fpb__accordion-toggle:focus { outline: 0; box-shadow: var(--fp-ring-shadow); border-color: var(--fp-ring-color); } /* Button */ [role='button'], button { cursor: pointer; } .fpb__btn { --fpb-variant: var(--fp-primary); cursor: pointer; font-size: 1rem; padding: 0.375rem 0.75rem; line-height: 1.5; color: var(--fp-light); text-align: center; user-select: none; border: 1px solid var(--fpb-variant); background-color: var(--fpb-variant); border-radius: var(--fp-border-radius); transition: color 0.15s, background-color 0.15s, border-color 0.15s, box-shadow 0.15s, opacity 0.15s; } .fpb__btn:hover { opacity: 0.8; } .fpb__btn-small { font-size: 0.75rem; padding: 0.1rem 0.5rem; } .fpb__btn-pill { border-radius: 9999px; } button.fpb__btn-pill:hover { /* CSS reset */ background-color: var(--fpb-variant) !important; border-color: var(--fpb-variant) !important; } .fpb__btn-secondary { --fpb-variant: var(--fp-secondary); } .fpb__btn-link { color: var(--fpb-variant); background: none; border: none; } .fpb__btn-link::after { content: ''; width: 0px; height: 1px; display: block; background: currentColor; opacity: 0; transition: width 0.2s, opacity 0.2s; } .fpb__btn-link:hover { /* CSS reset */ background: inherit !important; } .fpb__btn-link:hover::after { width: 100%; opacity: 1; } .fpb__hidden-input { position: absolute !important; clip: rect(0, 0, 0, 0); pointer-events: none; } .fpb__btn-toggle { white-space: nowrap; color: var(--fpb-variant); background-color: transparent; } .fpb__btn-flip, .fpb__btn-toggle.fpb__active, input:checked + .fpb__btn-toggle { background-color: var(--fpb-variant); border-color: var(--fpb-variant); color: var(--fp-light); } .fpb__btn-flip > * { transition: transform 0.25s ease-in-out; } input:checked + .fpb__btn-flip > *, .fpb__btn-flip.fpb__active > * { transform: scaleY(-1); } .fpb__btn:focus-visible, input:focus-visible + .fpb__btn-toggle { outline: 0; opacity: 0.8; box-shadow: var(--fp-ring-shadow); } .fpb__btn:disabled, input:disabled + .fpb__btn-toggle { opacity: 0.5; cursor: not-allowed; } /* Input groups */ .fpb__input-group { display: flex; } .fpb__input-group > *:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } .fpb__input-group > *:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } /* Grid utility */ .fpb__grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; } .fpb__span-2 { grid-column: span 2; } .fpb__grow { flex-grow: 1; } .fpb__hlist { display: flex; overflow-x: auto; gap: 0.5rem; } .fpb__hidden { display: none !important; } #fp__pick span{ color: #ddd!important; } #fp__pick svg rect{ fill: #ddd!important; } /* Text utility */ .fpb__has-icon, .fpb__has-icon * { vertical-align: middle; color: var(--chat-theme-dark, #ddd) var(--chat-theme-light, #666); } .fpb__has-icon svg { margin-right: 0.25rem; } .fpb__primary { color: var(--fp-primary); } @media (max-width: 1750px) { .fpb__modal{ left: 50%; } } @media (max-width: 576px) { .fpb__modal { height: calc(100vh - 1rem); } .fpb__grid-2 { display: flex; flex-direction: column; } } /* Font picker button element */ .font-picker { text-align: start; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; vertical-align: middle; background: var(--chat-theme-dark, linear-gradient(180deg, #555 0, #333 100%)) var(--chat-theme-light, linear-gradient(180deg, #fff 0, #ddd 100%)); border: var(--chat-theme-dark, 0) var(--chat-theme-light, 1px solid #ccc); box-shadow: var(--chat-theme-dark, 0 0 2px #000) var(--chat-theme-light, 0); color: var(--chat-theme-dark, #ddd) var(--chat-theme-light, #666) !important; } input.font-picker { caret-color: transparent; } /* Filters */ .fp__changed::after { content: '*'; color: var(--fp-secondary); } /* Font list */ #fp__fonts { display: flex; flex-direction: column; flex-grow: 1; overflow-y: scroll; padding: 0.25rem; margin-top: -1px; border-top: 1px solid var(--sidebar-horizontal-divider-bg-color); } #fp__fonts:focus-visible { outline: 0; box-shadow: var(--fp-ring-shadow); border-color: var(--fp-ring-color); transition: border-color 0.15s, box-shadow 0.15s; } /* Font item */ .fp__font-item { display: flex; justify-content: space-between; align-items: center; padding: 0.25rem 1rem; min-height: 2rem; user-select: none; border-radius: 9999px; } .fp__font-item:hover { background: var(--chat-theme-dark, linear-gradient(180deg, #666 0, #444 100%)) var(--chat-theme-light, #fff); } .fp__font-item.fp__selected { color: var(--fp-light); background: var(--fp-primary); } .fp__font-family { font-size: 1rem; pointer-events: none; } /* Font heart */ .fp__heart { height: 1em; } .fp__heart svg { height: 1em; pointer-events: none; --fp-heart-color: var(--fp-border-color-rgb); fill: rgba(var(--fp-heart-color), 0.5); stroke: rgb(var(--fp-heart-color)); } .fp__heart:hover svg { fill: rgb(var(--fp-heart-color)); } .fp__font-item:hover .fp__heart svg, .fp__font-item.fp__selected .fp__heart svg { --fp-heart-color: var(--fp-body-bg-rgb); } .fp__font-item.fp__fav .fp__heart svg { --fp-heart-color: var(--fp-danger-rgb); } .fp__font-item.fp__fav.fp__selected .fp__heart svg { filter: drop-shadow(0px 0px 2px var(--fp-dark)); } /* Preview */ .fp__preview-container { padding: 0.25rem; border-top: 1px solid var(--sidebar-horizontal-divider-bg-color); } #fp__preview { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; text-align: center; font-size: 1.25rem; line-height: 1.5; padding-inline: 0.75rem; border: 1px solid transparent; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } #fp__preview:focus { outline: 0; border-color: var(--fp-ring-color); box-shadow: var(--fp-ring-shadow); } /* Variants */ #fp__variants { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; padding: 0.5rem 1rem; border-bottom: 1px solid var(--sidebar-horizontal-divider-shadow-color); border-top: 1px solid var(--sidebar-horizontal-divider-bg-color); } #fp__variants:has(#fp__italic:checked) { font-style: italic !important; } #fp__variants:empty { display: none; } ` var settings = {} var chatId = {} var temp = {} var userId = 0 var customColor = "" var activeStyle = GM_addStyle(sharedStyles) var selfId = $("script[server_name*='torn']")[0].attributes[3].value var chosenFont = "" if(localStorage.chatSettings === undefined){ localStorage.chatSettings = JSON.stringify({'bubbles':'','userIds':{}}) settings = JSON.parse(localStorage.chatSettings) if($('div[id^="settings_panel"]').length != 1){ alert('Please open the chat settings so I can check your bubble setting') } }else{ settings = JSON.parse(localStorage.chatSettings); } $.each(settings.userIds, function( index, value ) { if(index != selfId){ if('bg' in settings.userIds[index]){ $('<style id='+index+'-bg>#chatRoot [class*="list"] [class*="root"]:has([id*="'+index+'"]), div[id*="'+index+'"] *:has(> [class*="box___"]:not([class*="root___"][class*="self"] [class*="box___"])):not(:has(a[id*="'+selfId+'"])), div[id*="'+index+'"] *:has(> [class*="box___"]:not([class*="root___"][class*="self"] [class*="box___"])):not(:has(a[id*="'+selfId+'"]))::before{ background-color:'+settings.userIds[index].bg+'!important; padding: 3px 3px 3px 3px;}</style>').appendTo('head') } if('fc' in settings.userIds[index]){ $('<style id='+index+'-fc>#chatRoot [class*="list"] [class*="root"]:has([id*="'+index+'"]) [class*="message"], div[id*="'+index+'"] [class*="message_"]:not([class*="self"] [class*="message_"], span:first-child:has(a[id*="'+selfId+'"]) + span[class*="message_"]) > span, a[id*="'+index+'"]{color:'+settings.userIds[index].fc+'!important}</style>').appendTo('head') } if('font' in settings.userIds[index]){ if(index != 'global'){ $('<link href="https://fonts.googleapis.com/css2?family='+settings.userIds[index].font+'&display=swap" rel="stylesheet">').appendTo('head') $('<style id='+index+'-font>#chatRoot [class*="list"] [class*="root"]:has([id*="'+index+'"]) [class*="message"], div[id*="'+index+'"] [class*="message_"]:not([class*="self"] [class*="message_"], span:first-child:has(a[id*="'+selfId+'"]) + span[class*="message_"]) > span{font-family:"'+settings.userIds[index].font.replace(/\+/g, ' ')+'"!important}</style>').appendTo('head') }else{ $('<link href="https://fonts.googleapis.com/css2?family='+settings.userIds[index].font+'&display=swap" rel="stylesheet">').appendTo('head') $('<style id="global-font">#chatRoot [class*="list"] [class*="root"] [class*="message___"]{font-family:"'+settings.userIds[index].font.replace(/\+/g, ' ')+'"}</style>').appendTo('head') } } } if(index == selfId){ if('bg' in settings.userIds[index]){ $('<style id='+selfId+'-bg>div[id*="'+selfId+'"] [class*="self"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]), div[id*="'+selfId+'"] [class*="self"]::after{ background-color:'+settings.userIds[index].bg+'!important; padding: 3px 3px 3px 3px;}</style>').appendTo('head') } if('fc' in settings.userIds[index]){ $('<style id='+selfId+'-fc>div[id*="'+selfId+'"] [class*="self"] [class*="message_"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]) [class*="message"], a[id*="'+selfId+'"]{ color:'+settings.userIds[index].fc+'!important}</style>').appendTo('head') } if('font' in settings.userIds[index]){ $('<link href="https://fonts.googleapis.com/css2?family='+settings.userIds[index].font+'&display=swap" rel="stylesheet">').appendTo('head') $('<style id='+selfId+'-font>div[id*="'+selfId+'"] [class*="self"] [class*="message_"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]) [class*="message"], a[id*="'+selfId+'"]{ font-family:"'+settings.userIds[index].font.replace(/\+/g, ' ')+'"!important}</style>').appendTo('head') } } }); $('<style id="fs">span[class*="message___"], a[class*="sender___"], #chatRoot div[class*="list"] p[class*="message___"]{font-size:'+settings.fs+'rem; line-height: 18px !important;}</style>').appendTo('head') $('<link rel="preconnect" href="https://fonts.gstatic.com" /><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous" />').appendTo('head') function saveId(uid, type, color){ temp = {} temp[(uid)] = {[type]:color} $.extend(true, settings['userIds'], temp) localStorage.chatSettings = JSON.stringify(settings); } function removeId(uid, type){ $('style[id*="'+uid+'-'+type+'"]').remove() if(settings.userIds[uid]){ delete settings.userIds[uid][type] if(Object.keys(settings.userIds[uid]).length == 0){ delete settings.userIds[uid] } localStorage.chatSettings = JSON.stringify(settings) } } function changeFont(from, font, userId){ if(from == 'pickersp'){ if($.isNumeric(userId)){ if(font !== null){ chosenFont = font.family.name.replace(/ /g, '+') $('style[id*='+userId+'-font]').remove() if(userId == selfId){ $('<style id="'+selfId+'-font">div[id*="'+selfId+'"] [class*="self"] [class*="message_"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]) [class*="message"]{font-family:"'+chosenFont.replace(/\+/g, ' ')+'"}</style>').appendTo('head') saveId(selfId, 'font', chosenFont) }else{ $('<style id="'+userId+'-font">#chatRoot [class*="list"] [class*="root"]:has([id*="'+userId+'"]) [class*="message"], div[id*="'+userId+'"] [class*="message_"]:not([class*="self"] [class*="message_"], span:first-child:has(a[id*="'+selfId+'"]) + span[class*="message_"]) > span, a[id*="'+userId+'"]{font-family:"'+chosenFont.replace(/\+/g, ' ')+'"}</style>').appendTo('head') saveId(userId, 'font', chosenFont) } }else{ $('style[id*='+userId+'-font]').remove() removeId(userId, 'font') } }else if(userId == 'global'){ if(font !== null){ chosenFont = font.family.name.replace(/ /g, '+') $('<style id="global-font">#chatRoot [class*="list"] [class*="root"] [class*="message___"]{font-family:"'+chosenFont.replace(/\+/g, ' ')+'"}</style>').appendTo('head') saveId(userId, 'font', chosenFont) }else{ $('style[id*=global-font]').remove() removeId('global', 'font') } } }else{ if(font !== null){ chosenFont = font.family.name.replace(/ /g, '+') $('style[id*='+userId+'-font]').remove() $('<style id="'+userId+'-font">#chatRoot [class*="list"] [class*="root"]:has([id*="'+userId+'"]) [class*="message"], div[id*="'+userId+'"] [class*="message_"]:not([class*="self"] [class*="message_"], span:first-child:has(a[id*="'+selfId+'"]) + span[class*="message_"]) > span, a[id*="'+userId+'"]{font-family:"'+chosenFont.replace(/\+/g, ' ')+'"}</style>').appendTo('head') saveId(userId, 'font', chosenFont) }else{ $('style[id*='+userId+'-font]').remove() removeId(userId, 'font') } } userId = '' } function options(){ var bgy = getComputedStyle(document.documentElement).getPropertyValue('--chat-color-background') var fcy = getComputedStyle(document.documentElement).getPropertyValue('--chat-theme-dark') var bgt = getComputedStyle(document.documentElement).getPropertyValue('--chat-color-background') var fct = getComputedStyle(document.documentElement).getPropertyValue('--chat-theme-dark') var fs = '0.75' if(selfId in settings.userIds){ if('bg' in settings.userIds[selfId]){ bgy = settings.userIds[selfId].bg } if('fc' in settings.userIds[selfId]){ fcy = settings.userIds[selfId].fc } } if($('div[class^="optionsContainer"]').length != 0){ userId = $('div[class^="optionsContainer"]')[0].children[0].href.split("=")[1] if(userId in settings.userIds){ if('bg' in settings.userIds[userId]){ bgt = settings.userIds[userId].bg } if('fc' in settings.userIds[userId]){ fct = settings.userIds[userId].fc } } } if('fs' in settings){ fs = settings['fs'] } if($('div[class^="optionsContainer___"]').length == 1 && $('div[class^="optionsContainer___"] [id^="chatOptions"]').length == 0){ $('div[class^="optionsContainer___"]').append('<hr class="delimiter-999 m-top10 m-bottom10"><div id="chatOptions" class="chatOptions"><div id="optionsLabel" class="h6">Options</div><div class="optionsRowB" style="margin-left: 11px; margin-right: 15px;"><label for="myRange" class="optionText">Font Size ('+fs+')</label><input type="range" min="0.1" max="1.5" value="'+fs+'" step="0.01" id="myRange" style="width: 95%;"></div><div id="optionsLabel" class="h7">You</div><div class="optionsRow"><div><input id="custom" data-color="'+bgy+'" class="bgpickerYou" style="display: none;"><p class="typography___Dc5WV body4 color-#333333">Background</p></div><div><input id="custom" data-color="'+fcy+'" class="fcpickerYou" style="display: none;"><p class="typography___Dc5WV body4 color-#333333 chat-box-options__label___QSXin">Font</p></div></div><div id="optionsLabel" class="h7">Them</div><div class="optionsRow"><div><input id="custom" data-color="'+bgt+'" class="bgpickerThem" style="display: none;"><p class="typography___Dc5WV body4 color-#333333">Background</p></div><div><input id="custom" data-color="'+fct+'" class="fcpickerThem" style="display: none;"><p class="typography___Dc5WV body4 color-#333333 chat-box-options__label___QSXin">Font</p></div></div><button id="fontPicker"></div>') if($('div[class^="optionsContainer___"]').height() != $('div[class^="optionsContainer___"]').parent().parent().height()){ $('div[class^="optionsContainer___"]').css({'max-height':$('div[class^="optionsContainer___"]').parent().parent().height()-30+'px', 'overflow-y':'auto'}) } const picker = new FontPicker('#fontPicker', { language: 'en', font: null, defaultSubset: 'latin', variants: false, container: '.logged-in', showCancelButton: true, showClearButton: true, }) picker.on('pick', function(font){ changeFont('picker', font, userId) }) } if($('div[id^="settings_panel"]').length == 1 && $('div[id^="settings_panel"] [id^="chatOptions"]').length == 0){ var rangeClass = $('input[class*="range"]')[0].className var rootClass = $('input[class*="range"]').parent()[0].className $('<hr class="delimiter-999 m-top10 m-bottom10"><div id="chatOptionssp" class="chatOptions"><div id="optionsLabel" class="h6">Chat Options</div><div class="optionsRowB"><label for="myRange" class="optionText">Font Size ('+fs+')</label><input type="range" min="0.1" max="1.5" value="'+fs+'" step="0.01" id="myRange"></div><div id="optionsLabel" class="h7">You</div><div class="optionsRow"><div><input id="custom" data-color="'+bgy+'" class="bgpickerYou" style="display: none;"><p class="typography___Dc5WV body4 color-#333333">Background</p></div><div><input id="custom" data-color="'+fcy+'" class="fcpickerYou" style="display: none;"><p class="typography___Dc5WV body4 color-#333333 chat-box-options__label___QSXin">Font</p></div></div><div id="optionsLabel" class="h7">Them</div><input id="chatInput" class="chatInput" type="number" placeholder="Player ID here"/><div class="optionsRow"><div><input id="custom" data-color="'+getComputedStyle(document.documentElement).getPropertyValue('--chat-box-body-message-box')+'" class="bgpickerThem" style="display: none;"><p class="typography___Dc5WV body4 color-#333333">Background</p></div><div><input id="custom" data-color="'+getComputedStyle(document.documentElement).getPropertyValue('--chat-box-body-message')+'" class="fcpickerThem" style="display: none;"><p class="typography___Dc5WV body4 color-#333333 chat-box-options__label___QSXin">Font</p></div></div><div id="optionsLabel" class="h7">Font Family</div><div class="optionsRowC"><input type="checkbox" id="selfCheck" class="fontCheckbox"><label for="selfCheck">Self</label><input type="checkbox" id="globalCheck" class="fontCheckbox"><label for="globalCheck">Global</label></div><input id="fontInput" class="chatInput" type="number" placeholder="Player ID here"/><button id="fontPickersp"></button></div>').appendTo($('div[id^="settings_panel"] [class*="content___"]')[0]) const pickersp = new FontPicker('#fontPickersp', { language: 'en', font: null, defaultSubset: 'latin', variants: false, container: '.logged-in', showCancelButton: true, showClearButton: true, }) pickersp.on('pick', function(font){ if($('input[id*=selfCheck]').prop('checked')){ userId = selfId } else if($('input[id*=globalCheck]').prop('checked')){ userId = 'global' }else{ userId = $('input[id*=fontInput]')[0].value } changeFont('pickersp', font, userId) }) } $('input[id*="myRange"]').each( function(){ var n = (($(this)[0].value - 0.1) / (1.5 - 0.1) * 100).toFixed(2); var o = "var(--chat-range-range-color)", c = "var(--chat-range-progress-color-default)"; $(this)[0].style.background = "linear-gradient(to right, ".concat(c, " ").concat(n, "%, ").concat(o, " ").concat(n, "%, ").concat(o, " 100%)") }) if($('div[id^="settings_panel"]').length == 1){ if($('label:contains("Bubbles")').children(0).prop('checked')){ settings.bubbles = true localStorage.chatSettings = JSON.stringify(settings); }else{ settings.bubbles = false localStorage.chatSettings = JSON.stringify(settings); } } $("#custom, #custom1").spectrum({ type: "color", showPalette: false, showInput: true, showAlpha: true, allowEmpty: true, clickoutFiresChange: true, closeOnClickout: true, showInitial: true, showButtons: false, cancelText: "cancel", chooseText: "choose", preferredFormat: "rgb", }); $(".bgpickerYou").on('move.spectrum change.spectrum', function(e, tinycolor){ var userCheck = selfId in settings.userIds ? String(settings.userIds[selfId].bg) : "" $('style[id*="'+selfId+'-bg"]').remove() if($('style[id*="pseudo-bg"]').length == 0){ $('<style id="pseudo-bg">div[class*="self"], a[id*="'+selfId+'"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]){ background-color:'+userCheck+'!important} div[id*="'+selfId+'"] [class*="self"]::after{ background-color:'+userCheck+'!important}</style>').appendTo('head') } if(e.type == 'move'){ if(e.target.value !== ""){ customColor = tinycolor.toRgbString() $('style[id*="pseudo-bg"]')[0].sheet.rules[0].style.setProperty('background-color', customColor, 'important'); }else{ $('style[id*="pseudo-bg"]')[0].sheet.rules[0].style.setProperty('background-color', ""); } } if(e.type == 'change'){ if(e.target.value !== ""){ customColor = tinycolor.toRgbString() $('<style id='+selfId+'-bg>div[id*="'+selfId+'"] [class*="self"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]), div[id*="'+selfId+'"] [class*="self"]::after{ background-color:'+customColor+'!important}</style>').appendTo('head') $('style[id*="pseudo-bg"]').remove() saveId(selfId, 'bg', customColor) }else{ removeId(selfId, 'bg') } } }); $(".bgpickerThem").on('move.spectrum change.spectrum', function(e, tinycolor){ if(e.currentTarget.parentElement.offsetParent.offsetParent.id == 'settings_panel'){ userId = $('input[id^="chatInput"]')[0].value }else{ userId = e.currentTarget.parentElement.offsetParent.children[0].href.split('=')[1] } var userCheck = userId in settings.userIds ? String(settings.userIds[userId].bg) : "" $('style[id*="'+userId+'-bg"]').remove() if($('style[id*="pseudo-bg"]').length == 0){ $('<style id="pseudo-bg">#chatRoot [class*="list"] [class*="root"]:has([id*="'+userId+'"]), div[id*="'+userId+'"] *:has(> [class*="box___"]:not([class*="root___"][class*="self"] [class*="box___"])):not(:has(a[id*="'+selfId+'"])), div[id*="'+userId+'"] *:has(> [class*="box___"]:not([class*="root___"][class*="self"] [class*="box___"])):not(:has(a[id*="'+selfId+'"]))::before{ background-color:'+userCheck+'!important}</style>').appendTo('head') } if(e.type == 'move'){ if(e.target.value !== "" && userId !== ""){ customColor = tinycolor.toRgbString() $('style[id*="pseudo-bg"]')[0].sheet.rules[0].style.setProperty('background-color', customColor, 'important'); }else{ $('style[id*="pseudo-bg"]')[0].sheet.rules[0].style.setProperty('background-color', ""); } } if(e.type == 'change'){ if(e.target.value !== "" && userId !== ""){ customColor = tinycolor.toRgbString() $('<style id='+userId+'-bg>#chatRoot [class*="list"] [class*="root"]:has([id*="'+userId+'"]), div[id*="'+userId+'"] *:has(> [class*="box___"]:not([class*="root___"][class*="self"] [class*="box___"])):not(:has(a[id*="'+selfId+'"])), div[id*="'+userId+'"] *:has(> [class*="box___"]:not([class*="root___"][class*="self"] [class*="box___"])):not(:has(a[id*="'+selfId+'"]))::before{ background-color:'+customColor+'!important}</style>').appendTo('head') $('style[id*="pseudo-bg"]').remove() saveId(userId, 'bg', customColor) }else{ removeId(userId, 'bg') } } }); $(".fcpickerYou").on('move.spectrum change.spectrum', function(e, tinycolor){ $('style[id*="'+selfId+'-fc"]').remove() var userCheck = selfId in settings.userIds ? String(settings.userIds[selfId].bg) : "" if($('style[id*="pseudo-fc"]').length == 0){ $('<style id="pseudo-fc">div[id*="'+selfId+'"] [class*="self"] [class*="message_"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]) [class*="message"], a[id*="'+selfId+'"]{ color:'+userCheck+'!important}</style>').appendTo('head') } if(e.type == 'move'){ if(e.target.value !== ""){ customColor = tinycolor.toRgbString() $('style[id*="pseudo-fc"]')[0].sheet.rules[0].style.setProperty('color', customColor, 'important'); }else{ $('style[id*="pseudo-bg"]')[0].sheet.rules[0].style.setProperty('color', ""); } } if(e.type == 'change'){ if(e.target.value !== ""){ customColor = tinycolor.toRgbString() $('<style id='+selfId+'-bg>div[id*="'+selfId+'"] [class*="self"] [class*="message_"], #chatRoot [class*="list"] [class*="root"]:has([id*="'+selfId+'"]) [class*="message"], a[id*="'+selfId+'"]{ color:'+customColor+'!important}</style>').appendTo('head') $('style[id*="pseudo-fc"]').remove() saveId(selfId, 'fc', customColor) }else{ removeId(selfId, 'fc') } } }); $(".fcpickerThem").on('move.spectrum change.spectrum', function(e, tinycolor){ if(e.currentTarget.parentElement.offsetParent.offsetParent.id == 'settings_panel'){ userId = $('input[id^="chatInput"]')[0].value }else{ userId = e.currentTarget.parentElement.offsetParent.children[0].href.split('=')[1] } var userCheck = userId in settings.userIds ? String(settings.userIds[userId].bg) : "" $('style[id*="'+userId+'-fc"]').remove() if($('style[id*="pseudo-fc"]').length == 0){ $('<style id="pseudo-fc">#chatRoot [class*="list"] [class*="root"]:has([id*="'+userId+'"]) [class*="message"], div[id*="'+userId+'"] [class*="message_"]:not([class*="self"] [class*="message_"], span:first-child:has(a[id*="'+selfId+'"]) + span[class*="message_"]) > span, a[id*="'+userId+'"]{ color:'+userCheck+'!important}</style>').appendTo('head') } if(e.type == 'move'){ if(e.target.value !== ""){ customColor = tinycolor.toRgbString() $('style[id*="pseudo-fc"]')[0].sheet.rules[0].style.setProperty('color', customColor, 'important'); }else{ $('style[id*="pseudo-bg"]')[0].sheet.rules[0].style.setProperty('color', ""); } } if(e.type == 'change'){ if(e.target.value !== "" && userId !== ""){ customColor = tinycolor.toRgbString() $('<style id='+userId+'-fc>#chatRoot [class*="list"] [class*="root"]:has([id*="'+userId+'"]) [class*="message"], div[id*="'+userId+'"] [class*="message_"]:not([class*="self"] [class*="message_"], span:first-child:has(a[id*="'+selfId+'"]) + span[class*="message_"]) > span{color:'+customColor+'!important} a[id*="'+userId+'"]{color:'+customColor+'!important}</style>').appendTo('head') $('style[id*="pseudo-fc"]').remove() saveId(userId, 'fc', customColor) }else{ removeId(userId, 'fc') } } }); $("#chatInput").on('input', function(e){ if(parseInt(e.target.value) in settings.userIds){ $("#settings_panel .bgpickerThem").spectrum("set", settings.userIds[e.target.value].bg) $("#settings_panel .fcpickerThem").spectrum("set", settings.userIds[e.target.value].fc) } }) $(".fontCheckbox").on('change', function(e){ var uncheck = e.target.id === 'selfCheck' ? 'globalCheck' : 'selfCheck'; $('#' + uncheck).prop('checked', false); $('#fontInput').val('') }) $("#fontInput").on('input', function(e){ $('.fontCheckbox').prop('checked', false); }) $("#myRange").on('input change mouseover mouseleave', function(e){ var t = false if(e.type != "mouseleave"){ t = true }else{ t = false } var n = ((e.target.value - 0.1) / (1.5 - 0.1) * 100).toFixed(2); var o = "var(--chat-range-range-color)", c = "var(--chat-range-progress-color-".concat(t ? "hover" : "default", ")"); $('input[id*="myRange"]').each( function(){ if($(this)[0] == e.currentTarget){ $(this)[0].style.background = "linear-gradient(to right, ".concat(c, " ").concat(n, "%, ").concat(o, " ").concat(n, "%, ").concat(o, " 100%)") } else{ $(this)[0].style.background = "linear-gradient(to right, ".concat("var(--chat-range-progress-color-default)", " ").concat(n, "%, ").concat(o, " ").concat(n, "%, ").concat(o, " 100%)") } }) if(e.type == "input"){ $('span[class*="message___"]').css("font-size", e.target.value+"rem", "line-height", "18px !important"); $('a[class*="sender___"]').css("font-size", e.target.value+"rem", "line-height", "18px !important"); $('#chatRoot div[class*="list"] p[class*="message___"]').css("font-size", e.target.value+"rem", "line-height", "18px !important"); $("div[class*=scrollContainer]").parent().each(function(index){ (this).scrollTop = (this).scrollHeight - (this).clientHeight; }); $('label[for*="myRange"]')[0].innerHTML = "Font Size ("+e.target.value+")" $('input[id*="myRange"]').each( function(){ $(this)[0].value = e.target.value $(this)[0].previousSibling.innerHTML = "Font Size ("+e.target.value+")" }) } if(e.type == "change"){ $('style[id*="fs"]')[0].sheet.rules[0].style.fontSize = e.target.value+"rem" temp = {} temp['fs'] = [e.target.value] $.extend(true, settings, temp) localStorage.chatSettings = JSON.stringify(settings); } }); $('label:contains("Bubbles") > input, label:contains("Bubbles")').on('click',function(e){ setTimeout(function() { if($('label:contains("Bubbles")').children(0).prop('checked')){ settings.bubbles = true localStorage.chatSettings = JSON.stringify(settings); }else{ settings.bubbles = false localStorage.chatSettings = JSON.stringify(settings); } $("div[class*=scrollContainer]").parent().each(function(index){ (this).scrollTop = (this).scrollHeight - (this).clientHeight; }); }, 100); }) $('button[class*="chat-box-options__button"]').on('click', function(e){ $('div[id*="chatOptions"]').hide() }); $('button[class*="chat-box-options__confirmation-button___"]').on('click', function(e){ $('div[id*="chatOptions"]').show() }); $('input[id*="custom"]').on('show.spectrum', function(e){ $('.sp-replacer').addClass('sp-disabled'); $('.sp-replacer').prop('disabled', true); }) $('input[id*="custom"]').on('hide.spectrum', function(e){ $('.sp-replacer').removeClass('sp-disabled'); $('.sp-replacer').prop('disabled', false);; }) } waitForKeyElements('div[class^="optionsContainer"]', options) waitForKeyElements('div[id*="settings_panel"]', options)