Browse Source

Add an eye option

pull/46/head
coomdev 2 years ago
parent
commit
524ac7eedd
  1. 2
      main.meta.js
  2. 650
      main.user.js
  3. 4
      src/App.svelte
  4. 107
      src/Embedding.svelte
  5. 1
      src/stores.ts

2
main.meta.js

@ -1,7 +1,7 @@
// ==UserScript== // ==UserScript==
// @name PNGExtraEmbed // @name PNGExtraEmbed
// @namespace https://coom.tech/ // @namespace https://coom.tech/
// @version 0.67 // @version 0.69
// @description uhh // @description uhh
// @author You // @author You
// @match https://boards.4channel.org/* // @match https://boards.4channel.org/*

650
main.user.js

File diff suppressed because it is too large

4
src/App.svelte

@ -70,6 +70,10 @@
<input type="checkbox" bind:checked={$settings.dh} /> <input type="checkbox" bind:checked={$settings.dh} />
Turn off hover preview. Turn off hover preview.
</label> </label>
<label>
<input type="checkbox" bind:checked={$settings.eye} />
Hide embedded content behind an eye.
</label>
<label> <label>
<input type="checkbox" bind:checked={$settings.te} /> <input type="checkbox" bind:checked={$settings.te} />
Turn off third-eye. Turn off third-eye.

107
src/Embedding.svelte

@ -13,6 +13,7 @@
let settled = false let settled = false
let contracted = true let contracted = true
let hovering = false let hovering = false
let ftype = '';
let place: HTMLDivElement let place: HTMLDivElement
let hoverElem: HTMLDivElement let hoverElem: HTMLDivElement
@ -22,6 +23,8 @@
let dims: [number, number] = [0, 0] let dims: [number, number] = [0, 0]
let furl: string | undefined = undefined; let furl: string | undefined = undefined;
let visible = false;
beforeUpdate(async () => { beforeUpdate(async () => {
if (settled) return if (settled) return
settled = true settled = true
@ -33,6 +36,7 @@
isFile = true isFile = true
return; return;
} }
ftype = type.mime;
isVideo = type.mime.startsWith('video/') isVideo = type.mime.startsWith('video/')
isAudio = type.mime.startsWith('audio/') isAudio = type.mime.startsWith('audio/')
isImage = type.mime.startsWith('image/') isImage = type.mime.startsWith('image/')
@ -177,52 +181,67 @@
} }
</script> </script>
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
<div {#if $settings.eye}
class:contract={contracted} <span on:click={() => visible = !visible} class:fa-eye={!visible} class:fa-eye-slash={visible} class="fa clickable" />
class="place fileThumb" {/if}
on:click={() => bepis()}
on:mouseover={hoverStart}
on:mouseout={hoverStop} {#if !$settings.eye || visible}
on:mousemove={hoverUpdate} <!-- svelte-ignore a11y-mouse-events-have-key-events -->
on:wheel={adjustAudio} <div
bind:this={place} class:contract={contracted}
> class="place fileThumb"
{#if isImage} on:click={() => bepis()}
<img bind:this={imgElem} alt={file.filename} src={furl || url} /> on:mouseover={hoverStart}
{/if} on:mouseout={hoverStop}
{#if isAudio} on:mousemove={hoverUpdate}
<audio loop={$settings.loop} alt={file.filename} src={url} /> on:wheel={adjustAudio}
{/if} bind:this={place}
{#if isVideo} >
<!-- svelte-ignore a11y-media-has-caption --> {#if isImage}
<video loop={$settings.loop} bind:this={videoElem} src={furl || url} /> <img bind:this={imgElem} alt={file.filename} src={furl || url} />
<!-- assoom videos will never be loaded from thumbnails --> {/if}
{/if} {#if isAudio}
{#if isFile} <audio controls loop={$settings.loop} alt={file.filename}>
<button>Download {file.filename}</button> <source src={url} type={ftype} />
{/if} </audio>
</div> {/if}
<div {#if isVideo}
bind:this={hoverElem} <!-- svelte-ignore a11y-media-has-caption -->
class:visible={hovering && contracted} <video loop={$settings.loop} bind:this={videoElem} src={furl || url} />
class:unzipping <!-- assoom videos will never be loaded from thumbnails -->
class="hoverer" {/if}
> {#if isFile}
{#if unzipping}<span class="progress">[{progress[0]} / {progress[1]}]</span <button>Download {file.filename}</button>
>{/if} {/if}
</div>
{#if isImage} <div
<img alt={file.filename} src={furl || url} /> bind:this={hoverElem}
{/if} class:visible={hovering && contracted}
{#if isVideo} class:unzipping
<!-- svelte-ignore a11y-media-has-caption --> class="hoverer"
<video loop={$settings.loop} bind:this={hoverVideo} src={furl || url} /> >
<!-- assoom videos will never be loaded from thumbnails --> {#if unzipping}<span class="progress">[{progress[0]} / {progress[1]}]</span
{/if} >{/if}
</div>
{#if isImage}
<img alt={file.filename} src={furl || url} />
{/if}
{#if isVideo}
<!-- svelte-ignore a11y-media-has-caption -->
<video loop={$settings.loop} bind:this={hoverVideo} src={furl || url} />
<!-- assoom videos will never be loaded from thumbnails -->
{/if}
</div>
{/if}
<style scoped> <style scoped>
.clickable {
cursor: pointer;
}
.place { .place {
cursor: pointer; cursor: pointer;
max-width: 100vw; max-width: 100vw;

1
src/stores.ts

@ -14,6 +14,7 @@ export const settings = writable(localLoad('settings', {
xpv: false, xpv: false,
xpi: false, xpi: false,
te: false, te: false,
eye: false,
blacklist: ['guro', 'scat', 'ryona', 'gore'], blacklist: ['guro', 'scat', 'ryona', 'gore'],
sources: ['gelbooru.com', sources: ['gelbooru.com',
'yande.re', 'yande.re',

Loading…
Cancel
Save