GalGameUI / index.html
SenY's picture
Update index.html
3caa8b1
raw
history blame contribute delete
No virus
87.9 kB
<!doctype html>
<html lang="ja" class="h-100">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-HWSPDD19EL"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-HWSPDD19EL');
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Gal-Game UI Editor">
<meta name="author" content="SenY">
<meta name="generator" content="vscode">
<title>Gal-Game UI Editor</title>
<link rel="canonical" href="https://huggingface.co/spaces/SenY/GalGameUI">
<link href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://unpkg.com/[email protected]/css/font-awesome.min.css" rel="stylesheet">
<meta name="theme-color" content="#7952b3">
<style>
[aria-expanded=false] .text-expanded {
display: none;
}
[aria-expanded=true] .text-collapsed {
display: none;
}
a {
color: inherit;
}
hr {
margin: 0.5rem;
padding: 0;
}
#left {
background-repeat: no-repeat;
background-position: center bottom;
background-size: contain;
position: relative;
}
#edit {
background-repeat: no-repeat;
background-size: contain;
}
input {
padding: 0 1rem;
background: rgba(0, 0, 0, 0);
border: rgba(0, 0, 0, 0) solid 1px;
width: 100%;
height: 100%;
display: flex;
align-items: center;
font-size: 100%;
z-index: 3;
}
.shadow-text {
padding: 0 1rem;
display: flex;
align-items: center;
z-index: 3;
}
#edit .row2 {
display: flex;
align-items: stretch;
}
:root {
--messageWindowSize: 25%;
--mainMassageHeight: 100%;
--userInterfaceHeight: 20%;
}
#messageWindow {
margin: 0;
padding: 0;
height: var(--messageWindowSize);
}
#mainMassage {
height: var(--mainMassageHeight);
}
#userInterface {
font-family: Georgia, 'Times New Roman', Times, serif;
height: var(--userInterfaceHeight);
width: 100%;
display: flex;
margin: 0;
padding: 0;
justify-content: space-evenly;
align-items: center;
}
#userInterface>* {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.25);
border: 1px dashed rgba(255, 255, 255, 0.5);
font-size: calc(clamp(100%, 1vh, 5vh))
}
#left,
#right {
height: 100%;
}
#right {
padding-left: 0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
}
#left * {
text-align: center;
font-weight: 900;
}
#left .row2 {
justify-content: center;
}
#result {
background: rgb(0, 0, 0);
text-align: center;
}
#result>img {
transform-origin: top;
max-width: 100vw;
max-height: 100vh;
}
.relative {
position: relative;
}
#controller {
list-style-type: none;
z-index: 32768;
}
#controller .input-group {
justify-content: space-around;
align-items: center;
}
#emptySpace {
height: calc(100% - var(--messageWindowSize));
flex-direction: column;
}
#emptySpace>* {
width: 100%;
display: flex;
justify-content: end;
align-items: center;
height: 5%;
font-size: 100%;
}
#emptySpace>*>* {
padding-right: 0.5rem;
}
.watermark {
-webkit-text-stroke: 1px rgb(0, 0, 0);
paint-order: stroke fill;
color: rgba(255, 255, 255, 0.8);
font-size: 100%;
}
.recording {
color: red;
font-weight: bold;
}
</style>
<link id="googleFont" href="https://fonts.googleapis.com/css?family=Noto+Sans+JP" rel="stylesheet">
<style id="fontFamily">
body {
font-family: "Noto Sans JP";
}
</style>
<style id="text-shadowPreview">
#mainMassage input {
text-shadow: 1px -0px 0 rgb(0, 0, 0), 1px 0px 0 rgb(0, 0, 0), 1px 1px 0 rgb(0, 0, 0), 0px 1px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0), -1px 0px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0);
}
</style>
<style id="text-shadow">
</style>
<link href="https://getbootstrap.jp/docs/5.0/examples/sticky-footer-navbar/sticky-footer-navbar.css"
rel="stylesheet">
</head>
<body class="d-flex flex-column bg-dark">
<main class="flex-shrink-0">
<div class="container-fluid">
<div class="row">
<div id="result" class="d-none col-12 p-0 m-0 vh-100"></div>
</div>
<div class="row">
<div class="col-lg-7 p-0 m-0 relative" id="edit">
<div id="emptySpace" class="p-0 m-0">
<div class="recording d-none">
<div>●REC</div>
</div>
<div class="watermark">
<div>Gal-Game UI Editor</div>
</div>
<div class="watermark">
<div>https://huggingface.co/spaces/SenY/GalGameUI</div>
</div>
</div>
<div id="messageWindow" class="row">
<div class="col-12 p-0 m-0 h-100">
<div id="mainMassage" class="row">
<div id="left" class="col-3 p-0 m-0">
<div class="p-0" style="height:100%" id="leftTexts">
</div>
</div>
<div id="right" class="col-9 m-0">
<div class="h-100 p-0" id="rightTexts">
</div>
</div>
</div>
<div id="userInterface" class="text-light d-none">
<div>
<div>Q-Save</div>
</div>
<div>
<div>Q-Load</div>
</div>
<div>
<div>Save</div>
</div>
<div>
<div>Load</div>
</div>
<div>
<div>Auto</div>
</div>
<div>
<div>Skip</div>
</div>
<div>
<div>Log</div>
</div>
<div>
<div>Config</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-5 text-light bg-dark bg-gradient" id="controller">
<h6><u>All images are processed on your browser. No data are sent to any servers.</u></h6>
<div class="input-group">
<button id="render" type="button" class="btn btn-success">Render</button>
</div>
<hr>
<h6>Image</h6>
<div class="input-group">
<label for="upload">
<button id="uploadButton" type="button" class="btn btn-primary">Set Image</button>
</label>
<input id="upload" type="file" class="d-none">
<input id="faceUpload" type="file" class="d-none">
<div class="vr"></div>
<label for="faceUpload">
<button id="faceUploadButton" type="button" class="btn btn-primary">Face Icon</button>
</label>
<label for="faceRemove">
<button id="faceRemoveButton" type="button" class="btn btn-danger">Remove Icon</button>
</label>
</div>
<hr>
<h6>Window</h6>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">TopColor</span>
<input name="topColor" type="color" class="form-control form-control-color" id="topColor"
value="#000000">
<div class="vr"></div>
<span class="input-group-text bg-secondary text-light">TopAlpha</span>
<input name="topAlpha" type="range" class="form-control form-range" id="topAlpha" value="0.35"
step="0.01" max="1">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">BtmColor</span>
<input name="btmColor" type="color" class="form-control form-control-color" id="btmColor"
value="#9999EE">
<div class="vr"></div>
<span class="input-group-text bg-secondary text-light">BtmAlpha</span>
<input name="btmAlpha" type="range" class="form-control form-range" id="btmAlpha" value="0.45"
step="0.01" max="1">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">GoogleFont</span>
<select name="googleFontInput" class="form-control" id="googleFontInput">
<option>Aoboshi One</option>
<option>BIZ UDGothic</option>
<option>BIZ UDMincho</option>
<option>BIZ UDPGothic</option>
<option>BIZ UDPMincho</option>
<option>Cherry Bomb One</option>
<option>Chokokutai</option>
<option>Darumadrop One</option>
<option>Dela Gothic One</option>
<option>DotGothic16</option>
<option>Hachi Maru Pop</option>
<option>Hina Mincho</option>
<option>IBM Plex Sans JP</option>
<option>Kaisei Decol</option>
<option>Kaisei HarunoUmi</option>
<option>Kaisei Opti</option>
<option>Kaisei Tokumin</option>
<option>Kiwi Maru</option>
<option>Klee One</option>
<option>Kosugi</option>
<option>Kosugi Maru</option>
<option>M PLUS 1</option>
<option>M PLUS 1 Code</option>
<option>M PLUS 1p</option>
<option>M PLUS 2</option>
<option>M PLUS Rounded 1c</option>
<option>Mochiy Pop One</option>
<option>Mochiy Pop P One</option>
<option>Monomaniac One</option>
<option>Murecho</option>
<option>New Tegomin</option>
<option selected="selected">Noto Sans JP</option>
<option>Noto Serif JP</option>
<option>Palette Mosaic</option>
<option>Potta One</option>
<option>Rampart One</option>
<option>Reggae One</option>
<option>Rock 3D</option>
<option>RocknRoll One</option>
<option>Sawarabi Gothic</option>
<option>Sawarabi Mincho</option>
<option>Shippori Antique</option>
<option>Shippori Antique B1</option>
<option>Shippori Mincho</option>
<option>Shippori Mincho B1</option>
<option>Shizuru</option>
<option>Slackside One</option>
<option>Stick</option>
<option>Train One</option>
<option>Tsukimi Rounded</option>
<option>Yomogi</option>
<option>Yuji Boku</option>
<option>Yuji Hentaigana Akari</option>
<option>Yuji Hentaigana Akebono</option>
<option>Yuji Mai</option>
<option>Yuji Syuku</option>
<option>Yusei Magic</option>
<option>Zen Antique</option>
<option>Zen Antique Soft</option>
<option>Zen Kaku Gothic Antique</option>
<option>Zen Kaku Gothic New</option>
<option>Zen Kurenaido</option>
<option>Zen Maru Gothic</option>
<option>Zen Old Mincho</option>
</select>
<span class="input-group-text bg-secondary text-light">LocalFont</span>
<input name="fontFamilyInput" type="text" class="form-control" id="fontFamilyInput" value="">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">font-size</span>
<input name="fontSizeInput" type="range" class="form-control form-range" id="fontSizeInput"
value="0.8" step="0.01" min="0.25" max="1">
</div>
<div class="input-group">
<button id="textShadowToggleA" type="button" class="btn btn-primary">Text-Stroke
(Recommended)</button>
<button id="textShadowToggleB" type="button" class="btn btn-primary opacity-50">Text-Stroke
(Shadow)</button>
<div class="vr"></div>
<button id="userInterfaceToggle" type="button"
class="btn btn-primary opacity-50">Fake-UI</button>
</div>
<hr>
<div class="input-group">
<button id="waterMarkToggle" type="button" class="btn btn-warning">WaterMark</button>
<button id="recordingToggle" type="button" class="btn btn-warning opacity-50">●REC</button>
</div>
<hr>
<h6>
<a data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false"
aria-controls="collapseExample">
Advanced
<i class="fa fa-angle-left text-expanded"></i>
<i class="fa fa-angle-down text-collapsed"></i>
</a>
</h6>
<div class="collapse" id="collapseExample">
<div class="input-group">
<span class="input-group-text bg-secondary text-light">NameSpaceLength</span>
<input name="nameSpaceLength" type="range" class="form-control form-range"
id="nameSpaceLength" value="3" step="1" min="0" max="12">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">fontColor</span>
<input name="fontColor" type="color" class="form-control form-control-color"
id="fontColor" value="#ffffff">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">StrokeColor</span>
<input name="strokeColor" type="color" class="form-control form-control-color"
id="strokeColor" value="#000000">
<span class="input-group-text bg-secondary text-light">StrokeWeight</span>
<input name="strokeWeight" type="range" class="form-control form-range" id="strokeWeight"
value="0.05" step="0.01" min="0.01" max="0.2">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">WindowSize</span>
<input name="windowSize" type="range" class="form-control form-range" id="windowSize"
value="25" step="1" min="10" max="100">
<span class="input-group-text bg-secondary text-light">Padding</span>
<input name="mainMessagePaddingSize" type="range" class="form-control form-range"
id="mainMessagePaddingSize" value="0" step="0.1" min="0" max="2">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">leftLines</span>
<input name="leftLineLength" type="number" class="form-control form-number"
id="leftLineLength" value="4" step="1" min="1">
<span class="input-group-text bg-secondary text-light">rightLines</span>
<input name="rightLineLength" type="number" class="form-control form-number"
id="rightLineLength" value="4" step="1" min="1">
</div>
<div class="input-group">
<span class="input-group-text bg-secondary text-light">Render Scale</span>
<input name="renderScale" type="range" class="form-control form-range" id="renderScale"
value="2" step="0.5" min="1" max="4">
</div>
<hr>
<div class="input-group">
<label for="upload">
<button id="resetStorage" type="button" class="btn btn-danger">ResetCookies</button>
</label>
</div>
</div>
</div>
<div class="col-lg-12 text-light bg-dark bg-gradient p-4" id="help">
<h1>ヘルプ</h1>
<h2>概要</h2>
<p>ギャルゲーのスクリーンショット風画像の生成を補助するツールです。</p>
<p>画像データは全てブラウザ上で処理されサーバーに送信されたりはしませんのでお好きな画像をお使いください。</p>
<p>AI生成された画像に限らず好きな画像を利用可能です。</p>
<p>生成される画像に関しては当方は一切権利を主張しませんので元画像の権利に問題が無ければ商用・非商用を問わず自由にご利用頂けます。</p>
<p>どのような使い方をされているのか見たいのでここの<a
href="https://huggingface.co/spaces/SenY/GalGameUI">URL</a>付きで画像を掲載して頂いたり<a
href="https://twitter.com/user_vkff5833/status/1699858475193626909"
target="_blank">Twitter</a>のリプライや引用RTなどで教えて頂けると嬉しいです。
<p>このソフトウェア(webアプリ、HTMLファイル、Javascript)そのものに対するライセンスは付与していないので転載・改変はご遠慮ください。</p>
<h2>基本的な使い方</h2>
<ul>
<li>"Set Image"を押して画像を設定する。</li>
<li>名前欄とテキスト欄に好きなメッセージを入れる</li>
<li>Renderを押すと画像が生成されるのでそれを保存する。</li>
</ul>
<h2>最近の更新</h2>
<ul>
<li>
<ul>
<li>Google Fontsからフォントを選択できるようにした。</li>
<li>FontColorの変更に対応した。</li>
</ul>
</li>
<li>
<ul>
<li>名前欄とメッセージ欄の行数を変更できるようにした。</li>
<li>メッセージウィンドウの高さ変動の幅を10%~100%に拡張した。</li>
<li>UIを整理すると共にAdvanced部を折りたたむようにした。</li>
<li>ストロークの色と太さの変更に対応した。</li>
<li>ストロークの選択をデフォルトでRecommendedにすると共に、プレビューは常にプレビュー用のCSSを使うよう仕様変更した。</li>
<li>名前欄の左右の比率を非表示を含めて調整出来るようにした。</li>
</ul>
</li>
</ul>
<h2>設定項目</h2>
<ul>
<li>Face Icon</li>
<li>Remove Icon</li>
<li>
<ul>
<li>顔アイコンを設定・削除する。背景透過済画像を推奨</li>
</ul>
</li>
<li>Window Color</li>
<li>
<ul>
<li>メッセージウィンドウの背景色と透過度を上下でそれぞれ設定</li>
</ul>
</li>
<li>Font</li>
<li>font-family</li>
<li>
<ul>
<li>デフォルト以外のフォントを利用したい場合はフォント名をここに入力。</li>
</ul>
</li>
<li>font-size</li>
<li>
<ul>
<li>フォントの大きさを設定。</li>
</ul>
</li>
<li>Text-Stroke</li>
<li>
<ul>
<li>Recommended</li>
<li>
<ul>
<li>-webkit-text-strokeをフォントサイズの5%で設定したもの。大抵の場合実際のレンダリングではこちらのほうが綺麗に出るがプレビューでは表示がおかしくなる。
</li>
</ul>
</li>
<li>Shadow</li>
<li>
<ul>
<li>text-shadowで8方向に1pxずつ置いてレンダリングしたもの。webkit意外の場合など</li>
</ul>
</li>
</ul>
</li>
<li>Fake-UI</li>
<li>
<ul>
<li>セーブボタン等のUIっぽいものの表示・非表示を切り替える。</li>
<li>それぞれのボタンはクリックすることで消えるがここでON・OFFをすることで全て復活します。デザインの都合でボタンの数などを減らしたい時に。</li>
</ul>
</li>
<li>Advanced</li>
<li>
<ul>
<li>その他のちょっとややこしい設定など</li>
<li>Window Size</li>
<li>
<ul>
<li>メッセージウィンドウの高さそのものを調整。</li>
</ul>
</li>
<li>Padding</li>
<li>
<ul>
<li>メッセージウィンドウの外周に対するテキスト表示エリアの隙間の大きさ。行間の調整などに。</li>
</ul>
</li>
<li>StrokeColor, StrokeWeight</li>
<li>
<ul>
<li>文字の縁取りと太さの設定。Weightはプレビューには反映されません。</li>
</ul>
</li>
<li>Render Scale</li>
<li>
<ul>
<li>画像としてレンダリングする時の解像度設定。初期値のまま動かさないことを推奨。</li>
</ul>
</li>
<li>WaterMark</li>
<li>
<ul>
<li>右上のURL透かしのON・OFFを切り替えます。現時点では透かしをオフにすることに対する制限は特に設けていません。</li>
</ul>
</li>
<li>Reset Cookies</li>
<li>
<ul>
<li>保存されている過去のパラメータを全て削除して初期化。</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</main>
<img id="face" class="d-none">
<img id="image"
src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/4gKwSUNDX1BST0ZJTEUAAQEAAAKgbGNtcwRAAABtbnRyUkdCIFhZWiAH5wAJAAEADgAuACZhY3NwTVNGVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1kZXNjAAABIAAAAEBjcHJ0AAABYAAAADZ3dHB0AAABmAAAABRjaGFkAAABrAAAACxyWFlaAAAB2AAAABRiWFlaAAAB7AAAABRnWFlaAAACAAAAABRyVFJDAAACFAAAACBnVFJDAAACFAAAACBiVFJDAAACFAAAACBjaHJtAAACNAAAACRkbW5kAAACWAAAACRkbWRkAAACfAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACQAAAAcAEcASQBNAFAAIABiAHUAaQBsAHQALQBpAG4AIABzAFIARwBCbWx1YwAAAAAAAAABAAAADGVuVVMAAAAaAAAAHABQAHUAYgBsAGkAYwAgAEQAbwBtAGEAaQBuAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMQgAABd7///MlAAAHkwAA/ZD///uh///9ogAAA9wAAMBuWFlaIAAAAAAAAG+gAAA49QAAA5BYWVogAAAAAAAAJJ8AAA+EAAC2xFhZWiAAAAAAAABilwAAt4cAABjZcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltjaHJtAAAAAAADAAAAAKPXAABUfAAATM0AAJmaAAAmZwAAD1xtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAEcASQBNAFBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEL/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAKAA4ADAREAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAUGAwQHAgH/xAAaAQEAAwEBAQAAAAAAAAAAAAAAAwQFAgYB/9oADAMBAAIQAxAAAAGa8lsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi7UUNcg0Z48Pfz38bUXcvTmm6U/r59AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdbjhIAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4CWAYAAAAAAAA+YAAAAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9FYAEoAAAAAAAAQ4AAAAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4lAAAAAAAAAAAAw4AAAAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwIAAAAAAAAAAAAw4AAAAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwSAAAAAA+QSgGkIEmAAAACFAAk7+iAlrhAAHEykIAACUyZEgAAisYQAAAF4AAAAGEdgGDSYSTAAAACFAHB1VG7TWDwAEFzYKAAiH9kgAAGRywjAAGo4wAAA4bAPEAAw4AAAAACFAHCQAo0gAQQADQANGACDYA0AAAmRAyCAAA4AKAAGxgABToAw4AAAAACFAHGAANFAA+JAGAAAFACCAACIAEQoAF6wAABVAyAGFAAAIYAw4AAAAACFAHFAAEAAABFAAAAHHAFGAAAoAAFAAAY4AAADPHwBAkkkIYAw4AAAAACFAHFAAFBAABHAA/xgHAAgAAAYADEkkkA4AAAAC4AGAAAAAAAw4AAAAACFAHDAABFAAFHAUA4xHAwgAAAYAGAAAAAgAAAAAAzAHAAAAAAw4AAAAACFAHDAABFAAFHAgAwHHAIAAAAwACBAAAAAAAAAAAADHAAAAAAw4AAAAACFAHDAABFAAFHA4QAGHAG7AAAAAFHAAAAAAQAAAQWD6IAAAAAAwAAAAACFAHDAABFAAFHGg4AFHABDAAGAAHIwAAAAAO9ARw4AYBADOAAoAAAAAACFAHDAABFAAFHAowALHAEAQABwAAoCAGCAAIEeADoA3HW/BAAgb5AAAACFAHDAABFAAFHAgiVMHAAw0V6YAArDyCHAAhwnbAAABau1mAAtOxAAAABgAAkAAHhAADjAA3rNjAABrd4A4AGQy+ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiQB4uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAG4HoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmaopAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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"
class="d-none">
<script src="https://unpkg.com/[email protected]/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script src="https://unpkg.com/[email protected]/dist/html2canvas.min.js" crossorigin="anonymous"></script>
<script>
const hex2rgb = function (hex) {
if (hex.slice(0, 1) == "#") hex = hex.slice(1);
if (hex.length == 3) hex = hex.slice(0, 1) + hex.slice(0, 1) + hex.slice(1, 2) + hex.slice(1, 2) + hex.slice(2, 3) + hex.slice(2, 3);
return [hex.slice(0, 2), hex.slice(2, 4), hex.slice(4, 6)].map(function (str) {
return parseInt(str, 16);
});
}
const createEditor = function () {
let image = document.getElementById("image");
let face = document.getElementById("face");
let naturalAspect = image.naturalWidth / image.naturalHeight;
let height = image.naturalHeight;
let width = height * naturalAspect;
let col = 12;
while (width > window.document.documentElement.clientWidth || height > window.document.documentElement.clientHeight) {
height--;
width = height * naturalAspect;
}
document.getElementById("edit").style.width = width + 'px';
document.getElementById("edit").style.height = height + 'px';
document.getElementById("left").setAttribute("class", "p-0 m-0");
document.getElementById("right").setAttribute("class", "");
let lc = "col-" + document.getElementById("nameSpaceLength").value;
let rc = "col-" + (12 - document.getElementById("nameSpaceLength").value);
if (document.getElementById("nameSpaceLength").value == 0) {
lc = "d-none";
}
if (document.getElementById("nameSpaceLength").value == 12) {
rc = "d-none";
}
document.getElementById("left").classList.add(lc);
document.getElementById("right").classList.add(rc);
document.getElementById("right").style.paddingTop = document.getElementById("mainMessagePaddingSize").value + 'rem';
document.getElementById("right").style.paddingBottom = document.getElementById("mainMessagePaddingSize").value + 'rem';
document.getElementById("rightTexts").textContent = "";
for (let i = 0; i < document.getElementById("rightLineLength").value; i++) {
let row2 = document.createElement("div");
let input = document.createElement("input");
let shadowText = document.createElement("div");
shadowText.setAttribute("class", "shadow-text d-none text-light");
input.name = "rightText" + (i + 1);
row2.classList.add("row2");
row2.appendChild(input);
row2.appendChild(shadowText);
input.classList.add("text-light");
input.value = "";
if (!window.localStorage.length) {
input.value = "Line of " + (i + 1);
}
let v = window.localStorage.getItem(input.name);
if (v) {
input.value = v;
}
input.addEventListener("change", function (e) {
if (input.name && input.value) {
window.localStorage.setItem(input.name, input.value);
}
if (input.name && !input.value) {
window.localStorage.removeItem(input.name);
}
});
document.getElementById("rightTexts").appendChild(row2);
}
document.getElementById("leftTexts").textContent = "";
for (let i = 0; i < document.getElementById("leftLineLength").value; i++) {
let row2 = document.createElement("div");
let input = document.createElement("input");
let shadowText = document.createElement("div");
shadowText.setAttribute("class", "shadow-text d-none text-light");
input.name = "leftText" + (i + 1);
row2.classList.add("row2");
row2.appendChild(input);
row2.appendChild(shadowText);
input.classList.add("text-light");
input.value = "";
if (!window.localStorage.length && i == 2) {
input.value = "Name";
}
let v = window.localStorage.getItem(input.name);
if (v) {
input.value = v;
}
input.addEventListener("change", function (e) {
if (input.name && input.value) {
window.localStorage.setItem(input.name, input.value);
}
if (input.name && !input.value) {
window.localStorage.removeItem(input.name);
}
});
document.getElementById("leftTexts").appendChild(row2);
}
//linear-gradient(rgba(170, 100, 101, 0.7), rgba(145, 152, 229, 0.9))
let bg = "linear-gradient(rgba(" + hex2rgb(document.getElementById("topColor").value) + ", " + document.getElementById("topAlpha").value + "), rgba(" + hex2rgb(document.getElementById("btmColor").value) + ", " + document.getElementById("btmAlpha").value + "))";
document.getElementById("messageWindow").style.backgroundImage = bg;
document.querySelectorAll(".row2").forEach(el => {
el.style.height = (100 / Array.from(el.parentElement.querySelectorAll(".row2")).length) + "%";
});
let sparse = 0;
if (document.querySelectorAll("#left .row2").length > 1) {
sparse = 100 / (document.querySelectorAll("#left .row2").length - 1);
}
document.getElementById("left").style.height = (100 + sparse) + "%";
document.getElementById("left").style.top = (-1 * sparse) + "%";
document.querySelectorAll("#right input, #left input, #emptySpace>*>*").forEach(el => {
el.style.fontSize = (el.parentNode.offsetHeight * document.querySelector("#fontSizeInput").value) + "px";
});
}
document.querySelectorAll("input").forEach(el => {
addEventListener("change", function (e) {
if (el.name && el.value) {
window.localStorage.setItem(el.name, el.value);
}
if (el.name && !el.value) {
window.localStorage.removeItem(el.name);
}
});
})
const saveImage = function (image) {
document.getElementById("controller").classList.add("d-none");
let edit = document.getElementById("edit");
let result = document.getElementById("result");
let naturalAspect = image.naturalWidth / image.naturalHeight;
let width = window.document.documentElement.clientHeight * naturalAspect
let height = window.document.documentElement.clientHeight;
result.classList.remove("d-none");
result.textContent = "";
let loading = document.createElement("div");
result.appendChild(loading);
loading.classList.add("spinner-border");
loading.classList.add("text-primary");
createEditor();
window.scrollTo(0, 0);
setTimeout(function () {
html2canvas(document.getElementById("edit"), {
scale: document.getElementById("renderScale").value,
windowWidth: image.naturalWidth * 2,
windowHeight: image.naturalHeight * 2,
width: image.naturalWidth,
height: image.naturalHeight,
onclone: (x) => {
x.getElementById("edit").style.width = image.naturalWidth + "px";
x.getElementById("edit").style.height = image.naturalHeight + "px";
x.getElementById("edit").classList.add("m-0");
x.getElementById("edit").classList.add("p-0");
x.querySelectorAll(".shadow-text").forEach(el => {
el.classList.remove("d-none");
el.style.fontSize = (el.parentNode.offsetHeight * document.querySelector("#fontSizeInput").value) + "px";
el.textContent = el.parentNode.querySelector("input").value;
el.parentNode.querySelector("input").classList.add("d-none");
});
return x;
}
}).then(canvas => {
result.textContent = "";
let i = document.createElement("img");
i.setAttribute("src", canvas.toDataURL('image/png'));
result.appendChild(i);
});
}, 1);
}
document.getElementById("result").addEventListener("click", function (e) {
document.getElementById("result").classList.add("d-none");
document.getElementById("controller").classList.remove("d-none");
let image = document.getElementById("image");
document.getElementById("edit").style.backgroundImage = 'url("' + image.getAttribute("src") + '")';
createEditor();
});
document.getElementById("render").addEventListener("click", function (e) {
saveImage(image);
});
document.querySelectorAll("#controller input").forEach(el => {
el.addEventListener("change", function () {
createEditor();
});
});
let image = document.getElementById("image");
document.getElementById("edit").style.backgroundImage = 'url("' + image.getAttribute("src") + '")';
createEditor();
document.getElementById("upload").addEventListener("change", function () {
let reader = new FileReader();
let u = this;
reader.onload = function () {
let image = document.getElementById("image");
image.setAttribute("src", reader.result);
document.getElementById("edit").style.backgroundImage = 'url("' + image.getAttribute("src") + '")';
setTimeout(function () {
createEditor();
u.value = null;
}, 500);
}
reader.readAsDataURL(u.files[0]);
});
document.getElementById("faceUpload").addEventListener("change", function () {
let reader = new FileReader();
let u = this;
reader.onload = function () {
let face = document.getElementById("face");
face.setAttribute("src", reader.result);
document.getElementById("left").style.backgroundImage = 'url("' + face.getAttribute("src") + '")';
setTimeout(function () {
createEditor();
u.value = null;
}, 500);
}
reader.readAsDataURL(u.files[0]);
});
document.getElementById("uploadButton").addEventListener("click", function () {
document.getElementById("upload").click();
});
document.getElementById("faceUploadButton").addEventListener("click", function () {
document.getElementById("faceUpload").click();
});
document.getElementById("resetStorage").addEventListener("click", function () {
window.localStorage.clear();
alert("All settings have been initialized. Please reload to activate.");
});
document.getElementById("faceRemoveButton").addEventListener("click", function () {
let face = document.getElementById("face");
face.removeAttribute("src");
document.getElementById("left").style.backgroundImage = "none";
setTimeout(function () {
createEditor();
}, 1);
});
window.onresize = function () {
createEditor();
}
document.getElementById("fontFamilyInput").addEventListener("change", function () {
let f = document.getElementById("fontFamily");
let i = this;
if (!i.value) {
f.textContent = 'body { font-family: "Noto Sans JP"; }';
} else {
f.textContent = 'body { font-family: "' + i.value.trim() + '"; }';
}
});
document.getElementById("googleFontInput").addEventListener("change", function () {
let f = document.getElementById("fontFamily");
let i = this;
document.getElementById("googleFont").setAttribute("href", "https://fonts.googleapis.com/css?family=" + i.value.trim());
f.textContent = 'body { font-family: "' + i.value.trim() + '"; }';
});
document.getElementById("fontColor").addEventListener("change", function () {
document.documentElement.style.setProperty('--bs-light-rgb', hex2rgb(document.getElementById("fontColor").value));
createEditor();
});
document.getElementById("windowSize").addEventListener("change", function () {
document.documentElement.style.setProperty('--messageWindowSize', this.value + "%");
createEditor();
});
const setStroke = function (mode) {
let fontSize = Math.max.apply(null, [document.querySelector("#left input").style.fontSize.replace("px", ""), document.querySelector("#right input").style.fontSize.replace("px", ""), 8]);
let strokeSize = Math.ceil(fontSize * document.getElementById("strokeWeight").value);
let strokeColor = hex2rgb(document.getElementById("strokeColor").value);
let css = '.shadow-text {-webkit-text-stroke: ' + strokeSize + 'px rgb(0, 0, 0) ;paint-order: stroke fill;}'.replaceAll('rgb(0, 0, 0)', 'rgb(' + strokeColor + ')');
let css2 = '#mainMassage input {text-shadow: 1px -0px 0 rgb(0, 0, 0), 1px 0px 0 rgb(0, 0, 0), 1px 1px 0 rgb(0, 0, 0), 0px 1px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0), -1px 0px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0);}'.replaceAll('rgb(0, 0, 0)', 'rgb(' + strokeColor + ')');
document.getElementById("text-shadow").textContent = css;
document.getElementById("text-shadowPreview").textContent = css2;
if (mode == "b") {
document.getElementById("text-shadow").textContent = '.shadow-text {text-shadow: 1px -0px 0 rgb(0, 0, 0), 1px 0px 0 rgb(0, 0, 0), 1px 1px 0 rgb(0, 0, 0), 0px 1px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0), -1px 0px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0);}'.replaceAll('rgb(0, 0, 0)', 'rgb(' + strokeColor + ')');
document.getElementById("text-shadowPreview").textContent = '#mainMassage input {text-shadow: 1px -0px 0 rgb(0, 0, 0), 1px 0px 0 rgb(0, 0, 0), 1px 1px 0 rgb(0, 0, 0), 0px 1px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0), -1px 0px 0 rgb(0, 0, 0), -1px -1px 0 rgb(0, 0, 0);}'.replaceAll('rgb(0, 0, 0)', 'rgb(' + strokeColor + ')');
}
}
setStroke();
document.getElementById("strokeWeight").addEventListener("change", function () {
setStroke();
});
document.getElementById("strokeColor").addEventListener("change", function () {
setStroke();
});
document.getElementById("textShadowToggleA").addEventListener("click", function () {
document.getElementById("textShadowToggleB").classList.add("opacity-50");
this.classList.toggle("opacity-50");
if (this.classList.contains("opacity-50")) {
document.getElementById("text-shadow").textContent = "";
document.getElementById("text-shadowPreview").textContent = "";
} else {
setStroke();
}
});
document.getElementById("textShadowToggleB").addEventListener("click", function () {
document.getElementById("textShadowToggleA").classList.add("opacity-50");
this.classList.toggle("opacity-50");
if (this.classList.contains("opacity-50")) {
document.getElementById("text-shadow").textContent = "";
document.getElementById("text-shadowPreview").textContent = "";
} else {
setStroke("b");
}
});
document.getElementById("userInterfaceToggle").addEventListener("click", function () {
this.classList.toggle("opacity-50");
if (!this.classList.contains("opacity-50")) {
document.documentElement.style.setProperty('--mainMassageHeight', "80%");
document.getElementById("userInterface").classList.remove("d-none");
document.querySelectorAll("#userInterface>*").forEach(el => el.classList.remove("d-none"));
createEditor();
} else {
document.documentElement.style.setProperty('--mainMassageHeight', "100%");
document.getElementById("userInterface").classList.add("d-none");
createEditor();
}
});
document.getElementById("waterMarkToggle").addEventListener("click", function () {
this.classList.toggle("opacity-50");
if (this.classList.contains("opacity-50")) {
document.querySelectorAll(".watermark").forEach(el => el.classList.add("d-none"));
} else {
document.querySelectorAll(".watermark").forEach(el => el.classList.remove("d-none"));
}
createEditor();
});
document.getElementById("recordingToggle").addEventListener("click", function () {
this.classList.toggle("opacity-50");
if (this.classList.contains("opacity-50")) {
document.querySelectorAll(".recording").forEach(el => el.classList.add("d-none"));
} else {
document.querySelectorAll(".recording").forEach(el => el.classList.remove("d-none"));
}
createEditor();
});
document.querySelectorAll("input").forEach(el => {
let v = window.localStorage.getItem(el.name);
if (v) {
el.value = v;
let evt = new Event("change");
el.dispatchEvent(evt)
}
});
document.querySelectorAll("#userInterface > div").forEach(el => {
el.addEventListener("click", function () {
el.classList.add("d-none");
});
});
</script>
</body>
</html>