https://trashbytes.co/

Submitted URL:
https://trashbytes.co/
Report Finished:

JavaScript Variables · 15 found

NameType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
UploadManagerfunction
htmxobject
parseXHRErrorfunction
humanReadableSizefunction
copyTextToClipboardfunction
copyTextToClipboardFallbackfunction
addFileToHistoryfunction

Console log messages · 0 found

HTML

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1.0" name="viewport">
    <title>trashbytes.co</title>
    <meta name="title" content="trashbytes.co">
    <meta name="description" content="Simple fast anonymous file sharing for everyone.">
    <meta name="application-name" content="trashbytes.co">
    <script src="/xz.js?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty" defer=""></script>
    <link rel="stylesheet" href="/whysostylish.css?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty">
    <link rel="stylesheet" href="/icons.css?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty">
    <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer=""></script>
    <meta name="htmx-config" content="{&quot;methodsThatUseUrlParams&quot;:[&quot;get&quot;]}">
<style>      .htmx-indicator{opacity:0}      .htmx-request .htmx-indicator{opacity:1; transition: opacity 200ms ease-in;}      .htmx-request.htmx-indicator{opacity:1; transition: opacity 200ms ease-in;}      </style></head>

<body class="min-h-screen p-1.5" hx-ext="response-targets">

    <div>
        <p class="text-center text-3xl font-bold mt-1 mb-0">TRASHBYTES</p>
        <p class="text-center mt-0">Motherfucking file hosting service</p>
    </div>


<ul class="navbar text-center p-0 mb-7" hx-ext="preload">
    <li>Index</li>
    <li><a href="/speedtest" preload="mouseover">Speedtest</a></li>
    <li><a href="/help" preload="mouseover">Help</a></li>
    <li><a href="/developers" preload="mouseover">Developers</a></li>
    <li><a href="/privacy" preload="mouseover">Privacy</a></li>
    <li><a href="/terms" preload="mouseover">Terms</a></li>
    <li><a href="/contact" preload="mouseover">Contact</a></li>
    <li><a href="/account" preload="mouseover">Account</a></li>
</ul>

<div class="mx-auto max-w-[60rem]">
    <p>trashbytes.co is a simple, fast and privacy-oriented file hosting provider.</p>

    
    <div x-data="UploadManager()">
        <div class="flex flex-col gap-2">
            <div>
                <label for="file-input"><input type="file" id="file-input" multiple=""></label>
                <label>
                    Location
                    <select x-model="selectedLocation">
                        
                            <option value="3eb9t1559lkv">Central Europe</option>
                        
                            <option value="12brteedoy0f">Eastern US</option>
                        
                            <option value="95542dt0et21">Western US</option>
                        
                    </select>
                </label>
                <button id="upload-button" @click="upload($event)">Upload</button>
                <button @click="showNote=true;" x-show="!showNote">Add Note</button>
                <button @click="abort()" :disabled="queued.filter(t => t.status === 'inprogress').length === 0" disabled="disabled">Cancel</button>
                <button @click="copyLinks()" :disabled="completed.length === 0" x-text="copyLinksButtonText" disabled="disabled">Copy links</button>
                
            </div>

            <label x-show="showNote" style="display: none;">
            <textarea class="pt-1 border rounded-sm w-full sm:w-3/4" rows="1" maxlength="500" placeholder="Notes to display under the download link (e.g., file password, social handles)." x-model="note">            </textarea>
            </label>
        </div>

        <ul x-show="queued.length || completed.length" class="ps-4" style="display: none;">
            <template x-for="task in queued">
                <li x-show="task.status !== 'completed'">
                    <div class="flex-col flex gap-1">
                        <span x-text="task.file.name" class="mt-2"></span>
                        <div class="progress">
                            <div class="progress-bar" :style="'width: ' + task.stats.progress + '%;'" :class="{'progress-bar-danger': task.error}"></div>
                        </div>
                        <div class="flex justify-between">
                            <span x-text="task.statsText" :class="{'text-danger': task.error}"></span>
                            <button x-show="task.status === 'inprogress'" @click="task.abort()">Cancel</button>
                        </div>
                    </div>
                </li>
            </template>
            <template x-for="task in completed">
                <li>
                    <a :href="task.link" x-text="`${task.file.name} - ${humanReadableSize(task.file.size)}`" target="_blank"></a>
                </li>
            </template>
        </ul>
    </div>
    <script>
      function UploadManager() {
        return {
          queued: [],
          completed: [],
          running: 0,
          concurrency: 5,
          copyLinksButtonText: 'Copy links',
          selectedLocation: "3eb9t1559lkv",
          note: '',
          showNote: false,
          get settings() {
            return {
              note: this.note,
              baseUrl: "https:\/\/w.trashbytes.co",
              directoryId: "",
              locationId: this.selectedLocation,
            }
          },
          upload() {
            const fi = document.getElementById('file-input')
            const files = Array.from(fi.files)
            if (!files || files.length === 0) return
            const findOne = files.filter(f => f.name.length > 500)
            if (findOne.length) this.error = 'file name must not exceed more than 500 characters'
            else {
              for (const file of files) {
                const mp = new Uploader(file, this.settings)
                this.queued.push(Alpine.reactive(mp))
                this.process()
              }
            }
            fi.value = null
          },
          process() {
            this.queued.forEach((task) => {
              if (task.status === 'queued' && this.running < this.concurrency) {
                this.running += 1
                task.upload().finally(() => {
                  if (task.status === 'completed') {
                    this.completed.push(task)
                  }
                  this.running -= 1
                  this.process()
                })
              }
            })
            this.queued = this.queued.filter(task => task !== undefined)
          },
          abort() {
            this.queued.forEach((task) => {
              if (task.status !== 'aborted' || task.status !== 'completed') {
                task.abort()
              }
            })
          },
          copyLinks() {
            const links = []
            this.completed.forEach(task => {
              links.push(task.link)
            })
            copyTextToClipboard(links.join('\n'))
            this.copyLinksButtonText = 'Links copied'
            setTimeout(() => {
              this.copyLinksButtonText = 'Copy links'
            }, 500)
          },
          init() {
            window.addEventListener('beforeunload', (e) => {
              const foundOne = this.queued.findIndex(task => task.status !== 'completed')
              if (foundOne !== -1) {
                e.preventDefault()
                e.returnValue = 'You have an ongoing upload. Are you sure you want to leave?'
                return 'You have an ongoing upload. Are you sure you want to leave?'
              }
            })
          },
        }
      }
    </script>


    <p>Files uploaded from here won't be saved to your account.</p>

    <p>Our main features include</p>
    <ul>
        <li>It's fast.</li>
        <li>No bloatware.</li>
        <li>Size doesn't matter (file's).</li>
        <li>No download speed caps.</li>
        <li>Files will be kept forever as long as it was downloaded within the last 30 days.</li>
        <li>Online previews for media files.</li>
        <li>Doesn't track you - no logs who download who upload.</li>
    </ul>

    <p>We emphasize Privacy, Net Neutrality and Free Software.</p>
    <p class="text-right">
        <i>Malo periculosam libertatem quam quietum servitium.</i>
    </p>
</div>


<div class="text-center text-danger mt-9">
    <div id="flash"></div>
</div>




</body></html>