diff --git a/dot-spectrum/.eslintignore b/.eslintignore
similarity index 100%
rename from dot-spectrum/.eslintignore
rename to .eslintignore
diff --git a/dot-spectrum/.eslintrc.cjs b/.eslintrc.cjs
similarity index 100%
rename from dot-spectrum/.eslintrc.cjs
rename to .eslintrc.cjs
diff --git a/dot-spectrum/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
similarity index 100%
rename from dot-spectrum/.github/workflows/deploy.yml
rename to .github/workflows/deploy.yml
diff --git a/.gitignore b/.gitignore
index c6bba59..6635cf5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,130 +1,10 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Snowpack dependency directory (https://snowpack.dev/)
-web_modules/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional stylelint cache
-.stylelintcache
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variable files
+.DS_Store
+node_modules
+/build
+/.svelte-kit
+/package
.env
-.env.development.local
-.env.test.local
-.env.production.local
-.env.local
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# Next.js build output
-.next
-out
-
-# Nuxt.js build / generate output
-.nuxt
-dist
-
-# Gatsby files
-.cache/
-# Comment in the public line in if your project uses Gatsby and not Next.js
-# https://nextjs.org/blog/next-9-1#public-directory-support
-# public
-
-# vuepress build output
-.vuepress/dist
-
-# vuepress v2.x temp and cache directory
-.temp
-.cache
-
-# Docusaurus cache and generated files
-.docusaurus
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# yarn v2
-.yarn/cache
-.yarn/unplugged
-.yarn/build-state.yml
-.yarn/install-state.gz
-.pnp.*
+.env.*
+!.env.example
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/dot-spectrum/.npmrc b/.npmrc
similarity index 100%
rename from dot-spectrum/.npmrc
rename to .npmrc
diff --git a/dot-spectrum/.prettierignore b/.prettierignore
similarity index 100%
rename from dot-spectrum/.prettierignore
rename to .prettierignore
diff --git a/dot-spectrum/.prettierrc b/.prettierrc
similarity index 100%
rename from dot-spectrum/.prettierrc
rename to .prettierrc
diff --git a/README.md b/README.md
index 4d4aac6..b046b00 100644
--- a/README.md
+++ b/README.md
@@ -3,13 +3,36 @@ dot spectrum is a pixel-art-like spectrum analyzer. w/ Web Audio API.
![preview](./preview.gif)
-## 🛠️ Getting Start
-~~`yarn static -p 8080`~~
+## Developing
+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+```bash
+npm run dev
+# or start the server and open the app in a new browser tab
+npm run dev -- --open
+```
+## Building
+
+To create a production version of your app:
+
+```bash
+npm run build
+```
+
+You can preview the production build with `npm run preview`.
+
+> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
+
+## TODO
+- ドット化サイズを1/nと、ピクセルサイズの両方で指定可能にする
+- キャンバスの大きさ テンプレート
+- Media Recorder
+ - mp4対応
+- audio プレイヤー デザイン
## 📚 Tech Stack
- Canvas API
diff --git a/dot-spectrum/.gitignore b/dot-spectrum/.gitignore
deleted file mode 100644
index 6635cf5..0000000
--- a/dot-spectrum/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.DS_Store
-node_modules
-/build
-/.svelte-kit
-/package
-.env
-.env.*
-!.env.example
-vite.config.js.timestamp-*
-vite.config.ts.timestamp-*
diff --git a/dot-spectrum/README.md b/dot-spectrum/README.md
deleted file mode 100644
index b046b00..0000000
--- a/dot-spectrum/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# .Spectrum
-dot spectrum is a pixel-art-like spectrum analyzer. w/ Web Audio API.
-
-![preview](./preview.gif)
-
-
-## Developing
-
-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
-
-```bash
-npm run dev
-
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
-```
-
-## Building
-
-To create a production version of your app:
-
-```bash
-npm run build
-```
-
-You can preview the production build with `npm run preview`.
-
-> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
-
-## TODO
-- ドット化サイズを1/nと、ピクセルサイズの両方で指定可能にする
-- キャンバスの大きさ テンプレート
-- Media Recorder
- - mp4対応
-- audio プレイヤー デザイン
-
-## 📚 Tech Stack
-- Canvas API
-- Web Audio API
-- PWA
-
-## ❤️ Acknowledgments
-
-マルモニカ - 患者長ひっく (https://twitter.com/hicchicc) 様
-
-https://00ff.booth.pm/items/4927023
diff --git a/dot-spectrum/package.json b/dot-spectrum/package.json
deleted file mode 100644
index bb6348e..0000000
--- a/dot-spectrum/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "dot-spectrum",
- "version": "0.0.1",
- "private": true,
- "scripts": {
- "dev": "vite dev",
- "build": "vite build",
- "preview": "vite preview",
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
- "test": "vitest",
- "lint": "prettier --plugin-search-dir . --check . && eslint .",
- "format": "prettier --plugin-search-dir . --write ."
- },
- "devDependencies": {
- "@sveltejs/adapter-auto": "^2.0.0",
- "@sveltejs/adapter-static": "^2.0.3",
- "@sveltejs/kit": "^1.20.4",
- "@typescript-eslint/eslint-plugin": "^6.0.0",
- "@typescript-eslint/parser": "^6.0.0",
- "eslint": "^8.28.0",
- "eslint-config-prettier": "^8.5.0",
- "eslint-plugin-svelte": "^2.30.0",
- "prettier": "^2.8.0",
- "prettier-plugin-svelte": "^2.10.1",
- "svelte": "^4.0.5",
- "svelte-check": "^3.4.3",
- "tslib": "^2.4.1",
- "typescript": "^5.0.0",
- "vite": "^4.4.2",
- "vitest": "^0.34.0"
- },
- "type": "module",
- "dependencies": {
- "svelte-i18n": "^4.0.0"
- }
-}
diff --git a/dot-spectrum/preview.gif b/dot-spectrum/preview.gif
deleted file mode 100644
index 0bed1b9..0000000
Binary files a/dot-spectrum/preview.gif and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/android-chrome-192x192.png b/dot-spectrum/static/assets/icons/android-chrome-192x192.png
deleted file mode 100644
index ea95046..0000000
Binary files a/dot-spectrum/static/assets/icons/android-chrome-192x192.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/android-chrome-512x512.png b/dot-spectrum/static/assets/icons/android-chrome-512x512.png
deleted file mode 100644
index 11ca21b..0000000
Binary files a/dot-spectrum/static/assets/icons/android-chrome-512x512.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/apple-touch-icon.png b/dot-spectrum/static/assets/icons/apple-touch-icon.png
deleted file mode 100644
index 57d559a..0000000
Binary files a/dot-spectrum/static/assets/icons/apple-touch-icon.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/browserconfig.xml b/dot-spectrum/static/assets/icons/browserconfig.xml
deleted file mode 100644
index 5520495..0000000
--- a/dot-spectrum/static/assets/icons/browserconfig.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
- #ffffff
-
-
-
diff --git a/dot-spectrum/static/assets/icons/favicon-16x16.png b/dot-spectrum/static/assets/icons/favicon-16x16.png
deleted file mode 100644
index 94a2535..0000000
Binary files a/dot-spectrum/static/assets/icons/favicon-16x16.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/favicon-32x32.png b/dot-spectrum/static/assets/icons/favicon-32x32.png
deleted file mode 100644
index 3a5c475..0000000
Binary files a/dot-spectrum/static/assets/icons/favicon-32x32.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/favicon.ico b/dot-spectrum/static/assets/icons/favicon.ico
deleted file mode 100644
index 9538620..0000000
Binary files a/dot-spectrum/static/assets/icons/favicon.ico and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/mstile-150x150.png b/dot-spectrum/static/assets/icons/mstile-150x150.png
deleted file mode 100644
index a282e3e..0000000
Binary files a/dot-spectrum/static/assets/icons/mstile-150x150.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/icons/safari-pinned-tab.svg b/dot-spectrum/static/assets/icons/safari-pinned-tab.svg
deleted file mode 100644
index fc97544..0000000
--- a/dot-spectrum/static/assets/icons/safari-pinned-tab.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
diff --git a/dot-spectrum/static/assets/logo.png b/dot-spectrum/static/assets/logo.png
deleted file mode 100644
index c1672db..0000000
Binary files a/dot-spectrum/static/assets/logo.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/logo_192.png b/dot-spectrum/static/assets/logo_192.png
deleted file mode 100644
index 93ef1fd..0000000
Binary files a/dot-spectrum/static/assets/logo_192.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/logo_192_trim.png b/dot-spectrum/static/assets/logo_192_trim.png
deleted file mode 100644
index 9cd5d69..0000000
Binary files a/dot-spectrum/static/assets/logo_192_trim.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/moon-big.png b/dot-spectrum/static/assets/moon-big.png
deleted file mode 100644
index df6c332..0000000
Binary files a/dot-spectrum/static/assets/moon-big.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/moon.png b/dot-spectrum/static/assets/moon.png
deleted file mode 100644
index 6078e6c..0000000
Binary files a/dot-spectrum/static/assets/moon.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/sun-big.png b/dot-spectrum/static/assets/sun-big.png
deleted file mode 100644
index 1c75b63..0000000
Binary files a/dot-spectrum/static/assets/sun-big.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/sun.png b/dot-spectrum/static/assets/sun.png
deleted file mode 100644
index 5c01640..0000000
Binary files a/dot-spectrum/static/assets/sun.png and /dev/null differ
diff --git a/dot-spectrum/static/assets/thumbnail.jpg b/dot-spectrum/static/assets/thumbnail.jpg
deleted file mode 100644
index fd7e9cf..0000000
Binary files a/dot-spectrum/static/assets/thumbnail.jpg and /dev/null differ
diff --git a/dot-spectrum/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf b/dot-spectrum/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf
deleted file mode 100644
index ccb31f4..0000000
Binary files a/dot-spectrum/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf and /dev/null differ
diff --git a/dot-spectrum/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt b/dot-spectrum/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt
deleted file mode 100644
index 037f26d..0000000
--- a/dot-spectrum/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt
+++ /dev/null
@@ -1,275 +0,0 @@
-
-x12y12pxMaruMinya「マルミーニャ」
-
-Version 2023-07-14
-
-© 2023 hicc
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ 概要
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-マルミーニャは縦横12ピクセルサイズの丸ゴシックピクセルフォントです。
-「かわいさ」の中にも「まじめさ」があり、幅広い用途でピクセルの表現に寄り添うことができるフォントです。
-
-本テキストには利用規約やフォントの仕様、また便利な各グリフの一覧などを収めましたのでご活用下さい。
-表示フォントをx12y12pxMaruMinya、文字サイズを96dpiの場合9pt、72dpiの場合12ptとすると、対応した表示環境であればピクセルの滲みのないビットマップ表示で字形を確認することができます。
-
-
-【x12y12pxMaruMinya_Readme.txt】
-本テキストです。利用規約に同意の上、遵守してフォントをご利用下さい。
-
-【x12y12pxMaruMinya.ttf】
-フォント本体です。任意の方法でインストールして下さい。
-
-【ファイル形式:TrueType Outlines】
-必要に応じた画像化や加工、WEBフォント化しての運用も可能です。
-
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ 利用規約
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-フォントから生成されるデータは全て無償で利用できます。表現する内容・媒体も問いません。
-.ttfファイルを同梱してのゲームリリースや、商用利用も可能です。
-
-加工・改変・再配布も可能となっていますが、フォントの著作権は放棄しておりません。
-配布するフォント及び改変データの著作権は、全て患者長ひっくが有します。
-加工・改変の有無に関わらず、フォントの著作者であることを主張することはできません。
-(よって、フォントそのものを販売したり、それに近い行為は違法性が生じますので、これを禁じます。)
-
-フォント利用の際の出典・クレジット表記などは、して頂いても、しなくても、どちらでも構いません。
-いかなる媒体に使用・表記された場合でも、その内容や思想には関知せず、一切の責任を負いません。
-また、万一フォントを利用したことによる損害が生じることがあっても、一切補償しません。
-
-この規約は予告なく変更する場合がありますが、フォントの利用料を請求する変更は行いません。
-
-© 2023 患者長ひっく
-
-
-付記:
-利用規約の変更があった場合、本テキストではなくx0y0pxFreeFontのwebサイトに記載される規約に従ってご利用下さい。
-
-クレジット表記などで英名表示が必要な場合の名前は「hicc」として下さい。(大文字の場合「HICC」も可)
-個人名でなく製作元として表記する場合「ゼロピクセルフリーフォント」「x0y0pxFreeFont」「00FF」といった表記も可能です。
-ツイッターアドレスに関連して表記する場合は「患者長ひっく@hicchicc」「@hicchicc」「hicchicc」など、お好みでどうぞ。
-いずれの場合においても名称を表記しても、表記しなくてもご自由にフォントをお使いいただけます。
-(表記に関するお問い合わせは意外と多いので付記していますが、そこまでこだわりはありません。ほとんどの場合、ご随意に記載していただいて大丈夫です)
-
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ バージョンアップ履歴
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-Version 2023-07-14 初版
-
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ 連絡先、ダウンロード先URL
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-お気付きの点、ご不明な点がありましたらお気軽にご連絡ください。
-特になくても応援していただけると、とても嬉しいです。
-(ツイッターでのいいねやリプライ、マシュマロひとつでも日々の制作の大きな励みになっています。いつもありがとうございます)
-
-【ツイッター】
-https://twitter.com/hicchicc
-
-【マシュマロ】(匿名メッセージサービス)
-https://marshmallow-qa.com/hicchicc
-
-【x0y0pxFreeFont - BOOTH】
-https://00ff.booth.pm/
-
-【x0y0pxFreeFont】
-https://hicchicc.github.io/00ff/
-
-
-◆2023-07-14 サーバーへのFTP接続が安定せず旧サイトの更新が困難となった為、GitHub Pagesへゼロピクセルフリーフォントは移転しました。
-【旧URL】http://www17.plala.or.jp/xxxxxxx/00ff/
-【新URL】https://hicchicc.github.io/00ff/
-旧URLサイトは期間未定で現状のまま残りますが、移転の案内すら出せない状態になりそうです。URLの記載更新やブックマークの更新など、可能な範囲でご対応をお願い致します。
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ 使用可能な漢字グリフ一覧
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-【JIS第1水準漢字】2965字
-亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕
-
-【JIS第2水準漢字】3390字
-弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙
-
-【印刷標準字体】1022字(JIS第1水準及び第2水準漢字との重複あり)
-啞蛙鴉埃挨曖靄軋斡按庵鞍闇已夷畏韋帷萎椅葦彙飴謂閾溢鰯尹咽殷淫隕蔭于迂盂烏鬱云暈穢曳洩裔穎嬰翳腋曰奄宛怨俺冤袁婉焉堰淵焰筵厭鳶燕閻嚥嗚凰嘔鴨甕襖謳鶯鷗鸚臆俤瓜呵苛珂迦訛訶跏嘩瑕榎窩蝦蝸鍋顆牙瓦臥俄峨訝蛾衙駕芥乖廻徊恢晦堺潰鞋諧檜蟹咳崖蓋漑骸鎧喀廓摑攪愕萼諤顎鰐樫絣筈葛闊鰹萱奸串旱函咸姦宦柑竿悍桓涵菅嵌鉗澗翰諫瞰韓檻灌玩雁翫頷癌贋几卉其祁耆埼悸揆毀箕畿窺諱徽櫃妓祇魏蟻掬麴吃屹拮謔仇臼汲灸咎邱柩笈躬厩嗅舅炬渠裾噓墟鋸遽欅匈怯俠脇莢竟卿僑嬌蕎鋏頰橿疆饗棘髷巾僅禽饉狗惧軀懼俱喰寓窟粂偈荊珪畦脛頃痙詣禊閨稽頸髻蹊鮭繫睨戟隙抉頁訣蕨姸倦虔捲牽喧硯腱鍵瞼鹼呟眩舷諺乎姑狐股涸菰袴壺跨糊醐齬亢勾叩尻吼肛岡庚杭肴咬垢巷恍恰狡桁胱崗梗喉腔蛤幌煌鉤敲睾膏閤膠篝縞薨糠藁鮫壙曠劫毫傲壕濠嚙轟剋哭鵠乞忽惚昏痕渾褌叉些嗟蓑磋坐挫晒柴砦犀賽鰓榊柵炸窄簀刹拶紮撒薩珊餐纂霰攢讃斬懺仔弛此址祀屍屎柿茨恣砥祠翅舐疵趾斯覗嗜滓獅幟摯嘴熾髭贄而峙痔餌竺雫𠮟悉蛭嫉膝櫛柘洒娑這奢闍杓灼綽錫雀惹娶腫諏鬚呪竪綬聚濡襦帚酋袖羞葺蒐箒皺輯鍬繡蹴讐鷲廿揉絨粥戌閏楯馴杵薯藷汝抒鋤妾哨秤娼逍廂椒湘竦鈔睫蛸鉦摺蔣裳誦漿蕭踵鞘篠聳鍾醬囁杖茸嘗擾攘饒拭埴蜀蝕燭褥沁芯呻宸疹蜃滲賑鍼壬訊腎靱塵儘笥祟膵誰錐雖隋隧芻趨鮨丼凄栖棲甥貰蜻醒錆臍瀞鯖脆贅脊戚晰蹟泄屑浙啜楔截尖苫穿閃陝釧揃煎羨腺詮煽箋撰箭賤蟬癬喘膳狙疽疏甦楚鼠遡蘇齟爪宋炒叟蚤曾湊葱搔槍漕箏噌瘡瘦踪艘薔甑叢藪躁囃竈鰺仄捉塞粟杣遜噂樽鱒侘咤詫陀拿荼唾舵楕驒苔殆堆碓腿頽戴醍托鐸凧襷燵坦疸耽啖蛋毯湛痰綻憚歎簞譚灘雉馳蜘緻筑膣肘冑紐酎厨蛛註誅疇躊佇楮箸儲瀦躇吊帖喋貼牒趙銚嘲諜寵捗枕槌鎚辻剃挺釘掟梯逞啼碇鼎綴鄭薙諦蹄鵜荻擢溺姪轍辿唸塡篆顚囀纏佃淀澱臀兎妬兜堵屠賭宕沓套疼桶淘萄逗棹樋蕩鄧橙濤檮櫂禱撞禿瀆栃咄沌遁頓吞貪邇匂韮涅禰捏捻撚膿囊杷爬琶頗播芭罵蟇胚徘牌稗狽煤帛柏剝粕箔莫駁瀑曝畠捌撥潑醱筏跋噺氾汎阪叛袢絆斑槃幡攀挽磐蕃屁庇砒脾痺鄙誹臂枇毘梶媚琵薇靡疋畢逼謬豹憑瓢屛廟牝瀕憫鬢斧阜訃俯釜腑孵鮒巫葡撫蕪諷祓吻扮焚糞幷聘蔽餅斃袂僻璧襞蔑瞥扁篇騙娩鞭哺圃蒲戊牡姥菩呆彷庖苞疱捧逢蜂蓬鞄鋒牟芒茫虻榜膀貌鉾謗吠卜勃梵昧邁枡俣沫迄曼蔓瞞饅鬘鰻蜜鵡冥瞑謎麵蒙朦勿籾悶揶爺鑓喩揄愈楡尤釉楢猷飫輿孕妖拗涌痒傭熔瘍蠅沃螺萊蕾洛埒拉辣瀾爛鸞狸裡罹籬戮慄掠笠溜榴劉瘤侶梁聊菱寥蓼淋燐鱗屢蛉蠣櫟礫轢煉漣憐簾鰊攣賂魯濾廬櫓蘆鷺弄牢狼榔瘻﨟臘朧蠟籠聾肋勒漉麓窪歪猥隈或罠椀碗彎
-
-【その他の漢字】18字
-㐧咖喱埵彅氶玊祜秭罣鉃靑髙黑﨑𠮷𡚴𥝱
-
-U+3427 㐧 「第」の略字
-U+5496 咖 カレーの漢字表記用
-U+55B1 喱 カレーの漢字表記用
-U+57F5 埵 般若心経の表示用
-U+5F45 彅 氏名用
-U+6C36 氶 氏名用
-U+738A 玊 傷が付いた玉、玉を磨く職人を意味する
-U+795C 祜 さいわい、幸福などを意味する
-U+79ED 秭 じょ(し)、10の24乗
-U+7F63 罣 般若心経の表示用
-U+9243 鉃 「鉄」の異体字、鉄道各社のロゴなどで使用されている字形
-U+9751 靑 「青」の旧字体
-U+9AD9 髙 「高」の異体字、氏名用、通称「はしごだか」
-U+9ED1 黑 「黒」の旧字体
-U+FA11 﨑 「崎」の異体字、氏名用、通称「たつさき」「たつざき」
-U+20BB7 𠮷 「吉」の異体字、氏名用、通称「つちよし」
-U+216B4 𡚴 幽霊文字となっている「妛」の本来の字形
-U+25771 𥝱 じょ(し)、10の24乗
-
-
-
-漢字は符号化文字集合 JIS X 0213:2004 におおむね沿った、いわゆる「JIS2004字形」「N付き」と呼ばれる形となっています。
-しかし、これに完全に準拠していることを保証するものではありません。
-
-【参考:JIS X 0213:2004 により変更された168文字】
-逢芦飴溢茨鰯淫迂厩噂餌襖迦牙廻恢晦蟹葛鞄釜翰翫徽
-祇汲灸笈卿饗僅喰櫛屑粂祁隙倦捲牽鍵諺巷梗膏鵠甑叉
-榊薩鯖錆鮫餐杓灼酋楯薯藷哨鞘杖蝕訊逗摺撰煎煽穿箭
-詮噌遡揃遜腿蛸辿樽歎註瀦捗槌鎚辻挺鄭擢溺兎堵屠賭
-瀞遁謎灘楢禰牌這秤駁箸叛挽誹樋稗逼謬豹廟瀕斧蔽瞥
-蔑篇娩鞭庖蓬鱒迄儲餅籾爺鑓愈猷漣煉簾榔屢冤叟咬嘲
-囀徘扁棘橙狡甕甦疼祟竈筵篝腱艘芒虔蜃蠅訝靄靱騙鴉
-
-【参考:JIS X 0213:2004 で追加された10文字】
-俱剝𠮟吞噓姸屛幷瘦繫
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ 特殊な平仮名・片仮名グリフ一覧
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-ゔゕゖ ヴヵヶ ヷヸヹヺ ゟ(「より」の合字)
-
- ゙ ゚(合成用の濁点 U+3099 と半濁点 U+309A)
-
-合成用濁点の使用例:
-あ゙い゙ え゙お゙ な゙に゙ぬ゙ね゙の゙ ま゙み゙む゙め゙も゙ や゙ ゆ゙ よ゙ ら゙り゙る゙れ゙ろ゙ わ゙ゐ゙ゑ゙を゙ん゙ ぁ゙ぃ゙ぅ゙ぇ゙ぉ゙ ゃ゙ ゅ゙ ょ゙ っ゙
-
-合成用濁点と半濁点はあらゆるグリフと合成できますが、平仮名との合成を想定して調整してあります。
-字形との重複を避ける場合は、通常の濁点(゛)半濁点(゜)、半角カタカナ濁点(゙)半濁点(゚)を活用して下さい。
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ ゲームパッド関連グリフ一覧(Unicode私用領域 U+E000 から)
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-※このReadmeテキストの表示フォントをマルミーニャにすることで表示されます。
-
- U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
-POV E000
-Common E010
-Type-XB E020
-Type-PS E030
-Type-SW E040
-
-U+E000 - U+E00D 各社ゲームパッドに共通する、十字状の操作ボタンに対応しています。
-U+E010 - U+E01B 各社ゲームパッドに共通する、4つのボタンと2本のスティックに対応しています。 などとすることでスティックを回す操作を表示できます。
-U+E020 - U+E02E XBゲームパッドに対応しています。及びボタンは後方互換性のために用意していますが、ほとんどのケースで現行のとボタンを使用すれば問題ないと思われます。
-U+E030 - U+E03D PSゲームパッドに対応しています。及びボタンは後方互換性のために用意しています。ボタンの配置順はXBゲームパッドの順序と同じくしてあります。
-U+E040 - U+E04F SW左右独立コントローラー及び一体型ゲームパッドに対応しています。ボタンの配置順は十字状の操作ボタンの順序と同じくしてあります。
-
-
-
-付記:ゲームに関連して活用しやすいグリフ
-
-【矢印関連グリフ一覧】
-←↑→↓↔↕↖↗↘↙ ⇄⇅⇆⇋⇌ ⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙ ⇦⇧⇨⇩ ⤴⤵
-
-【テーブルゲーム関連グリフ一覧】
-♠♡♢♣ ♤♥♦♧ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅
-
-【感情表現や漫符として活用できるグリフ一覧】
-‼ ⁇ ⁈ ⁉ ☠ ♩ ♪ ♫ ♬ ♡ ♥ ❤ 💕 💢 💦 💧
-
-【簡易的なゲージとして活用できるブロック要素グリフ一覧】
-縦方向:▁▂▃▄▅▆▇█ 横方向:█▉▊▋▌▍▎▏
-
-その他にも多くの記号がマルミーニャには実装されています。Windows環境であれば付属のcharmap.exeなどでお確かめ下さい。
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ スペース関連グリフ一覧
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-※視認するために2つの黒塗りフルブロックの間に挿入してあります。テキスト情報だけを用いて字間やレイアウトを微調整したい場合などにご活用ください。
-
-█ █ U+0020 SPACE 6px いわゆる「半角スペース」
-█ █ U+00A0 NO-BREAK SPACE 6px スペース箇所での自動的な改行を防ぐ特殊なスペースです。
-█ █ U+2000 EN QUAD 6px 固定幅のENスペースです。
-█ █ U+2001 EM QUAD 12px 固定幅のEMスペースです。
-█ █ U+2002 EN SPACE 6px ENスペース。欧文組版において N の文字と同じ幅を持つことに由来しますが、現在はEMスペースの1/2を意味します。
-█ █ U+2003 EM SPACE 12px EMスペース。欧文組版において M の文字と同じ幅を持つことに由来しますが、現在は文字の高さと同じ幅のスペースを意味します。
-█ █ U+2004 THREE-PER-EM SPACE 4px 1/3のEMスペースです。
-█ █ U+2005 FOUR-PER-EM SPACE 3px 1/4のEMスペースです。
-█ █ U+2006 SIX-PER-EM SPACE 2px 1/6のEMスペースです。
-█ █ U+2007 FIGURE SPACE 6px 図形間隔、数字幅のスペースです。
-█ █ U+2008 PUNCTUATION SPACE 6px 句読点スペースです。ピリオドなどと同じ幅を持ちます。
-█ █ U+2009 THIN SPACE 2px 狭いスペースです。2px相当の幅を持ちます。
-█ █ U+200A HAIR SPACE 1px 非常に狭いスペースです。
-██ U+200B ZERO WIDTH SPACE 0px ゼロ幅スペースです。視認することはできませんが、1文字として扱われるスペースです。
-█ █ U+3000 IDEOGRAPHIC SPACE 12px いわゆる「全角スペース」、和字間隔です。
-
-␣ U+2423: OPEN BOX 6px 空白記号。プログラミング等の入力内容を説明する際、スペース入力を明示するためのグリフです。通常のスペースと同等の6px相当の幅を持ちます。
-
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ 運用上のヒント・注意点
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
-ベタ組みでは文字間・行間ともに、ほぼ限界までみっちりと詰まった字面となるように設計されているフォントです。
-必要に応じて、ゆったりと文字間や行間を持たせて活用していただくのもオススメです。
-
-
-漢字は正確性よりも、デザイン性を重視した字形を取っているものが多数あります。
-正確な文字の形を識別する必要のある用途にはあまり適していません。
-
-
-半角数字の0(ゼロ)と半角英字のO(オー)は同一形状となっており、これらの判別が必要になる用途には適していません。
-必要に応じフォントを改変する場合は、Ø(U+00D8 ストローク付きラテン大文字O)のグリフ形状をコピーして置き換えるとよいでしょう。
-
-
-範囲は限られますがラテン拡張文字も実装されています。ギリシャ文字・キリル文字は全角仕様となります。
-
-
-縦書きは無料版・支援版ともに、現バージョンでは非対応となっています。ご了承ください。
-
-
-
-
-
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-■ おわりとはじまりに
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-皆様の応援やご支援のおかげで、約2年ぶりに新作ピクセルフォントをリリースすることができました!
-本当にありがとうございます。
-
-丸ゴシックのピクセルフォントの新たな選択肢として、誠心誠意製作しました。
-このマルミーニャを末永くご愛用いただければ嬉しく思います。
-
-
-患者長ひっく
-
-
-
diff --git a/index.html b/index.html
deleted file mode 100644
index 3295bed..0000000
--- a/index.html
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
-
-
-
- .Spectrum | ドット絵風スペクトルアナライザー
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
使い方
-
- - ドット絵をアップ (png, jpg...)
- - 音声をアップ (wav, mp3...)
- - 音声を再生!
-
-
サポートされているバージョン
-
-
- - Chrome 98+
- - Edge 98+
- - Firefox 94+
- - Opera 84+
- - Safari 15.4+
-
-
-
-
- 🖼️ 画像をアップロード
-
-
- 画像が大き過ぎます。ドット化してください。(256px × 256px以下の画像が指定可能です。)
-
-
- 画像(
- 幅:
- 0px, 高さ:
- 0px
- )
-
-
-
- ドット化しますか?
- する
- /
- >しない
-
-
- ( N px × M px )
- × 1 /
-
- →( N px × M px )
-
-
-
-
-
-
-
-
-
-
-
-
-
- 全画面モードが使用できません
-
-
-
- 動画を作成中です...
- 画像と音声をアップロードしてください
- 動画をダウンロードする
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/main.js b/main.js
deleted file mode 100644
index eb52086..0000000
--- a/main.js
+++ /dev/null
@@ -1,428 +0,0 @@
-const DEFAULT_LANG = "ja";
-const LANGUAGES = ["ja", "en"];
-
-const img = new Image();
-let imageData;
-let memoAlpha;
-let logToPixelIndexMap;
-let audioContext;
-let nodeAnalyser;
-let recorderDestination;
-
-// parameters
-let background;
-let fftSize;
-let spectrumType;
-let spectrumSensitivity;
-let spectrumGridSize;
-let isDoPixelation;
-let pixelationSize;
-
-// - logic ----------------------------------------------------------------
-
-const getRGBAbyImageData = (imageData, x, y, width) => {
- return [
- imageData.data[(x + y * width) * 4],
- imageData.data[(x + y * width) * 4 + 1],
- imageData.data[(x + y * width) * 4 + 2],
- imageData.data[(x + y * width) * 4 + 3] / 255
- ];
-}
-
-const generateLogToPixelIndexMap = (fftSize, imageWidth) => {
- let map = structuredClone([...Array(imageWidth)].map(() => { return { begin: null, end: null }}));
- let count = 0;
- map[0].begin = 0;
-
- for (let i = 0; i < fftSize / 2; i++) {
- // cf. (w / imageWidth) * (count + 1) < Math.log(i) / Math.log(fftSize / 2) * w
- if (count + 1 < Math.log(i) / Math.log(fftSize / 2) * imageWidth) {
- map[count].end = i - 1;
- count++;
- map[count].begin = i;
- if (count >= imageWidth) {
- break;
- }
- }
- }
- if (!map[map.length - 1].end) {
- map[map.length - 1].end = fftSize / 2 - 1;
- }
- return structuredClone(map);
-}
-
-// ピクセル化(サンプリング) (pixelSizeの大きさ)
-const executePixelationSampling = (context, img, pixelSize) => {
- const newWidth = Math.floor(img.width / pixelSize);
- const newHeight = Math.floor(img.height / pixelSize);
-
- // draw original image
- context.canvas.width = img.width;
- context.canvas.height = img.height;
- context.drawImage(img, 0, 0);
-
- let imageData = context.getImageData(0, 0, img.width, img.height);
- let newImageData = new ImageData(newWidth, newHeight);
-
- for (let y = 0; y < img.height; y += pixelSize) {
- for (let x = 0; x < img.width; x += pixelSize) {
-
- let red = imageData.data[((img.width * y) + x) * 4];
- let green = imageData.data[((img.width * y) + x) * 4 + 1];
- let blue = imageData.data[((img.width * y) + x) * 4 + 2];
- let alpha = imageData.data[((img.width * y) + x) * 4 + 3];
-
- newImageData.data[((newWidth * (y / pixelSize)) + (x / pixelSize)) * 4] = red;
- newImageData.data[((newWidth * (y / pixelSize)) + (x / pixelSize)) * 4 + 1] = green;
- newImageData.data[((newWidth * (y / pixelSize)) + (x / pixelSize)) * 4 + 2] = blue;
- newImageData.data[((newWidth * (y / pixelSize)) + (x / pixelSize)) * 4 + 3] = alpha;
- }
- }
-
- context.canvas.width = newWidth;
- context.canvas.height = newHeight;
- context.putImageData(newImageData, 0, 0);
-
- return newImageData;
-}
-
-const padding = (size, numString) => {
- return ("0".repeat(size) + numString).slice(-size)
-}
-
-const formatDate = (date) => {
- const Y = date.getFullYear();
- const M = padding(2, date.getMonth() + 1);
- const D = padding(2, date.getDate());
- const h = padding(2, date.getHours());
- const m = padding(2, date.getMinutes());
- const s = padding(2, date.getSeconds());
- return (Y + "_" + M + "_" + D + "_" + h + "_" + m + "_" + s);
-}
-
-// rem単位をpx単位に変換する
-const convertRemToPx = (rem) => {
- var fontSize = getComputedStyle(document.documentElement).fontSize;
- return rem * parseFloat(fontSize);
-}
-
-// - event handler ----------------------------------------------------------------
-
-const uploadSound = () => {
- const audioElement = document.querySelector("audio");
- const file = document.querySelector("input[type=file]#audio-input").files[0];
- const reader = new FileReader();
-
- reader.addEventListener("load", () => {
- audioElement.src = reader.result;
-
- if (!audioContext) { // init audio context
- audioContext = new AudioContext();
- nodeAnalyser = audioContext.createAnalyser();
- nodeAnalyser.fftSize = fftSize;
- // 0~1の範囲でデータの動きの速さ 0だともっとも速く、1に近づくほど遅くなる
- nodeAnalyser.smoothingTimeConstant = 0.85;
-
- const nodeSource = audioContext.createMediaElementSource(audioElement);
- recorderDestination = audioContext.createMediaStreamDestination();
-
- nodeSource.connect(nodeAnalyser);
- nodeAnalyser.connect(recorderDestination);
- nodeAnalyser.connect(audioContext.destination);
- }
- }, false);
-
- if (file) { reader.readAsDataURL(file); }
-}
-
-const setImageErrorMassage = (boolean) => {
- const imgError = document.querySelector("#img-error");
- imgError.style.display = boolean ? "block" : "none";
-}
-
-const uploadImage = () => {
- const file = document.querySelector("input[type=file]#image-input").files[0];
- const reader = new FileReader();
-
- reader.addEventListener("load", () => {
- const previewCanvas = document.querySelector("#preview");
- const previewCtx = previewCanvas.getContext("2d");
- const imgInfoWidth = document.querySelector("#img-info-width");
- const imgInfoHeight = document.querySelector("#img-info-height");
- const previewContainer = document.querySelector(".img-preview-container");
-
- img.src = reader.result; // base64
-
- img.onload = () => {
- if (img.width * img.height > 256 * 256) {
- setImageErrorMassage(true);
- togglePixelation(true);
- } else {
- setImageErrorMassage(false);
- togglePixelation(false);
- }
-
- imgInfoWidth.textContent = String(img.width);
- imgInfoHeight.textContent = String(img.height);
- previewContainer.style.display = "block";
- previewCanvas.width = img.width;
- previewCanvas.height = img.height;
- previewCtx.drawImage(img, 0, 0);
-
- if (isDoPixelation) {
- onChangePixelationSize(pixelationSize); // TODO: [refactor] onChangePixelationSizeを使用せず ピクセル化する
- } else {
- imageData = previewCtx.getImageData(0, 0, img.width, img.height);
- updateAssociatedWithImageData(imageData.width, imageData.height);
- }
- };
- }, false);
-
- if (file) { reader.readAsDataURL(file); }
-}
-
-const updateAssociatedWithImageData = (imgWidth, imgHeight) => {
- memoAlpha = Array(imgWidth * imgHeight).fill(0);
- logToPixelIndexMap = generateLogToPixelIndexMap(fftSize, imgWidth);
-}
-
-const onChangeFftSize = (value) => {
- if (nodeAnalyser) {
- nodeAnalyser.fftSize = value;
- }
- if (img.src !== "") {
- logToPixelIndexMap = generateLogToPixelIndexMap(value, imageData.width);
- }
-}
-
-const onChangeSpectrumType = (value) => {
- spectrumType = value;
- document.querySelector("#pixel-mode-setting").style.display = (value === "pixel" ? "block" : "none");
-}
-
-const togglePixelation = (boolean) => {
- const pixelationDo = document.querySelector("#pixelation-do");
- const pixelationDoNot = document.querySelector("#pixelation-do-not");
-
- if ((boolean && !pixelationDo.classList.contains("action-link")) ||
- (!boolean && !pixelationDoNot.classList.contains("action-link"))) {
- return;
- }
-
- pixelationDo.classList.toggle("action-link");
- pixelationDoNot.classList.toggle("action-link");
- pixelationDo.classList.toggle("pixelation-active");
- pixelationDoNot.classList.toggle("pixelation-active");
- isDoPixelation = boolean;
- if (isDoPixelation) {
- pixelationDo.textContent = ">" + pixelationDo.textContent
- pixelationDoNot.textContent = pixelationDoNot.textContent.replace(">", "");
- document.querySelector("#pixelation-setting").style.display = "block";
-
- onChangePixelationSize(pixelationSize); // TODO: [refactor] onChangePixelationSizeを使用せず ピクセル化する
- } else {
- pixelationDoNot.textContent = ">" + pixelationDoNot.textContent
- pixelationDo.textContent = pixelationDo.textContent.replace(">", "");
- document.querySelector("#pixelation-setting").style.display = "none";
- }
-}
-
-const onChangePixelationSize = (value) => {
- pixelationSize = Math.max(2, value);
-
- if (img.src !== "") {
- const pixelationBeforeSize = document.querySelector("#pixelation-before-size");
- const pixelationAfterSize = document.querySelector("#pixelation-after-size");
-
- pixelationBeforeSize.textContent = `( ${img.width} px × ${img.height} px )`;
- pixelationAfterSize.textContent = `( ${Math.floor(img.width / pixelationSize)} px × ${Math.floor(img.height / pixelationSize)} px )`;
-
- if (isDoPixelation) {
- const previewCanvas = document.querySelector("#preview");
- const previewCtx = previewCanvas.getContext("2d");
-
- imageData = executePixelationSampling(previewCtx, img, pixelationSize);
- updateAssociatedWithImageData(imageData.width, imageData.height);
- }
- }
-
- return pixelationSize;
-}
-
-const toggleVersionInfo = () => {
- const versionInfo = document.querySelector("#version-info");
- versionInfo.style.display = versionInfo.style.display === "block" ? "none" : "block";
-}
-
-const translateLang = (lang) => {
- if (!LANGUAGES.includes(lang)) return;
-
- document.querySelectorAll(`[data-lang-${lang}]`).forEach((elm) => {
- if (!elm.hasAttribute(`data-lang-${DEFAULT_LANG}`)) { // 最初の変更時のみ
- elm.setAttribute(`data-lang-${DEFAULT_LANG}`, elm.textContent)
- }
- if (elm.hasAttribute(`data-lang-${lang}`)) {
- elm.textContent = elm.getAttribute(`data-lang-${lang}`);
- }
- })
-}
-
-const changeFullScreen = () => {
- if (!document.fullscreenEnabled) return;
-
- console.log("to full screen");
- const playerCanvas = document.querySelector("#player");
- playerCanvas.requestFullscreen();
-}
-
-// Media Recorderを使用して動画を作成する
-const makeVideo = () => {
- const audio = document.querySelector("audio");
- const error = document.querySelector("#capture-video-error");
- if (!audioContext || img.src === "" || /\.html/.test(audio.src)) {
- error.style.display = "block";
- return;
- } else {
- error.style.display = "none";
- }
-
- const canvas = document.querySelector("#player");
- const canvasStream = canvas.captureStream();
- const audioStream = recorderDestination.stream;
- const mediaStream = new MediaStream(); // canvasStream + audioStream
- [canvasStream, audioStream].forEach((stream) => {
- console.log(stream.getTracks());
- stream.getTracks().forEach((track) => mediaStream.addTrack(track));
- });
- const mediaRecorder = new MediaRecorder(mediaStream);
-
- const anchor = document.querySelector("#download-video");
- const message = document.querySelector("#capture-video-message");
-
- // TODO; encoding mp4 w/ffmpeg.wasm
-
- mediaRecorder.ondataavailable = (e) => {
- const videoBlob = new Blob([e.data], { type: e.data.type });
- blobUrl = window.URL.createObjectURL(videoBlob);
- anchor.download = formatDate(new Date()) + ".webm"; // file name
- anchor.href = blobUrl;
- anchor.style.display = "block";
- message.style.display = "none";
- }
-
- // play!
- message.style.display = "block";
- anchor.style.display = "none";
- const audioElement = document.querySelector("audio");
- audioElement.currentTime = 0;
- mediaRecorder.start();
- audioElement.play();
-
- setTimeout(() => {
- console.log("stop video");
- mediaRecorder.stop();
- }, audio.duration * 1000);
-}
-
-// - main ----------------------------------------------------------------
-
-window.onload = () => {
- // set parameters
- background = document.querySelector("#background").value;
- pixelationSize = document.querySelector("#pixelation-size").value;
- spectrumType = document.querySelector("#spectrum-type").value;
- fftSize = Number(document.querySelector("#spectrum-fft-size").value);
- spectrumSensitivity = Number(document.querySelector("#spectrum-sensitivity").value);
- spectrumGridSize = Number(document.querySelector("#spectrum-grid-size").value);
- spectrumSmoothTime = Number(document.querySelector("#spectrum-smooth-time").value);
-
- if (document.fullscreenEnabled) {
- document.querySelector("#full-screen-error").style.display = "none";
- } else {
- document.querySelector("#full-screen-button").setAttribute("disabled", true);
- }
-
- const playerCanvas = document.querySelector("#player");
- const playerCtx = playerCanvas.getContext("2d");
-
- const draw = () => {
- requestAnimationFrame(draw);
-
- const w = playerCanvas.width;
- const h = playerCanvas.height;
- playerCtx.clearRect(0, 0, w, h);
- playerCtx.beginPath();
- playerCtx.rect(0, 0, w, h);
- playerCtx.fillStyle = background;
- playerCtx.fill();
-
- if (!nodeAnalyser) return;
- const freqByteData = new Uint8Array(fftSize / 2);
- nodeAnalyser.getByteFrequencyData(freqByteData);
-
- if (spectrumType === "pixel") {
- if (img.src !== "") {
- const cellWidth = w / imageData.width;
- const cellHeight = h / imageData.height;
-
- // note
- // spectrumSmoothTime ... 1sec -> 30fr -> 1/30
- // spectrumSmoothTime ... 1000msec -> 30fr -> 1/60
- // spectrumSmoothTime ... 2sec -> 60fr -> 1/60
- const fps = 30;
- const alphaDecrement = (spectrumSmoothTime <= 0) ? 1 : 1000 / (spectrumSmoothTime * fps);
-
- for (let x = 0; x < imageData.width; x++) {
- const begin = logToPixelIndexMap[x].begin;
- const end = logToPixelIndexMap[x].end;
- const sum = freqByteData.slice(begin, end + 1).reduce((sum, num) => sum + num, 0);
- const ave = sum / (end - begin + 1) / 256;
- const gridSize = spectrumGridSize/ 2
-
- for (let y = 0; y < imageData.height; y++) {
- const rgba = getRGBAbyImageData(imageData, x, y, imageData.width);
- if (1 - (y / imageData.height) <= ave * spectrumSensitivity) {
- memoAlpha[y * imageData.height + x] = rgba[3];
- } else {
- memoAlpha[y * imageData.height + x] = Math.max(memoAlpha[y * imageData.height + x] - alphaDecrement, 0);
- }
- playerCtx.beginPath();
- playerCtx.rect(
- gridSize + cellWidth * x, gridSize + cellHeight * y,
- cellWidth - gridSize * 2, cellHeight - gridSize * 2
- );
-
- playerCtx.fillStyle = `rgba(${rgba[0]}, ${rgba[1]}, ${rgba[2]}, ${memoAlpha[y * imageData.height + x]})`;
- playerCtx.fill();
- }
- }
- } else {
- playerCtx.font = "32px";
- playerCtx.fillText("No Image", 20, 20);
- playerCtx.fillStyle = "black";
- }
- } else { // liner or log
- playerCtx.beginPath();
-
- for (let i = 0; i < freqByteData.length; i++) {
- const freqSum = freqByteData[i] / 256;
-
- if (spectrumType === "log") {
- playerCtx.rect(
- Math.log(i) / Math.log(freqByteData.length) * w, (1 - freqSum) * h,
- 1, freqSum * h
- )
- } else if (spectrumType === "liner") {
- playerCtx.rect(
- w / freqByteData.length * i, (1 - freqSum) * h,
- w / freqByteData.length, freqSum * h
- )
- }
- }
-
- playerCtx.fillStyle = "lightskyblue";
- playerCtx.fill();
- }
- }
- draw();
-}
diff --git a/manifest.json b/manifest.json
deleted file mode 100644
index 345b6c3..0000000
--- a/manifest.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": ".Spectrum",
- "short_name": ".Spectrum",
- "theme_color": "#579BB1",
- "background_color": "#ECE8DD",
- "start_url": "./index.html",
- "display": "standalone",
- "icons": [
- {
- "src": "./assets/icons/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "./assets/icons/android-chrome-512x512.png",
- "sizes": "512x512",
- "type": "image/png",
- "purpose": "any maskable"
- }
- ]
-}
diff --git a/mouse.js b/mouse.js
deleted file mode 100644
index 2cfab63..0000000
--- a/mouse.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const isMobile = () => {
- const regex = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;
- return regex.test(navigator.userAgent);
-}
-
-if (!isMobile()) {
- let ok = true;
- const player = document.querySelector("#player");
- player.addEventListener("mouseenter", () => ok = false, false);
- player.addEventListener("mouseleave", () => ok = true, false);
-
- const mouse = document.querySelector("#js-mouse");
- const style = window.getComputedStyle(mouse);
- const width = parseInt(style.width);
- const height = parseInt(style.height);
- window.onmousemove = (e) => {
- const x = e.clientX;
- const y = e.clientY;
- mouse.style.opacity = ok ? "1" : "0";
- mouse.style.transform = `translate(${x - x % width}px, ${y - y % height}px)`;
- }
-
- const hoverTargets = document.querySelectorAll("a,button,input,select,.action-link");
-
- hoverTargets.forEach(target => {
- target.addEventListener("mouseenter", () => {
- mouse.classList.add("js-hover");
- }, false);
- target.addEventListener("mouseleave", () => {
- mouse.classList.remove("js-hover");
- }, false);
- });
-}
diff --git a/dot-spectrum/package-lock.json b/package-lock.json
similarity index 100%
rename from dot-spectrum/package-lock.json
rename to package-lock.json
diff --git a/package.json b/package.json
index 1e23f5f..bb6348e 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,37 @@
{
- "devDependencies": {
- "node-static": "^0.7.11"
- }
+ "name": "dot-spectrum",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "vite dev",
+ "build": "vite build",
+ "preview": "vite preview",
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
+ "test": "vitest",
+ "lint": "prettier --plugin-search-dir . --check . && eslint .",
+ "format": "prettier --plugin-search-dir . --write ."
+ },
+ "devDependencies": {
+ "@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/adapter-static": "^2.0.3",
+ "@sveltejs/kit": "^1.20.4",
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
+ "@typescript-eslint/parser": "^6.0.0",
+ "eslint": "^8.28.0",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-svelte": "^2.30.0",
+ "prettier": "^2.8.0",
+ "prettier-plugin-svelte": "^2.10.1",
+ "svelte": "^4.0.5",
+ "svelte-check": "^3.4.3",
+ "tslib": "^2.4.1",
+ "typescript": "^5.0.0",
+ "vite": "^4.4.2",
+ "vitest": "^0.34.0"
+ },
+ "type": "module",
+ "dependencies": {
+ "svelte-i18n": "^4.0.0"
+ }
}
diff --git a/dot-spectrum/src/app.d.ts b/src/app.d.ts
similarity index 100%
rename from dot-spectrum/src/app.d.ts
rename to src/app.d.ts
diff --git a/dot-spectrum/src/app.html b/src/app.html
similarity index 100%
rename from dot-spectrum/src/app.html
rename to src/app.html
diff --git a/dot-spectrum/src/index.test.ts b/src/index.test.ts
similarity index 100%
rename from dot-spectrum/src/index.test.ts
rename to src/index.test.ts
diff --git a/dot-spectrum/src/lib/i18n/index.ts b/src/lib/i18n/index.ts
similarity index 100%
rename from dot-spectrum/src/lib/i18n/index.ts
rename to src/lib/i18n/index.ts
diff --git a/dot-spectrum/src/lib/i18n/locales/en.json b/src/lib/i18n/locales/en.json
similarity index 100%
rename from dot-spectrum/src/lib/i18n/locales/en.json
rename to src/lib/i18n/locales/en.json
diff --git a/dot-spectrum/src/lib/i18n/locales/ja.json b/src/lib/i18n/locales/ja.json
similarity index 100%
rename from dot-spectrum/src/lib/i18n/locales/ja.json
rename to src/lib/i18n/locales/ja.json
diff --git a/dot-spectrum/src/lib/image.ts b/src/lib/image.ts
similarity index 100%
rename from dot-spectrum/src/lib/image.ts
rename to src/lib/image.ts
diff --git a/dot-spectrum/src/lib/index.ts b/src/lib/index.ts
similarity index 100%
rename from dot-spectrum/src/lib/index.ts
rename to src/lib/index.ts
diff --git a/dot-spectrum/src/routes/+layout.ts b/src/routes/+layout.ts
similarity index 100%
rename from dot-spectrum/src/routes/+layout.ts
rename to src/routes/+layout.ts
diff --git a/dot-spectrum/src/routes/+page.svelte b/src/routes/+page.svelte
similarity index 100%
rename from dot-spectrum/src/routes/+page.svelte
rename to src/routes/+page.svelte
diff --git a/dot-spectrum/src/routes/footer.svelte b/src/routes/footer.svelte
similarity index 100%
rename from dot-spectrum/src/routes/footer.svelte
rename to src/routes/footer.svelte
diff --git a/dot-spectrum/src/routes/main/audioUploader.svelte b/src/routes/main/audioUploader.svelte
similarity index 100%
rename from dot-spectrum/src/routes/main/audioUploader.svelte
rename to src/routes/main/audioUploader.svelte
diff --git a/dot-spectrum/src/routes/main/imageUploader.svelte b/src/routes/main/imageUploader.svelte
similarity index 100%
rename from dot-spectrum/src/routes/main/imageUploader.svelte
rename to src/routes/main/imageUploader.svelte
diff --git a/dot-spectrum/src/routes/main/index.svelte b/src/routes/main/index.svelte
similarity index 100%
rename from dot-spectrum/src/routes/main/index.svelte
rename to src/routes/main/index.svelte
diff --git a/dot-spectrum/src/routes/main/playerCanvas.svelte b/src/routes/main/playerCanvas.svelte
similarity index 100%
rename from dot-spectrum/src/routes/main/playerCanvas.svelte
rename to src/routes/main/playerCanvas.svelte
diff --git a/dot-spectrum/src/routes/main/playerMenu.svelte b/src/routes/main/playerMenu.svelte
similarity index 100%
rename from dot-spectrum/src/routes/main/playerMenu.svelte
rename to src/routes/main/playerMenu.svelte
diff --git a/dot-spectrum/src/routes/mouse.svelte b/src/routes/mouse.svelte
similarity index 100%
rename from dot-spectrum/src/routes/mouse.svelte
rename to src/routes/mouse.svelte
diff --git a/dot-spectrum/src/routes/nav.svelte b/src/routes/nav.svelte
similarity index 100%
rename from dot-spectrum/src/routes/nav.svelte
rename to src/routes/nav.svelte
diff --git a/assets/icons/android-chrome-192x192.png b/static/assets/icons/android-chrome-192x192.png
similarity index 100%
rename from assets/icons/android-chrome-192x192.png
rename to static/assets/icons/android-chrome-192x192.png
diff --git a/assets/icons/android-chrome-512x512.png b/static/assets/icons/android-chrome-512x512.png
similarity index 100%
rename from assets/icons/android-chrome-512x512.png
rename to static/assets/icons/android-chrome-512x512.png
diff --git a/assets/icons/apple-touch-icon.png b/static/assets/icons/apple-touch-icon.png
similarity index 100%
rename from assets/icons/apple-touch-icon.png
rename to static/assets/icons/apple-touch-icon.png
diff --git a/assets/icons/browserconfig.xml b/static/assets/icons/browserconfig.xml
similarity index 100%
rename from assets/icons/browserconfig.xml
rename to static/assets/icons/browserconfig.xml
diff --git a/assets/icons/favicon-16x16.png b/static/assets/icons/favicon-16x16.png
similarity index 100%
rename from assets/icons/favicon-16x16.png
rename to static/assets/icons/favicon-16x16.png
diff --git a/assets/icons/favicon-32x32.png b/static/assets/icons/favicon-32x32.png
similarity index 100%
rename from assets/icons/favicon-32x32.png
rename to static/assets/icons/favicon-32x32.png
diff --git a/assets/icons/favicon.ico b/static/assets/icons/favicon.ico
similarity index 100%
rename from assets/icons/favicon.ico
rename to static/assets/icons/favicon.ico
diff --git a/assets/icons/mstile-150x150.png b/static/assets/icons/mstile-150x150.png
similarity index 100%
rename from assets/icons/mstile-150x150.png
rename to static/assets/icons/mstile-150x150.png
diff --git a/assets/icons/safari-pinned-tab.svg b/static/assets/icons/safari-pinned-tab.svg
similarity index 100%
rename from assets/icons/safari-pinned-tab.svg
rename to static/assets/icons/safari-pinned-tab.svg
diff --git a/assets/logo.png b/static/assets/logo.png
similarity index 100%
rename from assets/logo.png
rename to static/assets/logo.png
diff --git a/assets/logo_192.png b/static/assets/logo_192.png
similarity index 100%
rename from assets/logo_192.png
rename to static/assets/logo_192.png
diff --git a/assets/logo_192_trim.png b/static/assets/logo_192_trim.png
similarity index 100%
rename from assets/logo_192_trim.png
rename to static/assets/logo_192_trim.png
diff --git a/assets/moon-big.png b/static/assets/moon-big.png
similarity index 100%
rename from assets/moon-big.png
rename to static/assets/moon-big.png
diff --git a/assets/moon.png b/static/assets/moon.png
similarity index 100%
rename from assets/moon.png
rename to static/assets/moon.png
diff --git a/assets/sun-big.png b/static/assets/sun-big.png
similarity index 100%
rename from assets/sun-big.png
rename to static/assets/sun-big.png
diff --git a/assets/sun.png b/static/assets/sun.png
similarity index 100%
rename from assets/sun.png
rename to static/assets/sun.png
diff --git a/assets/thumbnail.jpg b/static/assets/thumbnail.jpg
similarity index 100%
rename from assets/thumbnail.jpg
rename to static/assets/thumbnail.jpg
diff --git a/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf b/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf
similarity index 100%
rename from assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf
rename to static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf
diff --git a/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt b/static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt
similarity index 100%
rename from assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt
rename to static/assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya_Readme.txt
diff --git a/dot-spectrum/static/favicon.png b/static/favicon.png
similarity index 100%
rename from dot-spectrum/static/favicon.png
rename to static/favicon.png
diff --git a/dot-spectrum/static/manifest.json b/static/manifest.json
similarity index 100%
rename from dot-spectrum/static/manifest.json
rename to static/manifest.json
diff --git a/dot-spectrum/static/styles/modern-css-reset/reset.min.css b/static/styles/modern-css-reset/reset.min.css
similarity index 100%
rename from dot-spectrum/static/styles/modern-css-reset/reset.min.css
rename to static/styles/modern-css-reset/reset.min.css
diff --git a/dot-spectrum/static/styles/style.css b/static/styles/style.css
similarity index 100%
rename from dot-spectrum/static/styles/style.css
rename to static/styles/style.css
diff --git a/dot-spectrum/static/sw.js b/static/sw.js
similarity index 100%
rename from dot-spectrum/static/sw.js
rename to static/sw.js
diff --git a/styles/modern-css-reset/reset.min.css b/styles/modern-css-reset/reset.min.css
deleted file mode 100644
index a8875d5..0000000
--- a/styles/modern-css-reset/reset.min.css
+++ /dev/null
@@ -1 +0,0 @@
-*,*::before,*::after{box-sizing:border-box}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}ul[role="list"],ol[role="list"]{list-style:none}html:focus-within{scroll-behavior:smooth}body{min-height:100vh;text-rendering:optimizeSpeed;line-height:1.5}a:not([class]){text-decoration-skip-ink:auto}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media(prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}
\ No newline at end of file
diff --git a/styles/style.css b/styles/style.css
deleted file mode 100644
index 9e15477..0000000
--- a/styles/style.css
+++ /dev/null
@@ -1,184 +0,0 @@
-@font-face {
- font-family: "x12y12pxMaruMinya";
- src: url("./../assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf") format('truetype');
- font-display: swap;
-}
-
-body {
- font-family: "x12y12pxMaruMinya", sans-serif;
- letter-spacing: 0.1em;
-}
-
-:focus {
- outline: none;
-}
-
-::selection {
- background-color: #c1e5f1;
-}
-
-/* utility class */
-
-.error {
- color: #F56565;
-}
-
-.note {
- color: #718096;
-}
-
-.action-link {
- text-decoration: underline;
- cursor: pointer;
-}
-
-/* other */
-
-input {
- background: #0000;
-}
-
-input[type=number] {
- padding-left: 0.5rem;
- max-width: 100px;
- text-align: center;
-
- border-top: none;
- border-right: none;
- border-left: none;
- border-bottom: solid 2px #dac5a4;
- transition: border 250ms linear;
-
- &:focus {
- outline: none;
- border-bottom: solid 2px #579BB1;
- }
-}
-
-input[type=file] {
- margin-top: 0.5rem;
- margin-bottom: 0.5rem;
-}
-
-select {
- background: #0000;
- min-height: 2rem;
-}
-
-nav {
- display: flex;
- align-items: center;
- justify-content: space-between;
- background: #f8f4ea;
- padding: 4px 8px 4px 8px;
-
- & .utility {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-left: 10px;
- background: #F8F4EA;
-
- & > * {
- margin-left: 10px;
- }
- }
-}
-
-main {
- background: #ECE8DD;
- line-height: 150%;
-
- & p {
- max-width: 720px;
- }
-}
-
-.container {
- width: fit-content;
- max-width: 100%;
- padding: 1rem;
- margin-right: auto;
- margin-left: auto;
-}
-
-.img-preview-container {
- display: none;
- overflow: auto;
- width: 100%;
-}
-
-.canvas-container {
- overflow: auto;
- width: min-content;
- max-width: 100%;
- max-height: 100vh;
-}
-
-#img-error {
- display: none;
-}
-
-.pixelation-active {
- color: #579BB1;
-}
-
-section {
- margin-top: 1rem;
-}
-
-
-footer {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 80px;
- color: white;
- background: #89b9bd;
-
- & a, :visited {
- color: #30736C;
- }
-
- & a:hover {
- color: #F29991;
- }
-
- & div {
- width: 100%;
-
- & p {
- text-align: center;
- }
-
- & div {
- display: flex;
- width: 80%;
- max-width: 500px;
- margin: 0 auto;
- align-items: center;
- justify-content: space-around;
- }
- }
-}
-
-#js-mouse {
- pointer-events: none;
- position: fixed;
- width: 20px;
- height: 20px;
- background-color: rgba(119, 70, 24, 0.2);
- transform: translate(0,0);
- transition: transform 0.05s ease-out;
- z-index: 9999;
- opacity: 0;
-}
-
-#js-mouse.js-hover {
- width: 30px;
- height: 30px;
- background-color: rgba(137, 185, 189, 0.5);
- transition: background-color 0.3s linear,
- width 0.3s ease-out,
- height 0.3s ease-out;
-}
\ No newline at end of file
diff --git a/dot-spectrum/svelte.config.js b/svelte.config.js
similarity index 100%
rename from dot-spectrum/svelte.config.js
rename to svelte.config.js
diff --git a/sw.js b/sw.js
deleted file mode 100644
index 908c4ba..0000000
--- a/sw.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Cache name
-const CACHE_NAME = "cache-v5";
-// Cache targets
-const urlsToCache = [
- "./",
- "./index.html",
- "./styles/style.css",
- "./styles/modern-css-reset/reset.min.css",
- "./main.js",
- "./assets/logo_192_trim.png",
- "./assets/thumbnail.jpg",
- "./assets/x12y12pxMaruMinya_2023-07-14/x12y12pxMaruMinya.ttf",
- "./assets/icons/android-chrome-192x192.png",
- "./assets/icons/android-chrome-512x512.png",
- "./assets/icons/apple-touch-icon.png",
- "./assets/icons/browserconfig.xml",
- "./assets/icons/favicon-16x16.png",
- "./assets/icons/favicon-32x32.png",
- "./assets/icons/favicon.ico",
- "./assets/icons/mstile-150x150.png",
- "./assets/icons/safari-pinned-tab.svg",
-];
-
-self.addEventListener("install", (event) => {
- event.waitUntil(
- caches
- .open(CACHE_NAME)
- .then((cache) => {
- return cache.addAll(urlsToCache);
- })
- );
-});
-
-self.addEventListener("activate", (event) => {
- var cacheWhitelist = [CACHE_NAME];
-
- event.waitUntil(
- caches.keys().then((cacheNames) => {
- return Promise.all(
- cacheNames.map((cacheName) => {
- // ホワイトリストにないキャッシュ(古いキャッシュ)は削除する
- if (cacheWhitelist.indexOf(cacheName) === -1) {
- return caches.delete(cacheName);
- }
- })
- );
- })
- );
-});
-
-self.addEventListener("fetch", (event) => {
- event.respondWith(
- caches
- .match(event.request)
- .then((response) => {
- return response ? response : fetch(event.request);
- })
- );
-});
diff --git a/dot-spectrum/tsconfig.json b/tsconfig.json
similarity index 100%
rename from dot-spectrum/tsconfig.json
rename to tsconfig.json
diff --git a/dot-spectrum/vite.config.ts b/vite.config.ts
similarity index 100%
rename from dot-spectrum/vite.config.ts
rename to vite.config.ts
diff --git a/yarn.lock b/yarn.lock
deleted file mode 100644
index c50e095..0000000
--- a/yarn.lock
+++ /dev/null
@@ -1,40 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-colors@>=0.6.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
- integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
-
-mime@^1.2.9:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
- integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-
-minimist@~0.0.1:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
- integrity sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==
-
-node-static@^0.7.11:
- version "0.7.11"
- resolved "https://registry.yarnpkg.com/node-static/-/node-static-0.7.11.tgz#60120d349f3cef533e4e820670057eb631882e7f"
- integrity sha512-zfWC/gICcqb74D9ndyvxZWaI1jzcoHmf4UTHWQchBNuNMxdBLJMDiUgZ1tjGLEIe/BMhj2DxKD8HOuc2062pDQ==
- dependencies:
- colors ">=0.6.0"
- mime "^1.2.9"
- optimist ">=0.3.4"
-
-optimist@>=0.3.4:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
- integrity sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==
- dependencies:
- minimist "~0.0.1"
- wordwrap "~0.0.2"
-
-wordwrap@~0.0.2:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
- integrity sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==