diff --git a/.travis.yml b/.travis.yml index 98f40871..ed35be65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,16 @@ -language: objective-c -cache: - directories: - - node_modules -env: - - NODE_VERSION="10.15.2" -before_install: - - git clone https://github.com/creationix/nvm.git /tmp/.nvm - - source /tmp/.nvm/nvm.sh - - nvm install $NODE_VERSION - - nvm use --delete-prefix $NODE_VERSION - - node --version +os: + - osx + - linux + - windows +language: node_js +node_js: +- '10.15.2' script: node -v before_deploy: - npm install electron-builder -g - cd app - npm install - - electron-builder --mac --x64 -p never - - mv ../build/TheDesk*.dmg ../TheDesk.dmg - - mv ../build/TheDesk*.zip ../TheDesk-darwin-x64.zip - - cd ../ + - npm build deploy: provider: releases # GitHub にリリースするための API KEY を暗号化した値 @@ -26,11 +18,11 @@ deploy: secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4= # Releases ページにアップロードするファイル file: - - TheDesk.dmg - - TheDesk-darwin-x64.zip + - build/TheDesk*.* skip_cleanup: true on: repo: cutls/TheDesk + tags: true branches: only: - master \ No newline at end of file diff --git a/README.md b/README.md index 28a716ff..e1ec9387 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,30 @@ + + + # TheDesk - -TheDesk Minami (19)はVueで書き直します(rewrite-vueブランチ参照)。18までのバージョンはTheDesk Kawaii (20)以降で継続します。 - + [![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk) -[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk) +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk) +[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases) +[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases) +![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk) Mastodon/Misskey client for PC(Windows/Linux/macOS) -オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント -Download:[TheDesk](https://thedesk.top) +オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md) + +Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com) -Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk +Become a Patron! +![Screenshots1](https://thedesk.top/img/scr1.png) -バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#Deskでトゥートして下さい. +## Contribute -### Contribute/コントリビュート +Please make a pull request to ***WIP(before CI)*** brunch. -Please make a pull request to ***WIP(before CI)*** brunch -***WIP(before CI)*** ブランチにプルリクエストをお願いします。 - -## License/ライセンス +## License [GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE) -The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)/アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。 +The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/) [Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip) * [PNG](https://dl.thedesk.top/press/TheDesk.png) @@ -29,27 +32,25 @@ The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.o * [ico](https://dl.thedesk.top/press/TheDesk.ico) * [icns](https://dl.thedesk.top/press/TheDesk.icns) -The default sound of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) +The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) -## Terms of Use/利用規約 +## Terms of Use * [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html) * [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html) -## Language/言語 +## Language * 日本語(Japanese) -* English(英語) +* English -### Translation/翻訳 +### Translation -Crowdin project is available! Visit: https://translate.thedesk.top - -Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.top +Crowdin project is available! Visit: https://translate.thedesk.top -## Requirement/環境 +## Requirement -* Electron 3.0.10(install yourself) +* Electron 4.2 or above(install yourself) * electron-dl(in package.json) * Jimp(in package.json) * font-manager(in package.json) @@ -60,24 +61,21 @@ Crowdinから翻訳に参加してみませんか?: https://translate.thedesk. * sumchecker(in package.json) * Ability to read unformated files!(install yourself) -## Contributors/主なコントリビューター +## Contributors -macOSビルダー +Build for macOS -* [とねぢ](https://minohdon.jp/@toneji) +* [toneji](https://minohdon.jp/@toneji) -Linuxビルダー +Build for Linux -* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) +* [popn_ja](https://popon.pptdn.jp/@popn_ja) -iTunes NowPlayingにアルバムアートワークを付けてくれた人 +Fellow coder * [kPherox](https://www.kr-kp.com/) -## Build/ビルド - -Misskey(misskey.xyz) application token is not in cutls/TheDesk -Misskey(misskey.xyz)のトークンは含まれておりません。 +## Build ```sh git clone https://github.com/cutls/TheDesk @@ -86,29 +84,24 @@ npm install npm install --only=dev ``` -### electron-builder(推奨) +### electron-builder(Recommended) Use npm scripts. -npm scriptsを利用します ```sh # Build for current platform -# 実行している環境向けにビルド npm run build # Select build target -# ターゲットを指定してビルド ## Windows npm run build:win ## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS) -## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません npm run build:all ``` Config is all on package.json -ビルド設定はすべてpackage.jsonに記載しています。 -### electron-packager(非推奨) +### electron-packager `npm install --save-dev electron-rebuild` Linux/macOS @@ -117,10 +110,7 @@ Windows `.\node_modules\.bin\electron-rebuild.cmd` To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild` -WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に) `npm install --global windows-build-tools` - -日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談) Windows `electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite` @@ -134,9 +124,3 @@ macOS Did you find a bug with Pleroma accounts? Pleroma **does not** follow Mastodon API rules completely although Pleroma developers say so. Please write issues to improve TheDesk affinity with Pleroma. -Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。 -Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。 - -## See also/詳しく - -[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk) diff --git a/README_ja.md b/README_ja.md new file mode 100644 index 00000000..f0f97bfc --- /dev/null +++ b/README_ja.md @@ -0,0 +1,132 @@ + + + +# TheDesk + +[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk) +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk) +[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases) +[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases) +![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk) +Mastodon/Misskey client for PC(Windows/Linux/macOS) +オープンソースSNSマストドン/MisskeyのPC向けクライアント +Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com) + +[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985) + +![Screenshots1](https://thedesk.top/img/scr1.png) + +## コントリビュート + +***WIP(before CI)*** ブランチにプルリクエストをお願いします。 + +## ライセンス + +[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE) + +アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。 +[プレスキット](https://dl.thedesk.top/press/TheDesk+PressKit.zip) + +* [PNG](https://dl.thedesk.top/press/TheDesk.png) +* [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg) +* [ico](https://dl.thedesk.top/press/TheDesk.ico) +* [icns](https://dl.thedesk.top/press/TheDesk.icns) + +標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。 + +## 利用規約 + +* [利用規約](https://thedesk.top/tos.html) +* [プライバシーポリシー](https://thedesk.top/priv.html) + +## 言語 + +* 日本語 +* English(英語) + +### 翻訳 + +Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.top + +## 環境 + +* Electron 4.2以上(自分で入れて) +* electron-dl(in package.json) +* Jimp(in package.json) +* font-manager(in package.json) + * Python 2.x(自分で入れて) + * VisualC++(Windows)(自分で入れて) +* itunes-nowplaying-mac(macOS向け)(in package.json) +* node-notifier(in package.json) +* sumchecker(in package.json) +* Ability to read unformated files!(自分で入れて) + +## 主なコントリビューター + +macOSビルダー + +* [とねぢ](https://minohdon.jp/@toneji) + +Linuxビルダー + +* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) + +iTunes NowPlayingにアルバムアートワークを付けてくれた人 + +* [kPherox](https://www.kr-kp.com/) + +## ビルド + + +```sh +git clone https://github.com/cutls/TheDesk +cd TheDesk/app +npm install +npm install --only=dev +``` + +### electron-builder(推奨) +npm scriptsを利用します + +```sh +# 実行している環境向けにビルド +npm run build + +# ターゲットを指定してビルド +## Windows +npm run build:win + +## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません +npm run build:all +``` + +ビルド設定はすべてpackage.jsonに記載しています。 + +### electron-packager(非推奨) +`npm install --save-dev electron-rebuild` + +Linux/macOS +`./node_modules/.bin/electron-rebuild` +Windows +`.\node_modules\.bin\electron-rebuild.cmd` + +WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に) +`npm install --global windows-build-tools` + +日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談) + +Windows +`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite` +Linux +`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite` +macOS +`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite` + +## Pleromaのサポート + +Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。 +Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。 + +## 詳しく + +[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk) diff --git a/app/about.html b/app/about.html index 1d5ccca2..6be07cd7 100644 --- a/app/about.html +++ b/app/about.html @@ -1,117 +1,124 @@ + -TheDesk - - - - - - - - + .area-data4 { + grid-area: data4; + } + + .area-name5 { + grid-area: name5; + } + + .area-data5 { + grid-area: data5; + } + + - - - - -
TheDesk
-
-
Display version
-
-
Internal version
-
-
Chromium
-
-
Electron
-
-
Node.js
-
-
-
Copyright © TheDesk 2018
- Main developer(author): Cutls P
- Thanks:toneji/popn_ja/kPherox and all users - ❤️ -
Web site
- - - \ No newline at end of file + + + + +
TheDesk
+
+
Display version
+
+
Internal version
+
+
Chromium
+
+
Electron
+
+
Node.js
+
+
+
Copyright © TheDesk 2018
+ Main developer(author): Cutls P
+ Thanks:toneji/popn_ja/kPherox and all users + ❤️ +
Web site
+ + + \ No newline at end of file diff --git a/app/adobe.html b/app/adobe.html index a606a499..692071a6 100644 --- a/app/adobe.html +++ b/app/adobe.html @@ -1,260 +1,267 @@ + -Adobe Photo Editor - TheDesk - - - - - - - - - - - - - - - - - - - -
-
-

ここに画像ファイルをドラッグし、画像をクリックしてください。

- -
-
-
- - + .cb-div { + padding: 16px; + margin-bottom: 8px; + } - - + .cb-image { + cursor: pointer; + } + + + + + + + + + + + +
+
+

ここに画像ファイルをドラッグし、画像をクリックしてください。

+ +
+
+
+ + + + + + \ No newline at end of file diff --git a/app/build.js b/app/build.js new file mode 100644 index 00000000..4b0ae291 --- /dev/null +++ b/app/build.js @@ -0,0 +1,105 @@ +const builder = require("electron-builder"); +const fs = require('fs'); +const os = process.platform; +const Platform = builder.Platform +const Arch = builder.Arch +const targets = new Map(); +const archToType = new Map(); +const pref = { + productName: "TheDesk", + appId: "top.thedesk", + asarUnpack: [ + "node_modules/itunes-nowplaying-mac" + ], + directories: { + output: "../build/" + }, + win: { + icon: "build/thedesk.ico", + target: [ + "nsis", + "portable", + "appx" + ] + }, + appx: { + identityName: "53491Cutls.TheDesk", + applicationId: "Cutls.TheDesk", + publisherDisplayName: "Cutls", + publisher: "CN=629757F5-A5EE-474F-9562-B304A89A9FD1", + languages: [ + "JA-JP", + "EN-US" + ] + }, + nsis: { + oneClick: false, + allowToChangeInstallationDirectory: true + }, + linux: { + icon: "build/icons", + target: [ + "zip", + "snap" + ], + category: "Network" + }, + mac: { + target: [ + "dmg", + "zip" + ] + }, + electronDownload: { + version: "5.0.1" + }, + electronVersion: "5.0.1" +} +const json = JSON.parse(fs.readFileSync("package.json", 'utf8')); +const version = json.version; + + +if (os == "win32") { + archToType.set(Arch.ia32, []); + targets.set(Platform.WINDOWS, archToType); +} else if (os == "linux") { + archToType.set(Arch.x64, []); + archToType.set(Arch.ia32, []); + targets.set(Platform.LINUX, archToType); +} else if (os == "darwin") { + archToType.set(Arch.x64, []); + targets.set(Platform.MAC, archToType); +} else { + return false +} +builder.build({ + targets: targets, + config: pref +}) + .then(() => { + if (os == "win32") { + fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk-ia32.exe'); + fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe'); + retry() + } + }) + .catch((error) => { + // handle error + }) +function retry(){ + const targetsAlt = new Map(); + const archToTypeAlt = new Map(); + targetsAlt.set(Platform.WINDOWS, archToTypeAlt); + archToTypeAlt.set(Arch.x64, []); + builder.build({ + targets: targetsAlt, + config: pref + }) + .then(() => { + fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup.exe'); + fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk.exe'); + }) + .catch((error) => { + // handle error + }) +} \ No newline at end of file diff --git a/app/css/about.css b/app/css/about.css index 31d3ac0a..c6524e26 100644 --- a/app/css/about.css +++ b/app/css/about.css @@ -1,2 +1,4 @@ /*このソフトについてを押した時に読み込まれます*/ -body{font-family:Open Sans;} \ No newline at end of file +body { + font-family: Open Sans; +} diff --git a/app/css/font-awesome.css b/app/css/font-awesome.css index ee906a81..80a9f5bb 100644 --- a/app/css/font-awesome.css +++ b/app/css/font-awesome.css @@ -5,9 +5,15 @@ /* FONT PATH * -------------------------- */ @font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-family: "FontAwesome"; + src: url("../fonts/fontawesome-webfont.eot?v=4.7.0"); + src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") + format("embedded-opentype"), + url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"), + url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"), + url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"), + url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") + format("svg"); font-weight: normal; font-style: normal; } @@ -60,9 +66,9 @@ left: -1.85714286em; } .fa-border { - padding: .2em .25em .15em; + padding: 0.2em 0.25em 0.15em; border: solid 0.08em #eeeeee; - border-radius: .1em; + border-radius: 0.1em; } .fa-pull-left { float: left; @@ -71,10 +77,10 @@ float: right; } .fa.fa-pull-left { - margin-right: .3em; + margin-right: 0.3em; } .fa.fa-pull-right { - margin-left: .3em; + margin-left: 0.3em; } /* Deprecated as of 4.4.0 */ .pull-right { @@ -84,10 +90,10 @@ float: left; } .fa.pull-left { - margin-right: .3em; + margin-right: 0.3em; } .fa.pull-right { - margin-left: .3em; + margin-left: 0.3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; diff --git a/app/css/master.css b/app/css/master.css index e4ece881..dea10ddd 100644 --- a/app/css/master.css +++ b/app/css/master.css @@ -1,15 +1,16 @@ /*共通CSS*/ -html,body{ +html, +body { /*transform: translate3d(0,0,0);*/ - overflow:hidden; + overflow: hidden; user-select: none; - cursor:default; - font-size:13px; + cursor: default; + font-size: 13px; height: 100vh; background-color: var(--bg); color: var(--color); } -body{ +body { border: thin solid gray; } .btn { @@ -30,7 +31,7 @@ option { } #mainView { padding: 10px; - overflow:scroll; + overflow: scroll; height: auto; } #message { @@ -42,23 +43,25 @@ option { color: white; z-index: 9999; } -#imagemodal, #videomodal { +#imagemodal, +#videomodal { display: none; max-width: 100vw; max-height: 100vh; position: fixed; z-index: 9; } -#videomodal, #tootmodal { +#videomodal, +#tootmodal { background-color: var(--modal); } #imagemodal .modal-content { overflow: hidden; - padding:0; + padding: 0; } -#imagemodal .modal-footer{ - overflow-x:scroll; - overflow-y:hidden; +#imagemodal .modal-footer { + overflow-x: scroll; + overflow-y: hidden; } #imagewrap { @@ -68,11 +71,13 @@ option { .pointer { cursor: pointer; } -.badge{ - min-width: 0 !important; - margin-left: 5px !important; +.badge { + min-width: 0 !important; + margin-left: 5px !important; } -.bbcode-pulse-loadings, .bbcode-pulse-loading, .fa-pulse { +.bbcode-pulse-loadings, +.bbcode-pulse-loading, +.fa-pulse { display: inline-block; animation-duration: 3s; animation-fill-mode: both; @@ -80,10 +85,13 @@ option { animation-name: pulse; } @keyframes pulse { - from, 50%, to { + from, + 50%, + to { opacity: 1; } - 25%, 75% { + 25%, + 75% { opacity: 0; } } @@ -119,7 +127,8 @@ option { animation-iteration-count: infinite; animation-name: shake; } -code:before, .pre:before { +code:before, +.pre:before { content: "Code"; font-size: 1.8rem; line-height: 1em; @@ -129,7 +138,8 @@ code:before, .pre:before { right: 0; top: 0; } -code, pre { +code, +pre { color: white; display: block; border-left: 5px solid; @@ -145,10 +155,12 @@ code, pre { border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; } -blockquote, .quote p { +blockquote, +.quote p { margin: 0; } -blockquote, .quote { +blockquote, +.quote { color: black; background-color: #ddd; padding: 1em 1em 1em; @@ -157,7 +169,8 @@ blockquote, .quote { border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; } -blockquote:before, .quote:before { +blockquote:before, +.quote:before { content: "Quote"; font-size: 1.8rem; line-height: 1em; @@ -221,178 +234,183 @@ blockquote:before, .quote:before { #drag-content { font-size: 2rem; } -.radio{ - font-family:'Baloo Bhai' +.radio { + font-family: "Baloo Bhai"; } -#pip{ - z-index:504; - width:418px; +#pip { + z-index: 504; + width: 418px; background-color: var(--subcolor); - position:absolute; + position: absolute; } -.pip-bottom{ - bottom:10px; +.pip-bottom { + bottom: 10px; } -.pip-left{ - left:10px; +.pip-left { + left: 10px; } -.pip-top{ - top:10px; +.pip-top { + top: 10px; } -.pip-right{ - right:10px; +.pip-right { + right: 10px; } -#pip-content .material-icons{ - display:none; +#pip-content .material-icons { + display: none; } -.big-text{ - font-size:1.2rem; +.big-text { + font-size: 1.2rem; } #releasenote { background-color: var(--modal); } -#releasenote li{ - list-style-type: disc +#releasenote li { + list-style-type: disc; } -@media only screen and (min-width: 993px){ -#toast-container { - top:auto; - right:auto; +@media only screen and (min-width: 993px) { + #toast-container { + top: auto; + right: auto; bottom: 5%; left: 4%; max-width: 86%; + } } -} -.show{ +.show { animation: show 0.2s linear 0s; } -@keyframes show{ - from{ - opacity: 0; +@keyframes show { + from { + opacity: 0; } - to{ - opacity: 1; + to { + opacity: 1; } } -.hide-anime{ +.hide-anime { animation: hide 0.2s linear 0s; - display:none; + display: none; } -@keyframes hide{ - from{ - opacity: 1; +@keyframes hide { + from { + opacity: 1; } - to{ - opacity: 0; + to { + opacity: 0; } } -.collapsible-header,.tabs{ +.collapsible-header, +.tabs { background-color: var(--subcolor); } -.modal-footer{ +.modal-footer { background-color: var(--modalfooter) !important; } -.font{ - font-size:1.5rem; - margin-bottom:5px; +.font { + font-size: 1.5rem; + margin-bottom: 5px; } -.font:hover{ +.font:hover { background-color: #999; } -.release-do{ +.release-do { border: solid 2px; - border-color:var(--color); - padding:5px; + border-color: var(--color); + padding: 5px; } -#pickers{ - display:flex; +#pickers { + display: flex; flex-wrap: wrap; } -#menu{ - position:fixed; - z-index:9999; +#menu { + position: fixed; + z-index: 9999; background-color: var(--box); - width:540px; - top:calc(50% - 150px); - left:calc(50% - 250px); + width: 540px; + top: calc(50% - 150px); + left: calc(50% - 250px); padding: 5px; border: thin solid gray; - border-radius:5px; + border-radius: 5px; } -#menu-wrapper{ - margin-left:-5px; - display:flex; +#menu-wrapper { + margin-left: -5px; + display: flex; } -#left-menu{ - width:170px; +#left-menu { + width: 170px; } -#left-menu div{ - padding-left:5px; - width:100%; - height:50px; - display:flex; - align-items:center; - cursor:pointer; +#left-menu div { + padding-left: 5px; + width: 100%; + height: 50px; + display: flex; + align-items: center; + cursor: pointer; } #left-menu div:hover { background-color: var(--beforehover); } -#left-menu span{ - margin-left:5px; +#left-menu span { + margin-left: 5px; } -#left-menu div.active{ +#left-menu div.active { background-color: var(--emphasized); } -#right-menu{ - width:380px; - max-height:375px; - overflow-y:scroll; - overflow-x:hidden; - padding:5px; +#right-menu { + width: 380px; + max-height: 375px; + overflow-y: scroll; + overflow-x: hidden; + padding: 5px; } -#tltype{ - display:flex; +#tltype { + display: flex; flex-wrap: wrap; - } -#tltype .type{ - display:flex; +#tltype .type { + display: flex; flex-wrap: wrap; - align-items:center; - width:170px; - height:40px; - cursor:pointer; + align-items: center; + width: 170px; + height: 40px; + cursor: pointer; } #tltype .type:hover { background-color: var(--beforehover); } -#tltype .active{ +#tltype .active { background-color: var(--emphasized); } -#tltype i{ - font-size:30px; +#tltype i { + font-size: 30px; } -#tltype i.sub-icon{ +#tltype i.sub-icon { font-size: 20px; position: relative; color: var(--beforehover); left: -15px; - } -.drag-bar{ - cursor:move; - text-align:center; - width:calc(100% + 10px); +.drag-bar { + cursor: move; + text-align: center; + width: calc(100% + 10px); border-radius: 5px; background-color: var(--bg); - margin-left:-5px; - margin-right:-5px; - margin-top:-5px; - font-size:16px; - padding:4px; + margin-left: -5px; + margin-right: -5px; + margin-top: -5px; + font-size: 16px; + padding: 4px; } -#something-wrong{ - width:100%; height:100%; position:absolute; display:flex; justify-content: center; align-items:center +#something-wrong { + flex-direction: column; + width: 100%; + height: 100%; + position: absolute; + display: flex; + justify-content: center; + align-items: center; } /*スクロールバー*/ @@ -411,4 +429,4 @@ blockquote:before, .quote:before { border-radius: 5px; background: #607d8b; -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); -} \ No newline at end of file +} diff --git a/app/css/materialize.css b/app/css/materialize.css index e0b73182..d93c9d0d 100644 --- a/app/css/materialize.css +++ b/app/css/materialize.css @@ -86,115 +86,115 @@ } .red { - background-color: #F44336 !important; + background-color: #f44336 !important; } .red-text { - color: #F44336 !important; + color: #f44336 !important; } .red.lighten-5 { - background-color: #FFEBEE !important; + background-color: #ffebee !important; } .red-text.text-lighten-5 { - color: #FFEBEE !important; + color: #ffebee !important; } .red.lighten-4 { - background-color: #FFCDD2 !important; + background-color: #ffcdd2 !important; } .red-text.text-lighten-4 { - color: #FFCDD2 !important; + color: #ffcdd2 !important; } .red.lighten-3 { - background-color: #EF9A9A !important; + background-color: #ef9a9a !important; } .red-text.text-lighten-3 { - color: #EF9A9A !important; + color: #ef9a9a !important; } .red.lighten-2 { - background-color: #E57373 !important; + background-color: #e57373 !important; } .red-text.text-lighten-2 { - color: #E57373 !important; + color: #e57373 !important; } .red.lighten-1 { - background-color: #EF5350 !important; + background-color: #ef5350 !important; } .red-text.text-lighten-1 { - color: #EF5350 !important; + color: #ef5350 !important; } .red.darken-1 { - background-color: #E53935 !important; + background-color: #e53935 !important; } .red-text.text-darken-1 { - color: #E53935 !important; + color: #e53935 !important; } .red.darken-2 { - background-color: #D32F2F !important; + background-color: #d32f2f !important; } .red-text.text-darken-2 { - color: #D32F2F !important; + color: #d32f2f !important; } .red.darken-3 { - background-color: #C62828 !important; + background-color: #c62828 !important; } .red-text.text-darken-3 { - color: #C62828 !important; + color: #c62828 !important; } .red.darken-4 { - background-color: #B71C1C !important; + background-color: #b71c1c !important; } .red-text.text-darken-4 { - color: #B71C1C !important; + color: #b71c1c !important; } .red.accent-1 { - background-color: #FF8A80 !important; + background-color: #ff8a80 !important; } .red-text.text-accent-1 { - color: #FF8A80 !important; + color: #ff8a80 !important; } .red.accent-2 { - background-color: #FF5252 !important; + background-color: #ff5252 !important; } .red-text.text-accent-2 { - color: #FF5252 !important; + color: #ff5252 !important; } .red.accent-3 { - background-color: #FF1744 !important; + background-color: #ff1744 !important; } .red-text.text-accent-3 { - color: #FF1744 !important; + color: #ff1744 !important; } .red.accent-4 { - background-color: #D50000 !important; + background-color: #d50000 !important; } .red-text.text-accent-4 { - color: #D50000 !important; + color: #d50000 !important; } .pink { @@ -646,115 +646,115 @@ } .blue { - background-color: #2196F3 !important; + background-color: #2196f3 !important; } .blue-text { - color: #2196F3 !important; + color: #2196f3 !important; } .blue.lighten-5 { - background-color: #E3F2FD !important; + background-color: #e3f2fd !important; } .blue-text.text-lighten-5 { - color: #E3F2FD !important; + color: #e3f2fd !important; } .blue.lighten-4 { - background-color: #BBDEFB !important; + background-color: #bbdefb !important; } .blue-text.text-lighten-4 { - color: #BBDEFB !important; + color: #bbdefb !important; } .blue.lighten-3 { - background-color: #90CAF9 !important; + background-color: #90caf9 !important; } .blue-text.text-lighten-3 { - color: #90CAF9 !important; + color: #90caf9 !important; } .blue.lighten-2 { - background-color: #64B5F6 !important; + background-color: #64b5f6 !important; } .blue-text.text-lighten-2 { - color: #64B5F6 !important; + color: #64b5f6 !important; } .blue.lighten-1 { - background-color: #42A5F5 !important; + background-color: #42a5f5 !important; } .blue-text.text-lighten-1 { - color: #42A5F5 !important; + color: #42a5f5 !important; } .blue.darken-1 { - background-color: #1E88E5 !important; + background-color: #1e88e5 !important; } .blue-text.text-darken-1 { - color: #1E88E5 !important; + color: #1e88e5 !important; } .blue.darken-2 { - background-color: #1976D2 !important; + background-color: #1976d2 !important; } .blue-text.text-darken-2 { - color: #1976D2 !important; + color: #1976d2 !important; } .blue.darken-3 { - background-color: #1565C0 !important; + background-color: #1565c0 !important; } .blue-text.text-darken-3 { - color: #1565C0 !important; + color: #1565c0 !important; } .blue.darken-4 { - background-color: #0D47A1 !important; + background-color: #0d47a1 !important; } .blue-text.text-darken-4 { - color: #0D47A1 !important; + color: #0d47a1 !important; } .blue.accent-1 { - background-color: #82B1FF !important; + background-color: #82b1ff !important; } .blue-text.text-accent-1 { - color: #82B1FF !important; + color: #82b1ff !important; } .blue.accent-2 { - background-color: #448AFF !important; + background-color: #448aff !important; } .blue-text.text-accent-2 { - color: #448AFF !important; + color: #448aff !important; } .blue.accent-3 { - background-color: #2979FF !important; + background-color: #2979ff !important; } .blue-text.text-accent-3 { - color: #2979FF !important; + color: #2979ff !important; } .blue.accent-4 { - background-color: #2962FF !important; + background-color: #2962ff !important; } .blue-text.text-accent-4 { - color: #2962FF !important; + color: #2962ff !important; } .light-blue { @@ -1094,115 +1094,115 @@ } .green { - background-color: #4CAF50 !important; + background-color: #4caf50 !important; } .green-text { - color: #4CAF50 !important; + color: #4caf50 !important; } .green.lighten-5 { - background-color: #E8F5E9 !important; + background-color: #e8f5e9 !important; } .green-text.text-lighten-5 { - color: #E8F5E9 !important; + color: #e8f5e9 !important; } .green.lighten-4 { - background-color: #C8E6C9 !important; + background-color: #c8e6c9 !important; } .green-text.text-lighten-4 { - color: #C8E6C9 !important; + color: #c8e6c9 !important; } .green.lighten-3 { - background-color: #A5D6A7 !important; + background-color: #a5d6a7 !important; } .green-text.text-lighten-3 { - color: #A5D6A7 !important; + color: #a5d6a7 !important; } .green.lighten-2 { - background-color: #81C784 !important; + background-color: #81c784 !important; } .green-text.text-lighten-2 { - color: #81C784 !important; + color: #81c784 !important; } .green.lighten-1 { - background-color: #66BB6A !important; + background-color: #66bb6a !important; } .green-text.text-lighten-1 { - color: #66BB6A !important; + color: #66bb6a !important; } .green.darken-1 { - background-color: #43A047 !important; + background-color: #43a047 !important; } .green-text.text-darken-1 { - color: #43A047 !important; + color: #43a047 !important; } .green.darken-2 { - background-color: #388E3C !important; + background-color: #388e3c !important; } .green-text.text-darken-2 { - color: #388E3C !important; + color: #388e3c !important; } .green.darken-3 { - background-color: #2E7D32 !important; + background-color: #2e7d32 !important; } .green-text.text-darken-3 { - color: #2E7D32 !important; + color: #2e7d32 !important; } .green.darken-4 { - background-color: #1B5E20 !important; + background-color: #1b5e20 !important; } .green-text.text-darken-4 { - color: #1B5E20 !important; + color: #1b5e20 !important; } .green.accent-1 { - background-color: #B9F6CA !important; + background-color: #b9f6ca !important; } .green-text.text-accent-1 { - color: #B9F6CA !important; + color: #b9f6ca !important; } .green.accent-2 { - background-color: #69F0AE !important; + background-color: #69f0ae !important; } .green-text.text-accent-2 { - color: #69F0AE !important; + color: #69f0ae !important; } .green.accent-3 { - background-color: #00E676 !important; + background-color: #00e676 !important; } .green-text.text-accent-3 { - color: #00E676 !important; + color: #00e676 !important; } .green.accent-4 { - background-color: #00C853 !important; + background-color: #00c853 !important; } .green-text.text-accent-4 { - color: #00C853 !important; + color: #00c853 !important; } .light-green { @@ -2126,11 +2126,11 @@ } .white { - background-color: #FFFFFF !important; + background-color: #ffffff !important; } .white-text { - color: #FFFFFF !important; + color: #ffffff !important; } .transparent { @@ -2334,7 +2334,7 @@ figure { */ hr { -webkit-box-sizing: content-box; - box-sizing: content-box; + box-sizing: content-box; height: 0; } @@ -2451,7 +2451,7 @@ input { input[type="checkbox"], input[type="radio"] { -webkit-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ @@ -2475,7 +2475,7 @@ input[type="search"] { -webkit-appearance: textfield; /* 1 */ -webkit-box-sizing: content-box; - box-sizing: content-box; + box-sizing: content-box; /* 2 */ } @@ -2541,12 +2541,14 @@ th { html { -webkit-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } -*, *:before, *:after { +*, +*:before, +*:after { -webkit-box-sizing: inherit; - box-sizing: inherit; + box-sizing: inherit; } ul:not(.browser-default) { @@ -2571,8 +2573,8 @@ a { display: flex; -webkit-box-align: center; -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; } .clearfix { @@ -2581,49 +2583,76 @@ a { .z-depth-0 { -webkit-box-shadow: none !important; - box-shadow: none !important; + box-shadow: none !important; } -.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { - -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); +.z-depth-1, +nav, +.card-panel, +.card, +.toast, +.btn, +.btn-large, +.btn-floating, +.dropdown-content, +.collapsible, +.side-nav { + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), + 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), + 0 3px 1px -2px rgba(0, 0, 0, 0.2); } -.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { - -webkit-box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); - box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); +.z-depth-1-half, +.btn:hover, +.btn-large:hover, +.btn-floating:hover { + -webkit-box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), + 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), + 0 3px 1px -1px rgba(0, 0, 0, 0.2); } .z-depth-2 { - -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), + 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), + 0 2px 4px -1px rgba(0, 0, 0, 0.3); } .z-depth-3 { - -webkit-box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3); - box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), + 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3); + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), + 0 3px 5px -1px rgba(0, 0, 0, 0.3); } -.z-depth-4, .modal { - -webkit-box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3); - box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3); +.z-depth-4, +.modal { + -webkit-box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), + 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3); + box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), + 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3); } .z-depth-5 { - -webkit-box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); - box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), + 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); + box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), + 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); } .hoverable { - -webkit-transition: -webkit-box-shadow .25s; - transition: -webkit-box-shadow .25s; - transition: box-shadow .25s; - transition: box-shadow .25s, -webkit-box-shadow .25s; + -webkit-transition: -webkit-box-shadow 0.25s; + transition: -webkit-box-shadow 0.25s; + transition: box-shadow 0.25s; + transition: box-shadow 0.25s, -webkit-box-shadow 0.25s; } .hoverable:hover { - -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), + 0 6px 20px 0 rgba(0, 0, 0, 0.19); + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } .divider { @@ -2733,7 +2762,8 @@ video.responsive-video { } .breadcrumb i, -.breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"], +.breadcrumb [class^="mdi-"], +.breadcrumb [class*="mdi-"], .breadcrumb i.material-icons { display: inline-block; float: left; @@ -2741,11 +2771,11 @@ video.responsive-video { } .breadcrumb:before { - content: '\E5CC'; + content: "\E5CC"; color: rgba(255, 255, 255, 0.7); vertical-align: top; display: inline-block; - font-family: 'Material Icons'; + font-family: "Material Icons"; font-weight: normal; font-style: normal; font-size: 25px; @@ -2784,12 +2814,13 @@ video.responsive-video { min-width: 100%; min-height: 100%; -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } -.pin-top, .pin-bottom { +.pin-top, +.pin-bottom { position: relative; } @@ -2808,14 +2839,15 @@ ul.staggered-list li { .fade-in { opacity: 0; -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; + transform-origin: 0 50%; } /********************* Media Query Classes **********************/ @media only screen and (max-width: 600px) { - .hide-on-small-only, .hide-on-small-and-down { + .hide-on-small-only, + .hide-on-small-and-down { display: none !important; } } @@ -2895,14 +2927,16 @@ ul.staggered-list li { display: flex; -webkit-box-align: center; -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; padding: 10px 0px; color: rgba(255, 255, 255, 0.8); background-color: rgba(51, 51, 51, 0.08); } -table, th, td { +table, +th, +td { border: none; } @@ -2925,15 +2959,16 @@ table.striped > tbody > tr > td { } table.highlight > tbody > tr { - -webkit-transition: background-color .25s ease; - transition: background-color .25s ease; + -webkit-transition: background-color 0.25s ease; + transition: background-color 0.25s ease; } table.highlight > tbody > tr:hover { background-color: #f2f2f2; } -table.centered thead tr th, table.centered tbody tr td { +table.centered thead tr th, +table.centered tbody tr td { text-align: center; } @@ -2941,7 +2976,8 @@ thead { border-bottom: 1px solid #d0d0d0; } -td, th { +td, +th { padding: 15px 5px; display: table-cell; text-align: left; @@ -2959,7 +2995,7 @@ td, th { /* sort out borders */ } table.responsive-table td:empty:before { - content: '\00a0'; + content: "\00a0"; } table.responsive-table th, table.responsive-table td { @@ -3094,8 +3130,8 @@ td, th { .collection a.collection-item { display: block; - -webkit-transition: .25s; - transition: .25s; + -webkit-transition: 0.25s; + transition: 0.25s; color: #26a69a; } @@ -3134,7 +3170,9 @@ td, th { overflow: hidden; } -.video-container iframe, .video-container object, .video-container embed { +.video-container iframe, +.video-container object, +.video-container embed { position: absolute; top: 0; left: 0; @@ -3159,8 +3197,8 @@ td, th { left: 0; bottom: 0; background-color: #26a69a; - -webkit-transition: width .3s linear; - transition: width .3s linear; + -webkit-transition: width 0.3s linear; + transition: width 0.3s linear; } .progress .indeterminate { @@ -3168,29 +3206,32 @@ td, th { } .progress .indeterminate:before { - content: ''; + content: ""; position: absolute; background-color: inherit; top: 0; left: 0; bottom: 0; will-change: left, right; - -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) + infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } .progress .indeterminate:after { - content: ''; + content: ""; position: absolute; background-color: inherit; top: 0; left: 0; bottom: 0; will-change: left, right; - -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) + infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) + infinite; -webkit-animation-delay: 1.15s; - animation-delay: 1.15s; + animation-delay: 1.15s; } @-webkit-keyframes indeterminate { @@ -3268,7 +3309,8 @@ td, th { text-align: right; } -.center, .center-align { +.center, +.center-align { text-align: center; } @@ -3280,12 +3322,13 @@ td, th { float: right !important; } -.no-select, input[type=range], -input[type=range] + .thumb { +.no-select, +input[type="range"], +input[type="range"] + .thumb { -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .circle { @@ -3320,7 +3363,7 @@ span.badge { color: #757575; float: right; -webkit-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } span.badge.new { @@ -3363,9 +3406,9 @@ nav ul a span.badge { /* This is needed for some mobile phones to display the Google Icon font properly */ .material-icons { text-rendering: optimizeLegibility; - -webkit-font-feature-settings: 'liga'; - -moz-font-feature-settings: 'liga'; - font-feature-settings: 'liga'; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga"; + font-feature-settings: "liga"; } .container { @@ -3423,12 +3466,13 @@ nav ul a span.badge { .row .col { float: left; -webkit-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; padding: 0 0.75rem; min-height: 1px; } -.row .col[class*="push-"], .row .col[class*="pull-"] { +.row .col[class*="push-"], +.row .col[class*="pull-"] { position: relative; } @@ -4236,7 +4280,8 @@ nav a { } nav i, -nav [class^="mdi-"], nav [class*="mdi-"], +nav [class^="mdi-"], +nav [class*="mdi-"], nav i.material-icons { display: block; font-size: 24px; @@ -4279,19 +4324,20 @@ nav .brand-logo { nav .brand-logo.center { left: 50%; -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } @media only screen and (max-width: 992px) { nav .brand-logo { left: 50%; -webkit-transform: translateX(-50%); - transform: translateX(-50%); + transform: translateX(-50%); } - nav .brand-logo.left, nav .brand-logo.right { + nav .brand-logo.left, + nav .brand-logo.right { padding: 0; -webkit-transform: none; - transform: none; + transform: none; } nav .brand-logo.left { left: 0.5rem; @@ -4308,7 +4354,8 @@ nav .brand-logo.right { } nav .brand-logo i, -nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"], +nav .brand-logo [class^="mdi-"], +nav .brand-logo [class*="mdi-"], nav .brand-logo i.material-icons { float: left; margin-right: 15px; @@ -4325,8 +4372,8 @@ nav ul { } nav ul li { - -webkit-transition: background-color .3s; - transition: background-color .3s; + -webkit-transition: background-color 0.3s; + transition: background-color 0.3s; float: left; padding: 0; } @@ -4336,8 +4383,8 @@ nav ul li.active { } nav ul a { - -webkit-transition: background-color .3s; - transition: background-color .3s; + -webkit-transition: background-color 0.3s; + transition: background-color 0.3s; font-size: 1rem; color: #fff; display: block; @@ -4345,13 +4392,21 @@ nav ul a { cursor: pointer; } -nav ul a.btn, nav ul a.btn-large, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating { +nav ul a.btn, +nav ul a.btn-large, +nav ul a.btn-large, +nav ul a.btn-flat, +nav ul a.btn-floating { margin-top: -2px; margin-left: 15px; margin-right: 15px; } -nav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons { +nav ul a.btn > .material-icons, +nav ul a.btn-large > .material-icons, +nav ul a.btn-large > .material-icons, +nav ul a.btn-flat > .material-icons, +nav ul a.btn-floating > .material-icons { height: inherit; line-height: inherit; } @@ -4380,10 +4435,15 @@ nav .input-field input { padding-left: 2rem; } -nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { +nav .input-field input:focus, +nav .input-field input[type="text"]:valid, +nav .input-field input[type="password"]:valid, +nav .input-field input[type="email"]:valid, +nav .input-field input[type="url"]:valid, +nav .input-field input[type="date"]:valid { border: none; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; } nav .input-field label { @@ -4393,8 +4453,8 @@ nav .input-field label { nav .input-field label i { color: rgba(255, 255, 255, 0.7); - -webkit-transition: color .3s; - transition: color .3s; + -webkit-transition: color 0.3s; + transition: color 0.3s; } nav .input-field label.active i { @@ -4415,7 +4475,10 @@ nav .input-field label.active i { nav.nav-extended .nav-wrapper { min-height: 64px; } - nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + nav, + nav .nav-wrapper i, + nav a.button-collapse, + nav a.button-collapse i { height: 64px; line-height: 64px; } @@ -4426,31 +4489,41 @@ nav .input-field label.active i { @font-face { font-family: "Roboto"; - src: local(Roboto Thin), url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"), url("../fonts/roboto/Roboto-Thin.woff") format("woff"); + src: local(Roboto Thin), + url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"), + url("../fonts/roboto/Roboto-Thin.woff") format("woff"); font-weight: 100; } @font-face { font-family: "Roboto"; - src: local(Roboto Light), url("../fonts/roboto/Roboto-Light.woff2") format("woff2"), url("../fonts/roboto/Roboto-Light.woff") format("woff"); + src: local(Roboto Light), + url("../fonts/roboto/Roboto-Light.woff2") format("woff2"), + url("../fonts/roboto/Roboto-Light.woff") format("woff"); font-weight: 300; } @font-face { font-family: "Roboto"; - src: local(Roboto Regular), url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"), url("../fonts/roboto/Roboto-Regular.woff") format("woff"); + src: local(Roboto Regular), + url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"), + url("../fonts/roboto/Roboto-Regular.woff") format("woff"); font-weight: 400; } @font-face { font-family: "Roboto"; - src: local(Roboto Medium), url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"), url("../fonts/roboto/Roboto-Medium.woff") format("woff"); + src: local(Roboto Medium), + url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"), + url("../fonts/roboto/Roboto-Medium.woff") format("woff"); font-weight: 500; } @font-face { font-family: "Roboto"; - src: local(Roboto Bold), url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"), url("../fonts/roboto/Roboto-Bold.woff") format("woff"); + src: local(Roboto Bold), + url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"), + url("../fonts/roboto/Roboto-Bold.woff") format("woff"); font-weight: 700; } @@ -4483,12 +4556,22 @@ html { } } -h1, h2, h3, h4, h5, h6 { +h1, +h2, +h3, +h4, +h5, +h6 { font-weight: 400; line-height: 1.1; } -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a { font-weight: inherit; } @@ -4540,7 +4623,8 @@ small { font-size: 75%; } -.light, .page-footer .footer-copyright { +.light, +.page-footer .footer-copyright { font-weight: 300; } @@ -4685,31 +4769,33 @@ small { } .scale-transition { - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; + -webkit-transition: -webkit-transform 0.3s + cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; - transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; + transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), + -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; } .scale-transition.scale-out { -webkit-transform: scale(0); - transform: scale(0); - -webkit-transition: -webkit-transform .2s !important; - transition: -webkit-transform .2s !important; - transition: transform .2s !important; - transition: transform .2s, -webkit-transform .2s !important; + transform: scale(0); + -webkit-transition: -webkit-transform 0.2s !important; + transition: -webkit-transform 0.2s !important; + transition: transform 0.2s !important; + transition: transform 0.2s, -webkit-transform 0.2s !important; } .scale-transition.scale-in { -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } .card-panel { - -webkit-transition: -webkit-box-shadow .25s; - transition: -webkit-box-shadow .25s; - transition: box-shadow .25s; - transition: box-shadow .25s, -webkit-box-shadow .25s; + -webkit-transition: -webkit-box-shadow 0.25s; + transition: -webkit-box-shadow 0.25s; + transition: box-shadow 0.25s; + transition: box-shadow 0.25s, -webkit-box-shadow 0.25s; padding: 24px; margin: 0.5rem 0 1rem 0; border-radius: 2px; @@ -4720,10 +4806,10 @@ small { position: relative; margin: 0.5rem 0 1rem 0; background-color: #fff; - -webkit-transition: -webkit-box-shadow .25s; - transition: -webkit-box-shadow .25s; - transition: box-shadow .25s; - transition: box-shadow .25s, -webkit-box-shadow .25s; + -webkit-transition: -webkit-box-shadow 0.25s; + transition: -webkit-box-shadow 0.25s; + transition: box-shadow 0.25s; + transition: box-shadow 0.25s, -webkit-box-shadow 0.25s; border-radius: 2px; } @@ -4736,25 +4822,35 @@ small { cursor: pointer; } -.card.small, .card.medium, .card.large { +.card.small, +.card.medium, +.card.large { position: relative; } -.card.small .card-image, .card.medium .card-image, .card.large .card-image { +.card.small .card-image, +.card.medium .card-image, +.card.large .card-image { max-height: 60%; overflow: hidden; } -.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content { +.card.small .card-image + .card-content, +.card.medium .card-image + .card-content, +.card.large .card-image + .card-content { max-height: 40%; } -.card.small .card-content, .card.medium .card-content, .card.large .card-content { +.card.small .card-content, +.card.medium .card-content, +.card.large .card-content { max-height: 100%; overflow: hidden; } -.card.small .card-action, .card.medium .card-action, .card.large .card-action { +.card.small .card-action, +.card.medium .card-action, +.card.large .card-action { position: absolute; bottom: 0; left: 0; @@ -4780,13 +4876,17 @@ small { display: flex; } -.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image { +.card.horizontal.small .card-image, +.card.horizontal.medium .card-image, +.card.horizontal.large .card-image { height: 100%; max-height: none; overflow: visible; } -.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img { +.card.horizontal.small .card-image img, +.card.horizontal.medium .card-image img, +.card.horizontal.large .card-image img { height: 100%; } @@ -4808,20 +4908,20 @@ small { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; -webkit-box-flex: 1; -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; position: relative; } .card.horizontal .card-stacked .card-content { -webkit-box-flex: 1; -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .card.sticky-action .card-action { @@ -4888,15 +4988,19 @@ small { border-radius: 0 0 2px 2px; } -.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating) { +.card + .card-action + a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating) { color: #ffab40; margin-right: 24px; - -webkit-transition: color .3s ease; - transition: color .3s ease; + -webkit-transition: color 0.3s ease; + transition: color 0.3s ease; text-transform: uppercase; } -.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover { +.card + .card-action + a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover { color: #ffd8a6; } @@ -4969,12 +5073,12 @@ small { display: flex; -webkit-box-align: center; -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; cursor: default; } @@ -5036,8 +5140,8 @@ small { .custom-tabs.tabs-fixed-width .tab { -webkit-box-flex: 1; -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .custom-tabs .custom-tab { @@ -5059,14 +5163,15 @@ small { font-size: 14px; text-overflow: ellipsis; overflow: hidden; - -webkit-transition: color .28s ease; - transition: color .28s ease; + -webkit-transition: color 0.28s ease; + transition: color 0.28s ease; } -.custom-tabs .custom-tab a:hover, .custom-tabs .custom-tab a.active { +.custom-tabs .custom-tab a:hover, +.custom-tabs .custom-tab a.active { background-color: rgba(0, 0, 0, 0.5); color: #ee6e73; - cursor:pointer; + cursor: pointer; } .custom-tabs .custom-tab.disabled a, @@ -5093,8 +5198,8 @@ small { .custom-tabs .custom-tab { -webkit-box-flex: 1; -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } .custom-tabs .custom-tab a { padding: 0 12px; @@ -5130,11 +5235,12 @@ small { background-color: #323232; z-index: -1; -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; + transform-origin: 50% 0%; visibility: hidden; } -.btn, .btn-large, +.btn, +.btn-large, .btn-flat { border: none; border-radius: 2px; @@ -5147,7 +5253,8 @@ small { -webkit-tap-highlight-color: transparent; } -.btn.disabled, .disabled.btn-large, +.btn.disabled, +.disabled.btn-large, .btn-floating.disabled, .btn-large.disabled, .btn-flat.disabled, @@ -5162,14 +5269,15 @@ small { .btn-large[disabled], .btn-flat[disabled] { pointer-events: none; - background-color: #DFDFDF !important; + background-color: #dfdfdf !important; -webkit-box-shadow: none; - box-shadow: none; - color: #9F9F9F !important; + box-shadow: none; + color: #9f9f9f !important; cursor: default; } -.btn.disabled:hover, .disabled.btn-large:hover, +.btn.disabled:hover, +.disabled.btn-large:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn-flat.disabled:hover, @@ -5183,11 +5291,12 @@ small { .btn-floating[disabled]:hover, .btn-large[disabled]:hover, .btn-flat[disabled]:hover { - background-color: #DFDFDF !important; - color: #9F9F9F !important; + background-color: #dfdfdf !important; + color: #9f9f9f !important; } -.btn, .btn-large, +.btn, +.btn-large, .btn-floating, .btn-large, .btn-flat { @@ -5195,7 +5304,8 @@ small { outline: 0; } -.btn i, .btn-large i, +.btn i, +.btn-large i, .btn-floating i, .btn-large i, .btn-flat i { @@ -5203,23 +5313,26 @@ small { line-height: inherit; } -.btn:focus, .btn-large:focus, +.btn:focus, +.btn-large:focus, .btn-floating:focus { background-color: #1d7d74; } -.btn, .btn-large { +.btn, +.btn-large { text-decoration: none; color: #fff; background-color: #26a69a; text-align: center; - letter-spacing: .5px; - -webkit-transition: .2s ease-out; - transition: .2s ease-out; + letter-spacing: 0.5px; + -webkit-transition: 0.2s ease-out; + transition: 0.2s ease-out; cursor: pointer; } -.btn:hover, .btn-large:hover { +.btn:hover, +.btn-large:hover { background-color: #2bbbad; } @@ -5235,8 +5348,8 @@ small { padding: 0; background-color: #26a69a; border-radius: 50%; - -webkit-transition: .3s; - transition: .3s; + -webkit-transition: 0.3s; + transition: 0.3s; cursor: pointer; vertical-align: middle; } @@ -5308,7 +5421,7 @@ button.btn-floating { right: 64px; top: 50%; -webkit-transform: translateY(-50%); - transform: translateY(-50%); + transform: translateY(-50%); height: 100%; left: auto; width: 500px; @@ -5342,8 +5455,8 @@ button.btn-floating { .fixed-action-btn.toolbar ul li { -webkit-box-flex: 1; -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; display: inline-block; margin: 0; height: 100%; @@ -5359,7 +5472,7 @@ button.btn-floating { height: 100%; background-color: transparent; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; color: #fff; line-height: 56px; z-index: 1; @@ -5397,22 +5510,23 @@ button.btn-floating { background-color: #26a69a; border-radius: 50%; -webkit-transform: scale(0); - transform: scale(0); + transform: scale(0); } .btn-flat { -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; background-color: transparent; color: #343434; cursor: pointer; - -webkit-transition: background-color .2s; - transition: background-color .2s; + -webkit-transition: background-color 0.2s; + transition: background-color 0.2s; } -.btn-flat:focus, .btn-flat:hover { +.btn-flat:focus, +.btn-flat:hover { -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; } .btn-flat:focus { @@ -5462,7 +5576,9 @@ button.btn-floating { text-transform: none; } -.dropdown-content li:hover, .dropdown-content li.active, .dropdown-content li.selected { +.dropdown-content li:hover, +.dropdown-content li.active, +.dropdown-content li.selected { background-color: #eee; } @@ -5475,7 +5591,8 @@ button.btn-floating { height: 1px; } -.dropdown-content li > a, .dropdown-content li > span { +.dropdown-content li > a, +.dropdown-content li > span { font-size: 16px; color: #26a69a; display: block; @@ -5517,14 +5634,14 @@ button.btn-floating { display: inline-block; overflow: hidden; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; -webkit-tap-highlight-color: transparent; vertical-align: middle; z-index: 1; - -webkit-transition: .3s ease-out; - transition: .3s ease-out; + -webkit-transition: 0.3s ease-out; + transition: 0.3s ease-out; } .waves-effect .waves-ripple { @@ -5543,7 +5660,7 @@ button.btn-floating { transition-property: transform, opacity; transition-property: transform, opacity, -webkit-transform; -webkit-transform: scale(0); - transform: scale(0); + transform: scale(0); pointer-events: none; } @@ -5575,7 +5692,9 @@ button.btn-floating { background-color: rgba(0, 150, 136, 0.7); } -.waves-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] { +.waves-effect input[type="button"], +.waves-effect input[type="reset"], +.waves-effect input[type="submit"] { border: 0; font-style: normal; font-size: inherit; @@ -5595,7 +5714,7 @@ button.btn-floating { .waves-circle { -webkit-transform: translateZ(0); - transform: translateZ(0); + transform: translateZ(0); -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } @@ -5650,7 +5769,10 @@ button.btn-floating { } } -.modal h1, .modal h2, .modal h3, .modal h4 { +.modal h1, +.modal h2, +.modal h3, +.modal h4 { margin-top: 0; } @@ -5671,7 +5793,9 @@ button.btn-floating { text-align: right; } -.modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { +.modal .modal-footer .btn, +.modal .modal-footer .btn-large, +.modal .modal-footer .btn-flat { margin: 6px 0; } @@ -5750,7 +5874,7 @@ button.btn-floating { display: none; border-bottom: 1px solid #ddd; -webkit-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; padding: 2rem; } @@ -5758,7 +5882,7 @@ button.btn-floating { .side-nav.fixed .collapsible { border: none; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; } .side-nav .collapsible li, @@ -5799,20 +5923,22 @@ button.btn-floating { .collapsible.popout { border: none; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; } .collapsible.popout > li { - -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), + 0 2px 10px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); margin: 0 24px; -webkit-transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .collapsible.popout > li.active { - -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), + 0 4px 15px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); margin: 16px 0; } @@ -5850,18 +5976,18 @@ button.btn-floating { border: none; border-bottom: 1px solid #9e9e9e; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; margin: 0 0 20px 0; min-height: 45px; outline: none; - -webkit-transition: all .3s; - transition: all .3s; + -webkit-transition: all 0.3s; + transition: all 0.3s; } .chips.focus { border-bottom: 1px solid #26a69a; -webkit-box-shadow: 0 1px 0 0 #26a69a; - box-shadow: 0 1px 0 0 #26a69a; + box-shadow: 0 1px 0 0 #26a69a; } .chips:hover { @@ -5890,7 +6016,7 @@ button.btn-floating { .chips .input:focus { border: 0 !important; -webkit-box-shadow: none !important; - box-shadow: none !important; + box-shadow: none !important; } .chips .autocomplete-content { @@ -5907,7 +6033,7 @@ button.btn-floating { .chips:empty ~ label { font-size: 0.8rem; -webkit-transform: translateY(-140%); - transform: translateY(-140%); + transform: translateY(-140%); } .materialboxed { @@ -5915,13 +6041,13 @@ button.btn-floating { cursor: -webkit-zoom-in; cursor: zoom-in; position: relative; - -webkit-transition: opacity .4s; - transition: opacity .4s; + -webkit-transition: opacity 0.4s; + transition: opacity 0.4s; -webkit-backface-visibility: hidden; } .materialboxed:hover:not(.active) { - opacity: .8; + opacity: 0.8; } .materialboxed.active { @@ -5987,17 +6113,17 @@ label { /* Text inputs */ input:not([type]), -input[type=text]:not(.browser-default), -input[type=password]:not(.browser-default), -input[type=email]:not(.browser-default), -input[type=url]:not(.browser-default), -input[type=time]:not(.browser-default), -input[type=date]:not(.browser-default), -input[type=datetime]:not(.browser-default), -input[type=datetime-local]:not(.browser-default), -input[type=tel]:not(.browser-default), -input[type=number]:not(.browser-default), -input[type=search]:not(.browser-default), +input[type="text"]:not(.browser-default), +input[type="password"]:not(.browser-default), +input[type="email"]:not(.browser-default), +input[type="url"]:not(.browser-default), +input[type="time"]:not(.browser-default), +input[type="date"]:not(.browser-default), +input[type="datetime"]:not(.browser-default), +input[type="datetime-local"]:not(.browser-default), +input[type="tel"]:not(.browser-default), +input[type="number"]:not(.browser-default), +input[type="search"]:not(.browser-default), textarea.materialize-textarea { background-color: transparent; border: none; @@ -6010,36 +6136,37 @@ textarea.materialize-textarea { margin: 0 0 20px 0; padding: 0; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; -webkit-box-sizing: content-box; - box-sizing: content-box; + box-sizing: content-box; -webkit-transition: all 0.3s; transition: all 0.3s; } -input:not([type]):disabled, input:not([type])[readonly="readonly"], -input[type=text]:not(.browser-default):disabled, -input[type=text]:not(.browser-default)[readonly="readonly"], -input[type=password]:not(.browser-default):disabled, -input[type=password]:not(.browser-default)[readonly="readonly"], -input[type=email]:not(.browser-default):disabled, -input[type=email]:not(.browser-default)[readonly="readonly"], -input[type=url]:not(.browser-default):disabled, -input[type=url]:not(.browser-default)[readonly="readonly"], -input[type=time]:not(.browser-default):disabled, -input[type=time]:not(.browser-default)[readonly="readonly"], -input[type=date]:not(.browser-default):disabled, -input[type=date]:not(.browser-default)[readonly="readonly"], -input[type=datetime]:not(.browser-default):disabled, -input[type=datetime]:not(.browser-default)[readonly="readonly"], -input[type=datetime-local]:not(.browser-default):disabled, -input[type=datetime-local]:not(.browser-default)[readonly="readonly"], -input[type=tel]:not(.browser-default):disabled, -input[type=tel]:not(.browser-default)[readonly="readonly"], -input[type=number]:not(.browser-default):disabled, -input[type=number]:not(.browser-default)[readonly="readonly"], -input[type=search]:not(.browser-default):disabled, -input[type=search]:not(.browser-default)[readonly="readonly"], +input:not([type]):disabled, +input:not([type])[readonly="readonly"], +input[type="text"]:not(.browser-default):disabled, +input[type="text"]:not(.browser-default)[readonly="readonly"], +input[type="password"]:not(.browser-default):disabled, +input[type="password"]:not(.browser-default)[readonly="readonly"], +input[type="email"]:not(.browser-default):disabled, +input[type="email"]:not(.browser-default)[readonly="readonly"], +input[type="url"]:not(.browser-default):disabled, +input[type="url"]:not(.browser-default)[readonly="readonly"], +input[type="time"]:not(.browser-default):disabled, +input[type="time"]:not(.browser-default)[readonly="readonly"], +input[type="date"]:not(.browser-default):disabled, +input[type="date"]:not(.browser-default)[readonly="readonly"], +input[type="datetime"]:not(.browser-default):disabled, +input[type="datetime"]:not(.browser-default)[readonly="readonly"], +input[type="datetime-local"]:not(.browser-default):disabled, +input[type="datetime-local"]:not(.browser-default)[readonly="readonly"], +input[type="tel"]:not(.browser-default):disabled, +input[type="tel"]:not(.browser-default)[readonly="readonly"], +input[type="number"]:not(.browser-default):disabled, +input[type="number"]:not(.browser-default)[readonly="readonly"], +input[type="search"]:not(.browser-default):disabled, +input[type="search"]:not(.browser-default)[readonly="readonly"], textarea.materialize-textarea:disabled, textarea.materialize-textarea[readonly="readonly"] { color: rgba(0, 0, 0, 0.42); @@ -6048,107 +6175,108 @@ textarea.materialize-textarea[readonly="readonly"] { input:not([type]):disabled + label, input:not([type])[readonly="readonly"] + label, -input[type=text]:not(.browser-default):disabled + label, -input[type=text]:not(.browser-default)[readonly="readonly"] + label, -input[type=password]:not(.browser-default):disabled + label, -input[type=password]:not(.browser-default)[readonly="readonly"] + label, -input[type=email]:not(.browser-default):disabled + label, -input[type=email]:not(.browser-default)[readonly="readonly"] + label, -input[type=url]:not(.browser-default):disabled + label, -input[type=url]:not(.browser-default)[readonly="readonly"] + label, -input[type=time]:not(.browser-default):disabled + label, -input[type=time]:not(.browser-default)[readonly="readonly"] + label, -input[type=date]:not(.browser-default):disabled + label, -input[type=date]:not(.browser-default)[readonly="readonly"] + label, -input[type=datetime]:not(.browser-default):disabled + label, -input[type=datetime]:not(.browser-default)[readonly="readonly"] + label, -input[type=datetime-local]:not(.browser-default):disabled + label, -input[type=datetime-local]:not(.browser-default)[readonly="readonly"] + label, -input[type=tel]:not(.browser-default):disabled + label, -input[type=tel]:not(.browser-default)[readonly="readonly"] + label, -input[type=number]:not(.browser-default):disabled + label, -input[type=number]:not(.browser-default)[readonly="readonly"] + label, -input[type=search]:not(.browser-default):disabled + label, -input[type=search]:not(.browser-default)[readonly="readonly"] + label, +input[type="text"]:not(.browser-default):disabled + label, +input[type="text"]:not(.browser-default)[readonly="readonly"] + label, +input[type="password"]:not(.browser-default):disabled + label, +input[type="password"]:not(.browser-default)[readonly="readonly"] + label, +input[type="email"]:not(.browser-default):disabled + label, +input[type="email"]:not(.browser-default)[readonly="readonly"] + label, +input[type="url"]:not(.browser-default):disabled + label, +input[type="url"]:not(.browser-default)[readonly="readonly"] + label, +input[type="time"]:not(.browser-default):disabled + label, +input[type="time"]:not(.browser-default)[readonly="readonly"] + label, +input[type="date"]:not(.browser-default):disabled + label, +input[type="date"]:not(.browser-default)[readonly="readonly"] + label, +input[type="datetime"]:not(.browser-default):disabled + label, +input[type="datetime"]:not(.browser-default)[readonly="readonly"] + label, +input[type="datetime-local"]:not(.browser-default):disabled + label, +input[type="datetime-local"]:not(.browser-default)[readonly="readonly"] + label, +input[type="tel"]:not(.browser-default):disabled + label, +input[type="tel"]:not(.browser-default)[readonly="readonly"] + label, +input[type="number"]:not(.browser-default):disabled + label, +input[type="number"]:not(.browser-default)[readonly="readonly"] + label, +input[type="search"]:not(.browser-default):disabled + label, +input[type="search"]:not(.browser-default)[readonly="readonly"] + label, textarea.materialize-textarea:disabled + label, textarea.materialize-textarea[readonly="readonly"] + label { color: rgba(0, 0, 0, 0.42); } input:not([type]):focus:not([readonly]), -input[type=text]:not(.browser-default):focus:not([readonly]), -input[type=password]:not(.browser-default):focus:not([readonly]), -input[type=email]:not(.browser-default):focus:not([readonly]), -input[type=url]:not(.browser-default):focus:not([readonly]), -input[type=time]:not(.browser-default):focus:not([readonly]), -input[type=date]:not(.browser-default):focus:not([readonly]), -input[type=datetime]:not(.browser-default):focus:not([readonly]), -input[type=datetime-local]:not(.browser-default):focus:not([readonly]), -input[type=tel]:not(.browser-default):focus:not([readonly]), -input[type=number]:not(.browser-default):focus:not([readonly]), -input[type=search]:not(.browser-default):focus:not([readonly]), +input[type="text"]:not(.browser-default):focus:not([readonly]), +input[type="password"]:not(.browser-default):focus:not([readonly]), +input[type="email"]:not(.browser-default):focus:not([readonly]), +input[type="url"]:not(.browser-default):focus:not([readonly]), +input[type="time"]:not(.browser-default):focus:not([readonly]), +input[type="date"]:not(.browser-default):focus:not([readonly]), +input[type="datetime"]:not(.browser-default):focus:not([readonly]), +input[type="datetime-local"]:not(.browser-default):focus:not([readonly]), +input[type="tel"]:not(.browser-default):focus:not([readonly]), +input[type="number"]:not(.browser-default):focus:not([readonly]), +input[type="search"]:not(.browser-default):focus:not([readonly]), textarea.materialize-textarea:focus:not([readonly]) { border-bottom: 1px solid #26a69a; -webkit-box-shadow: 0 1px 0 0 #26a69a; - box-shadow: 0 1px 0 0 #26a69a; + box-shadow: 0 1px 0 0 #26a69a; } input:not([type]):focus:not([readonly]) + label, -input[type=text]:not(.browser-default):focus:not([readonly]) + label, -input[type=password]:not(.browser-default):focus:not([readonly]) + label, -input[type=email]:not(.browser-default):focus:not([readonly]) + label, -input[type=url]:not(.browser-default):focus:not([readonly]) + label, -input[type=time]:not(.browser-default):focus:not([readonly]) + label, -input[type=date]:not(.browser-default):focus:not([readonly]) + label, -input[type=datetime]:not(.browser-default):focus:not([readonly]) + label, -input[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label, -input[type=tel]:not(.browser-default):focus:not([readonly]) + label, -input[type=number]:not(.browser-default):focus:not([readonly]) + label, -input[type=search]:not(.browser-default):focus:not([readonly]) + label, +input[type="text"]:not(.browser-default):focus:not([readonly]) + label, +input[type="password"]:not(.browser-default):focus:not([readonly]) + label, +input[type="email"]:not(.browser-default):focus:not([readonly]) + label, +input[type="url"]:not(.browser-default):focus:not([readonly]) + label, +input[type="time"]:not(.browser-default):focus:not([readonly]) + label, +input[type="date"]:not(.browser-default):focus:not([readonly]) + label, +input[type="datetime"]:not(.browser-default):focus:not([readonly]) + label, +input[type="datetime-local"]:not(.browser-default):focus:not([readonly]) + + label, +input[type="tel"]:not(.browser-default):focus:not([readonly]) + label, +input[type="number"]:not(.browser-default):focus:not([readonly]) + label, +input[type="search"]:not(.browser-default):focus:not([readonly]) + label, textarea.materialize-textarea:focus:not([readonly]) + label { color: #26a69a; } input:not([type]).validate + label, -input[type=text]:not(.browser-default).validate + label, -input[type=password]:not(.browser-default).validate + label, -input[type=email]:not(.browser-default).validate + label, -input[type=url]:not(.browser-default).validate + label, -input[type=time]:not(.browser-default).validate + label, -input[type=date]:not(.browser-default).validate + label, -input[type=datetime]:not(.browser-default).validate + label, -input[type=datetime-local]:not(.browser-default).validate + label, -input[type=tel]:not(.browser-default).validate + label, -input[type=number]:not(.browser-default).validate + label, -input[type=search]:not(.browser-default).validate + label, +input[type="text"]:not(.browser-default).validate + label, +input[type="password"]:not(.browser-default).validate + label, +input[type="email"]:not(.browser-default).validate + label, +input[type="url"]:not(.browser-default).validate + label, +input[type="time"]:not(.browser-default).validate + label, +input[type="date"]:not(.browser-default).validate + label, +input[type="datetime"]:not(.browser-default).validate + label, +input[type="datetime-local"]:not(.browser-default).validate + label, +input[type="tel"]:not(.browser-default).validate + label, +input[type="number"]:not(.browser-default).validate + label, +input[type="search"]:not(.browser-default).validate + label, textarea.materialize-textarea.validate + label { width: 100%; } input:not([type]).invalid + label:after, input:not([type]).valid + label:after, -input[type=text]:not(.browser-default).invalid + label:after, -input[type=text]:not(.browser-default).valid + label:after, -input[type=password]:not(.browser-default).invalid + label:after, -input[type=password]:not(.browser-default).valid + label:after, -input[type=email]:not(.browser-default).invalid + label:after, -input[type=email]:not(.browser-default).valid + label:after, -input[type=url]:not(.browser-default).invalid + label:after, -input[type=url]:not(.browser-default).valid + label:after, -input[type=time]:not(.browser-default).invalid + label:after, -input[type=time]:not(.browser-default).valid + label:after, -input[type=date]:not(.browser-default).invalid + label:after, -input[type=date]:not(.browser-default).valid + label:after, -input[type=datetime]:not(.browser-default).invalid + label:after, -input[type=datetime]:not(.browser-default).valid + label:after, -input[type=datetime-local]:not(.browser-default).invalid + label:after, -input[type=datetime-local]:not(.browser-default).valid + label:after, -input[type=tel]:not(.browser-default).invalid + label:after, -input[type=tel]:not(.browser-default).valid + label:after, -input[type=number]:not(.browser-default).invalid + label:after, -input[type=number]:not(.browser-default).valid + label:after, -input[type=search]:not(.browser-default).invalid + label:after, -input[type=search]:not(.browser-default).valid + label:after, +input[type="text"]:not(.browser-default).invalid + label:after, +input[type="text"]:not(.browser-default).valid + label:after, +input[type="password"]:not(.browser-default).invalid + label:after, +input[type="password"]:not(.browser-default).valid + label:after, +input[type="email"]:not(.browser-default).invalid + label:after, +input[type="email"]:not(.browser-default).valid + label:after, +input[type="url"]:not(.browser-default).invalid + label:after, +input[type="url"]:not(.browser-default).valid + label:after, +input[type="time"]:not(.browser-default).invalid + label:after, +input[type="time"]:not(.browser-default).valid + label:after, +input[type="date"]:not(.browser-default).invalid + label:after, +input[type="date"]:not(.browser-default).valid + label:after, +input[type="datetime"]:not(.browser-default).invalid + label:after, +input[type="datetime"]:not(.browser-default).valid + label:after, +input[type="datetime-local"]:not(.browser-default).invalid + label:after, +input[type="datetime-local"]:not(.browser-default).valid + label:after, +input[type="tel"]:not(.browser-default).invalid + label:after, +input[type="tel"]:not(.browser-default).valid + label:after, +input[type="number"]:not(.browser-default).invalid + label:after, +input[type="number"]:not(.browser-default).valid + label:after, +input[type="search"]:not(.browser-default).invalid + label:after, +input[type="search"]:not(.browser-default).valid + label:after, textarea.materialize-textarea.invalid + label:after, textarea.materialize-textarea.valid + label:after { display: none; @@ -6156,181 +6284,188 @@ textarea.materialize-textarea.valid + label:after { input:not([type]).invalid + label.active:after, input:not([type]).valid + label.active:after, -input[type=text]:not(.browser-default).invalid + label.active:after, -input[type=text]:not(.browser-default).valid + label.active:after, -input[type=password]:not(.browser-default).invalid + label.active:after, -input[type=password]:not(.browser-default).valid + label.active:after, -input[type=email]:not(.browser-default).invalid + label.active:after, -input[type=email]:not(.browser-default).valid + label.active:after, -input[type=url]:not(.browser-default).invalid + label.active:after, -input[type=url]:not(.browser-default).valid + label.active:after, -input[type=time]:not(.browser-default).invalid + label.active:after, -input[type=time]:not(.browser-default).valid + label.active:after, -input[type=date]:not(.browser-default).invalid + label.active:after, -input[type=date]:not(.browser-default).valid + label.active:after, -input[type=datetime]:not(.browser-default).invalid + label.active:after, -input[type=datetime]:not(.browser-default).valid + label.active:after, -input[type=datetime-local]:not(.browser-default).invalid + label.active:after, -input[type=datetime-local]:not(.browser-default).valid + label.active:after, -input[type=tel]:not(.browser-default).invalid + label.active:after, -input[type=tel]:not(.browser-default).valid + label.active:after, -input[type=number]:not(.browser-default).invalid + label.active:after, -input[type=number]:not(.browser-default).valid + label.active:after, -input[type=search]:not(.browser-default).invalid + label.active:after, -input[type=search]:not(.browser-default).valid + label.active:after, +input[type="text"]:not(.browser-default).invalid + label.active:after, +input[type="text"]:not(.browser-default).valid + label.active:after, +input[type="password"]:not(.browser-default).invalid + label.active:after, +input[type="password"]:not(.browser-default).valid + label.active:after, +input[type="email"]:not(.browser-default).invalid + label.active:after, +input[type="email"]:not(.browser-default).valid + label.active:after, +input[type="url"]:not(.browser-default).invalid + label.active:after, +input[type="url"]:not(.browser-default).valid + label.active:after, +input[type="time"]:not(.browser-default).invalid + label.active:after, +input[type="time"]:not(.browser-default).valid + label.active:after, +input[type="date"]:not(.browser-default).invalid + label.active:after, +input[type="date"]:not(.browser-default).valid + label.active:after, +input[type="datetime"]:not(.browser-default).invalid + label.active:after, +input[type="datetime"]:not(.browser-default).valid + label.active:after, +input[type="datetime-local"]:not(.browser-default).invalid + label.active:after, +input[type="datetime-local"]:not(.browser-default).valid + label.active:after, +input[type="tel"]:not(.browser-default).invalid + label.active:after, +input[type="tel"]:not(.browser-default).valid + label.active:after, +input[type="number"]:not(.browser-default).invalid + label.active:after, +input[type="number"]:not(.browser-default).valid + label.active:after, +input[type="search"]:not(.browser-default).invalid + label.active:after, +input[type="search"]:not(.browser-default).valid + label.active:after, textarea.materialize-textarea.invalid + label.active:after, textarea.materialize-textarea.valid + label.active:after { display: block; } /* Validation Sass Placeholders */ -input.valid:not([type]), input.valid:not([type]):focus, -input[type=text].valid:not(.browser-default), -input[type=text].valid:not(.browser-default):focus, -input[type=password].valid:not(.browser-default), -input[type=password].valid:not(.browser-default):focus, -input[type=email].valid:not(.browser-default), -input[type=email].valid:not(.browser-default):focus, -input[type=url].valid:not(.browser-default), -input[type=url].valid:not(.browser-default):focus, -input[type=time].valid:not(.browser-default), -input[type=time].valid:not(.browser-default):focus, -input[type=date].valid:not(.browser-default), -input[type=date].valid:not(.browser-default):focus, -input[type=datetime].valid:not(.browser-default), -input[type=datetime].valid:not(.browser-default):focus, -input[type=datetime-local].valid:not(.browser-default), -input[type=datetime-local].valid:not(.browser-default):focus, -input[type=tel].valid:not(.browser-default), -input[type=tel].valid:not(.browser-default):focus, -input[type=number].valid:not(.browser-default), -input[type=number].valid:not(.browser-default):focus, -input[type=search].valid:not(.browser-default), -input[type=search].valid:not(.browser-default):focus, +input.valid:not([type]), +input.valid:not([type]):focus, +input[type="text"].valid:not(.browser-default), +input[type="text"].valid:not(.browser-default):focus, +input[type="password"].valid:not(.browser-default), +input[type="password"].valid:not(.browser-default):focus, +input[type="email"].valid:not(.browser-default), +input[type="email"].valid:not(.browser-default):focus, +input[type="url"].valid:not(.browser-default), +input[type="url"].valid:not(.browser-default):focus, +input[type="time"].valid:not(.browser-default), +input[type="time"].valid:not(.browser-default):focus, +input[type="date"].valid:not(.browser-default), +input[type="date"].valid:not(.browser-default):focus, +input[type="datetime"].valid:not(.browser-default), +input[type="datetime"].valid:not(.browser-default):focus, +input[type="datetime-local"].valid:not(.browser-default), +input[type="datetime-local"].valid:not(.browser-default):focus, +input[type="tel"].valid:not(.browser-default), +input[type="tel"].valid:not(.browser-default):focus, +input[type="number"].valid:not(.browser-default), +input[type="number"].valid:not(.browser-default):focus, +input[type="search"].valid:not(.browser-default), +input[type="search"].valid:not(.browser-default):focus, textarea.materialize-textarea.valid, -textarea.materialize-textarea.valid:focus, .select-wrapper.valid > input.select-dropdown { - border-bottom: 1px solid #4CAF50; - -webkit-box-shadow: 0 1px 0 0 #4CAF50; - box-shadow: 0 1px 0 0 #4CAF50; +textarea.materialize-textarea.valid:focus, +.select-wrapper.valid > input.select-dropdown { + border-bottom: 1px solid #4caf50; + -webkit-box-shadow: 0 1px 0 0 #4caf50; + box-shadow: 0 1px 0 0 #4caf50; } -input.invalid:not([type]), input.invalid:not([type]):focus, -input[type=text].invalid:not(.browser-default), -input[type=text].invalid:not(.browser-default):focus, -input[type=password].invalid:not(.browser-default), -input[type=password].invalid:not(.browser-default):focus, -input[type=email].invalid:not(.browser-default), -input[type=email].invalid:not(.browser-default):focus, -input[type=url].invalid:not(.browser-default), -input[type=url].invalid:not(.browser-default):focus, -input[type=time].invalid:not(.browser-default), -input[type=time].invalid:not(.browser-default):focus, -input[type=date].invalid:not(.browser-default), -input[type=date].invalid:not(.browser-default):focus, -input[type=datetime].invalid:not(.browser-default), -input[type=datetime].invalid:not(.browser-default):focus, -input[type=datetime-local].invalid:not(.browser-default), -input[type=datetime-local].invalid:not(.browser-default):focus, -input[type=tel].invalid:not(.browser-default), -input[type=tel].invalid:not(.browser-default):focus, -input[type=number].invalid:not(.browser-default), -input[type=number].invalid:not(.browser-default):focus, -input[type=search].invalid:not(.browser-default), -input[type=search].invalid:not(.browser-default):focus, +input.invalid:not([type]), +input.invalid:not([type]):focus, +input[type="text"].invalid:not(.browser-default), +input[type="text"].invalid:not(.browser-default):focus, +input[type="password"].invalid:not(.browser-default), +input[type="password"].invalid:not(.browser-default):focus, +input[type="email"].invalid:not(.browser-default), +input[type="email"].invalid:not(.browser-default):focus, +input[type="url"].invalid:not(.browser-default), +input[type="url"].invalid:not(.browser-default):focus, +input[type="time"].invalid:not(.browser-default), +input[type="time"].invalid:not(.browser-default):focus, +input[type="date"].invalid:not(.browser-default), +input[type="date"].invalid:not(.browser-default):focus, +input[type="datetime"].invalid:not(.browser-default), +input[type="datetime"].invalid:not(.browser-default):focus, +input[type="datetime-local"].invalid:not(.browser-default), +input[type="datetime-local"].invalid:not(.browser-default):focus, +input[type="tel"].invalid:not(.browser-default), +input[type="tel"].invalid:not(.browser-default):focus, +input[type="number"].invalid:not(.browser-default), +input[type="number"].invalid:not(.browser-default):focus, +input[type="search"].invalid:not(.browser-default), +input[type="search"].invalid:not(.browser-default):focus, textarea.materialize-textarea.invalid, -textarea.materialize-textarea.invalid:focus, .select-wrapper.invalid > input.select-dropdown { - border-bottom: 1px solid #F44336; - -webkit-box-shadow: 0 1px 0 0 #F44336; - box-shadow: 0 1px 0 0 #F44336; +textarea.materialize-textarea.invalid:focus, +.select-wrapper.invalid > input.select-dropdown { + border-bottom: 1px solid #f44336; + -webkit-box-shadow: 0 1px 0 0 #f44336; + box-shadow: 0 1px 0 0 #f44336; } input:not([type]).valid + label:after, input:not([type]):focus.valid + label:after, -input[type=text]:not(.browser-default).valid + label:after, -input[type=text]:not(.browser-default):focus.valid + label:after, -input[type=password]:not(.browser-default).valid + label:after, -input[type=password]:not(.browser-default):focus.valid + label:after, -input[type=email]:not(.browser-default).valid + label:after, -input[type=email]:not(.browser-default):focus.valid + label:after, -input[type=url]:not(.browser-default).valid + label:after, -input[type=url]:not(.browser-default):focus.valid + label:after, -input[type=time]:not(.browser-default).valid + label:after, -input[type=time]:not(.browser-default):focus.valid + label:after, -input[type=date]:not(.browser-default).valid + label:after, -input[type=date]:not(.browser-default):focus.valid + label:after, -input[type=datetime]:not(.browser-default).valid + label:after, -input[type=datetime]:not(.browser-default):focus.valid + label:after, -input[type=datetime-local]:not(.browser-default).valid + label:after, -input[type=datetime-local]:not(.browser-default):focus.valid + label:after, -input[type=tel]:not(.browser-default).valid + label:after, -input[type=tel]:not(.browser-default):focus.valid + label:after, -input[type=number]:not(.browser-default).valid + label:after, -input[type=number]:not(.browser-default):focus.valid + label:after, -input[type=search]:not(.browser-default).valid + label:after, -input[type=search]:not(.browser-default):focus.valid + label:after, +input[type="text"]:not(.browser-default).valid + label:after, +input[type="text"]:not(.browser-default):focus.valid + label:after, +input[type="password"]:not(.browser-default).valid + label:after, +input[type="password"]:not(.browser-default):focus.valid + label:after, +input[type="email"]:not(.browser-default).valid + label:after, +input[type="email"]:not(.browser-default):focus.valid + label:after, +input[type="url"]:not(.browser-default).valid + label:after, +input[type="url"]:not(.browser-default):focus.valid + label:after, +input[type="time"]:not(.browser-default).valid + label:after, +input[type="time"]:not(.browser-default):focus.valid + label:after, +input[type="date"]:not(.browser-default).valid + label:after, +input[type="date"]:not(.browser-default):focus.valid + label:after, +input[type="datetime"]:not(.browser-default).valid + label:after, +input[type="datetime"]:not(.browser-default):focus.valid + label:after, +input[type="datetime-local"]:not(.browser-default).valid + label:after, +input[type="datetime-local"]:not(.browser-default):focus.valid + label:after, +input[type="tel"]:not(.browser-default).valid + label:after, +input[type="tel"]:not(.browser-default):focus.valid + label:after, +input[type="number"]:not(.browser-default).valid + label:after, +input[type="number"]:not(.browser-default):focus.valid + label:after, +input[type="search"]:not(.browser-default).valid + label:after, +input[type="search"]:not(.browser-default):focus.valid + label:after, textarea.materialize-textarea.valid + label:after, -textarea.materialize-textarea:focus.valid + label:after, .select-wrapper.valid + label:after { +textarea.materialize-textarea:focus.valid + label:after, +.select-wrapper.valid + label:after { content: attr(data-success); - color: #4CAF50; + color: #4caf50; opacity: 1; -webkit-transform: translateY(9px); - transform: translateY(9px); + transform: translateY(9px); } input:not([type]).invalid + label:after, input:not([type]):focus.invalid + label:after, -input[type=text]:not(.browser-default).invalid + label:after, -input[type=text]:not(.browser-default):focus.invalid + label:after, -input[type=password]:not(.browser-default).invalid + label:after, -input[type=password]:not(.browser-default):focus.invalid + label:after, -input[type=email]:not(.browser-default).invalid + label:after, -input[type=email]:not(.browser-default):focus.invalid + label:after, -input[type=url]:not(.browser-default).invalid + label:after, -input[type=url]:not(.browser-default):focus.invalid + label:after, -input[type=time]:not(.browser-default).invalid + label:after, -input[type=time]:not(.browser-default):focus.invalid + label:after, -input[type=date]:not(.browser-default).invalid + label:after, -input[type=date]:not(.browser-default):focus.invalid + label:after, -input[type=datetime]:not(.browser-default).invalid + label:after, -input[type=datetime]:not(.browser-default):focus.invalid + label:after, -input[type=datetime-local]:not(.browser-default).invalid + label:after, -input[type=datetime-local]:not(.browser-default):focus.invalid + label:after, -input[type=tel]:not(.browser-default).invalid + label:after, -input[type=tel]:not(.browser-default):focus.invalid + label:after, -input[type=number]:not(.browser-default).invalid + label:after, -input[type=number]:not(.browser-default):focus.invalid + label:after, -input[type=search]:not(.browser-default).invalid + label:after, -input[type=search]:not(.browser-default):focus.invalid + label:after, +input[type="text"]:not(.browser-default).invalid + label:after, +input[type="text"]:not(.browser-default):focus.invalid + label:after, +input[type="password"]:not(.browser-default).invalid + label:after, +input[type="password"]:not(.browser-default):focus.invalid + label:after, +input[type="email"]:not(.browser-default).invalid + label:after, +input[type="email"]:not(.browser-default):focus.invalid + label:after, +input[type="url"]:not(.browser-default).invalid + label:after, +input[type="url"]:not(.browser-default):focus.invalid + label:after, +input[type="time"]:not(.browser-default).invalid + label:after, +input[type="time"]:not(.browser-default):focus.invalid + label:after, +input[type="date"]:not(.browser-default).invalid + label:after, +input[type="date"]:not(.browser-default):focus.invalid + label:after, +input[type="datetime"]:not(.browser-default).invalid + label:after, +input[type="datetime"]:not(.browser-default):focus.invalid + label:after, +input[type="datetime-local"]:not(.browser-default).invalid + label:after, +input[type="datetime-local"]:not(.browser-default):focus.invalid + label:after, +input[type="tel"]:not(.browser-default).invalid + label:after, +input[type="tel"]:not(.browser-default):focus.invalid + label:after, +input[type="number"]:not(.browser-default).invalid + label:after, +input[type="number"]:not(.browser-default):focus.invalid + label:after, +input[type="search"]:not(.browser-default).invalid + label:after, +input[type="search"]:not(.browser-default):focus.invalid + label:after, textarea.materialize-textarea.invalid + label:after, -textarea.materialize-textarea:focus.invalid + label:after, .select-wrapper.invalid + label:after { +textarea.materialize-textarea:focus.invalid + label:after, +.select-wrapper.invalid + label:after { content: attr(data-error); - color: #F44336; + color: #f44336; opacity: 1; -webkit-transform: translateY(9px); - transform: translateY(9px); + transform: translateY(9px); } input:not([type]) + label:after, -input[type=text]:not(.browser-default) + label:after, -input[type=password]:not(.browser-default) + label:after, -input[type=email]:not(.browser-default) + label:after, -input[type=url]:not(.browser-default) + label:after, -input[type=time]:not(.browser-default) + label:after, -input[type=date]:not(.browser-default) + label:after, -input[type=datetime]:not(.browser-default) + label:after, -input[type=datetime-local]:not(.browser-default) + label:after, -input[type=tel]:not(.browser-default) + label:after, -input[type=number]:not(.browser-default) + label:after, -input[type=search]:not(.browser-default) + label:after, -textarea.materialize-textarea + label:after, .select-wrapper + label:after { +input[type="text"]:not(.browser-default) + label:after, +input[type="password"]:not(.browser-default) + label:after, +input[type="email"]:not(.browser-default) + label:after, +input[type="url"]:not(.browser-default) + label:after, +input[type="time"]:not(.browser-default) + label:after, +input[type="date"]:not(.browser-default) + label:after, +input[type="datetime"]:not(.browser-default) + label:after, +input[type="datetime-local"]:not(.browser-default) + label:after, +input[type="tel"]:not(.browser-default) + label:after, +input[type="number"]:not(.browser-default) + label:after, +input[type="search"]:not(.browser-default) + label:after, +textarea.materialize-textarea + label:after, +.select-wrapper + label:after { display: block; content: ""; position: absolute; top: 100%; left: 0; opacity: 0; - -webkit-transition: .2s opacity ease-out, .2s color ease-out; - transition: .2s opacity ease-out, .2s color ease-out; + -webkit-transition: 0.2s opacity ease-out, 0.2s color ease-out; + transition: 0.2s opacity ease-out, 0.2s color ease-out; } .input-field { @@ -6366,31 +6501,31 @@ textarea.materialize-textarea + label:after, .select-wrapper + label:after { height: 100%; font-size: 1rem; cursor: text; - -webkit-transition: -webkit-transform .2s ease-out; - transition: -webkit-transform .2s ease-out; - transition: transform .2s ease-out; - transition: transform .2s ease-out, -webkit-transform .2s ease-out; + -webkit-transition: -webkit-transform 0.2s ease-out; + transition: -webkit-transform 0.2s ease-out; + transition: transform 0.2s ease-out; + transition: transform 0.2s ease-out, -webkit-transform 0.2s ease-out; -webkit-transform-origin: 0% 100%; - transform-origin: 0% 100%; + transform-origin: 0% 100%; text-align: initial; -webkit-transform: translateY(12px); - transform: translateY(12px); + transform: translateY(12px); pointer-events: none; } .input-field label:not(.label-icon).active { -webkit-transform: translateY(-14px) scale(0.8); - transform: translateY(-14px) scale(0.8); + transform: translateY(-14px) scale(0.8); -webkit-transform-origin: 0 0; - transform-origin: 0 0; + transform-origin: 0 0; } .input-field .prefix { position: absolute; width: 3rem; font-size: 2rem; - -webkit-transition: color .2s; - transition: color .2s; + -webkit-transition: color 0.2s; + transition: color 0.2s; } .input-field .prefix.active { @@ -6426,48 +6561,48 @@ textarea.materialize-textarea + label:after, .select-wrapper + label:after { } /* Search Field */ -.input-field input[type=search] { +.input-field input[type="search"] { display: block; line-height: inherit; } -.nav-wrapper .input-field input[type=search] { +.nav-wrapper .input-field input[type="search"] { height: inherit; padding-left: 4rem; width: calc(100% - 4rem); border: 0; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; } -.input-field input[type=search]:focus { +.input-field input[type="search"]:focus { background-color: #fff; border: 0; -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; color: #444; } -.input-field input[type=search]:focus + label i, -.input-field input[type=search]:focus ~ .mdi-navigation-close, -.input-field input[type=search]:focus ~ .material-icons { +.input-field input[type="search"]:focus + label i, +.input-field input[type="search"]:focus ~ .mdi-navigation-close, +.input-field input[type="search"]:focus ~ .material-icons { color: #444; } -.input-field input[type=search] + label { +.input-field input[type="search"] + label { left: 1rem; } -.input-field input[type=search] ~ .mdi-navigation-close, -.input-field input[type=search] ~ .material-icons { +.input-field input[type="search"] ~ .mdi-navigation-close, +.input-field input[type="search"] ~ .material-icons { position: absolute; top: 0; right: 1rem; color: transparent; cursor: pointer; font-size: 2rem; - -webkit-transition: .3s color; - transition: .3s color; + -webkit-transition: 0.3s color; + transition: 0.3s color; } /* Textarea */ @@ -6480,7 +6615,7 @@ textarea { textarea.materialize-textarea { overflow-y: hidden; /* prevents scroll bar flash */ - padding: .8rem 0 1.6rem 0; + padding: 0.8rem 0 1.6rem 0; /* prevents text jump on Enter keypress */ resize: none; min-height: 3rem; @@ -6496,7 +6631,7 @@ textarea.materialize-textarea.validate + label::after { textarea.materialize-textarea.validate + label:not(.label-icon).active { -webkit-transform: translateY(-25px); - transform: translateY(-25px); + transform: translateY(-25px); } .hiddendiv { @@ -6548,17 +6683,17 @@ textarea.materialize-textarea.validate + label:not(.label-icon).active { height: 25px; line-height: 25px; font-size: 1rem; - -webkit-transition: .28s ease; - transition: .28s ease; + -webkit-transition: 0.28s ease; + transition: 0.28s ease; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } [type="radio"] + label:before, [type="radio"] + label:after { - content: ''; + content: ""; position: absolute; left: 0; top: 0; @@ -6566,8 +6701,8 @@ textarea.materialize-textarea.validate + label:not(.label-icon).active { width: 16px; height: 16px; z-index: 0; - -webkit-transition: .28s ease; - transition: .28s ease; + -webkit-transition: 0.28s ease; + transition: 0.28s ease; } /* Unchecked styles */ @@ -6587,7 +6722,7 @@ textarea.materialize-textarea.validate + label:not(.label-icon).active { [type="radio"]:not(:checked) + label:after { -webkit-transform: scale(0); - transform: scale(0); + transform: scale(0); } /* Checked styles */ @@ -6608,19 +6743,19 @@ textarea.materialize-textarea.validate + label:not(.label-icon).active { [type="radio"]:checked + label:after { -webkit-transform: scale(1.02); - transform: scale(1.02); + transform: scale(1.02); } /* Radio With gap */ [type="radio"].with-gap:checked + label:after { -webkit-transform: scale(0.5); - transform: scale(0.5); + transform: scale(0.5); } /* Focused styles */ [type="radio"].tabbed:focus + label:before { -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); } /* Disabled Radio With gap */ @@ -6686,14 +6821,14 @@ form p:last-child { line-height: 25px; font-size: 1rem; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } [type="checkbox"] + label:before, [type="checkbox"]:not(.filled-in) + label:after { - content: ''; + content: ""; position: absolute; top: 0; left: 0; @@ -6703,14 +6838,14 @@ form p:last-child { border: 2px solid #5a5a5a; border-radius: 1px; margin-top: 2px; - -webkit-transition: .2s; - transition: .2s; + -webkit-transition: 0.2s; + transition: 0.2s; } [type="checkbox"]:not(.filled-in) + label:after { border: 0; -webkit-transform: scale(0); - transform: scale(0); + transform: scale(0); } [type="checkbox"]:not(:checked):disabled + label:before { @@ -6720,11 +6855,11 @@ form p:last-child { [type="checkbox"].tabbed:focus + label:after { -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); border: 0; border-radius: 50%; -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); background-color: rgba(0, 0, 0, 0.1); } @@ -6738,11 +6873,11 @@ form p:last-child { border-right: 2px solid #26a69a; border-bottom: 2px solid #26a69a; -webkit-transform: rotate(40deg); - transform: rotate(40deg); + transform: rotate(40deg); -webkit-backface-visibility: hidden; - backface-visibility: hidden; + backface-visibility: hidden; -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"]:checked:disabled + label:before { @@ -6761,11 +6896,11 @@ form p:last-child { border-right: 2px solid #26a69a; border-bottom: none; -webkit-transform: rotate(90deg); - transform: rotate(90deg); + transform: rotate(90deg); -webkit-backface-visibility: hidden; - backface-visibility: hidden; + backface-visibility: hidden; -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"]:indeterminate:disabled + label:before { @@ -6779,12 +6914,14 @@ form p:last-child { [type="checkbox"].filled-in + label:before, [type="checkbox"].filled-in + label:after { - content: ''; + content: ""; left: 0; position: absolute; /* .1s delay is for check animation */ - -webkit-transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; - transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + -webkit-transition: border 0.25s, background-color 0.25s, width 0.2s 0.1s, + height 0.2s 0.1s, top 0.2s 0.1s, left 0.2s 0.1s; + transition: border 0.25s, background-color 0.25s, width 0.2s 0.1s, + height 0.2s 0.1s, top 0.2s 0.1s, left 0.2s 0.1s; z-index: 1; } @@ -6795,9 +6932,9 @@ form p:last-child { left: 6px; top: 10px; -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); + transform: rotateZ(37deg); -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"].filled-in:not(:checked) + label:after { @@ -6819,9 +6956,9 @@ form p:last-child { border-right: 2px solid #fff; border-bottom: 2px solid #fff; -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); + transform: rotateZ(37deg); -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"].filled-in:checked + label:after { @@ -6870,30 +7007,31 @@ form p:last-child { .switch * { -webkit-tap-highlight-color: transparent; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .switch label { cursor: pointer; } -.switch label input[type=checkbox] { +.switch label input[type="checkbox"] { opacity: 0; width: 0; height: 0; } -.switch label input[type=checkbox]:checked + .lever { +.switch label input[type="checkbox"]:checked + .lever { background-color: #84c7c1; } -.switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after { +.switch label input[type="checkbox"]:checked + .lever:before, +.switch label input[type="checkbox"]:checked + .lever:after { left: 18px; } -.switch label input[type=checkbox]:checked + .lever:after { +.switch label input[type="checkbox"]:checked + .lever:after { background-color: #26a69a; } @@ -6912,7 +7050,8 @@ form p:last-child { margin: 0 16px; } -.switch label .lever:before, .switch label .lever:after { +.switch label .lever:before, +.switch label .lever:after { content: ""; position: absolute; display: inline-block; @@ -6921,10 +7060,15 @@ form p:last-child { border-radius: 50%; left: 0; top: -3px; - -webkit-transition: left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease; - transition: left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease; - transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease; - transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease; + -webkit-transition: left 0.3s ease, background 0.3s ease, + -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease; + transition: left 0.3s ease, background 0.3s ease, -webkit-box-shadow 0.1s ease, + -webkit-transform 0.1s ease; + transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease, + transform 0.1s ease; + transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease, + transform 0.1s ease, -webkit-box-shadow 0.1s ease, + -webkit-transform 0.1s ease; } .switch label .lever:before { @@ -6932,32 +7076,34 @@ form p:last-child { } .switch label .lever:after { - background-color: #F1F1F1; - -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); - box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + background-color: #f1f1f1; + -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), + 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), + 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } -input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before, -input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before { +input[type="checkbox"]:checked:not(:disabled) ~ .lever:active::before, +input[type="checkbox"]:checked:not(:disabled).tabbed:focus ~ .lever::before { -webkit-transform: scale(2.4); - transform: scale(2.4); + transform: scale(2.4); background-color: rgba(38, 166, 154, 0.15); } -input[type=checkbox]:not(:disabled) ~ .lever:active:before, -input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before { +input[type="checkbox"]:not(:disabled) ~ .lever:active:before, +input[type="checkbox"]:not(:disabled).tabbed:focus ~ .lever::before { -webkit-transform: scale(2.4); - transform: scale(2.4); + transform: scale(2.4); background-color: rgba(0, 0, 0, 0.08); } -.switch input[type=checkbox][disabled] + .lever { +.switch input[type="checkbox"][disabled] + .lever { cursor: default; background-color: rgba(0, 0, 0, 0.12); } -.switch label input[type=checkbox][disabled] + .lever:after, -.switch label input[type=checkbox][disabled]:checked + .lever:after { +.switch label input[type="checkbox"][disabled] + .lever:after, +.switch label input[type="checkbox"][disabled]:checked + .lever:after { background-color: #949494; } @@ -7020,9 +7166,9 @@ select { padding: 0; display: block; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .select-wrapper span.caret { @@ -7056,9 +7202,9 @@ select:disabled { color: rgba(0, 0, 0, 0.42); cursor: default; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .select-wrapper i { @@ -7132,7 +7278,8 @@ select:disabled { width: 100%; } -.file-field .btn, .file-field .btn-large { +.file-field .btn, +.file-field .btn-large { float: left; height: 3rem; line-height: 3rem; @@ -7142,7 +7289,7 @@ select:disabled { cursor: pointer; } -.file-field input[type=file] { +.file-field input[type="file"] { position: absolute; top: 0; right: 0; @@ -7157,7 +7304,7 @@ select:disabled { filter: alpha(opacity=0); } -.file-field input[type=file]::-webkit-file-upload-button { +.file-field input[type="file"]::-webkit-file-upload-button { display: none; } @@ -7167,12 +7314,12 @@ select:disabled { position: relative; } -input[type=range], -input[type=range] + .thumb { +input[type="range"], +input[type="range"] + .thumb { cursor: pointer; } -input[type=range] { +input[type="range"] { position: relative; background-color: transparent; border: none; @@ -7182,11 +7329,11 @@ input[type=range] { padding: 0; } -input[type=range]:focus { +input[type="range"]:focus { outline: none; } -input[type=range] + .thumb { +input[type="range"] + .thumb { position: absolute; top: 10px; left: 0; @@ -7197,43 +7344,43 @@ input[type=range] + .thumb { background-color: #26a69a; margin-left: 7px; -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; + transform-origin: 50% 50%; -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); + transform: rotate(-45deg); } -input[type=range] + .thumb .value { +input[type="range"] + .thumb .value { display: block; width: 30px; text-align: center; color: #26a69a; font-size: 0; -webkit-transform: rotate(45deg); - transform: rotate(45deg); + transform: rotate(45deg); } -input[type=range] + .thumb.active { +input[type="range"] + .thumb.active { border-radius: 50% 50% 50% 0; } -input[type=range] + .thumb.active .value { +input[type="range"] + .thumb.active .value { color: #fff; margin-left: -1px; margin-top: 8px; font-size: 10px; } -input[type=range] { +input[type="range"] { -webkit-appearance: none; } -input[type=range]::-webkit-slider-runnable-track { +input[type="range"]::-webkit-slider-runnable-track { height: 3px; background: #c2c0c2; border: none; } -input[type=range]::-webkit-slider-thumb { +input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; border: none; height: 14px; @@ -7241,29 +7388,29 @@ input[type=range]::-webkit-slider-thumb { border-radius: 50%; background-color: #26a69a; -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; + transform-origin: 50% 50%; margin: -5px 0 0 0; - -webkit-transition: .3s; - transition: .3s; + -webkit-transition: 0.3s; + transition: 0.3s; } -input[type=range]:focus::-webkit-slider-runnable-track { +input[type="range"]:focus::-webkit-slider-runnable-track { background: #ccc; } -input[type=range] { +input[type="range"] { /* fix for FF unable to apply focus style bug */ border: 1px solid white; /*required for proper track sizing in FF*/ } -input[type=range]::-moz-range-track { +input[type="range"]::-moz-range-track { height: 3px; background: #ddd; border: none; } -input[type=range]::-moz-range-thumb { +input[type="range"]::-moz-range-thumb { border: none; height: 14px; width: 14px; @@ -7272,16 +7419,16 @@ input[type=range]::-moz-range-thumb { margin-top: -5px; } -input[type=range]:-moz-focusring { +input[type="range"]:-moz-focusring { outline: 1px solid #fff; outline-offset: -1px; } -input[type=range]:focus::-moz-range-track { +input[type="range"]:focus::-moz-range-track { background: #ccc; } -input[type=range]::-ms-track { +input[type="range"]::-ms-track { height: 3px; background: transparent; border-color: transparent; @@ -7290,15 +7437,15 @@ input[type=range]::-ms-track { color: transparent; } -input[type=range]::-ms-fill-lower { +input[type="range"]::-ms-fill-lower { background: #777; } -input[type=range]::-ms-fill-upper { +input[type="range"]::-ms-fill-upper { background: #ddd; } -input[type=range]::-ms-thumb { +input[type="range"]::-ms-thumb { border: none; height: 14px; width: 14px; @@ -7306,11 +7453,11 @@ input[type=range]::-ms-thumb { background: #26a69a; } -input[type=range]:focus::-ms-fill-lower { +input[type="range"]:focus::-ms-fill-lower { background: #888; } -input[type=range]:focus::-ms-fill-upper { +input[type="range"]:focus::-ms-fill-upper { background: #ccc; } @@ -7332,7 +7479,7 @@ input[type=range]:focus::-ms-fill-upper { padding-left: 20px; height: 1.5rem; line-height: 1.5rem; - letter-spacing: .4; + letter-spacing: 0.4; display: inline-block; } @@ -7355,7 +7502,7 @@ input[type=range]:focus::-ms-fill-upper { top: 0; margin: 0; -webkit-transform: translateX(-100%); - transform: translateX(-100%); + transform: translateX(-100%); height: 100%; height: calc(100% + 60px); height: -moz-calc(100%); @@ -7365,18 +7512,18 @@ input[type=range]:focus::-ms-fill-upper { overflow-y: auto; will-change: transform; -webkit-backface-visibility: hidden; - backface-visibility: hidden; + backface-visibility: hidden; -webkit-transform: translateX(-105%); - transform: translateX(-105%); + transform: translateX(-105%); } .side-nav.right-aligned { right: 0; -webkit-transform: translateX(105%); - transform: translateX(105%); + transform: translateX(105%); left: auto; -webkit-transform: translateX(100%); - transform: translateX(100%); + transform: translateX(100%); } .side-nav .collapsible { @@ -7406,11 +7553,18 @@ input[type=range]:focus::-ms-fill-upper { background-color: rgba(0, 0, 0, 0.05); } -.side-nav li > a.btn, .side-nav li > a.btn-large, .side-nav li > a.btn-large, .side-nav li > a.btn-flat, .side-nav li > a.btn-floating { +.side-nav li > a.btn, +.side-nav li > a.btn-large, +.side-nav li > a.btn-large, +.side-nav li > a.btn-flat, +.side-nav li > a.btn-floating { margin: 10px 15px; } -.side-nav li > a.btn, .side-nav li > a.btn-large, .side-nav li > a.btn-large, .side-nav li > a.btn-floating { +.side-nav li > a.btn, +.side-nav li > a.btn-large, +.side-nav li > a.btn-large, +.side-nav li > a.btn-floating { color: #fff; } @@ -7418,7 +7572,9 @@ input[type=range]:focus::-ms-fill-upper { color: #343434; } -.side-nav li > a.btn:hover, .side-nav li > a.btn-large:hover, .side-nav li > a.btn-large:hover { +.side-nav li > a.btn:hover, +.side-nav li > a.btn-large:hover, +.side-nav li > a.btn-large:hover { background-color: #2bbbad; } @@ -7427,7 +7583,8 @@ input[type=range]:focus::-ms-fill-upper { } .side-nav li > a > i, -.side-nav li > a > [class^="mdi-"], .side-nav li > a li > a > [class*="mdi-"], +.side-nav li > a > [class^="mdi-"], +.side-nav li > a li > a > [class*="mdi-"], .side-nav li > a > i.material-icons { float: left; height: 48px; @@ -7483,7 +7640,9 @@ input[type=range]:focus::-ms-fill-upper { z-index: -1; } -.side-nav .user-view .circle, .side-nav .user-view .name, .side-nav .user-view .email, +.side-nav .user-view .circle, +.side-nav .user-view .name, +.side-nav .user-view .email, .side-nav .userView .circle, .side-nav .userView .name, .side-nav .userView .email { @@ -7527,7 +7686,7 @@ input[type=range]:focus::-ms-fill-upper { .side-nav.fixed { left: 0; -webkit-transform: translateX(0); - transform: translateX(0); + transform: translateX(0); position: fixed; } @@ -7539,11 +7698,11 @@ input[type=range]:focus::-ms-fill-upper { @media only screen and (max-width: 992px) { .side-nav.fixed { -webkit-transform: translateX(-105%); - transform: translateX(-105%); + transform: translateX(-105%); } .side-nav.fixed.right-aligned { -webkit-transform: translateX(105%); - transform: translateX(105%); + transform: translateX(105%); } .side-nav a { padding: 0 16px; @@ -7636,7 +7795,7 @@ input[type=range]:focus::-ms-fill-upper { @keyframes container-rotate { to { -webkit-transform: rotate(360deg); - transform: rotate(360deg); + transform: rotate(360deg); } } @@ -7683,26 +7842,42 @@ input[type=range]:focus::-ms-fill-upper { */ .active .spinner-layer.spinner-blue { /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) + infinite both, + blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both, + blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer.spinner-red { /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) + infinite both, + red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both, + red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer.spinner-yellow { /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) + infinite both, + yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both, + yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer.spinner-green { /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) + infinite both, + green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both, + green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer, @@ -7712,8 +7887,10 @@ input[type=range]:focus::-ms-fill-upper { .active .spinner-layer.spinner-green-only { /* durations: 4 * ARCTIME */ opacity: 1; - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) + infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both; } @-webkit-keyframes fill-unfill-rotate { @@ -7754,42 +7931,42 @@ input[type=range]:focus::-ms-fill-upper { @keyframes fill-unfill-rotate { 12.5% { -webkit-transform: rotate(135deg); - transform: rotate(135deg); + transform: rotate(135deg); } /* 0.5 * ARCSIZE */ 25% { -webkit-transform: rotate(270deg); - transform: rotate(270deg); + transform: rotate(270deg); } /* 1 * ARCSIZE */ 37.5% { -webkit-transform: rotate(405deg); - transform: rotate(405deg); + transform: rotate(405deg); } /* 1.5 * ARCSIZE */ 50% { -webkit-transform: rotate(540deg); - transform: rotate(540deg); + transform: rotate(540deg); } /* 2 * ARCSIZE */ 62.5% { -webkit-transform: rotate(675deg); - transform: rotate(675deg); + transform: rotate(675deg); } /* 2.5 * ARCSIZE */ 75% { -webkit-transform: rotate(810deg); - transform: rotate(810deg); + transform: rotate(810deg); } /* 3 * ARCSIZE */ 87.5% { -webkit-transform: rotate(945deg); - transform: rotate(945deg); + transform: rotate(945deg); } /* 3.5 * ARCSIZE */ to { -webkit-transform: rotate(1080deg); - transform: rotate(1080deg); + transform: rotate(1080deg); } /* 4 * ARCSIZE */ } @@ -8011,7 +8188,8 @@ input[type=range]:focus::-ms-fill-upper { .active .circle-clipper.right .circle { /* duration: ARCTIME */ - -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both; animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } @@ -8030,15 +8208,15 @@ input[type=range]:focus::-ms-fill-upper { @keyframes left-spin { from { -webkit-transform: rotate(130deg); - transform: rotate(130deg); + transform: rotate(130deg); } 50% { -webkit-transform: rotate(-5deg); - transform: rotate(-5deg); + transform: rotate(-5deg); } to { -webkit-transform: rotate(130deg); - transform: rotate(130deg); + transform: rotate(130deg); } } @@ -8057,22 +8235,24 @@ input[type=range]:focus::-ms-fill-upper { @keyframes right-spin { from { -webkit-transform: rotate(-130deg); - transform: rotate(-130deg); + transform: rotate(-130deg); } 50% { -webkit-transform: rotate(5deg); - transform: rotate(5deg); + transform: rotate(5deg); } to { -webkit-transform: rotate(-130deg); - transform: rotate(-130deg); + transform: rotate(-130deg); } } #spinnerContainer.cooldown { /* duration: SHRINK_TIME */ - -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); - animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + -webkit-animation: container-rotate 1568ms linear infinite, + fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, + fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); } @-webkit-keyframes fade-out { @@ -8176,13 +8356,13 @@ input[type=range]:focus::-ms-fill-upper { width: 16px; margin: 0 12px; background-color: #e0e0e0; - -webkit-transition: background-color .3s; - transition: background-color .3s; + -webkit-transition: background-color 0.3s; + transition: background-color 0.3s; border-radius: 50%; } .slider .indicators .indicator-item.active { - background-color: #4CAF50; + background-color: #4caf50; } .carousel { @@ -8191,11 +8371,11 @@ input[type=range]:focus::-ms-fill-upper { width: 100%; height: 400px; -webkit-perspective: 500px; - perspective: 500px; + perspective: 500px; -webkit-transform-style: preserve-3d; - transform-style: preserve-3d; + transform-style: preserve-3d; -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; + transform-origin: 0% 50%; } .carousel.carousel-slider { @@ -8264,8 +8444,8 @@ input[type=range]:focus::-ms-fill-upper { width: 8px; margin: 24px 4px; background-color: rgba(255, 255, 255, 0.5); - -webkit-transition: background-color .3s; - transition: background-color .3s; + -webkit-transition: background-color 0.3s; + transition: background-color 0.3s; border-radius: 50%; } @@ -8284,8 +8464,8 @@ input[type=range]:focus::-ms-fill-upper { position: fixed; z-index: 1000; visibility: hidden; - -webkit-transition: visibility 0s .3s; - transition: visibility 0s .3s; + -webkit-transition: visibility 0s 0.3s; + transition: visibility 0s 0.3s; } .tap-target-wrapper.open { @@ -8296,36 +8476,33 @@ input[type=range]:focus::-ms-fill-upper { .tap-target-wrapper.open .tap-target { -webkit-transform: scale(1); - transform: scale(1); - opacity: .95; - -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); - transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); - transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1); - transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transform: scale(1); + opacity: 0.95; + -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), + -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), + -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), + opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), + opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), + -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); } .tap-target-wrapper.open .tap-target-wave::before { -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } .tap-target-wrapper.open .tap-target-wave::after { visibility: visible; -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; - animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; - -webkit-transition: opacity .3s, - visibility 0s 1s, - -webkit-transform .3s; - transition: opacity .3s, - visibility 0s 1s, - -webkit-transform .3s; - transition: opacity .3s, - transform .3s, - visibility 0s 1s; - transition: opacity .3s, - transform .3s, - visibility 0s 1s, - -webkit-transform .3s; + animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + -webkit-transition: opacity 0.3s, visibility 0s 1s, -webkit-transform 0.3s; + transition: opacity 0.3s, visibility 0s 1s, -webkit-transform 0.3s; + transition: opacity 0.3s, transform 0.3s, visibility 0s 1s; + transition: opacity 0.3s, transform 0.3s, visibility 0s 1s, + -webkit-transform 0.3s; } .tap-target { @@ -8333,17 +8510,24 @@ input[type=range]:focus::-ms-fill-upper { font-size: 1rem; border-radius: 50%; background-color: #ee6e73; - -webkit-box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2); - box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), + 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2); + box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), + 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2); width: 100%; height: 100%; opacity: 0; -webkit-transform: scale(0); - transform: scale(0); - -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); - transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); - transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1); - transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transform: scale(0); + -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), + -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), + -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), + opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), + opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), + -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); } .tap-target-content { @@ -8357,8 +8541,9 @@ input[type=range]:focus::-ms-fill-upper { z-index: 10001; } -.tap-target-wave::before, .tap-target-wave::after { - content: ''; +.tap-target-wave::before, +.tap-target-wave::after { + content: ""; display: block; position: absolute; width: 100%; @@ -8369,28 +8554,20 @@ input[type=range]:focus::-ms-fill-upper { .tap-target-wave::before { -webkit-transform: scale(0); - transform: scale(0); - -webkit-transition: -webkit-transform .3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; + transform: scale(0); + -webkit-transition: -webkit-transform 0.3s; + transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transition: transform 0.3s, -webkit-transform 0.3s; } .tap-target-wave::after { visibility: hidden; - -webkit-transition: opacity .3s, - visibility 0s, - -webkit-transform .3s; - transition: opacity .3s, - visibility 0s, - -webkit-transform .3s; - transition: opacity .3s, - transform .3s, - visibility 0s; - transition: opacity .3s, - transform .3s, - visibility 0s, - -webkit-transform .3s; + -webkit-transition: opacity 0.3s, visibility 0s, -webkit-transform 0.3s; + transition: opacity 0.3s, visibility 0s, -webkit-transform 0.3s; + transition: opacity 0.3s, transform 0.3s, visibility 0s; + transition: opacity 0.3s, transform 0.3s, visibility 0s, + -webkit-transform 0.3s; z-index: -1; } @@ -8398,17 +8575,19 @@ input[type=range]:focus::-ms-fill-upper { top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); z-index: 10002; position: absolute !important; } -.tap-target-origin:not(.btn):not(.btn-large), .tap-target-origin:not(.btn):not(.btn-large):hover { +.tap-target-origin:not(.btn):not(.btn-large), +.tap-target-origin:not(.btn):not(.btn-large):hover { background: none; } @media only screen and (max-width: 600px) { - .tap-target, .tap-target-wrapper { + .tap-target, + .tap-target-wrapper { width: 600px; height: 600px; } @@ -8420,7 +8599,7 @@ input[type=range]:focus::-ms-fill-upper { } .pulse::before { - content: ''; + content: ""; display: block; position: absolute; width: 100%; @@ -8429,12 +8608,12 @@ input[type=range]:focus::-ms-fill-upper { left: 0; background-color: inherit; border-radius: inherit; - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s; - transition: opacity .3s, transform .3s, -webkit-transform .3s; + -webkit-transition: opacity 0.3s, -webkit-transform 0.3s; + transition: opacity 0.3s, -webkit-transform 0.3s; + transition: opacity 0.3s, transform 0.3s; + transition: opacity 0.3s, transform 0.3s, -webkit-transform 0.3s; -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; - animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; z-index: -1; } @@ -8442,17 +8621,17 @@ input[type=range]:focus::-ms-fill-upper { 0% { opacity: 1; -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } 50% { opacity: 0; -webkit-transform: scale(1.5); - transform: scale(1.5); + transform: scale(1.5); } 100% { opacity: 0; -webkit-transform: scale(1.5); - transform: scale(1.5); + transform: scale(1.5); } } @@ -8460,17 +8639,17 @@ input[type=range]:focus::-ms-fill-upper { 0% { opacity: 1; -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } 50% { opacity: 0; -webkit-transform: scale(1.5); - transform: scale(1.5); + transform: scale(1.5); } 100% { opacity: 0; -webkit-transform: scale(1.5); - transform: scale(1.5); + transform: scale(1.5); } } @@ -8648,7 +8827,7 @@ input[type=range]:focus::-ms-fill-upper { CUSTOM MATERIALIZE STYLES ========================================================================== */ .picker__input.picker__input--active { - border-color: #E3F2FD; + border-color: #e3f2fd; } .picker__frame { @@ -8694,7 +8873,7 @@ input[type=range]:focus::-ms-fill-upper { .picker__header { text-align: center; position: relative; - margin-top: .75em; + margin-top: 0.75em; } /** @@ -8703,8 +8882,8 @@ input[type=range]:focus::-ms-fill-upper { .picker__month, .picker__year { display: inline-block; - margin-left: .25em; - margin-right: .25em; + margin-left: 0.25em; + margin-right: 0.25em; } /** @@ -8714,19 +8893,19 @@ input[type=range]:focus::-ms-fill-upper { .picker__select--year { height: 2em; padding: 0; - margin-left: .25em; - margin-right: .25em; + margin-left: 0.25em; + margin-right: 0.25em; } .picker__select--month.browser-default { display: inline; - background-color: #FFFFFF; + background-color: #ffffff; width: 40%; } .picker__select--year.browser-default { display: inline; - background-color: #FFFFFF; + background-color: #ffffff; width: 26%; } @@ -8741,11 +8920,11 @@ input[type=range]:focus::-ms-fill-upper { .picker__nav--prev, .picker__nav--next { position: absolute; - padding: .5em 1.25em; + padding: 0.5em 1.25em; width: 1em; height: 1em; -webkit-box-sizing: content-box; - box-sizing: content-box; + box-sizing: content-box; top: -0.25em; } @@ -8779,11 +8958,12 @@ input[type=range]:focus::-ms-fill-upper { table-layout: fixed; font-size: 1rem; width: 100%; - margin-top: .75em; - margin-bottom: .5em; + margin-top: 0.75em; + margin-bottom: 0.5em; } -.picker__table th, .picker__table td { +.picker__table th, +.picker__table td { text-align: center; } @@ -8797,8 +8977,8 @@ input[type=range]:focus::-ms-fill-upper { */ .picker__weekday { width: 14.285714286%; - font-size: .75em; - padding-bottom: .25em; + font-size: 0.75em; + padding-bottom: 0.25em; color: #999999; font-weight: 500; /* Increase the spacing a tad */ @@ -8806,7 +8986,7 @@ input[type=range]:focus::-ms-fill-upper { @media (min-height: 33.875em) { .picker__weekday { - padding-bottom: .5em; + padding-bottom: 0.5em; } } @@ -8816,8 +8996,8 @@ input[type=range]:focus::-ms-fill-upper { .picker__day--today { position: relative; color: #595959; - letter-spacing: -.3; - padding: .75rem 0; + letter-spacing: -0.3; + padding: 0.75rem 0; font-weight: 400; border: 1px solid transparent; } @@ -8834,7 +9014,7 @@ input[type=range]:focus::-ms-fill-upper { .picker__day--outfocus { display: none; - padding: .75rem 0; + padding: 0.75rem 0; color: #fff; } @@ -8854,7 +9034,7 @@ input[type=range]:focus::-ms-fill-upper { .picker--focused .picker__day--selected { border-radius: 50%; -webkit-transform: scale(0.75); - transform: scale(0.75); + transform: scale(0.75); background: #0089ec; color: #ffffff; } @@ -8885,8 +9065,8 @@ input[type=range]:focus::-ms-fill-upper { .picker__button--close { border: 1px solid #ffffff; background: #ffffff; - font-size: .8em; - padding: .66em 0; + font-size: 0.8em; + padding: 0.66em 0; font-weight: bold; width: 33%; display: inline-block; @@ -8921,19 +9101,19 @@ input[type=range]:focus::-ms-fill-upper { .picker__button--today:before, .picker__button--clear:before { content: " "; - margin-right: .45em; + margin-right: 0.45em; } .picker__button--today:before { top: -0.05em; width: 0; border-top: 0.66em solid #0059bc; - border-left: .66em solid transparent; + border-left: 0.66em solid transparent; } .picker__button--clear:before { top: -0.25em; - width: .66em; + width: 0.66em; border-top: 3px solid #ee2200; } @@ -8942,7 +9122,7 @@ input[type=range]:focus::-ms-fill-upper { top: -0.1em; vertical-align: top; font-size: 1.1em; - margin-right: .35em; + margin-right: 0.35em; color: #777777; } @@ -8977,8 +9157,8 @@ input[type=range]:focus::-ms-fill-upper { .picker__date-display { -webkit-box-flex: 1; -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .picker__weekday-display { display: block; @@ -8986,8 +9166,8 @@ input[type=range]:focus::-ms-fill-upper { .picker__container__wrapper { -webkit-box-flex: 2; -webkit-flex: 2; - -ms-flex: 2; - flex: 2; + -ms-flex: 2; + flex: 2; } } @@ -9035,12 +9215,12 @@ input[type=range]:focus::-ms-fill-upper { .picker__table { margin-top: 0; - margin-bottom: .5em; + margin-bottom: 0.5em; } .picker__day--infocus { color: rgba(0, 0, 0, 0.87); - letter-spacing: -.3px; + letter-spacing: -0.3px; padding: 0.75rem 0; font-weight: 400; border: 1px solid transparent; @@ -9061,7 +9241,7 @@ input[type=range]:focus::-ms-fill-upper { } .picker__weekday { - font-size: .9rem; + font-size: 0.9rem; } .picker__day--selected, @@ -9069,7 +9249,7 @@ input[type=range]:focus::-ms-fill-upper { .picker--focused .picker__day--selected { border-radius: 50%; -webkit-transform: scale(0.9); - transform: scale(0.9); + transform: scale(0.9); background-color: #26a69a; color: #ffffff; } @@ -9085,7 +9265,9 @@ input[type=range]:focus::-ms-fill-upper { padding: 5px 10px; } -.picker__close, .picker__today, .picker__clear { +.picker__close, +.picker__today, +.picker__clear { font-size: 1.1rem; padding: 0 1rem; color: #26a69a; @@ -9099,8 +9281,8 @@ input[type=range]:focus::-ms-fill-upper { .picker__nav--prev:before, .picker__nav--next:before { content: " "; - border-top: .5em solid transparent; - border-bottom: .5em solid transparent; + border-top: 0.5em solid transparent; + border-bottom: 0.5em solid transparent; border-right: 0.75em solid #676767; width: 0; height: 0; @@ -9113,7 +9295,9 @@ input[type=range]:focus::-ms-fill-upper { border-left: 0.75em solid #676767; } -button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { +button.picker__today:focus, +button.picker__clear:focus, +button.picker__close:focus { background-color: #a1ded8; } @@ -9138,12 +9322,12 @@ button.picker__today:focus, button.picker__clear:focus, button.picker__close:foc margin-bottom: -1px; position: relative; background: #fff; - padding: .75em 1.25em; + padding: 0.75em 1.25em; } @media (min-height: 46.75em) { .picker__list-item { - padding: .5em 1em; + padding: 0.5em 1em; } } @@ -9201,7 +9385,7 @@ button.picker__today:focus, button.picker__clear:focus, button.picker__close:foc background: none; border: 0; font-weight: 500; - font-size: .67em; + font-size: 0.67em; text-align: center; text-transform: uppercase; color: rgba(0, 0, 0, 0.87); @@ -9324,9 +9508,9 @@ button.picker__today:focus, button.picker__clear:focus, button.picker__close:foc margin-top: 25px; margin-bottom: 5px; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .clockpicker-canvas, diff --git a/app/css/pickr.css b/app/css/pickr.css index 8fbd6027..ea05b7ec 100644 --- a/app/css/pickr.css +++ b/app/css/pickr.css @@ -1 +1,301 @@ -.pickr{position:relative;overflow:visible;z-index:1}.pickr *{box-sizing:border-box}.pickr button,.pickr input{outline:none;border:none}.pickr button:focus,.pickr input:focus{box-shadow:0 0 0 1px #f1f3f4,0 0 0 3px currentColor}.pickr .pcr-button{position:relative;height:2em;width:2em;padding:.5em;border-radius:.15em;cursor:pointer;background:currentColor;transition:all .3s;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.pickr .pcr-button:before{background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pickr .pcr-button:after,.pickr .pcr-button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%}.pickr .pcr-button:after{background:url('data:image/svg+xml;utf8, ') no-repeat 50%;background-size:70%;opacity:0}.pickr .pcr-button.clear{background:hsla(0,0%,100%,.25)}.pickr .pcr-button.clear:after{opacity:1}.pickr .pcr-button.clear:focus{box-shadow:0 0 0 1px #f1f3f4,0 0 0 3px #75797e}.pickr .pcr-button.disabled{cursor:not-allowed}.pcr-app{margin-top: 10px;display:flex;flex-direction:column;z-index:10000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;box-shadow:0 .15em 1.5em 0 rgba(0,0,0,.1),0 0 1em 0 rgba(0,0,0,.03);top:5px;height:15em;width:28.5em;max-width:95vw;padding:.8em;border-radius:.1em;opacity:0;visibility:hidden;transition:opacity .3s}.pcr-app.visible{visibility:visible;opacity:1}.pcr-app .swatches{display:flex;flex-wrap:wrap;margin-top:.75em}@supports (display:grid){.pcr-app .swatches{display:grid;align-items:center;justify-content:space-around;grid-template-columns:repeat(auto-fit,1.75em)}}.pcr-app .swatches>button{position:relative;width:1.75em;height:1.75em;border-radius:.15em;cursor:pointer;margin:2.5px;flex-shrink:0;justify-self:center;transition:all .15s;overflow:hidden;background:transparent;z-index:1}.pcr-app .swatches>button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:6px;border-radius:.15em;z-index:-1}.pcr-app .swatches>button:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:currentColor;border:1px solid rgba(0,0,0,.05);border-radius:.15em;box-sizing:border-box}.pcr-app .swatches>button:hover{filter:brightness(1.05)}.pcr-app .pcr-interaction{display:flex;align-items:center;margin:.75em -.2em 0}.pcr-app .pcr-interaction>*{margin:0 .2em}.pcr-app .pcr-interaction input{letter-spacing:.07em;font-size:.75em;text-align:center;cursor:pointer;color:#75797e;background:#f1f3f4;border-radius:.15em;transition:all .15s;padding:.45em .5em}.pcr-app .pcr-interaction input:hover{filter:brightness(.975)}.pcr-app .pcr-interaction input:focus{box-shadow:0 0 0 1px #f1f3f4,0 0 0 3px rgba(66,133,244,.75)}.pcr-app .pcr-interaction .pcr-result{color:#75797e;text-align:left;flex-grow:1;min-width:1em;transition:all .2s;border-radius:.15em;background:#f1f3f4;cursor:text}.pcr-app .pcr-interaction .pcr-result::selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-type.active{color:#fff;background:#4285f4}.pcr-app .pcr-interaction .pcr-clear,.pcr-app .pcr-interaction .pcr-save{width:auto;color:#fff}.pcr-app .pcr-interaction .pcr-clear:hover,.pcr-app .pcr-interaction .pcr-save:hover{filter:brightness(.925)}.pcr-app .pcr-interaction .pcr-save{background:#4285f4}.pcr-app .pcr-interaction .pcr-clear{background:#f44250}.pcr-app .pcr-interaction .pcr-clear:focus{box-shadow:0 0 0 1px #f1f3f4,0 0 0 3px rgba(244,66,80,.75)}.pcr-app .pcr-selection{display:flex;justify-content:space-between;flex-grow:1}.pcr-app .pcr-selection .pcr-picker{position:absolute;height:18px;width:18px;border:2px solid #fff;border-radius:100%;user-select:none;cursor:-moz-grab;cursor:-webkit-grabbing}.pcr-app .pcr-selection .pcr-color-preview{position:relative;z-index:1;width:2em;display:flex;flex-direction:column;justify-content:space-between;margin-right:.75em}.pcr-app .pcr-selection .pcr-color-preview:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app .pcr-selection .pcr-color-preview .pcr-last-color{cursor:pointer;transition:background-color .3s,box-shadow .3s;border-radius:.15em .15em 0 0;z-index:2}.pcr-app .pcr-selection .pcr-color-preview .pcr-current-color{border-radius:0 0 .15em .15em}.pcr-app .pcr-selection .pcr-color-preview .pcr-current-color,.pcr-app .pcr-selection .pcr-color-preview .pcr-last-color{background:currentColor;width:100%;height:50%}.pcr-app .pcr-selection .pcr-color-chooser,.pcr-app .pcr-selection .pcr-color-opacity,.pcr-app .pcr-selection .pcr-color-palette{position:relative;user-select:none;display:flex;flex-direction:column}.pcr-app .pcr-selection .pcr-color-palette{width:100%;z-index:1}.pcr-app .pcr-selection .pcr-color-palette .pcr-palette{height:100%;border-radius:.15em}.pcr-app .pcr-selection .pcr-color-palette .pcr-palette:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app .pcr-selection .pcr-color-chooser,.pcr-app .pcr-selection .pcr-color-opacity{margin-left:.75em}.pcr-app .pcr-selection .pcr-color-chooser .pcr-picker,.pcr-app .pcr-selection .pcr-color-opacity .pcr-picker{left:50%;transform:translateX(-50%)}.pcr-app .pcr-selection .pcr-color-chooser .pcr-slider,.pcr-app .pcr-selection .pcr-color-opacity .pcr-slider{width:8px;height:100%;border-radius:50em}.pcr-app .pcr-selection .pcr-color-chooser .pcr-slider{background:linear-gradient(180deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.pcr-app .pcr-selection .pcr-color-opacity .pcr-slider{background:linear-gradient(180deg,transparent,#000),url('data:image/svg+xml;utf8, ');background-size:100%,50%} \ No newline at end of file +.pickr { + position: relative; + overflow: visible; + z-index: 1; +} +.pickr * { + box-sizing: border-box; +} +.pickr button, +.pickr input { + outline: none; + border: none; +} +.pickr button:focus, +.pickr input:focus { + box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px currentColor; +} +.pickr .pcr-button { + position: relative; + height: 2em; + width: 2em; + padding: 0.5em; + border-radius: 0.15em; + cursor: pointer; + background: currentColor; + transition: all 0.3s; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, + Helvetica Neue, Arial, sans-serif; +} +.pickr .pcr-button:before { + background: url('data:image/svg+xml;utf8, '); + background-size: 0.5em; + border-radius: 0.15em; + z-index: -1; +} +.pickr .pcr-button:after, +.pickr .pcr-button:before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.pickr .pcr-button:after { + background: url('data:image/svg+xml;utf8, ') + no-repeat 50%; + background-size: 70%; + opacity: 0; +} +.pickr .pcr-button.clear { + background: hsla(0, 0%, 100%, 0.25); +} +.pickr .pcr-button.clear:after { + opacity: 1; +} +.pickr .pcr-button.clear:focus { + box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px #75797e; +} +.pickr .pcr-button.disabled { + cursor: not-allowed; +} +.pcr-app { + margin-top: 10px; + display: flex; + flex-direction: column; + z-index: 10000; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, + Helvetica Neue, Arial, sans-serif; + box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03); + top: 5px; + height: 15em; + width: 28.5em; + max-width: 95vw; + padding: 0.8em; + border-radius: 0.1em; + opacity: 0; + visibility: hidden; + transition: opacity 0.3s; +} +.pcr-app.visible { + visibility: visible; + opacity: 1; +} +.pcr-app .swatches { + display: flex; + flex-wrap: wrap; + margin-top: 0.75em; +} +@supports (display: grid) { + .pcr-app .swatches { + display: grid; + align-items: center; + justify-content: space-around; + grid-template-columns: repeat(auto-fit, 1.75em); + } +} +.pcr-app .swatches > button { + position: relative; + width: 1.75em; + height: 1.75em; + border-radius: 0.15em; + cursor: pointer; + margin: 2.5px; + flex-shrink: 0; + justify-self: center; + transition: all 0.15s; + overflow: hidden; + background: transparent; + z-index: 1; +} +.pcr-app .swatches > button:before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: 6px; + border-radius: 0.15em; + z-index: -1; +} +.pcr-app .swatches > button:after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: currentColor; + border: 1px solid rgba(0, 0, 0, 0.05); + border-radius: 0.15em; + box-sizing: border-box; +} +.pcr-app .swatches > button:hover { + filter: brightness(1.05); +} +.pcr-app .pcr-interaction { + display: flex; + align-items: center; + margin: 0.75em -0.2em 0; +} +.pcr-app .pcr-interaction > * { + margin: 0 0.2em; +} +.pcr-app .pcr-interaction input { + letter-spacing: 0.07em; + font-size: 0.75em; + text-align: center; + cursor: pointer; + color: #75797e; + background: #f1f3f4; + border-radius: 0.15em; + transition: all 0.15s; + padding: 0.45em 0.5em; +} +.pcr-app .pcr-interaction input:hover { + filter: brightness(0.975); +} +.pcr-app .pcr-interaction input:focus { + box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px rgba(66, 133, 244, 0.75); +} +.pcr-app .pcr-interaction .pcr-result { + color: #75797e; + text-align: left; + flex-grow: 1; + min-width: 1em; + transition: all 0.2s; + border-radius: 0.15em; + background: #f1f3f4; + cursor: text; +} +.pcr-app .pcr-interaction .pcr-result::selection { + background: #4285f4; + color: #fff; +} +.pcr-app .pcr-interaction .pcr-type.active { + color: #fff; + background: #4285f4; +} +.pcr-app .pcr-interaction .pcr-clear, +.pcr-app .pcr-interaction .pcr-save { + width: auto; + color: #fff; +} +.pcr-app .pcr-interaction .pcr-clear:hover, +.pcr-app .pcr-interaction .pcr-save:hover { + filter: brightness(0.925); +} +.pcr-app .pcr-interaction .pcr-save { + background: #4285f4; +} +.pcr-app .pcr-interaction .pcr-clear { + background: #f44250; +} +.pcr-app .pcr-interaction .pcr-clear:focus { + box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px rgba(244, 66, 80, 0.75); +} +.pcr-app .pcr-selection { + display: flex; + justify-content: space-between; + flex-grow: 1; +} +.pcr-app .pcr-selection .pcr-picker { + position: absolute; + height: 18px; + width: 18px; + border: 2px solid #fff; + border-radius: 100%; + user-select: none; + cursor: -moz-grab; + cursor: -webkit-grabbing; +} +.pcr-app .pcr-selection .pcr-color-preview { + position: relative; + z-index: 1; + width: 2em; + display: flex; + flex-direction: column; + justify-content: space-between; + margin-right: 0.75em; +} +.pcr-app .pcr-selection .pcr-color-preview:before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: 0.5em; + border-radius: 0.15em; + z-index: -1; +} +.pcr-app .pcr-selection .pcr-color-preview .pcr-last-color { + cursor: pointer; + transition: background-color 0.3s, box-shadow 0.3s; + border-radius: 0.15em 0.15em 0 0; + z-index: 2; +} +.pcr-app .pcr-selection .pcr-color-preview .pcr-current-color { + border-radius: 0 0 0.15em 0.15em; +} +.pcr-app .pcr-selection .pcr-color-preview .pcr-current-color, +.pcr-app .pcr-selection .pcr-color-preview .pcr-last-color { + background: currentColor; + width: 100%; + height: 50%; +} +.pcr-app .pcr-selection .pcr-color-chooser, +.pcr-app .pcr-selection .pcr-color-opacity, +.pcr-app .pcr-selection .pcr-color-palette { + position: relative; + user-select: none; + display: flex; + flex-direction: column; +} +.pcr-app .pcr-selection .pcr-color-palette { + width: 100%; + z-index: 1; +} +.pcr-app .pcr-selection .pcr-color-palette .pcr-palette { + height: 100%; + border-radius: 0.15em; +} +.pcr-app .pcr-selection .pcr-color-palette .pcr-palette:before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: 0.5em; + border-radius: 0.15em; + z-index: -1; +} +.pcr-app .pcr-selection .pcr-color-chooser, +.pcr-app .pcr-selection .pcr-color-opacity { + margin-left: 0.75em; +} +.pcr-app .pcr-selection .pcr-color-chooser .pcr-picker, +.pcr-app .pcr-selection .pcr-color-opacity .pcr-picker { + left: 50%; + transform: translateX(-50%); +} +.pcr-app .pcr-selection .pcr-color-chooser .pcr-slider, +.pcr-app .pcr-selection .pcr-color-opacity .pcr-slider { + width: 8px; + height: 100%; + border-radius: 50em; +} +.pcr-app .pcr-selection .pcr-color-chooser .pcr-slider { + background: linear-gradient(180deg, red, #ff0, #0f0, #0ff, #00f, #f0f, red); +} +.pcr-app .pcr-selection .pcr-color-opacity .pcr-slider { + background: linear-gradient(180deg, transparent, #000), + url('data:image/svg+xml;utf8, '); + background-size: 100%, 50%; +} diff --git a/app/css/post.css b/app/css/post.css index ed1635da..96446daf 100644 --- a/app/css/post.css +++ b/app/css/post.css @@ -1,16 +1,16 @@ /*トゥートボックス向けCSS*/ #post-box { - display:none; + display: none; position: fixed; left: calc(50vw - 150px); top: 50vh; background-color: var(--postbox); border: thin solid gray; z-index: 501; - min-width:300px; - max-width:100%; + min-width: 300px; + max-width: 100%; padding: 5px; - border-radius:5px; + border-radius: 5px; } .cancel { @@ -19,8 +19,7 @@ cursor: pointer; position: absolute; right: 2px; - top:4px; - + top: 4px; } .more-show { display: none; @@ -42,10 +41,12 @@ display: none; } #sch-box input { - width:auto; + width: auto; } -.picker__close, .picker__today, .picker__clear { - color: #26a69a !important; +.picker__close, +.picker__today, +.picker__clear { + color: #26a69a !important; } .cw { display: none; @@ -54,10 +55,9 @@ filter: blur(50px); } #emoji { - } -#suggest{ - max-height:300px; +#suggest { + max-height: 300px; overflow-y: scroll; } #emoji-list { @@ -68,50 +68,53 @@ #preview-field { display: none; } -.preview-img{ - width:50px; - max-height:100px; +.preview-img { + width: 50px; + max-height: 100px; } -.pi-wrap{ - display:inline-block; - width:50px; - max-height:100px; +.pi-wrap { + display: inline-block; + width: 50px; + max-height: 100px; } -#default-emoji a{ - color:white; - margin-right:2px; +#default-emoji a { + color: white; + margin-right: 2px; } -.character-counter{ +.character-counter { position: relative; top: -25px; } -.trendtag{ - overflow-y:scroll; - max-height:100px; +.trendtag { + overflow-y: scroll; + max-height: 100px; } -#toot-btn-field{ - display:flex; +#toot-btn-field { + display: flex; } -#toot-post-btn{ - width:calc(100% - 10px); padding:0; margin-top:10px; +#toot-post-btn { + width: calc(100% - 10px); + padding: 0; + margin-top: 10px; } -#toot-sec-btn{ - width:30px; padding:0; margin-top:10px; +#toot-sec-btn { + width: 30px; + padding: 0; + margin-top: 10px; } -#left-side{ - float:left; - width:300px; +#left-side { + float: left; + width: 300px; } -#right-side{ - display:none; - float:left; - width:300px; - padding:5px; +#right-side { + display: none; + float: left; + width: 300px; + padding: 5px; } -#poll{ - +#poll { } -.poll-provider{ +.poll-provider { position: absolute; height: calc(100% - 90px); overflow-y: scroll; @@ -119,19 +122,19 @@ } /*mini*/ -.mini-post .mize{ - display:none !important; +.mini-post .mize { + display: none !important; } -.mini-post #textarea{ - padding:0; +.mini-post #textarea { + padding: 0; } -.mini-post #post-box{ - width:200px; - min-width:100px; +.mini-post #post-box { + width: 200px; + min-width: 100px; } -.mini-post #toot-field{ - padding:0; +.mini-post #toot-field { + padding: 0; +} +.mini-post #toot-btn-field { + padding: 0; } -.mini-post #toot-btn-field{ - padding:0; -} \ No newline at end of file diff --git a/app/css/sort.css b/app/css/sort.css index deff8776..a6a0f071 100644 --- a/app/css/sort.css +++ b/app/css/sort.css @@ -1,32 +1,31 @@ - -.drag-content{ - text-overflow: ellipsis; - cursor:move; - user-select: none; - background-color:var(--modalfooter); - margin:5px; - border-radius:5px; - color:var(--color); - padding:3px; - display:grid; - grid-template-columns: 43px 1fr 60px; - grid-template-areas: 'sorticon sorttitle sorttitle' 'sorticon sortacct sortaction'; +.drag-content { + text-overflow: ellipsis; + cursor: move; + user-select: none; + background-color: var(--modalfooter); + margin: 5px; + border-radius: 5px; + color: var(--color); + padding: 3px; + display: grid; + grid-template-columns: 43px 1fr 60px; + grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction"; } .sorticon { - grid-area:sorticon; + grid-area: sorticon; } -.sorticon i{ - font-size:43px; +.sorticon i { + font-size: 43px; } .sorttitle { - margin-left:5px; - grid-area:sorttitle; + margin-left: 5px; + grid-area: sorttitle; } .sortacct { - margin-left:5px; - grid-area:sortacct; + margin-left: 5px; + grid-area: sortacct; } .sortaction { - margin-left:5px; - grid-area:sortaction; -} \ No newline at end of file + margin-left: 5px; + grid-area: sortaction; +} diff --git a/app/css/themes.css b/app/css/themes.css index 6126a362..c264cf26 100644 --- a/app/css/themes.css +++ b/app/css/themes.css @@ -1,100 +1,100 @@ -:root{ - --bg:white; - --drag:rgba(255, 255, 255, 0.8); - --color:black; - --beforehover:#757575; - --modal:white; - --subcolor:#e0e0e0; - --box:white; - --sidebar:#eeeeee; - --shared:#cfd8dc; - --notfbox:white; - --emphasized:#81c784; - --his-data:rgba(255, 255, 255, 0.9); - --active:#e6ee9c; - --postbox:white; - --modalfooter:#fafafa; +:root { + --bg: white; + --drag: rgba(255, 255, 255, 0.8); + --color: black; + --beforehover: #757575; + --modal: white; + --subcolor: #e0e0e0; + --box: white; + --sidebar: #eeeeee; + --shared: #cfd8dc; + --notfbox: white; + --emphasized: #81c784; + --his-data: rgba(255, 255, 255, 0.9); + --active: #e6ee9c; + --postbox: white; + --modalfooter: #fafafa; } -#imagemodal{ - background: url("../img/pixel.white.svg"); +#imagemodal { + background: url("../img/pixel.white.svg"); } .blacktheme { - --bg:#212121; - --drag:rgba(0, 0, 0, 0.8); - --color:white; - --beforehover:#9e9e9e; - --modal:black; - --subcolor:#212121; - --box:#424242; - --sidebar:#424242; - --shared:#004d40; - --notfbox:#333333; - --emphasized:#4e342e; - --his-data:rgba(0, 0, 0, 0.8); - --active:#757575; - --postbox:#424242; - --modalfooter:#212121; + --bg: #212121; + --drag: rgba(0, 0, 0, 0.8); + --color: white; + --beforehover: #9e9e9e; + --modal: black; + --subcolor: #212121; + --box: #424242; + --sidebar: #424242; + --shared: #004d40; + --notfbox: #333333; + --emphasized: #4e342e; + --his-data: rgba(0, 0, 0, 0.8); + --active: #757575; + --postbox: #424242; + --modalfooter: #212121; } -.blacktheme #imagemodal{ - background: url("../img/pixel.svg"); +.blacktheme #imagemodal { + background: url("../img/pixel.svg"); } .indigotheme { - --bg:#031833; - --drag:rgba(0, 0, 0, 0.8); - --color:white; - --beforehover:#9e9e9e; - --modal:#0d1351; - --subcolor:#0d1351; - --shared:#004d40; - --box:#0d1351; - --sidebar:#0d1351; - --notfbox:#0d47a1; - --emphasized:#4e342e; - --his-data:rgba(13, 19, 81,0.8); - --active:#757575; - --postbox:#1a237e; - --modalfooter:#031833; + --bg: #031833; + --drag: rgba(0, 0, 0, 0.8); + --color: white; + --beforehover: #9e9e9e; + --modal: #0d1351; + --subcolor: #0d1351; + --shared: #004d40; + --box: #0d1351; + --sidebar: #0d1351; + --notfbox: #0d47a1; + --emphasized: #4e342e; + --his-data: rgba(13, 19, 81, 0.8); + --active: #757575; + --postbox: #1a237e; + --modalfooter: #031833; } -.indigotheme #imagemodal{ - background: url("../img/pixel.svg"); +.indigotheme #imagemodal { + background: url("../img/pixel.svg"); } .browntheme { - --bg:#261411; - --drag:rgba(0, 0, 0, 0.8); - --color:white; - --beforehover:#9e9e9e; - --modal:#261411; - --subcolor:#4e342e; - --shared:#004d40; - --box:#4e342e; - --sidebar:#4e342e; - --notfbox:#4e342e; - --emphasized:#0d47a1; - --his-data:rgba(62, 39, 35,0.8); - --active:#757575; - --postbox:#4e342e; - --modalfooter:#261411; + --bg: #261411; + --drag: rgba(0, 0, 0, 0.8); + --color: white; + --beforehover: #9e9e9e; + --modal: #261411; + --subcolor: #4e342e; + --shared: #004d40; + --box: #4e342e; + --sidebar: #4e342e; + --notfbox: #4e342e; + --emphasized: #0d47a1; + --his-data: rgba(62, 39, 35, 0.8); + --active: #757575; + --postbox: #4e342e; + --modalfooter: #261411; } -.browntheme #imagemodal{ - background: url("../img/pixel.svg"); +.browntheme #imagemodal { + background: url("../img/pixel.svg"); } -.greentheme{ - --bg:#c8e6c9; - --drag:rgba(255, 255, 255, 0.8); - --color:black; - --beforehover:#757575; - --modal:#81c784; - --subcolor:#a5d6a7; - --box:#81c784; - --sidebar:#81c784; - --shared:#ffcc80; - --notfbox:#a5d6a7; - --emphasized:#9e9d24; - --his-data:rgba(255, 255, 255, 0.9); - --active:#e6ee9c; - --postbox:#a5d6a7; - --modalfooter:#81c784; +.greentheme { + --bg: #c8e6c9; + --drag: rgba(255, 255, 255, 0.8); + --color: black; + --beforehover: #757575; + --modal: #81c784; + --subcolor: #a5d6a7; + --box: #81c784; + --sidebar: #81c784; + --shared: #ffcc80; + --notfbox: #a5d6a7; + --emphasized: #9e9d24; + --his-data: rgba(255, 255, 255, 0.9); + --active: #e6ee9c; + --postbox: #a5d6a7; + --modalfooter: #81c784; +} +.greentheme #imagemodal { + background: url("../img/pixel.white.svg"); } -.greentheme #imagemodal{ - background: url("../img/pixel.white.svg"); -} \ No newline at end of file diff --git a/app/css/tl.css b/app/css/tl.css index 3669f183..097b7c1a 100644 --- a/app/css/tl.css +++ b/app/css/tl.css @@ -1,97 +1,101 @@ /*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/ -#main{ - display:flex; - width:100vw; +#main { + width: 100vw; + height: calc(100vh - 40px); } #timeline-container { overflow-x: scroll; overflow-y: hidden; display: flex; - height: calc(100vh - 40px); - flex-grow:4; + height: 100%; } -#bottom{ - position:absolute; - bottom:0; - width:100vw; - height:40px; - padding:3px; - padding-right:0; - padding-left:40px; - background-color:var(--sidebar); - display:flex; +#bottom { + position: absolute; + bottom: 0; + width: 100vw; + height: 40px; + padding: 3px; + padding-right: 0; + padding-left: 40px; + background-color: var(--sidebar); + display: flex; justify-content: space-between; - flex-wrap:wrap; - z-index:500; + flex-wrap: wrap; + z-index: 500; box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2); } -#bottom.reverse{ - padding-left:0; - padding-right:40px; +#bottom.reverse { + padding-left: 0; + padding-right: 40px; } -.reverse{ +.reverse { flex-direction: row-reverse; } -#bottom #dambox{ - width:300px; - margin-right:10px; +#bottom #dambox { + width: 300px; + margin-right: 10px; } -#bottom.reverse #dambox{ - margin-right:0; +#bottom.reverse #dambox { + margin-right: 0; } -#bottom .trendtag{ - height:40px; +#bottom .trendtag { + height: 40px; } -#bottom #group{ - margin-right:40px; +#bottom #group { + margin-right: 40px; } -#bottom .leftside{ - display:flex; +#bottom .leftside { + display: flex; } -#bottom #tips img{ +#bottom #tips img { vertical-align: -3px; } -#bottom a{ - color:var(--color); +#bottom a { + color: var(--color); } -#bottom i{ - font-size:30px; +#bottom i { + font-size: 30px; } -.exc-icons{ - font-size:20px; +.exc-icons { + font-size: 20px; } -.exc-chb{ - padding-left:24px !important; +.exc-chb { + padding-left: 24px !important; } -#bottom .btnsgroup{ - border:1px solid; - padding:1px; - padding-left:5px; - padding-right:5px; - margin-right:15px; - border-radius:5px; +#bottom .btnsgroup { + border: 1px solid; + padding: 1px; + padding-left: 5px; + padding-right: 5px; + margin-right: 15px; + border-radius: 5px; } -#spot-box{ +#spot-box { white-space: nowrap; text-overflow: ellipsis; } -#spot-img{ - margin-right:2px; +#spot-img { + margin-right: 2px; } -#spot-art{ - margin-right:2px; - margin-left:2px; +#spot-art { + margin-right: 2px; + margin-left: 2px; } -.btnsgroup .grouptitle{ - font-family:Open Sans; - font-size:15px; +.btnsgroup .grouptitle { + font-family: Open Sans; + font-size: 15px; } @media screen and (max-width: 890px) { - .btnsgroup .grouptitle{ display: none; } - #tips,#tips-menu{ display: none; } + .btnsgroup .grouptitle { + display: none; + } + #tips, + #tips-menu { + display: none; + } } iframe { - max-width:100%; + max-width: 100%; } @media screen and (max-width: 600px) { .mobile #timeline-container { @@ -109,119 +113,157 @@ iframe { overflow: hidden; min-width: 300px; flex: 1; - border-top:none; - display:flex; + border-top: none; + display: flex; flex-direction: column; margin-bottom: -10px; } -.img_FTL{ - display:none; +.img_FTL { + display: none; } -.bbcode_FTL{ - display:none; +.bbcode_FTL { + display: none; } -.boxIn{ - height:100%; +.marquee { + width: 100%; + padding: .5em 0; + overflow: hidden; + margin-bottom: 0; + position: relative; +} +.marquee .bbcode-marq-lateral { + margin: 0; + padding-left: 100%; + display: inline-block; + white-space: nowrap; + animation-name: marquee; + animation-timing-function: linear; + animation-duration: 10s; + animation-iteration-count: infinite; +} +@keyframes marquee { +0% { + -webkit-transform: translate(0); + transform: translate(0); +} +99%, 100% { + -webkit-transform: translate(-100%); + transform: translate(-100%); +} +} +.boxIn { + display: flex; + flex-direction: column; + height: 100%; border: thin solid gray; overflow: hidden; } -.box .pin,#his-data .pin{ - display:none; +.box .pin, +#his-data .pin { + display: none; } -.user{ - cursor:text; - font-size:1.1rem; +.user { + cursor: text; + font-size: 1.1rem; } -.emoji,.emoji-img{ +.emoji, +.emoji-img { width: 15px; } -.area-toot .emoji,.area-toot .emoji-img{ +.area-toot .emoji, +.area-toot .emoji-img { width: 20px; vertical-align: middle; - margin:-1px 0; + margin: -1px 0; } -.faicon_FTL{ - display:none; +.faicon_FTL { + display: none; +} +.tl-box { + position: relative; + flex: 1; + overflow-y: scroll; + overflow-x: hidden; } -.tl-box{ - position:relative; - height:calc(100% - 40px); - overflow-y:scroll; - overflow-x:hidden } .additional { overflow-x: scroll; width: 100%; } -.media-filter .nomedia{ - display:none; +.media-filter .nomedia { + display: none; } -.bt-filter .shared{ - display:none; +.bt-filter .shared { + display: none; } -.except-bt-filter .unshared{ - display:none; +.except-bt-filter .unshared { + display: none; } .cvo { user-select: text; padding-left: 5px; - border-bottom:0.5px solid; + border-bottom: 0.5px solid; padding-right: 2px; word-break: break-word; width: 100%; display: grid; grid-template-columns: 43px 2fr 1fr; - grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'icon toot toot' 'vis additional additional' 'actions actions side'; + grid-template-areas: "notice notice notice" "icon display_name display_name" "icon toot toot" "vis additional additional" "actions actions side"; } -.cvo h1,.cvo h2,.cvo h3,.cvo h4,.cvo h5,.cvo h6{ - margin:0; +.cvo h1, +.cvo h2, +.cvo h3, +.cvo h4, +.cvo h5, +.cvo h6 { + margin: 0; } .area-notice { -margin:2px; -grid-area: notice; + margin: 2px; + grid-area: notice; } .area-icon { -width:40px; -margin:2px; -grid-area: icon; + width: 40px; + margin: 2px; + grid-area: icon; } .area-display_name { user-select: text; -height:1.5em; -margin:2px; -margin-left:5px; -overflow:hidden; -grid-area: display_name; -white-space: nowrap; -text-overflow: ellipsis; -display:flex; -justify-content:space-between; - width:100%; - flex-wrap:nowrap + height: 1.5em; + margin: 2px; + margin-left: 5px; + overflow: hidden; + grid-area: display_name; + white-space: nowrap; + text-overflow: ellipsis; + display: flex; + justify-content: space-between; + width: 100%; + flex-wrap: nowrap; } -.flex-name{ - max-width:calc(100% - 60px); - overflow:hidden; +.flex-name { + max-width: calc(100% - 60px); + overflow: hidden; text-overflow: ellipsis; } .area-toot { - cursor:text; + cursor: text; user-select: auto; -margin:2px; -margin-left:5px; -grid-area: toot; + margin: 2px; + margin-left: 5px; + grid-area: toot; } .area-date_via { - text-align:right; + text-align: right; grid-area: date_via; } .area-additional { - cursor:text; + cursor: text; user-select: auto; grid-area: additional; overflow: hidden; @@ -230,69 +272,69 @@ grid-area: toot; } .area-actions { - padding:0; - margin:0; - top:-20px; - display:flex; - justify-content:space-around; - width:250px; - max-width:100%; + padding: 0; + margin: 0; + top: -20px; + display: flex; + justify-content: space-around; + width: 250px; + max-width: 100%; grid-area: actions; } .area-vis { - margin:2px; + margin: 2px; grid-area: vis; - } +} .area-side { - display:flex; - justify-content:flex-end; - margin:2px; + display: flex; + justify-content: flex-end; + margin: 2px; grid-area: side; } -.quote-renote{ +.quote-renote { display: grid; grid-template-columns: 43px 2fr 1fr; - grid-template-areas: 'ricon ruser' 'ricon rtext'; + grid-template-areas: "ricon ruser" "ricon rtext"; border: 1px solid; margin-top: 3px; padding: 1px; border-radius: 3px; } -.renote-icon{ +.renote-icon { grid-area: ricon; } -.renote-icon img{ - width:43px; +.renote-icon img { + width: 43px; } -.renote-user{ +.renote-user { grid-area: ruser; } -.renote-text{ +.renote-text { grid-area: rtext; } -.btn-flat{ - color:var(--color); +.btn-flat { + color: var(--color); } -.area-side i{ - margin-left:10px; +.area-side i { + margin-left: 10px; } -.viabadge{ - margin-top:10px; +.viabadge { + margin-top: 10px; } -.action i{ - font-size:1.2rem; - margin-right:2px; +.action i { + font-size: 1.2rem; + margin-right: 2px; } -.action .fa-quote-right{ +.action .fa-quote-right { margin-top: 2px; } -.actct{ - color:var(--beforehover); +.actct { + color: var(--beforehover); } -.actct:hover{ - color:var(--color); +.actct:hover { + color: var(--color); transition: 0.5s; } @@ -316,7 +358,7 @@ grid-area: toot; .cbadge { display: inline-block; min-width: 10px; - max-width:100px; + max-width: 100px; padding: 3px 7px; font-size: 0.8em; margin-right: 5px; @@ -330,7 +372,7 @@ grid-area: toot; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; - height:calc(0.8em + 8px); + height: calc(0.8em + 8px); } .cbadge-hover { color: var(--color); @@ -343,9 +385,9 @@ grid-area: toot; p { margin: 0; margin-bottom: 0px; - line-height:20px; + line-height: 20px; } -p:not(:last-child){ +p:not(:last-child) { margin-bottom: 10px; } .shared { @@ -359,20 +401,20 @@ p:not(:last-child){ } .notice-box { top: 0; - background-color:var(--notfbox); + background-color: var(--notfbox); filter: brightness(110%); position: relative; margin-right: 10px; - width:100%; - min-height:60px; - z-index:500; - padding:5px; + width: 100%; + min-height: 60px; + z-index: 500; + padding: 5px; display: grid; grid-template-columns: 40px 48px 1fr 24px; grid-template-rows: 30px 30px; - grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box'; + grid-template-areas: "notice notice_name notice_name a2" "notice a1 sta a3" "notf-box notf-box notf-box notf-box"; } -.emp{ +.emp { font-weight: bold; text-decoration: underline; } @@ -434,89 +476,91 @@ p:not(:last-child){ min-height: 100px; max-height: 500px; } -.column-hide{ - display:none; - overflow:hidden; - height:0; +.column-hide { + display: none; + overflow: hidden; + height: 0; } -.prof-img{ +.prof-img { border-radius: 3px; } -.notf-icon{ +.notf-icon { position: relative; top: -20px; width: 20px; left: 20px; } .notf-indv-box { - width:100%; + width: 100%; max-height: 400px; overflow-y: scroll; overflow-x: hidden; border: thin solid gray; border-bottom: 2px solid white; grid-area: notf-box; - box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3), 0px -10px 10px 0px rgba(0,0,0,0.3) inset; + box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), + 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3), + 0px -10px 10px 0px rgba(0, 0, 0, 0.3) inset; } #src-contents { min-height: 100px; max-height: 190px; overflow-y: scroll; } -.type-b{ - display:none; +.type-b { + display: none; } -.modal-footer{ - background-color:var(--box); -} -.ballons{ +.modal-footer { background-color: var(--box); - position:absolute; - bottom:0px; - right:0px; } -.toot a span.ellipsis:after{ - content:"..."; +.ballons { + background-color: var(--box); + position: absolute; + bottom: 0px; + right: 0px; } -.toot a:not(.mention) span:last-of-type{ - display:none; +.toot a span.ellipsis:after { + content: "..."; } -.tl-box .via-hide{ - display:none; +.toot a:not(.mention) span:last-of-type { + display: none; } -.vote{ +.tl-box .via-hide { + display: none; +} +.vote { width: 100%; border: 1px solid; margin-top: 3px; padding: 1px; border-radius: 3px; } -.fa-2x>.emoji-img { - width: 36px!important; - height: 36px!important +.fa-2x > .emoji-img { + width: 36px !important; + height: 36px !important; } -.fa-3x>.emoji-img { - width: 54px!important; - height: 54px!important +.fa-3x > .emoji-img { + width: 54px !important; + height: 54px !important; } -.fa-4x>.emoji-img { - width: 72px!important; - height: 72px!important +.fa-4x > .emoji-img { + width: 72px !important; + height: 72px !important; } -.fa-5x>.emoji-img { - width: 90px!important; - height: 90px!important +.fa-5x > .emoji-img { + width: 90px !important; + height: 90px !important; } -#lists-user{ +#lists-user { overflow-y: scroll; - overflow-x: hidden; - max-height: 200px; + overflow-x: hidden; + max-height: 200px; } -.votebtn{ +.votebtn { border: 1px solid; color: var(--bg); background-color: var(--beforehover); - cursor:pointer; + cursor: pointer; width: 50px; padding: 2px; display: inline-block; @@ -525,46 +569,47 @@ p:not(:last-child){ border-radius: 10px; transition-duration: 0.5s; } -.votebtn:hover{ - background-color:var(--color); +.votebtn:hover { + background-color: var(--color); } -.jump{ - display: inline-block; animation: jump 0.75s linear infinite; +.jump { + display: inline-block; + animation: jump 0.75s linear infinite; } -.img-link{ - position:relative; - display:block; - margin-right:1px; +.img-link { + position: relative; + display: block; + margin-right: 1px; float: left; } -.nsfw-media{ - position:absolute; - top:0; - right:0; +.nsfw-media { + position: absolute; + top: 0; + right: 0; background-color: black; - color:white; + color: white; } -.img-link img{ - display:block; - width:100%; - height:100%; +.img-link img { + display: block; + width: 100%; + height: 100%; } @keyframes jump { 0% { transform: translateY(0); -} -25% { - transform: translateY(-16px); -} -50% { - transform: translateY(0); -} -75% { - transform: translateY(-8px); -} -100% { - transform: translateY(0); -} + } + 25% { + transform: translateY(-16px); + } + 50% { + transform: translateY(0); + } + 75% { + transform: translateY(-8px); + } + 100% { + transform: translateY(0); + } } @keyframes fadeInDown { from { @@ -601,4 +646,3 @@ p:not(:last-child){ animation-duration: 0.1s; animation-name: fadeInDown; } - diff --git a/app/css/twemoji-awesome.css b/app/css/twemoji-awesome.css index 18a2bee1..d1b603d7 100644 --- a/app/css/twemoji-awesome.css +++ b/app/css/twemoji-awesome.css @@ -3,6787 +3,9041 @@ display: inline-block; height: 1em; width: 1em; - margin: 0 .05em 0 .1em; + margin: 0 0.05em 0 0.1em; vertical-align: -0.1em; background-repeat: no-repeat; background-position: center center; - background-size: 1em 1em; } + background-size: 1em 1em; +} .twa-lg { height: 1.33em; width: 1.33em; margin: 0 0.0665em 0 0.133em; vertical-align: -0.133em; - background-size: 1.33em 1.33em; } + background-size: 1.33em 1.33em; +} .twa-2x { height: 2em; width: 2em; margin: 0 0.1em 0 0.2em; vertical-align: -0.2em; - background-size: 2em 2em; } + background-size: 2em 2em; +} .twa-3x { height: 3em; width: 3em; margin: 0 0.15em 0 0.3em; vertical-align: -0.3em; - background-size: 3em 3em; } + background-size: 3em 3em; +} .twa-4x { height: 4em; width: 4em; margin: 0 0.2em 0 0.4em; vertical-align: -0.4em; - background-size: 4em 4em; } + background-size: 4em 4em; +} .twa-5x { height: 5em; width: 5em; margin: 0 0.25em 0 0.5em; vertical-align: -0.5em; - background-size: 5em 5em; } + background-size: 5em 5em; +} .twa-mahjong-red-dragon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f004.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f004.svg"); +} .twa-mahjong { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f004.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f004.svg"); +} .twa-joker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f0cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f0cf.svg"); +} .twa-black-joker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f0cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f0cf.svg"); +} .twa-a-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f170.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f170.svg"); +} .twa-a { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f170.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f170.svg"); +} .twa-b-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f171.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f171.svg"); +} .twa-b { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f171.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f171.svg"); +} .twa-o-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f17e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f17e.svg"); +} .twa-o2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f17e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f17e.svg"); +} .twa-p-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f17f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f17f.svg"); +} .twa-parking { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f17f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f17f.svg"); +} .twa-ab-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f18e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f18e.svg"); +} .twa-ab { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f18e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f18e.svg"); +} .twa-squared-cl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f191.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f191.svg"); +} .twa-cl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f191.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f191.svg"); +} .twa-squared-cool { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f192.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f192.svg"); +} .twa-cool { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f192.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f192.svg"); +} .twa-squared-free { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f193.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f193.svg"); +} .twa-free { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f193.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f193.svg"); +} .twa-squared-id { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f194.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f194.svg"); +} .twa-id { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f194.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f194.svg"); +} .twa-squared-new { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f195.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f195.svg"); +} .twa-new { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f195.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f195.svg"); +} .twa-squared-ng { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f196.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f196.svg"); +} .twa-ng { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f196.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f196.svg"); +} .twa-squared-ok { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f197.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f197.svg"); +} .twa-ok { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f197.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f197.svg"); +} .twa-squared-sos { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f198.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f198.svg"); +} .twa-sos { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f198.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f198.svg"); +} .twa-upexc-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f199.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f199.svg"); +} .twa-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f199.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f199.svg"); +} .twa-squared-vs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f19a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f19a.svg"); +} .twa-vs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f19a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f19a.svg"); +} .twa-ascension-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1e8.svg"); +} .twa-andorra-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1e9.svg"); +} .twa-emirates-uae-united-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ea.svg"); +} .twa-afghanistan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1eb.svg"); +} .twa-antigua-barbuda-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ec.svg"); +} .twa-anguilla-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ee.svg"); +} .twa-albania-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f1.svg"); +} .twa-armenia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f2.svg"); +} .twa-angola-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f4.svg"); +} .twa-antarctica-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f6.svg"); +} .twa-argentina-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f7.svg"); +} .twa-american-samoa-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f8.svg"); +} .twa-austria-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1f9.svg"); +} .twa-australia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fa.svg"); +} .twa-aruba-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fc.svg"); +} .twa-aland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1fd.svg"); +} .twa-azerbaijan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6-1f1ff.svg"); +} .twa-aa { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6.svg"); +} .twa-squared-a { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e6.svg"); +} .twa-bosnia-herzegovina-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e6.svg"); +} .twa-barbados-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e7.svg"); +} .twa-bangladesh-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg"); +} .twa-belgium-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ea.svg"); +} .twa-burkina-faso-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1eb.svg"); +} .twa-bulgaria-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ec.svg"); +} .twa-bahrain-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ed.svg"); +} .twa-burundi-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ee.svg"); +} .twa-benin-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ef.svg"); +} .twa-barthelemy-barthelemy-saint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f1.svg"); +} .twa-bermuda-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f2.svg"); +} .twa-brunei-darussalam-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f3.svg"); +} .twa-bolivia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f4.svg"); +} .twa-bonaire-caribbean-eustatius-netherlands-saba-sint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f6.svg"); +} .twa-brazil-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f7.svg"); +} .twa-bahamas-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f8.svg"); +} .twa-bhutan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1f9.svg"); +} .twa-bouvet-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fb.svg"); +} .twa-botswana-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fc.svg"); +} .twa-belarus-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1fe.svg"); +} .twa-belize-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7-1f1ff.svg"); +} .twa-bb { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7.svg"); +} .twa-squared-b { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e7.svg"); +} .twa-canada-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e6.svg"); +} .twa-cocos-island-keeling-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e8.svg"); +} .twa-congo-congo-kinshasa-democratic-republic-of-congo-drc-kinshasa-republic-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1e9.svg"); +} .twa-central-african-republic-republic-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1eb.svg"); +} .twa-brazzaville-congo-congo-republic-congo-brazzaville-republic-republic-of-the-congo-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ec.svg"); +} .twa-switzerland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ed.svg"); +} .twa-cote-ivoire-cote-ivoire-ivory-coast-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ee.svg"); +} .twa-cook-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f0.svg"); +} .twa-chile-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f1.svg"); +} .twa-cameroon-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f2.svg"); +} .twa-china-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f3.svg"); +} .twa-cn { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f3.svg"); +} .twa-colombia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f4.svg"); +} .twa-clipperton-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f5.svg"); +} .twa-costa-rica-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1f7.svg"); +} .twa-cuba-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fa.svg"); +} .twa-cabo-cape-verde-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fb.svg"); +} .twa-antilles-curacao-curaçao-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fc.svg"); +} .twa-christmas-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fd.svg"); +} .twa-cyprus-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1fe.svg"); +} .twa-czech-republic-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8-1f1ff.svg"); +} .twa-cc { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8.svg"); +} .twa-squared-c { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e8.svg"); +} .twa-germany-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ea.svg"); +} .twa-de { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ea.svg"); +} .twa-diego-garcia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ec.svg"); +} .twa-djibouti-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ef.svg"); +} .twa-denmark-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f0.svg"); +} .twa-dominica-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f2.svg"); +} .twa-dominican-republic-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1f4.svg"); +} .twa-algeria-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9-1f1ff.svg"); +} .twa-dd { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9.svg"); +} .twa-squared-d { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1e9.svg"); +} .twa-ceuta-melilla-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1e6.svg"); +} .twa-ecuador-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1e8.svg"); +} .twa-estonia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ea.svg"); +} .twa-egypt-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ec.svg"); +} .twa-sahara-west-western-sahara-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1ed.svg"); +} .twa-eritrea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f7.svg"); +} .twa-spain-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f8.svg"); +} .twa-es { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f8.svg"); +} .twa-ethiopia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1f9.svg"); +} .twa-european-union-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea-1f1fa.svg"); +} .twa-ee { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea.svg"); +} .twa-squared-e { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ea.svg"); +} .twa-finland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1ee.svg"); +} .twa-fiji-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1ef.svg"); +} .twa-falkland-falklands-island-islas-malvinas-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f0.svg"); +} .twa-micronesia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f2.svg"); +} .twa-faroe-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f4.svg"); +} .twa-france-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f7.svg"); +} .twa-fr { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb-1f1f7.svg"); +} .twa-ff { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb.svg"); +} .twa-squared-f { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1eb.svg"); +} .twa-gabon-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e6.svg"); +} .twa-britain-british-cornwall-england-great-britain-ireland-northern-ireland-scotland-uk-union-jack-united-united-kingdom-wales-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e7.svg"); +} .twa-gb { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e7.svg"); +} .twa-grenada-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1e9.svg"); +} .twa-georgia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ea.svg"); +} .twa-french-guiana-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1eb.svg"); +} .twa-guernsey-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ec.svg"); +} .twa-ghana-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ed.svg"); +} .twa-gibraltar-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1ee.svg"); +} .twa-greenland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f1.svg"); +} .twa-gambia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f2.svg"); +} .twa-guinea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f3.svg"); +} .twa-guadeloupe-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f5.svg"); +} .twa-equatorial-guinea-guinea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f6.svg"); +} .twa-greece-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f7.svg"); +} .twa-georgia-island-south-south-georgia-south-sandwich-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f8.svg"); +} .twa-guatemala-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1f9.svg"); +} .twa-guam-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fa.svg"); +} .twa-bissau-guinea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fc.svg"); +} .twa-guyana-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec-1f1fe.svg"); +} .twa-gg { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec.svg"); +} .twa-squared-g { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ec.svg"); +} .twa-china-hong-kong-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f0.svg"); +} .twa-heard-island-mcdonald-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f2.svg"); +} .twa-honduras-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f3.svg"); +} .twa-croatia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f7.svg"); +} .twa-haiti-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1f9.svg"); +} .twa-hungary-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed-1f1fa.svg"); +} .twa-hh { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed.svg"); +} .twa-squared-h { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ed.svg"); +} .twa-canary-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1e8.svg"); +} .twa-indonesia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1e9.svg"); +} .twa-ireland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1ea.svg"); +} .twa-israel-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f1.svg"); +} .twa-isle-of-man-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f2.svg"); +} .twa-india-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f3.svg"); +} .twa-british-chagos-indian-ocean-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f4.svg"); +} .twa-iraq-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f6.svg"); +} .twa-iran-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f7.svg"); +} .twa-iceland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f8.svg"); +} .twa-italy-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f9.svg"); +} .twa-it { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee-1f1f9.svg"); +} .twa-ii { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee.svg"); +} .twa-squared-i { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ee.svg"); +} .twa-jersey-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1ea.svg"); +} .twa-jamaica-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f2.svg"); +} .twa-jordan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f4.svg"); +} .twa-japan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f5.svg"); +} .twa-jp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef-1f1f5.svg"); +} .twa-jj { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef.svg"); +} .twa-squared-j { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ef.svg"); +} .twa-kenya-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ea.svg"); +} .twa-kyrgyzstan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ec.svg"); +} .twa-cambodia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ed.svg"); +} .twa-kiribati-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ee.svg"); +} .twa-comoros-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f2.svg"); +} .twa-kitts-nevis-saint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f3.svg"); +} .twa-korea-north-north-korea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f5.svg"); +} .twa-korea-south-south-korea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f7.svg"); +} .twa-kr { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1f7.svg"); +} .twa-kuwait-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1fc.svg"); +} .twa-cayman-island-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1fe.svg"); +} .twa-kazakhstan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0-1f1ff.svg"); +} .twa-kk { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0.svg"); +} .twa-squared-k { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f0.svg"); +} .twa-laos-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e6.svg"); +} .twa-lebanon-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e7.svg"); +} .twa-lucia-saint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1e8.svg"); +} .twa-liechtenstein-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1ee.svg"); +} .twa-sri-lanka-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f0.svg"); +} .twa-liberia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f7.svg"); +} .twa-lesotho-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f8.svg"); +} .twa-lithuania-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1f9.svg"); +} .twa-luxembourg-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fa.svg"); +} .twa-latvia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fb.svg"); +} .twa-libya-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1-1f1fe.svg"); +} .twa-ll { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1.svg"); +} .twa-squared-l { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f1.svg"); +} .twa-morocco-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e6.svg"); +} .twa-monaco-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e8.svg"); +} .twa-moldova-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1e9.svg"); +} .twa-montenegro-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ea.svg"); +} .twa-french-martin-saint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1eb.svg"); +} .twa-madagascar-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ec.svg"); +} .twa-island-marshall-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ed.svg"); +} .twa-macedonia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f0.svg"); +} .twa-mali-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f1.svg"); +} .twa-burma-myanmar-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f2.svg"); +} .twa-mongolia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f3.svg"); +} .twa-china-macao-macau-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f4.svg"); +} .twa-island-mariana-north-northern-mariana-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f5.svg"); +} .twa-martinique-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f6.svg"); +} .twa-mauritania-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f7.svg"); +} .twa-montserrat-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f8.svg"); +} .twa-malta-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1f9.svg"); +} .twa-mauritius-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fa.svg"); +} .twa-maldives-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fb.svg"); +} .twa-malawi-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fc.svg"); +} .twa-mexico-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fd.svg"); +} .twa-malaysia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1fe.svg"); +} .twa-mozambique-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2-1f1ff.svg"); +} .twa-mm { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2.svg"); +} .twa-squared-m { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f2.svg"); +} .twa-namibia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1e6.svg"); +} .twa-new-new-caledonia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1e8.svg"); +} .twa-niger-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ea.svg"); +} .twa-island-norfolk-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1eb.svg"); +} .twa-nigeria-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ec.svg"); +} .twa-nicaragua-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ee.svg"); +} .twa-netherlands-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f1.svg"); +} .twa-norway-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f4.svg"); +} .twa-nepal-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f5.svg"); +} .twa-nauru-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1f7.svg"); +} .twa-niue-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1fa.svg"); +} .twa-new-new-zealand-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3-1f1ff.svg"); +} .twa-nn { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3.svg"); +} .twa-squared-n { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f3.svg"); +} .twa-oman-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f4-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f4-1f1f2.svg"); +} .twa-oo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f4.svg"); +} .twa-squared-o { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f4.svg"); +} .twa-panama-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1e6.svg"); +} .twa-peru-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ea.svg"); +} .twa-french-polynesia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1eb.svg"); +} .twa-guinea-new-papua-new-guinea-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ec.svg"); +} .twa-philippines-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1ed.svg"); +} .twa-pakistan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f0.svg"); +} .twa-poland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f1.svg"); +} .twa-miquelon-pierre-saint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f2.svg"); +} .twa-island-pitcairn-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f3.svg"); +} .twa-puerto-rico-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f7.svg"); +} .twa-palestine-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f8.svg"); +} .twa-portugal-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1f9.svg"); +} .twa-palau-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1fc.svg"); +} .twa-paraguay-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5-1f1fe.svg"); +} .twa-pp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5.svg"); +} .twa-squared-p { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f5.svg"); +} .twa-qatar-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f6-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f6-1f1e6.svg"); +} .twa-qq { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f6.svg"); +} .twa-squared-q { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f6.svg"); +} .twa-reunion-reunion-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1ea.svg"); +} .twa-romania-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1f4.svg"); +} .twa-serbia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1f8.svg"); +} .twa-russia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fa.svg"); +} .twa-ru { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fa.svg"); +} .twa-rwanda-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7-1f1fc.svg"); +} .twa-rr { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7.svg"); +} .twa-squared-r { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f7.svg"); +} .twa-saudi-arabia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e6.svg"); +} .twa-island-solomon-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e7.svg"); +} .twa-seychelles-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e8.svg"); +} .twa-sudan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1e9.svg"); +} .twa-sweden-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ea.svg"); +} .twa-singapore-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ec.svg"); +} .twa-helena-saint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ed.svg"); +} .twa-slovenia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ee.svg"); +} .twa-jan-mayen-svalbard-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ef.svg"); +} .twa-slovakia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f0.svg"); +} .twa-sierra-leone-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f1.svg"); +} .twa-san-marino-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f2.svg"); +} .twa-senegal-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f3.svg"); +} .twa-somalia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f4.svg"); +} .twa-suriname-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f7.svg"); +} .twa-south-south-sudan-sudan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f8.svg"); +} .twa-principe-principe-sao-tome-sao-tome-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1f9.svg"); +} .twa-el-salvador-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fb.svg"); +} .twa-maarten-sint-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fd.svg"); +} .twa-syria-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1fe.svg"); +} .twa-swaziland-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8-1f1ff.svg"); +} .twa-ss { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8.svg"); +} .twa-squared-s { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f8.svg"); +} .twa-tristan-da-cunha-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e6.svg"); +} .twa-caicos-island-turks-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e8.svg"); +} .twa-chad-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1e9.svg"); +} .twa-antarctic-french-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1eb.svg"); +} .twa-togo-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ec.svg"); +} .twa-thailand-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ed.svg"); +} .twa-tajikistan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ef.svg"); +} .twa-tokelau-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f0.svg"); +} .twa-east-east-timor-timor-leste-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f1.svg"); +} .twa-turkmenistan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f2.svg"); +} .twa-tunisia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f3.svg"); +} .twa-tonga-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f4.svg"); +} .twa-turkey-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f7.svg"); +} .twa-tobago-trinidad-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f9.svg"); +} .twa-tuvalu-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1fb.svg"); +} .twa-china-taiwan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1fc.svg"); +} .twa-tanzania-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9-1f1ff.svg"); +} .twa-tt { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9.svg"); +} .twa-squared-t { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1f9.svg"); +} .twa-ukraine-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1e6.svg"); +} .twa-uganda-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1ec.svg"); +} .twa-america-island-minor-outlying-united-united-states-us-usa-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f2.svg"); +} .twa-america-stars-and-stripes-united-united-states-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f8.svg"); +} .twa-us { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1f8.svg"); +} .twa-uruguay-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1fe.svg"); +} .twa-uzbekistan-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa-1f1ff.svg"); +} .twa-uu { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa.svg"); +} .twa-squared-u { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fa.svg"); +} .twa-vatican-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1e6.svg"); +} .twa-grenadines-saint-vincent-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1e8.svg"); +} .twa-venezuela-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ea.svg"); +} .twa-british-island-virgin-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ec.svg"); +} .twa-america-american-island-united-united-states-us-usa-virgin-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1ee.svg"); +} .twa-viet-nam-vietnam-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1f3.svg"); +} .twa-vanuatu-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb-1f1fa.svg"); +} .twa-vv { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb.svg"); +} .twa-squared-v { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fb.svg"); +} .twa-futuna-wallis-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc-1f1eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc-1f1eb.svg"); +} .twa-samoa-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc-1f1f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc-1f1f8.svg"); +} .twa-ww { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc.svg"); +} .twa-squared-w { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fc.svg"); +} .twa-kosovo-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fd-1f1f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fd-1f1f0.svg"); +} .twa-xx { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fd.svg"); +} .twa-squared-x { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fd.svg"); +} .twa-yemen-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe-1f1ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe-1f1ea.svg"); +} .twa-mayotte-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe-1f1f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe-1f1f9.svg"); +} .twa-yy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe.svg"); +} .twa-squared-y { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1fe.svg"); +} .twa-south-south-africa-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1e6.svg"); +} .twa-zambia-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1f2.svg"); +} .twa-zimbabwe-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff-1f1fc.svg"); +} .twa-zz { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff.svg"); +} .twa-squared-z { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f1ff.svg"); +} .twa-squared-katakana-koko { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f201.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f201.svg"); +} .twa-koko { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f201.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f201.svg"); +} .twa-squared-katakana-sa { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f202.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f202.svg"); +} .twa-sa { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f202.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f202.svg"); +} .twa-squared-negation-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f21a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f21a.svg"); +} .twa-u7121 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f21a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f21a.svg"); +} .twa-squared-finger-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f22f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f22f.svg"); +} .twa-u6307 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f22f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f22f.svg"); +} .twa-squared-prohibit-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f232.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f232.svg"); +} .twa-u7981 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f232.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f232.svg"); +} .twa-squared-empty-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f233.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f233.svg"); +} .twa-u7a7a { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f233.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f233.svg"); +} .twa-squared-together-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f234.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f234.svg"); +} .twa-u5408 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f234.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f234.svg"); +} .twa-squared-fullness-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f235.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f235.svg"); +} .twa-u6e80 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f235.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f235.svg"); +} .twa-squared-exist-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f236.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f236.svg"); +} .twa-u6709 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f236.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f236.svg"); +} .twa-squared-moon-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f237.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f237.svg"); +} .twa-u6708 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f237.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f237.svg"); +} .twa-squared-apply-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f238.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f238.svg"); +} .twa-u7533 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f238.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f238.svg"); +} .twa-squared-divide-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f239.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f239.svg"); +} .twa-u5272 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f239.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f239.svg"); +} .twa-squared-operating-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f23a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f23a.svg"); +} .twa-u55b6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f23a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f23a.svg"); +} .twa-circled-advantage-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f250.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f250.svg"); +} .twa-ideograph-advantage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f250.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f250.svg"); +} .twa-circled-accept-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f251.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f251.svg"); +} .twa-accept { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f251.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f251.svg"); +} .twa-cyclone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f300.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f300.svg"); +} .twa-foggy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f301.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f301.svg"); +} .twa-closed-umbrella { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f302.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f302.svg"); +} .twa-night-with-stars { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f303.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f303.svg"); +} .twa-stars { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f303.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f303.svg"); +} .twa-sunrise-over-mountains { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f304.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f304.svg"); +} .twa-sunrise { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f305.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f305.svg"); +} .twa-cityscape-at-dusk { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f306.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f306.svg"); +} .twa-city-sunset { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f306.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f306.svg"); +} .twa-sunset { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f307.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f307.svg"); +} .twa-city-sunrise { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f307.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f307.svg"); +} .twa-rainbow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f308.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f308.svg"); +} .twa-bridge-at-night { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f309.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f309.svg"); +} .twa-water-wave { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30a.svg"); +} .twa-ocean { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30a.svg"); +} .twa-volcano { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30b.svg"); +} .twa-milky-way { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30c.svg"); +} .twa-globe-showing-europe-africa { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30d.svg"); +} .twa-earth-africa { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30d.svg"); +} .twa-globe-showing-americas { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30e.svg"); +} .twa-earth-americas { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30e.svg"); +} .twa-globe-showing-asia-australia { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30f.svg"); +} .twa-earth-asia { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f30f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f30f.svg"); +} .twa-globe-with-meridians { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f310.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f310.svg"); +} .twa-new-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f311.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f311.svg"); +} .twa-waxing-crescent-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f312.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f312.svg"); +} .twa-first-quarter-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f313.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f313.svg"); +} .twa-waxing-gibbous-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f314.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f314.svg"); +} .twa-full-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f315.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f315.svg"); +} .twa-waning-gibbous-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f316.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f316.svg"); +} .twa-last-quarter-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f317.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f317.svg"); +} .twa-waning-crescent-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f318.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f318.svg"); +} .twa-crescent-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f319.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f319.svg"); +} .twa-moon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f319.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f319.svg"); +} .twa-new-moon-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31a.svg"); +} .twa-new-moon-with-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31a.svg"); +} .twa-first-quarter-moon-with-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31b.svg"); +} .twa-last-quarter-moon-with-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31c.svg"); +} .twa-full-moon-with-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31d.svg"); +} .twa-sun-with-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31e.svg"); +} .twa-glowing-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31f.svg"); +} .twa-star2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f31f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f31f.svg"); +} .twa-shooting-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f320.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f320.svg"); +} .twa-thermometer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f321.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f321.svg"); +} .twa-sun-behind-small-cloud { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f324.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f324.svg"); +} .twa-sun-behind-large-cloud { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f325.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f325.svg"); +} .twa-sun-behind-cloud-with-rain { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f326.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f326.svg"); +} .twa-cloud-with-rain { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f327.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f327.svg"); +} .twa-cloud-with-snow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f328.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f328.svg"); +} .twa-cloud-with-lightning { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f329.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f329.svg"); +} .twa-tornado { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f32a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f32a.svg"); +} .twa-fog { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f32b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f32b.svg"); +} .twa-wind-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f32c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f32c.svg"); +} .twa-hot-dog { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f32d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f32d.svg"); +} .twa-taco { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f32e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f32e.svg"); +} .twa-burrito { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f32f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f32f.svg"); +} .twa-chestnut { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f330.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f330.svg"); +} .twa-seedling { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f331.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f331.svg"); +} .twa-evergreen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f332.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f332.svg"); +} .twa-evergreen-tree { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f332.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f332.svg"); +} .twa-deciduous-tree { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f333.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f333.svg"); +} .twa-palm-tree { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f334.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f334.svg"); +} .twa-cactus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f335.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f335.svg"); +} .twa-hot-pepper { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f336.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f336.svg"); +} .twa-tulip { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f337.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f337.svg"); +} .twa-cherry-blossom { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f338.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f338.svg"); +} .twa-rose { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f339.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f339.svg"); +} .twa-hibiscus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33a.svg"); +} .twa-sunflower { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33b.svg"); +} .twa-blossom { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33c.svg"); +} .twa-ear-of-corn { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33d.svg"); +} .twa-corn { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33d.svg"); +} .twa-sheaf-of-rice { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33e.svg"); +} .twa-ear-of-rice { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33e.svg"); +} .twa-herb { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f33f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f33f.svg"); +} .twa-four-leaf-clover { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f340.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f340.svg"); +} .twa-maple-leaf { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f341.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f341.svg"); +} .twa-fallen-leaf { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f342.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f342.svg"); +} .twa-leaf-fluttering-in-wind { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f343.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f343.svg"); +} .twa-leaves { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f343.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f343.svg"); +} .twa-mushroom { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f344.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f344.svg"); +} .twa-tomato { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f345.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f345.svg"); +} .twa-eggplant { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f346.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f346.svg"); +} .twa-grapes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f347.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f347.svg"); +} .twa-melon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f348.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f348.svg"); +} .twa-watermelon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f349.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f349.svg"); +} .twa-tangerine { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34a.svg"); +} .twa-lemon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34b.svg"); +} .twa-banana { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34c.svg"); +} .twa-pineapple { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34d.svg"); +} .twa-red-apple { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34e.svg"); +} .twa-apple { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34e.svg"); +} .twa-green-apple { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f34f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f34f.svg"); +} .twa-pear { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f350.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f350.svg"); +} .twa-peach { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f351.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f351.svg"); +} .twa-cherries { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f352.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f352.svg"); +} .twa-strawberry { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f353.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f353.svg"); +} .twa-hamburger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f354.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f354.svg"); +} .twa-pizza { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f355.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f355.svg"); +} .twa-meat-on-bone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f356.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f356.svg"); +} .twa-poultry-leg { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f357.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f357.svg"); +} .twa-rice-cracker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f358.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f358.svg"); +} .twa-rice-ball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f359.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f359.svg"); +} .twa-cooked-rice { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35a.svg"); +} .twa-rice { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35a.svg"); +} .twa-curry-rice { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35b.svg"); +} .twa-curry { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35b.svg"); +} .twa-steaming-bowl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35c.svg"); +} .twa-ramen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35c.svg"); +} .twa-spaghetti { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35d.svg"); +} .twa-bread { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35e.svg"); +} .twa-french-fries { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35f.svg"); +} .twa-fries { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f35f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f35f.svg"); +} .twa-roasted-sweet-potato { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f360.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f360.svg"); +} .twa-sweet-potato { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f360.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f360.svg"); +} .twa-dango { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f361.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f361.svg"); +} .twa-oden { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f362.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f362.svg"); +} .twa-sushi { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f363.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f363.svg"); +} .twa-fried-shrimp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f364.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f364.svg"); +} .twa-fish-cake-with-swirl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f365.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f365.svg"); +} .twa-fish-cake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f365.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f365.svg"); +} .twa-soft-ice-cream { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f366.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f366.svg"); +} .twa-icecream { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f366.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f366.svg"); +} .twa-shaved-ice { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f367.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f367.svg"); +} .twa-ice-cream { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f368.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f368.svg"); +} .twa-doughnut { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f369.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f369.svg"); +} .twa-cookie { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f36a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f36a.svg"); +} .twa-chocolate-bar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f36b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f36b.svg"); +} .twa-candy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f36c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f36c.svg"); +} .twa-lollipop { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f36d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f36d.svg"); +} .twa-custard { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f36e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f36e.svg"); +} .twa-honey-pot { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f36f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f36f.svg"); +} .twa-shortcake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f370.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f370.svg"); +} .twa-cake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f370.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f370.svg"); +} .twa-bento-box { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f371.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f371.svg"); +} .twa-bento { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f371.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f371.svg"); +} .twa-pot-of-food { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f372.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f372.svg"); +} .twa-stew { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f372.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f372.svg"); +} .twa-cooking { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f373.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f373.svg"); +} .twa-fork-and-knife { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f374.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f374.svg"); +} .twa-teacup-without-handle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f375.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f375.svg"); +} .twa-tea { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f375.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f375.svg"); +} .twa-sake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f376.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f376.svg"); +} .twa-wine-glass { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f377.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f377.svg"); +} .twa-cocktail-glass { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f378.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f378.svg"); +} .twa-cocktail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f378.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f378.svg"); +} .twa-tropical-drink { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f379.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f379.svg"); +} .twa-beer-mug { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37a.svg"); +} .twa-beer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37a.svg"); +} .twa-clinking-beer-mugs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37b.svg"); +} .twa-beers { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37b.svg"); +} .twa-baby-bottle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37c.svg"); +} .twa-fork-and-knife-with-plate { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37d.svg"); +} .twa-bottle-with-popping-cork { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37e.svg"); +} .twa-popcorn { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f37f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f37f.svg"); +} .twa-ribbon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f380.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f380.svg"); +} .twa-wrapped-present { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f381.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f381.svg"); +} .twa-gift { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f381.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f381.svg"); +} .twa-birthday-cake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f382.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f382.svg"); +} .twa-birthday { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f382.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f382.svg"); +} .twa-jack-o-lantern { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f383.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f383.svg"); +} .twa-christmas-tree { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f384.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f384.svg"); +} .twa-father-christmas-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fb.svg"); +} .twa-father-christmas-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fc.svg"); +} .twa-father-christmas-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fd.svg"); +} .twa-father-christmas-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3fe.svg"); +} .twa-father-christmas-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385-1f3ff.svg"); +} .twa-santa-claus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385.svg"); +} .twa-santa { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f385.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f385.svg"); +} .twa-fireworks { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f386.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f386.svg"); +} .twa-sparkler { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f387.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f387.svg"); +} .twa-balloon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f388.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f388.svg"); +} .twa-party-popper { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f389.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f389.svg"); +} .twa-tada { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f389.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f389.svg"); +} .twa-confetti-ball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38a.svg"); +} .twa-tanabata-tree { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38b.svg"); +} .twa-crossed-flags { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38c.svg"); +} .twa-pine-decoration { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38d.svg"); +} .twa-bamboo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38d.svg"); +} .twa-japanese-dolls { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38e.svg"); +} .twa-dolls { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38e.svg"); +} .twa-carp-streamer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38f.svg"); +} .twa-flags { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f38f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f38f.svg"); +} .twa-wind-chime { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f390.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f390.svg"); +} .twa-moon-ceremony { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f391.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f391.svg"); +} .twa-rice-scene { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f391.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f391.svg"); +} .twa-school-backpack { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f392.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f392.svg"); +} .twa-school-satchel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f392.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f392.svg"); +} .twa-graduation-cap { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f393.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f393.svg"); +} .twa-mortar-board { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f393.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f393.svg"); +} .twa-military-medal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f396.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f396.svg"); +} .twa-reminder-ribbon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f397.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f397.svg"); +} .twa-studio-microphone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f399.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f399.svg"); +} .twa-level-slider { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f39a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f39a.svg"); +} .twa-control-knobs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f39b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f39b.svg"); +} .twa-film-frames { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f39e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f39e.svg"); +} .twa-admission-tickets { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f39f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f39f.svg"); +} .twa-carousel-horse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a0.svg"); +} .twa-ferris-wheel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a1.svg"); +} .twa-roller-coaster { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a2.svg"); +} .twa-fishing-pole { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a3.svg"); +} .twa-fishing-pole-and-fish { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a3.svg"); +} .twa-microphone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a4.svg"); +} .twa-movie-camera { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a5.svg"); +} .twa-cinema { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a6.svg"); +} .twa-headphone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a7.svg"); +} .twa-headphones { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a7.svg"); +} .twa-artist-palette { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a8.svg"); +} .twa-art { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a8.svg"); +} .twa-top-hat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a9.svg"); +} .twa-tophat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3a9.svg"); +} .twa-circus-tent { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3aa.svg"); +} .twa-ticket { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ab.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ab.svg"); +} .twa-clapper-board { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ac.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ac.svg"); +} .twa-clapper { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ac.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ac.svg"); +} .twa-performing-arts { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ad.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ad.svg"); +} .twa-video-game { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ae.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ae.svg"); +} .twa-direct-hit { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3af.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3af.svg"); +} .twa-dart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3af.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3af.svg"); +} .twa-slot-machine { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b0.svg"); +} .twa-billiards { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b1.svg"); +} .twa-8ball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b1.svg"); +} .twa-game-die { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b2.svg"); +} .twa-bowling { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b3.svg"); +} .twa-flower-playing-cards { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b4.svg"); +} .twa-musical-note { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b5.svg"); +} .twa-musical-notes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b6.svg"); +} .twa-notes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b6.svg"); +} .twa-saxophone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b7.svg"); +} .twa-guitar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b8.svg"); +} .twa-musical-keyboard { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3b9.svg"); +} .twa-trumpet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ba.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ba.svg"); +} .twa-violin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bb.svg"); +} .twa-musical-score { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bc.svg"); +} .twa-running-shirt { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bd.svg"); +} .twa-running-shirt-with-sash { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bd.svg"); +} .twa-tennis { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3be.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3be.svg"); +} .twa-skis { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bf.svg"); +} .twa-ski { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3bf.svg"); +} .twa-basketball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c0.svg"); +} .twa-chequered-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c1.svg"); +} .twa-checkered-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c1.svg"); +} .twa-snowboarder-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fb.svg"); +} .twa-snowboarder-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fc.svg"); +} .twa-snowboarder-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fd.svg"); +} .twa-snowboarder-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3fe.svg"); +} .twa-snowboarder-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2-1f3ff.svg"); +} .twa-snowboarder { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c2.svg"); +} .twa-runner-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fb.svg"); +} .twa-runner-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fc.svg"); +} .twa-runner-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fd.svg"); +} .twa-runner-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3fe.svg"); +} .twa-runner-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3-1f3ff.svg"); +} .twa-runner { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c3.svg"); +} .twa-surfer-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fb.svg"); +} .twa-surfer-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fc.svg"); +} .twa-surfer-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fd.svg"); +} .twa-surfer-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3fe.svg"); +} .twa-surfer-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4-1f3ff.svg"); +} .twa-surfer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c4.svg"); +} .twa-sports-medal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c5.svg"); +} .twa-trophy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c6.svg"); +} .twa-horse-racing-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fb.svg"); +} .twa-horse-racing-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fc.svg"); +} .twa-horse-racing-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fd.svg"); +} .twa-horse-racing-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3fe.svg"); +} .twa-horse-racing-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7-1f3ff.svg"); +} .twa-horse-racing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c7.svg"); +} .twa-american-football { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c8.svg"); +} .twa-football { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c8.svg"); +} .twa-rugby-football { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3c9.svg"); +} .twa-swimmer-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fb.svg"); +} .twa-swimmer-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fc.svg"); +} .twa-swimmer-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fd.svg"); +} .twa-swimmer-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3fe.svg"); +} .twa-swimmer-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca-1f3ff.svg"); +} .twa-swimmer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ca.svg"); +} .twa-weight-lifter-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fb.svg"); +} .twa-weight-lifter-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fc.svg"); +} .twa-weight-lifter-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fd.svg"); +} .twa-weight-lifter-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3fe.svg"); +} .twa-weight-lifter-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb-1f3ff.svg"); +} .twa-weight-lifter { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cb.svg"); +} .twa-golfer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cc.svg"); +} .twa-motorcycle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cd.svg"); +} .twa-racing-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ce.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ce.svg"); +} .twa-cricket { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3cf.svg"); +} .twa-volleyball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d0.svg"); +} .twa-field-hockey { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d1.svg"); +} .twa-ice-hockey-stick-and-puck { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d2.svg"); +} .twa-ping-pong { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d3.svg"); +} .twa-snow-capped-mountain { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d4.svg"); +} .twa-camping { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d5.svg"); +} .twa-beach-with-umbrella { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d6.svg"); +} .twa-building-construction { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d7.svg"); +} .twa-house-buildings { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d8.svg"); +} .twa-cityscape { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3d9.svg"); +} .twa-derelict-house-building { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3da.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3da.svg"); +} .twa-classical-building { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3db.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3db.svg"); +} .twa-desert { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3dc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3dc.svg"); +} .twa-desert-island { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3dd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3dd.svg"); +} .twa-national-park { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3de.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3de.svg"); +} .twa-stadium { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3df.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3df.svg"); +} .twa-house-building { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e0.svg"); +} .twa-house { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e0.svg"); +} .twa-house-with-garden { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e1.svg"); +} .twa-office-building { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e2.svg"); +} .twa-office { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e2.svg"); +} .twa-japanese-post-office { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e3.svg"); +} .twa-post-office { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e4.svg"); +} .twa-european-post-office { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e4.svg"); +} .twa-hospital { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e5.svg"); +} .twa-bank { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e6.svg"); +} .twa-atm-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e7.svg"); +} .twa-atm { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e7.svg"); +} .twa-hotel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e8.svg"); +} .twa-love-hotel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3e9.svg"); +} .twa-convenience-store { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ea.svg"); +} .twa-school { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3eb.svg"); +} .twa-department-store { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ec.svg"); +} .twa-factory { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ed.svg"); +} .twa-red-paper-lantern { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ee.svg"); +} .twa-japanese-castle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ef.svg"); +} .twa-castle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f0.svg"); +} .twa-european-castle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f0.svg"); +} .twa-rainbow-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f3-fe0f-200d-1f308.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f3-fe0f-200d-1f308.svg"); +} .twa-pride { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f3-fe0f-200d-1f308.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f3-fe0f-200d-1f308.svg"); +} .twa-waving-white-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f3.svg"); +} .twa-pirate-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f4-200d-2620-fe0f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f4-200d-2620-fe0f.svg"); +} .twa-jolly-roger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f4-200d-2620-fe0f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f4-200d-2620-fe0f.svg"); +} .twa-waving-black-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f4.svg"); +} .twa-rosette { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f5.svg"); +} .twa-label { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f7.svg"); +} .twa-badminton { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f8.svg"); +} .twa-bow-and-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3f9.svg"); +} .twa-amphora { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fa.svg"); +} .twa-skin-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fb.svg"); +} .twa-skin-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fc.svg"); +} .twa-skin-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fd.svg"); +} .twa-skin-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3fe.svg"); +} .twa-skin-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f3ff.svg"); +} .twa-rat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f400.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f400.svg"); +} .twa-mouse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f401.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f401.svg"); +} .twa-mouse2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f401.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f401.svg"); +} .twa-ox { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f402.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f402.svg"); +} .twa-water-buffalo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f403.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f403.svg"); +} .twa-cow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f404.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f404.svg"); +} .twa-cow2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f404.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f404.svg"); +} .twa-tiger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f405.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f405.svg"); +} .twa-tiger2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f405.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f405.svg"); +} .twa-leopard { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f406.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f406.svg"); +} .twa-rabbit { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f407.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f407.svg"); +} .twa-rabbit2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f407.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f407.svg"); +} .twa-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f408.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f408.svg"); +} .twa-cat2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f408.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f408.svg"); +} .twa-dragon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f409.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f409.svg"); +} .twa-crocodile { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40a.svg"); +} .twa-whale { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40b.svg"); +} .twa-whale2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40b.svg"); +} .twa-snail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40c.svg"); +} .twa-snake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40d.svg"); +} .twa-horse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40e.svg"); +} .twa-racehorse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40e.svg"); +} .twa-ram { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f40f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f40f.svg"); +} .twa-goat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f410.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f410.svg"); +} .twa-sheep { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f411.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f411.svg"); +} .twa-monkey { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f412.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f412.svg"); +} .twa-rooster { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f413.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f413.svg"); +} .twa-chicken { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f414.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f414.svg"); +} .twa-dog { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f415.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f415.svg"); +} .twa-dog2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f415.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f415.svg"); +} .twa-pig { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f416.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f416.svg"); +} .twa-pig2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f416.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f416.svg"); +} .twa-boar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f417.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f417.svg"); +} .twa-elephant { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f418.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f418.svg"); +} .twa-octopus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f419.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f419.svg"); +} .twa-spiral-shell { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41a.svg"); +} .twa-shell { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41a.svg"); +} .twa-bug { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41b.svg"); +} .twa-ant { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41c.svg"); +} .twa-honeybee { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41d.svg"); +} .twa-lady-beetle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41e.svg"); +} .twa-beetle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41e.svg"); +} .twa-fish { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f41f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f41f.svg"); +} .twa-tropical-fish { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f420.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f420.svg"); +} .twa-blowfish { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f421.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f421.svg"); +} .twa-turtle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f422.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f422.svg"); +} .twa-hatching-chick { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f423.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f423.svg"); +} .twa-baby-chick { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f424.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f424.svg"); +} .twa-front-facing-baby-chick { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f425.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f425.svg"); +} .twa-hatched-chick { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f425.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f425.svg"); +} .twa-bird { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f426.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f426.svg"); +} .twa-penguin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f427.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f427.svg"); +} .twa-koala { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f428.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f428.svg"); +} .twa-poodle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f429.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f429.svg"); +} .twa-camel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42a.svg"); +} .twa-dromedary-camel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42a.svg"); +} .twa-two-hump-camel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42b.svg"); +} .twa-dolphin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42c.svg"); +} .twa-mouse-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42d.svg"); +} .twa-cow-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42e.svg"); +} .twa-tiger-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f42f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f42f.svg"); +} .twa-rabbit-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f430.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f430.svg"); +} .twa-cat-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f431.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f431.svg"); +} .twa-dragon-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f432.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f432.svg"); +} .twa-spouting-whale { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f433.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f433.svg"); +} .twa-horse-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f434.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f434.svg"); +} .twa-monkey-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f435.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f435.svg"); +} .twa-dog-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f436.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f436.svg"); +} .twa-pig-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f437.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f437.svg"); +} .twa-frog-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f438.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f438.svg"); +} .twa-frog { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f438.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f438.svg"); +} .twa-hamster-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f439.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f439.svg"); +} .twa-hamster { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f439.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f439.svg"); +} .twa-wolf-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43a.svg"); +} .twa-wolf { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43a.svg"); +} .twa-bear-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43b.svg"); +} .twa-bear { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43b.svg"); +} .twa-panda-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43c.svg"); +} .twa-pig-nose { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43d.svg"); +} .twa-paw-prints { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43e.svg"); +} .twa-chipmunk { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f43f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f43f.svg"); +} .twa-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f440.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f440.svg"); +} .twa-eye-in-speech-bubble { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f441-200d-1f5e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f441-200d-1f5e8.svg"); +} .twa-eye { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f441.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f441.svg"); +} .twa-ear-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fb.svg"); +} .twa-ear-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fc.svg"); +} .twa-ear-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fd.svg"); +} .twa-ear-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3fe.svg"); +} .twa-ear-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f442-1f3ff.svg"); +} .twa-ear { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f442.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f442.svg"); +} .twa-nose-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fb.svg"); +} .twa-nose-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fc.svg"); +} .twa-nose-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fd.svg"); +} .twa-nose-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3fe.svg"); +} .twa-nose-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f443-1f3ff.svg"); +} .twa-nose { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f443.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f443.svg"); +} .twa-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f444.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f444.svg"); +} .twa-lips { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f444.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f444.svg"); +} .twa-tongue { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f445.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f445.svg"); +} .twa-white-up-pointing-backhand-index-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fb.svg"); +} .twa-white-up-pointing-backhand-index-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fc.svg"); +} .twa-white-up-pointing-backhand-index-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fd.svg"); +} .twa-white-up-pointing-backhand-index-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3fe.svg"); +} .twa-white-up-pointing-backhand-index-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446-1f3ff.svg"); +} .twa-backhand-index-pointing-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446.svg"); +} .twa-point-up-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f446.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f446.svg"); +} .twa-white-down-pointing-backhand-index-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fb.svg"); +} .twa-white-down-pointing-backhand-index-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fc.svg"); +} .twa-white-down-pointing-backhand-index-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fd.svg"); +} .twa-white-down-pointing-backhand-index-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3fe.svg"); +} .twa-white-down-pointing-backhand-index-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447-1f3ff.svg"); +} .twa-backhand-index-pointing-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447.svg"); +} .twa-point-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f447.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f447.svg"); +} .twa-white-left-pointing-backhand-index-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fb.svg"); +} .twa-white-left-pointing-backhand-index-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fc.svg"); +} .twa-white-left-pointing-backhand-index-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fd.svg"); +} .twa-white-left-pointing-backhand-index-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3fe.svg"); +} .twa-white-left-pointing-backhand-index-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448-1f3ff.svg"); +} .twa-backhand-index-pointing-left { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448.svg"); +} .twa-point-left { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f448.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f448.svg"); +} .twa-white-right-pointing-backhand-index-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fb.svg"); +} .twa-white-right-pointing-backhand-index-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fc.svg"); +} .twa-white-right-pointing-backhand-index-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fd.svg"); +} .twa-white-right-pointing-backhand-index-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3fe.svg"); +} .twa-white-right-pointing-backhand-index-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449-1f3ff.svg"); +} .twa-backhand-index-pointing-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449.svg"); +} .twa-point-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f449.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f449.svg"); +} .twa-fisted-hand-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fb.svg"); +} .twa-fisted-hand-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fc.svg"); +} .twa-fisted-hand-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fd.svg"); +} .twa-fisted-hand-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3fe.svg"); +} .twa-fisted-hand-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a-1f3ff.svg"); +} .twa-oncoming-fist { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a.svg"); +} .twa-punch { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44a.svg"); +} .twa-waving-hand-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fb.svg"); +} .twa-waving-hand-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fc.svg"); +} .twa-waving-hand-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fd.svg"); +} .twa-waving-hand-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3fe.svg"); +} .twa-waving-hand-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b-1f3ff.svg"); +} .twa-waving-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b.svg"); +} .twa-wave { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44b.svg"); +} .twa-ok-hand-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fb.svg"); +} .twa-ok-hand-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fc.svg"); +} .twa-ok-hand-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fd.svg"); +} .twa-ok-hand-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3fe.svg"); +} .twa-ok-hand-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c-1f3ff.svg"); +} .twa-ok-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44c.svg"); +} .twa-thumbs-up-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fb.svg"); +} .twa-thumbs-up-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fc.svg"); +} .twa-thumbs-up-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fd.svg"); +} .twa-thumbs-up-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3fe.svg"); +} .twa-thumbs-up-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d-1f3ff.svg"); +} .twa-thumbs-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d.svg"); +} .twa-thumbsup { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44d.svg"); +} .twa-thumbs-down-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fb.svg"); +} .twa-thumbs-down-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fc.svg"); +} .twa-thumbs-down-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fd.svg"); +} .twa-thumbs-down-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3fe.svg"); +} .twa-thumbs-down-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e-1f3ff.svg"); +} .twa-thumbs-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e.svg"); +} .twa-thumbsdown { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44e.svg"); +} .twa-clapping-hands-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fb.svg"); +} .twa-clapping-hands-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fc.svg"); +} .twa-clapping-hands-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fd.svg"); +} .twa-clapping-hands-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3fe.svg"); +} .twa-clapping-hands-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f-1f3ff.svg"); +} .twa-clapping-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f.svg"); +} .twa-clap { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f44f.svg"); +} .twa-open-hands-sign-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fb.svg"); +} .twa-open-hands-sign-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fc.svg"); +} .twa-open-hands-sign-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fd.svg"); +} .twa-open-hands-sign-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3fe.svg"); +} .twa-open-hands-sign-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f450-1f3ff.svg"); +} .twa-open-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f450.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f450.svg"); +} .twa-crown { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f451.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f451.svg"); +} .twa-womans-hat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f452.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f452.svg"); +} .twa-glasses { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f453.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f453.svg"); +} .twa-eyeglasses { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f453.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f453.svg"); +} .twa-necktie { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f454.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f454.svg"); +} .twa-t-shirt { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f455.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f455.svg"); +} .twa-shirt { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f455.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f455.svg"); +} .twa-jeans { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f456.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f456.svg"); +} .twa-dress { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f457.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f457.svg"); +} .twa-kimono { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f458.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f458.svg"); +} .twa-bikini { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f459.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f459.svg"); +} .twa-womans-clothes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f45a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f45a.svg"); +} .twa-purse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f45b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f45b.svg"); +} .twa-handbag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f45c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f45c.svg"); +} .twa-pouch { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f45d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f45d.svg"); +} .twa-mans-shoe { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f45e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f45e.svg"); +} .twa-running-shoe { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f45f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f45f.svg"); +} .twa-high-heeled-shoe { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f460.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f460.svg"); +} .twa-high-heel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f460.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f460.svg"); +} .twa-womans-sandal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f461.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f461.svg"); +} .twa-sandal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f461.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f461.svg"); +} .twa-womans-boot { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f462.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f462.svg"); +} .twa-boot { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f462.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f462.svg"); +} .twa-footprints { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f463.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f463.svg"); +} .twa-feet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f463.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f463.svg"); +} .twa-bust-in-silhouette { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f464.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f464.svg"); +} .twa-busts-in-silhouette { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f465.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f465.svg"); +} .twa-boy-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fb.svg"); +} .twa-boy-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fc.svg"); +} .twa-boy-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fd.svg"); +} .twa-boy-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3fe.svg"); +} .twa-boy-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f466-1f3ff.svg"); +} .twa-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f466.svg"); +} .twa-girl-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fb.svg"); +} .twa-girl-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fc.svg"); +} .twa-girl-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fd.svg"); +} .twa-girl-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3fe.svg"); +} .twa-girl-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f467-1f3ff.svg"); +} .twa-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f467.svg"); +} .twa-man-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fb.svg"); +} .twa-man-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fc.svg"); +} .twa-man-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fd.svg"); +} .twa-man-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3fe.svg"); +} .twa-man-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-1f3ff.svg"); +} .twa-family-man-man-boy-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f466-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f466-200d-1f466.svg"); +} .twa-family-man-man-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f466.svg"); +} .twa-family-man-man-girl-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467-200d-1f466.svg"); +} .twa-family-man-man-girl-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467-200d-1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467-200d-1f467.svg"); +} .twa-family-man-man-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f468-200d-1f467.svg"); +} .twa-family-man-woman-boy-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f466-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f466-200d-1f466.svg"); +} .twa-family-man-woman-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f466.svg"); +} .twa-family-man-woman-girl-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467-200d-1f466.svg"); +} .twa-family-man-woman-girl-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467-200d-1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467-200d-1f467.svg"); +} .twa-family-man-woman-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-1f469-200d-1f467.svg"); +} .twa-couple-with-heart-man-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2764-fe0f-200d-1f468.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2764-fe0f-200d-1f468.svg"); +} .twa-kiss-man-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg"); +} .twa-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f468.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f468.svg"); +} .twa-woman-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fb.svg"); +} .twa-woman-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fc.svg"); +} .twa-woman-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fd.svg"); +} .twa-woman-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3fe.svg"); +} .twa-woman-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-1f3ff.svg"); +} .twa-family-woman-woman-boy-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f466-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f466-200d-1f466.svg"); +} .twa-family-woman-woman-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f466.svg"); +} .twa-family-woman-woman-girl-boy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467-200d-1f466.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467-200d-1f466.svg"); +} .twa-family-woman-woman-girl-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467-200d-1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467-200d-1f467.svg"); +} .twa-family-woman-woman-girl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-1f469-200d-1f467.svg"); +} .twa-couple-with-heart-woman-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f468.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f468.svg"); +} .twa-couple-with-heart-woman-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f469.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f469.svg"); +} .twa-kiss-woman-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg"); +} .twa-kiss-woman-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg"); +} .twa-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f469.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f469.svg"); +} .twa-family { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46a.svg"); +} .twa-man-and-woman-holding-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46b.svg"); +} .twa-couple { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46b.svg"); +} .twa-two-men-holding-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46c.svg"); +} .twa-two-women-holding-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46d.svg"); +} .twa-police-officer-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fb.svg"); +} .twa-police-officer-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fc.svg"); +} .twa-police-officer-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fd.svg"); +} .twa-police-officer-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3fe.svg"); +} .twa-police-officer-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e-1f3ff.svg"); +} .twa-police-officer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e.svg"); +} .twa-cop { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46e.svg"); +} .twa-women-partying { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46f.svg"); +} .twa-dancers { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f46f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f46f.svg"); +} .twa-bride-with-veil-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fb.svg"); +} .twa-bride-with-veil-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fc.svg"); +} .twa-bride-with-veil-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fd.svg"); +} .twa-bride-with-veil-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3fe.svg"); +} .twa-bride-with-veil-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f470-1f3ff.svg"); +} .twa-bride-with-veil { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f470.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f470.svg"); +} .twa-person-with-blond-hair-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fb.svg"); +} .twa-person-with-blond-hair-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fc.svg"); +} .twa-person-with-blond-hair-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fd.svg"); +} .twa-person-with-blond-hair-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3fe.svg"); +} .twa-person-with-blond-hair-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f471-1f3ff.svg"); +} .twa-person-with-blond-hair { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f471.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f471.svg"); +} .twa-man-with-gua-pi-mao-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fb.svg"); +} .twa-man-with-gua-pi-mao-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fc.svg"); +} .twa-man-with-gua-pi-mao-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fd.svg"); +} .twa-man-with-gua-pi-mao-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3fe.svg"); +} .twa-man-with-gua-pi-mao-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472-1f3ff.svg"); +} .twa-man-with-chinese-cap { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472.svg"); +} .twa-man-with-gua-pi-mao { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f472.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f472.svg"); +} .twa-man-with-turban-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fb.svg"); +} .twa-man-with-turban-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fc.svg"); +} .twa-man-with-turban-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fd.svg"); +} .twa-man-with-turban-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3fe.svg"); +} .twa-man-with-turban-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f473-1f3ff.svg"); +} .twa-man-with-turban { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f473.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f473.svg"); +} .twa-older-man-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fb.svg"); +} .twa-older-man-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fc.svg"); +} .twa-older-man-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fd.svg"); +} .twa-older-man-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3fe.svg"); +} .twa-older-man-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474-1f3ff.svg"); +} .twa-old-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474.svg"); +} .twa-older-man { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f474.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f474.svg"); +} .twa-older-woman-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fb.svg"); +} .twa-older-woman-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fc.svg"); +} .twa-older-woman-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fd.svg"); +} .twa-older-woman-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3fe.svg"); +} .twa-older-woman-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475-1f3ff.svg"); +} .twa-old-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475.svg"); +} .twa-older-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f475.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f475.svg"); +} .twa-baby-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fb.svg"); +} .twa-baby-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fc.svg"); +} .twa-baby-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fd.svg"); +} .twa-baby-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3fe.svg"); +} .twa-baby-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f476-1f3ff.svg"); +} .twa-baby { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f476.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f476.svg"); +} .twa-construction-worker-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fb.svg"); +} .twa-construction-worker-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fc.svg"); +} .twa-construction-worker-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fd.svg"); +} .twa-construction-worker-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3fe.svg"); +} .twa-construction-worker-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f477-1f3ff.svg"); +} .twa-construction-worker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f477.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f477.svg"); +} .twa-princess-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fb.svg"); +} .twa-princess-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fc.svg"); +} .twa-princess-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fd.svg"); +} .twa-princess-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3fe.svg"); +} .twa-princess-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f478-1f3ff.svg"); +} .twa-princess { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f478.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f478.svg"); +} .twa-ogre { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f479.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f479.svg"); +} .twa-japanese-ogre { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f479.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f479.svg"); +} .twa-goblin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47a.svg"); +} .twa-japanese-goblin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47a.svg"); +} .twa-ghost { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47b.svg"); +} .twa-baby-angel-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fb.svg"); +} .twa-baby-angel-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fc.svg"); +} .twa-baby-angel-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fd.svg"); +} .twa-baby-angel-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3fe.svg"); +} .twa-baby-angel-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c-1f3ff.svg"); +} .twa-baby-angel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c.svg"); +} .twa-angel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47c.svg"); +} .twa-alien { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47d.svg"); +} .twa-alien-monster { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47e.svg"); +} .twa-space-invader { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47e.svg"); +} .twa-imp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f47f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f47f.svg"); +} .twa-skull { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f480.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f480.svg"); +} .twa-information-desk-person-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fb.svg"); +} .twa-information-desk-person-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fc.svg"); +} .twa-information-desk-person-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fd.svg"); +} .twa-information-desk-person-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3fe.svg"); +} .twa-information-desk-person-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f481-1f3ff.svg"); +} .twa-information-desk-person { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f481.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f481.svg"); +} .twa-guardsman-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fb.svg"); +} .twa-guardsman-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fc.svg"); +} .twa-guardsman-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fd.svg"); +} .twa-guardsman-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3fe.svg"); +} .twa-guardsman-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f482-1f3ff.svg"); +} .twa-guardsman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f482.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f482.svg"); +} .twa-dancer-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fb.svg"); +} .twa-dancer-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fc.svg"); +} .twa-dancer-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fd.svg"); +} .twa-dancer-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3fe.svg"); +} .twa-dancer-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f483-1f3ff.svg"); +} .twa-dancer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f483.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f483.svg"); +} .twa-lipstick { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f484.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f484.svg"); +} .twa-nail-polish-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fb.svg"); +} .twa-nail-polish-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fc.svg"); +} .twa-nail-polish-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fd.svg"); +} .twa-nail-polish-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3fe.svg"); +} .twa-nail-polish-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485-1f3ff.svg"); +} .twa-nail-polish { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485.svg"); +} .twa-nail-care { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f485.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f485.svg"); +} .twa-face-massage-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fb.svg"); +} .twa-face-massage-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fc.svg"); +} .twa-face-massage-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fd.svg"); +} .twa-face-massage-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3fe.svg"); +} .twa-face-massage-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486-1f3ff.svg"); +} .twa-face-massage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486.svg"); +} .twa-massage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f486.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f486.svg"); +} .twa-haircut-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fb.svg"); +} .twa-haircut-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fc.svg"); +} .twa-haircut-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fd.svg"); +} .twa-haircut-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3fe.svg"); +} .twa-haircut-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f487-1f3ff.svg"); +} .twa-haircut { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f487.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f487.svg"); +} .twa-barber-pole { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f488.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f488.svg"); +} .twa-barber { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f488.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f488.svg"); +} .twa-syringe { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f489.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f489.svg"); +} .twa-pill { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48a.svg"); +} .twa-kiss-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48b.svg"); +} .twa-love-letter { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48c.svg"); +} .twa-ring { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48d.svg"); +} .twa-gem-stone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48e.svg"); +} .twa-gem { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48e.svg"); +} .twa-kiss { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48f.svg"); +} .twa-couplekiss { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f48f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f48f.svg"); +} .twa-bouquet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f490.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f490.svg"); +} .twa-couple-with-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f491.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f491.svg"); +} .twa-wedding { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f492.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f492.svg"); +} .twa-beating-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f493.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f493.svg"); +} .twa-heartbeat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f493.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f493.svg"); +} .twa-broken-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f494.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f494.svg"); +} .twa-two-hearts { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f495.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f495.svg"); +} .twa-sparkling-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f496.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f496.svg"); +} .twa-growing-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f497.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f497.svg"); +} .twa-heartpulse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f497.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f497.svg"); +} .twa-heart-with-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f498.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f498.svg"); +} .twa-cupid { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f498.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f498.svg"); +} .twa-blue-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f499.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f499.svg"); +} .twa-green-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49a.svg"); +} .twa-yellow-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49b.svg"); +} .twa-purple-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49c.svg"); +} .twa-heart-with-ribbon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49d.svg"); +} .twa-gift-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49d.svg"); +} .twa-revolving-hearts { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49e.svg"); +} .twa-heart-decoration { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f49f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f49f.svg"); +} .twa-diamond-with-a-dot { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a0.svg"); +} .twa-diamond-shape-with-a-dot-inside { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a0.svg"); +} .twa-light-bulb { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a1.svg"); +} .twa-bulb { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a1.svg"); +} .twa-anger-symbol { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a2.svg"); +} .twa-anger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a2.svg"); +} .twa-bomb { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a3.svg"); +} .twa-zzz { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a4.svg"); +} .twa-collision { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a5.svg"); +} .twa-boom { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a5.svg"); +} .twa-sweat-droplets { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a6.svg"); +} .twa-sweat-drops { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a6.svg"); +} .twa-droplet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a7.svg"); +} .twa-dashing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a8.svg"); +} .twa-dash { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a8.svg"); +} .twa-pile-of-poo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a9.svg"); +} .twa-poop { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4a9.svg"); +} .twa-flexed-biceps-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fb.svg"); +} .twa-flexed-biceps-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fc.svg"); +} .twa-flexed-biceps-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fd.svg"); +} .twa-flexed-biceps-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3fe.svg"); +} .twa-flexed-biceps-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa-1f3ff.svg"); +} .twa-flexed-biceps { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa.svg"); +} .twa-muscle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4aa.svg"); +} .twa-dizzy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ab.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ab.svg"); +} .twa-speech-balloon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ac.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ac.svg"); +} .twa-thought-balloon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ad.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ad.svg"); +} .twa-white-flower { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ae.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ae.svg"); +} .twa-hundred-points { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4af.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4af.svg"); +} .twa-100 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4af.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4af.svg"); +} .twa-money-bag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b0.svg"); +} .twa-moneybag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b0.svg"); +} .twa-currency-exchange { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b1.svg"); +} .twa-heavy-dollar-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b2.svg"); +} .twa-credit-card { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b3.svg"); +} .twa-yen-banknote { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b4.svg"); +} .twa-yen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b4.svg"); +} .twa-dollar-banknote { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b5.svg"); +} .twa-dollar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b5.svg"); +} .twa-euro-banknote { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b6.svg"); +} .twa-euro { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b6.svg"); +} .twa-pound-banknote { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b7.svg"); +} .twa-pound { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b7.svg"); +} .twa-money-with-wings { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b8.svg"); +} .twa-chart-increasing-with-yen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b9.svg"); +} .twa-chart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4b9.svg"); +} .twa-seat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ba.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ba.svg"); +} .twa-laptop-computer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bb.svg"); +} .twa-computer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bb.svg"); +} .twa-briefcase { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bc.svg"); +} .twa-minidisc { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bd.svg"); +} .twa-floppy-disk { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4be.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4be.svg"); +} .twa-optical-disc { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bf.svg"); +} .twa-cd { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4bf.svg"); +} .twa-dvd { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c0.svg"); +} .twa-file-folder { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c1.svg"); +} .twa-open-file-folder { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c2.svg"); +} .twa-page-with-curl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c3.svg"); +} .twa-page-facing-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c4.svg"); +} .twa-calendar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c5.svg"); +} .twa-date { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c5.svg"); +} .twa-tear-off-calendar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c6.svg"); +} .twa-card-index { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c7.svg"); +} .twa-chart-increasing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c8.svg"); +} .twa-chart-with-upwards-trend { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c8.svg"); +} .twa-chart-decreasing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c9.svg"); +} .twa-chart-with-downwards-trend { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4c9.svg"); +} .twa-bar-chart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ca.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ca.svg"); +} .twa-clipboard { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cb.svg"); +} .twa-pushpin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cc.svg"); +} .twa-round-pushpin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cd.svg"); +} .twa-paperclip { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ce.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ce.svg"); +} .twa-straight-ruler { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4cf.svg"); +} .twa-triangular-ruler { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d0.svg"); +} .twa-bookmark-tabs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d1.svg"); +} .twa-ledger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d2.svg"); +} .twa-notebook { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d3.svg"); +} .twa-notebook-with-decorative-cover { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d4.svg"); +} .twa-closed-book { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d5.svg"); +} .twa-open-book { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d6.svg"); +} .twa-green-book { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d7.svg"); +} .twa-blue-book { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d8.svg"); +} .twa-orange-book { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4d9.svg"); +} .twa-books { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4da.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4da.svg"); +} .twa-name-badge { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4db.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4db.svg"); +} .twa-scroll { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4dc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4dc.svg"); +} .twa-memo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4dd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4dd.svg"); +} .twa-telephone-receiver { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4de.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4de.svg"); +} .twa-pager { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4df.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4df.svg"); +} .twa-fax-machine { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e0.svg"); +} .twa-fax { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e0.svg"); +} .twa-satellite-antenna { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e1.svg"); +} .twa-loudspeaker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e2.svg"); +} .twa-megaphone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e3.svg"); +} .twa-mega { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e3.svg"); +} .twa-outbox-tray { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e4.svg"); +} .twa-inbox-tray { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e5.svg"); +} .twa-package { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e6.svg"); +} .twa-e-mail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e7.svg"); +} .twa-incoming-envelope { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e8.svg"); +} .twa-envelope-with-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4e9.svg"); +} .twa-closed-mailbox-with-lowered-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ea.svg"); +} .twa-mailbox-closed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ea.svg"); +} .twa-closed-mailbox-with-raised-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4eb.svg"); +} .twa-mailbox { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4eb.svg"); +} .twa-open-mailbox-with-raised-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ec.svg"); +} .twa-mailbox-with-mail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ec.svg"); +} .twa-open-mailbox-with-lowered-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ed.svg"); +} .twa-mailbox-with-no-mail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ed.svg"); +} .twa-postbox { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ee.svg"); +} .twa-postal-horn { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ef.svg"); +} .twa-newspaper { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f0.svg"); +} .twa-mobile-phone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f1.svg"); +} .twa-iphone { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f1.svg"); +} .twa-mobile-phone-with-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f2.svg"); +} .twa-calling { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f2.svg"); +} .twa-vibration-mode { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f3.svg"); +} .twa-mobile-phone-off { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f4.svg"); +} .twa-no-mobile-phones { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f5.svg"); +} .twa-antenna-bars { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f6.svg"); +} .twa-signal-strength { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f6.svg"); +} .twa-camera { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f7.svg"); +} .twa-camera-with-flash { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f8.svg"); +} .twa-video-camera { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4f9.svg"); +} .twa-television { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fa.svg"); +} .twa-tv { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fa.svg"); +} .twa-radio { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fb.svg"); +} .twa-videocassette { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fc.svg"); +} .twa-vhs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fc.svg"); +} .twa-film-projector { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4fd.svg"); +} .twa-prayer-beads { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f4ff.svg"); +} .twa-shuffle-tracks-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f500.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f500.svg"); +} .twa-twisted-rightwards-arrows { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f500.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f500.svg"); +} .twa-repeat-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f501.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f501.svg"); +} .twa-repeat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f501.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f501.svg"); +} .twa-repeat-single-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f502.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f502.svg"); +} .twa-repeat-one { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f502.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f502.svg"); +} .twa-clockwise-vertical-arrows { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f503.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f503.svg"); +} .twa-arrows-clockwise { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f503.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f503.svg"); +} .twa-anticlockwise-arrows-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f504.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f504.svg"); +} .twa-arrows-counterclockwise { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f504.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f504.svg"); +} .twa-dim-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f505.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f505.svg"); +} .twa-low-brightness { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f505.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f505.svg"); +} .twa-bright-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f506.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f506.svg"); +} .twa-high-brightness { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f506.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f506.svg"); +} .twa-speaker-off { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f507.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f507.svg"); +} .twa-mute { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f507.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f507.svg"); +} .twa-speaker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f508.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f508.svg"); +} .twa-speaker-on { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f509.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f509.svg"); +} .twa-sound { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f509.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f509.svg"); +} .twa-speaker-loud { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50a.svg"); +} .twa-battery { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50b.svg"); +} .twa-electric-plug { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50c.svg"); +} .twa-left-pointing-magnifying-glass { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50d.svg"); +} .twa-mag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50d.svg"); +} .twa-right-pointing-magnifying-glass { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50e.svg"); +} .twa-mag-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50e.svg"); +} .twa-lock-with-pen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50f.svg"); +} .twa-lock-with-ink-pen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f50f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f50f.svg"); +} .twa-closed-lock-with-key { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f510.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f510.svg"); +} .twa-key { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f511.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f511.svg"); +} .twa-lock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f512.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f512.svg"); +} .twa-open-lock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f513.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f513.svg"); +} .twa-unlock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f513.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f513.svg"); +} .twa-bell { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f514.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f514.svg"); +} .twa-bell-with-slash { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f515.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f515.svg"); +} .twa-no-bell { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f515.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f515.svg"); +} .twa-bookmark { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f516.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f516.svg"); +} .twa-link { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f517.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f517.svg"); +} .twa-radio-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f518.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f518.svg"); +} .twa-back-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f519.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f519.svg"); +} .twa-end-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51a.svg"); +} .twa-end { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51a.svg"); +} .twa-onexc-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51b.svg"); +} .twa-on { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51b.svg"); +} .twa-soon-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51c.svg"); +} .twa-soon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51c.svg"); +} .twa-top-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51d.svg"); +} .twa-top { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51d.svg"); +} .twa-no-one-under-eighteen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51e.svg"); +} .twa-underage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51e.svg"); +} .twa-keycap-ten { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f51f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f51f.svg"); +} .twa-input-latin-uppercase { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f520.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f520.svg"); +} .twa-capital-abcd { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f520.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f520.svg"); +} .twa-input-latin-lowercase { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f521.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f521.svg"); +} .twa-abcd { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f521.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f521.svg"); +} .twa-input-numbers { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f522.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f522.svg"); +} .twa-1234 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f522.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f522.svg"); +} .twa-input-symbols { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f523.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f523.svg"); +} .twa-symbols { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f523.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f523.svg"); +} .twa-input-latin-letters { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f524.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f524.svg"); +} .twa-abc { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f524.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f524.svg"); +} .twa-fire { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f525.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f525.svg"); +} .twa-flashlight { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f526.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f526.svg"); +} .twa-wrench { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f527.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f527.svg"); +} .twa-hammer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f528.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f528.svg"); +} .twa-nut-and-bolt { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f529.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f529.svg"); +} .twa-kitchen-knife { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52a.svg"); +} .twa-hocho { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52a.svg"); +} .twa-pistol { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52b.svg"); +} .twa-gun { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52b.svg"); +} .twa-microscope { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52c.svg"); +} .twa-telescope { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52d.svg"); +} .twa-crystal-ball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52e.svg"); +} .twa-dotted-six-pointed-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52f.svg"); +} .twa-six-pointed-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f52f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f52f.svg"); +} .twa-japanese-symbol-for-beginner { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f530.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f530.svg"); +} .twa-beginner { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f530.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f530.svg"); +} .twa-trident-emblem { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f531.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f531.svg"); +} .twa-trident { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f531.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f531.svg"); +} .twa-black-square-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f532.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f532.svg"); +} .twa-white-square-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f533.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f533.svg"); +} .twa-red-circle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f534.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f534.svg"); +} .twa-blue-circle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f535.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f535.svg"); +} .twa-large-blue-circle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f535.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f535.svg"); +} .twa-large-orange-diamond { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f536.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f536.svg"); +} .twa-large-blue-diamond { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f537.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f537.svg"); +} .twa-small-orange-diamond { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f538.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f538.svg"); +} .twa-small-blue-diamond { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f539.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f539.svg"); +} .twa-red-triangle-pointed-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53a.svg"); +} .twa-small-red-triangle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53a.svg"); +} .twa-red-triangle-pointed-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53b.svg"); +} .twa-small-red-triangle-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53b.svg"); +} .twa-up-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53c.svg"); +} .twa-arrow-up-small { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53c.svg"); +} .twa-down-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53d.svg"); +} .twa-arrow-down-small { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f53d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f53d.svg"); +} .twa-om { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f549.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f549.svg"); +} .twa-dove { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f54a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f54a.svg"); +} .twa-kaaba { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f54b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f54b.svg"); +} .twa-mosque { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f54c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f54c.svg"); +} .twa-synagogue { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f54d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f54d.svg"); +} .twa-menorah { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f54e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f54e.svg"); +} .twa-one-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f550.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f550.svg"); +} .twa-clock1 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f550.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f550.svg"); +} .twa-two-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f551.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f551.svg"); +} .twa-clock2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f551.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f551.svg"); +} .twa-three-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f552.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f552.svg"); +} .twa-clock3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f552.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f552.svg"); +} .twa-four-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f553.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f553.svg"); +} .twa-clock4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f553.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f553.svg"); +} .twa-five-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f554.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f554.svg"); +} .twa-clock5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f554.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f554.svg"); +} .twa-six-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f555.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f555.svg"); +} .twa-clock6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f555.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f555.svg"); +} .twa-seven-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f556.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f556.svg"); +} .twa-clock7 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f556.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f556.svg"); +} .twa-eight-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f557.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f557.svg"); +} .twa-clock8 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f557.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f557.svg"); +} .twa-nine-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f558.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f558.svg"); +} .twa-clock9 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f558.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f558.svg"); +} .twa-ten-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f559.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f559.svg"); +} .twa-clock10 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f559.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f559.svg"); +} .twa-eleven-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55a.svg"); +} .twa-clock11 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55a.svg"); +} .twa-twelve-oclock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55b.svg"); +} .twa-clock12 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55b.svg"); +} .twa-one-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55c.svg"); +} .twa-clock130 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55c.svg"); +} .twa-two-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55d.svg"); +} .twa-clock230 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55d.svg"); +} .twa-three-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55e.svg"); +} .twa-clock330 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55e.svg"); +} .twa-four-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55f.svg"); +} .twa-clock430 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f55f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f55f.svg"); +} .twa-five-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f560.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f560.svg"); +} .twa-clock530 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f560.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f560.svg"); +} .twa-six-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f561.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f561.svg"); +} .twa-clock630 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f561.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f561.svg"); +} .twa-seven-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f562.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f562.svg"); +} .twa-clock730 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f562.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f562.svg"); +} .twa-eight-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f563.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f563.svg"); +} .twa-clock830 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f563.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f563.svg"); +} .twa-nine-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f564.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f564.svg"); +} .twa-clock930 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f564.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f564.svg"); +} .twa-ten-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f565.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f565.svg"); +} .twa-clock1030 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f565.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f565.svg"); +} .twa-eleven-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f566.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f566.svg"); +} .twa-clock1130 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f566.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f566.svg"); +} .twa-twelve-thirty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f567.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f567.svg"); +} .twa-clock1230 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f567.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f567.svg"); +} .twa-candle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f56f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f56f.svg"); +} .twa-mantelpiece-clock { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f570.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f570.svg"); +} .twa-hole { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f573.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f573.svg"); +} .twa-man-in-business-suit-levitating { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f574.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f574.svg"); +} .twa-sleuth-or-spy-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fb.svg"); +} .twa-sleuth-or-spy-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fc.svg"); +} .twa-sleuth-or-spy-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fd.svg"); +} .twa-sleuth-or-spy-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3fe.svg"); +} .twa-sleuth-or-spy-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f575-1f3ff.svg"); +} .twa-detective { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f575.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f575.svg"); +} .twa-sunglasses { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f576.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f576.svg"); +} .twa-spider { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f577.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f577.svg"); +} .twa-spider-web { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f578.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f578.svg"); +} .twa-joystick { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f579.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f579.svg"); +} .twa-man-dancing-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fb.svg"); +} .twa-man-dancing-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fc.svg"); +} .twa-man-dancing-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fd.svg"); +} .twa-man-dancing-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3fe.svg"); +} .twa-man-dancing-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a-1f3ff.svg"); +} .twa-man-dancing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f57a.svg"); +} .twa-linked-paperclips { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f587.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f587.svg"); +} .twa-pen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f58a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f58a.svg"); +} .twa-fountain-pen { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f58b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f58b.svg"); +} .twa-paintbrush { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f58c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f58c.svg"); +} .twa-crayon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f58d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f58d.svg"); +} .twa-raised-hand-with-fingers-splayed-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fb.svg"); +} .twa-raised-hand-with-fingers-splayed-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fc.svg"); +} .twa-raised-hand-with-fingers-splayed-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fd.svg"); +} .twa-raised-hand-with-fingers-splayed-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3fe.svg"); +} .twa-raised-hand-with-fingers-splayed-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f590-1f3ff.svg"); +} .twa-raised-hand-with-fingers-splayed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f590.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f590.svg"); +} .twa-reversed-hand-with-middle-finger-extended-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fb.svg"); +} .twa-reversed-hand-with-middle-finger-extended-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fc.svg"); +} .twa-reversed-hand-with-middle-finger-extended-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fd.svg"); +} .twa-reversed-hand-with-middle-finger-extended-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3fe.svg"); +} .twa-reversed-hand-with-middle-finger-extended-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f595-1f3ff.svg"); +} .twa-middle-finger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f595.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f595.svg"); +} .twa-raised-hand-with-part-between-middle-and-ring-fingers-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fb.svg"); +} .twa-raised-hand-with-part-between-middle-and-ring-fingers-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fc.svg"); +} .twa-raised-hand-with-part-between-middle-and-ring-fingers-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fd.svg"); +} .twa-raised-hand-with-part-between-middle-and-ring-fingers-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3fe.svg"); +} .twa-raised-hand-with-part-between-middle-and-ring-fingers-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f596-1f3ff.svg"); +} .twa-vulcan-salute { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f596.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f596.svg"); +} .twa-black-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5a4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5a4.svg"); +} .twa-desktop-computer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5a5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5a5.svg"); +} .twa-printer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5a8.svg"); +} .twa-computer-mouse { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5b1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5b1.svg"); +} .twa-trackball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5b2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5b2.svg"); +} .twa-frame-with-picture { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5bc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5bc.svg"); +} .twa-card-index-dividers { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5c2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5c2.svg"); +} .twa-card-file-box { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5c3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5c3.svg"); +} .twa-file-cabinet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5c4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5c4.svg"); +} .twa-wastebasket { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5d1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5d1.svg"); +} .twa-spiral-notepad { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5d2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5d2.svg"); +} .twa-spiral-calendar { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5d3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5d3.svg"); +} .twa-compression { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5dc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5dc.svg"); +} .twa-old-key { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5dd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5dd.svg"); +} .twa-rolled-up-newspaper { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5de.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5de.svg"); +} .twa-dagger { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5e1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5e1.svg"); +} .twa-speaking-head { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5e3.svg"); +} .twa-left-speech-bubble { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5e8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5e8.svg"); +} .twa-right-anger-bubble { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5ef.svg"); +} .twa-ballot-box-with-ballot { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5f3.svg"); +} .twa-world-map { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fa.svg"); +} .twa-mount-fuji { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fb.svg"); +} .twa-tokyo-tower { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fc.svg"); +} .twa-statue-of-liberty { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fd.svg"); +} .twa-map-of-japan { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fe.svg"); +} .twa-japan { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5fe.svg"); +} .twa-moai { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5ff.svg"); +} .twa-moyai { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f5ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f5ff.svg"); +} .twa-grinning-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f600.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f600.svg"); +} .twa-grinning { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f600.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f600.svg"); +} .twa-grinning-face-with-smiling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f601.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f601.svg"); +} .twa-grin { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f601.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f601.svg"); +} .twa-face-with-tears-of-joy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f602.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f602.svg"); +} .twa-joy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f602.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f602.svg"); +} .twa-smiling-face-with-open-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f603.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f603.svg"); +} .twa-smiley { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f603.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f603.svg"); +} .twa-smiling-face-with-open-mouth-and-smiling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f604.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f604.svg"); +} .twa-smile { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f604.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f604.svg"); +} .twa-smiling-face-with-open-mouth-and-cold-sweat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f605.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f605.svg"); +} .twa-sweat-smile { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f605.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f605.svg"); +} .twa-smiling-face-with-open-mouth-and-tightly-closed-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f606.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f606.svg"); +} .twa-laughing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f606.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f606.svg"); +} .twa-smiling-face-with-halo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f607.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f607.svg"); +} .twa-innocent { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f607.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f607.svg"); +} .twa-smiling-face-with-horns { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f608.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f608.svg"); +} .twa-smiling-imp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f608.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f608.svg"); +} .twa-winking-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f609.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f609.svg"); +} .twa-wink { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f609.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f609.svg"); +} .twa-smiling-face-with-smiling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60a.svg"); +} .twa-blush { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60a.svg"); +} .twa-face-savouring-delicious-food { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60b.svg"); +} .twa-yum { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60b.svg"); +} .twa-relieved-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60c.svg"); +} .twa-satisfied { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60c.svg"); +} .twa-smiling-face-with-heart-shaped-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60d.svg"); +} .twa-heart-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60d.svg"); +} .twa-smiling-face-with-sunglasses { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60e.svg"); +} .twa-smirking-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60f.svg"); +} .twa-smirk { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f60f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f60f.svg"); +} .twa-neutral-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f610.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f610.svg"); +} .twa-expressionless-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f611.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f611.svg"); +} .twa-expressionless { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f611.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f611.svg"); +} .twa-unamused-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f612.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f612.svg"); +} .twa-unamused { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f612.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f612.svg"); +} .twa-face-with-cold-sweat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f613.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f613.svg"); +} .twa-sweat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f613.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f613.svg"); +} .twa-pensive-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f614.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f614.svg"); +} .twa-pensive { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f614.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f614.svg"); +} .twa-confused-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f615.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f615.svg"); +} .twa-confused { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f615.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f615.svg"); +} .twa-confounded-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f616.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f616.svg"); +} .twa-confounded { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f616.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f616.svg"); +} .twa-kissing-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f617.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f617.svg"); +} .twa-kissing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f617.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f617.svg"); +} .twa-face-throwing-a-kiss { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f618.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f618.svg"); +} .twa-kissing-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f618.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f618.svg"); +} .twa-kissing-face-with-smiling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f619.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f619.svg"); +} .twa-kissing-smiling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f619.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f619.svg"); +} .twa-kissing-face-with-closed-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61a.svg"); +} .twa-kissing-closed-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61a.svg"); +} .twa-face-with-stuck-out-tongue { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61b.svg"); +} .twa-stuck-out-tongue { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61b.svg"); +} .twa-face-with-stuck-out-tongue-and-winking-eye { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61c.svg"); +} .twa-stuck-out-tongue-winking-eye { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61c.svg"); +} .twa-face-with-stuck-out-tongue-and-tightly-closed-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61d.svg"); +} .twa-stuck-out-tongue-closed-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61d.svg"); +} .twa-disappointed-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61e.svg"); +} .twa-disappointed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61e.svg"); +} .twa-worried-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61f.svg"); +} .twa-worried { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f61f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f61f.svg"); +} .twa-angry-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f620.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f620.svg"); +} .twa-angry { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f620.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f620.svg"); +} .twa-pouting-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f621.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f621.svg"); +} .twa-rage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f621.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f621.svg"); +} .twa-crying-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f622.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f622.svg"); +} .twa-cry { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f622.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f622.svg"); +} .twa-persevering-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f623.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f623.svg"); +} .twa-persevere { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f623.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f623.svg"); +} .twa-face-with-steam-from-nose { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f624.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f624.svg"); +} .twa-triumph { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f624.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f624.svg"); +} .twa-disappointed-but-relieved-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f625.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f625.svg"); +} .twa-relieved { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f625.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f625.svg"); +} .twa-frowning-face-with-open-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f626.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f626.svg"); +} .twa-frowning { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f626.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f626.svg"); +} .twa-anguished-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f627.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f627.svg"); +} .twa-anguished { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f627.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f627.svg"); +} .twa-fearful-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f628.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f628.svg"); +} .twa-fearful { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f628.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f628.svg"); +} .twa-weary-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f629.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f629.svg"); +} .twa-weary { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f629.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f629.svg"); +} .twa-sleepy-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62a.svg"); +} .twa-sleepy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62a.svg"); +} .twa-tired-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62b.svg"); +} .twa-grimacing-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62c.svg"); +} .twa-grimacing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62c.svg"); +} .twa-loudly-crying-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62d.svg"); +} .twa-sob { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62d.svg"); +} .twa-face-with-open-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62e.svg"); +} .twa-open-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62e.svg"); +} .twa-hushed-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62f.svg"); +} .twa-hushed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f62f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f62f.svg"); +} .twa-face-with-open-mouth-and-cold-sweat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f630.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f630.svg"); +} .twa-cold-sweat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f630.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f630.svg"); +} .twa-face-screaming-in-fear { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f631.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f631.svg"); +} .twa-scream { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f631.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f631.svg"); +} .twa-astonished-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f632.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f632.svg"); +} .twa-astonished { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f632.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f632.svg"); +} .twa-flushed-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f633.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f633.svg"); +} .twa-flushed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f633.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f633.svg"); +} .twa-sleeping-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f634.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f634.svg"); +} .twa-sleeping { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f634.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f634.svg"); +} .twa-dizzy-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f635.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f635.svg"); +} .twa-face-without-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f636.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f636.svg"); +} .twa-no-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f636.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f636.svg"); +} .twa-face-with-medical-mask { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f637.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f637.svg"); +} .twa-mask { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f637.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f637.svg"); +} .twa-grinning-cat-face-with-smiling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f638.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f638.svg"); +} .twa-smile-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f638.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f638.svg"); +} .twa-cat-face-with-tears-of-joy { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f639.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f639.svg"); +} .twa-joy-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f639.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f639.svg"); +} .twa-smiling-cat-face-with-open-mouth { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63a.svg"); +} .twa-smiley-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63a.svg"); +} .twa-smiling-cat-face-with-heart-shaped-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63b.svg"); +} .twa-heart-eyes-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63b.svg"); +} .twa-cat-face-with-wry-smile { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63c.svg"); +} .twa-smirk-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63c.svg"); +} .twa-kissing-cat-face-with-closed-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63d.svg"); +} .twa-kissing-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63d.svg"); +} .twa-pouting-cat-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63e.svg"); +} .twa-pouting-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63e.svg"); +} .twa-crying-cat-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f63f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f63f.svg"); +} .twa-weary-cat-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f640.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f640.svg"); +} .twa-scream-cat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f640.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f640.svg"); +} .twa-slightly-frowning-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f641.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f641.svg"); +} .twa-slightly-smiling-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f642.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f642.svg"); +} .twa-upside-down-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f643.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f643.svg"); +} .twa-face-with-rolling-eyes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f644.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f644.svg"); +} .twa-face-with-no-good-gesture-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fb.svg"); +} .twa-face-with-no-good-gesture-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fc.svg"); +} .twa-face-with-no-good-gesture-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fd.svg"); +} .twa-face-with-no-good-gesture-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3fe.svg"); +} .twa-face-with-no-good-gesture-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645-1f3ff.svg"); +} .twa-gesturing-no { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645.svg"); +} .twa-no-good { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f645.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f645.svg"); +} .twa-face-with-ok-gesture-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fb.svg"); +} .twa-face-with-ok-gesture-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fc.svg"); +} .twa-face-with-ok-gesture-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fd.svg"); +} .twa-face-with-ok-gesture-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3fe.svg"); +} .twa-face-with-ok-gesture-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646-1f3ff.svg"); +} .twa-gesturing-ok { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646.svg"); +} .twa-ok-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f646.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f646.svg"); +} .twa-person-bowing-deeply-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fb.svg"); +} .twa-person-bowing-deeply-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fc.svg"); +} .twa-person-bowing-deeply-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fd.svg"); +} .twa-person-bowing-deeply-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3fe.svg"); +} .twa-person-bowing-deeply-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647-1f3ff.svg"); +} .twa-person-bowing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647.svg"); +} .twa-bow { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f647.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f647.svg"); +} .twa-see-no-evil { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f648.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f648.svg"); +} .twa-hear-no-evil { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f649.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f649.svg"); +} .twa-speak-no-evil { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64a.svg"); +} .twa-happy-person-raising-one-hand-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fb.svg"); +} .twa-happy-person-raising-one-hand-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fc.svg"); +} .twa-happy-person-raising-one-hand-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fd.svg"); +} .twa-happy-person-raising-one-hand-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3fe.svg"); +} .twa-happy-person-raising-one-hand-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b-1f3ff.svg"); +} .twa-happy-person-raising-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b.svg"); +} .twa-happy-person-raised-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64b.svg"); +} .twa-person-raising-both-hands-in-celebration-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fb.svg"); +} .twa-person-raising-both-hands-in-celebration-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fc.svg"); +} .twa-person-raising-both-hands-in-celebration-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fd.svg"); +} .twa-person-raising-both-hands-in-celebration-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3fe.svg"); +} .twa-person-raising-both-hands-in-celebration-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c-1f3ff.svg"); +} .twa-person-raising-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c.svg"); +} .twa-raised-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64c.svg"); +} .twa-person-frowning-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fb.svg"); +} .twa-person-frowning-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fc.svg"); +} .twa-person-frowning-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fd.svg"); +} .twa-person-frowning-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3fe.svg"); +} .twa-person-frowning-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d-1f3ff.svg"); +} .twa-person-frowning { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64d.svg"); +} .twa-person-with-pouting-face-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fb.svg"); +} .twa-person-with-pouting-face-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fc.svg"); +} .twa-person-with-pouting-face-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fd.svg"); +} .twa-person-with-pouting-face-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3fe.svg"); +} .twa-person-with-pouting-face-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e-1f3ff.svg"); +} .twa-person-pouting { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e.svg"); +} .twa-person-with-pouting-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64e.svg"); +} .twa-person-with-folded-hands-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fb.svg"); +} .twa-person-with-folded-hands-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fc.svg"); +} .twa-person-with-folded-hands-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fd.svg"); +} .twa-person-with-folded-hands-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3fe.svg"); +} .twa-person-with-folded-hands-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f-1f3ff.svg"); +} .twa-folded-hands { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f.svg"); +} .twa-pray { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f64f.svg"); +} .twa-rocket { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f680.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f680.svg"); +} .twa-helicopter { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f681.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f681.svg"); +} .twa-locomotive { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f682.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f682.svg"); +} .twa-steam-locomotive { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f682.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f682.svg"); +} .twa-railway-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f683.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f683.svg"); +} .twa-high-speed-train { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f684.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f684.svg"); +} .twa-bullettrain-side { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f684.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f684.svg"); +} .twa-high-speed-train-with-bullet-nose { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f685.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f685.svg"); +} .twa-bullettrain-front { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f685.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f685.svg"); +} .twa-train { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f686.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f686.svg"); +} .twa-train2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f686.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f686.svg"); +} .twa-metro { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f687.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f687.svg"); +} .twa-light-rail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f688.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f688.svg"); +} .twa-station { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f689.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f689.svg"); +} .twa-tram { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68a.svg"); +} .twa-tram-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68b.svg"); +} .twa-bus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68c.svg"); +} .twa-oncoming-bus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68d.svg"); +} .twa-trolleybus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68e.svg"); +} .twa-bus-stop { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68f.svg"); +} .twa-busstop { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f68f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f68f.svg"); +} .twa-minibus { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f690.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f690.svg"); +} .twa-ambulance { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f691.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f691.svg"); +} .twa-fire-engine { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f692.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f692.svg"); +} .twa-police-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f693.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f693.svg"); +} .twa-oncoming-police-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f694.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f694.svg"); +} .twa-taxi { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f695.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f695.svg"); +} .twa-oncoming-taxi { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f696.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f696.svg"); +} .twa-automobile { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f697.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f697.svg"); +} .twa-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f697.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f697.svg"); +} .twa-oncoming-automobile { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f698.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f698.svg"); +} .twa-recreational-vehicle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f699.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f699.svg"); +} .twa-blue-car { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f699.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f699.svg"); +} .twa-delivery-truck { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69a.svg"); +} .twa-truck { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69a.svg"); +} .twa-articulated-lorry { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69b.svg"); +} .twa-tractor { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69c.svg"); +} .twa-monorail { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69d.svg"); +} .twa-mountain-railway { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69e.svg"); +} .twa-suspension-railway { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f69f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f69f.svg"); +} .twa-mountain-cableway { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a0.svg"); +} .twa-aerial-tramway { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a1.svg"); +} .twa-ship { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a2.svg"); +} .twa-rowboat-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fb.svg"); +} .twa-rowboat-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fc.svg"); +} .twa-rowboat-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fd.svg"); +} .twa-rowboat-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3fe.svg"); +} .twa-rowboat-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3-1f3ff.svg"); +} .twa-rowboat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a3.svg"); +} .twa-speedboat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a4.svg"); +} .twa-horizontal-traffic-light { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a5.svg"); +} .twa-traffic-light { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a5.svg"); +} .twa-vertical-traffic-light { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a6.svg"); +} .twa-construction { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a7.svg"); +} .twa-police-cars-light { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a8.svg"); +} .twa-rotating-light { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a8.svg"); +} .twa-triangular-flag { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a9.svg"); +} .twa-triangular-flag-on-post { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6a9.svg"); +} .twa-door { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6aa.svg"); +} .twa-prohibited { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ab.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ab.svg"); +} .twa-no-entry-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ab.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ab.svg"); +} .twa-smoking { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ac.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ac.svg"); +} .twa-no-smoking { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ad.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ad.svg"); +} .twa-litter-in-bin-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ae.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ae.svg"); +} .twa-put-litter-in-its-place { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ae.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ae.svg"); +} .twa-no-littering { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6af.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6af.svg"); +} .twa-do-not-litter { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6af.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6af.svg"); +} .twa-potable-water { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b0.svg"); +} .twa-non-potable-water { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b1.svg"); +} .twa-bicycle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b2.svg"); +} .twa-bike { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b2.svg"); +} .twa-no-bicycles { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b3.svg"); +} .twa-bicyclist-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fb.svg"); +} .twa-bicyclist-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fc.svg"); +} .twa-bicyclist-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fd.svg"); +} .twa-bicyclist-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3fe.svg"); +} .twa-bicyclist-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4-1f3ff.svg"); +} .twa-bicyclist { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b4.svg"); +} .twa-mountain-bicyclist-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fb.svg"); +} .twa-mountain-bicyclist-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fc.svg"); +} .twa-mountain-bicyclist-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fd.svg"); +} .twa-mountain-bicyclist-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3fe.svg"); +} .twa-mountain-bicyclist-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5-1f3ff.svg"); +} .twa-mountain-biker { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5.svg"); +} .twa-mountain-bicyclist { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b5.svg"); +} .twa-pedestrian-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fb.svg"); +} .twa-pedestrian-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fc.svg"); +} .twa-pedestrian-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fd.svg"); +} .twa-pedestrian-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3fe.svg"); +} .twa-pedestrian-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6-1f3ff.svg"); +} .twa-pedestrian { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6.svg"); +} .twa-walking { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b6.svg"); +} .twa-no-pedestrians { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b7.svg"); +} .twa-children-crossing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b8.svg"); +} .twa-mens-room { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b9.svg"); +} .twa-mens { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6b9.svg"); +} .twa-womens-room { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ba.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ba.svg"); +} .twa-womens { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ba.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ba.svg"); +} .twa-restroom { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bb.svg"); +} .twa-baby-symbol { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bc.svg"); +} .twa-toilet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bd.svg"); +} .twa-water-closet { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6be.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6be.svg"); +} .twa-wc { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6be.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6be.svg"); +} .twa-shower { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6bf.svg"); +} .twa-bath-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fb.svg"); +} .twa-bath-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fc.svg"); +} .twa-bath-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fd.svg"); +} .twa-bath-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3fe.svg"); +} .twa-bath-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0-1f3ff.svg"); +} .twa-person-taking-bath { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0.svg"); +} .twa-bath { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c0.svg"); +} .twa-bathtub { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c1.svg"); +} .twa-passport-control { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c2.svg"); +} .twa-customs { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c3.svg"); +} .twa-baggage-claim { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c4.svg"); +} .twa-left-luggage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6c5.svg"); +} .twa-couch-and-lamp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cb.svg"); +} .twa-person-in-bed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cc.svg"); +} .twa-shopping-bags { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cd.svg"); +} .twa-bellhop-bell { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ce.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ce.svg"); +} .twa-bed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6cf.svg"); +} .twa-place-of-worship { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6d0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6d0.svg"); +} .twa-octagonal-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6d1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6d1.svg"); +} .twa-shopping-trolley { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6d2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6d2.svg"); +} .twa-hammer-and-wrench { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e0.svg"); +} .twa-shield { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e1.svg"); +} .twa-oil-drum { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e2.svg"); +} .twa-motorway { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e3.svg"); +} .twa-railway-track { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e4.svg"); +} .twa-motor-boat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e5.svg"); +} .twa-small-airplane { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6e9.svg"); +} .twa-airplane-departure { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6eb.svg"); +} .twa-airplane-arrival { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6ec.svg"); +} .twa-satellite { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f0.svg"); +} .twa-passenger-ship { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f3.svg"); +} .twa-scooter { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f4.svg"); +} .twa-motor-scooter { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f5.svg"); +} .twa-canoe { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f6f6.svg"); +} .twa-zipper-mouth-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f910.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f910.svg"); +} .twa-money-mouth-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f911.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f911.svg"); +} .twa-face-with-thermometer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f912.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f912.svg"); +} .twa-nerd-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f913.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f913.svg"); +} .twa-thinking-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f914.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f914.svg"); +} .twa-face-with-head-bandage { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f915.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f915.svg"); +} .twa-robot-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f916.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f916.svg"); +} .twa-hugging-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f917.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f917.svg"); +} .twa-sign-of-the-horns-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fb.svg"); +} .twa-sign-of-the-horns-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fc.svg"); +} .twa-sign-of-the-horns-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fd.svg"); +} .twa-sign-of-the-horns-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3fe.svg"); +} .twa-sign-of-the-horns-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f918-1f3ff.svg"); +} .twa-sign-of-the-horns { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f918.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f918.svg"); +} .twa-call-me-hand-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fb.svg"); +} .twa-call-me-hand-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fc.svg"); +} .twa-call-me-hand-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fd.svg"); +} .twa-call-me-hand-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3fe.svg"); +} .twa-call-me-hand-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f919-1f3ff.svg"); +} .twa-call-me-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f919.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f919.svg"); +} .twa-raised-back-of-hand-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fb.svg"); +} .twa-raised-back-of-hand-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fc.svg"); +} .twa-raised-back-of-hand-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fd.svg"); +} .twa-raised-back-of-hand-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3fe.svg"); +} .twa-raised-back-of-hand-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a-1f3ff.svg"); +} .twa-raised-back-of-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91a.svg"); +} .twa-left-facing-fist-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fb.svg"); +} .twa-left-facing-fist-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fc.svg"); +} .twa-left-facing-fist-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fd.svg"); +} .twa-left-facing-fist-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3fe.svg"); +} .twa-left-facing-fist-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b-1f3ff.svg"); +} .twa-left-facing-fist { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91b.svg"); +} .twa-right-facing-fist-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fb.svg"); +} .twa-right-facing-fist-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fc.svg"); +} .twa-right-facing-fist-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fd.svg"); +} .twa-right-facing-fist-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3fe.svg"); +} .twa-right-facing-fist-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c-1f3ff.svg"); +} .twa-right-facing-fist { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91c.svg"); +} .twa-handshake-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fb.svg"); +} .twa-handshake-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fc.svg"); +} .twa-handshake-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fd.svg"); +} .twa-handshake-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3fe.svg"); +} .twa-handshake-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d-1f3ff.svg"); +} .twa-handshake { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91d.svg"); +} .twa-hand-with-index-and-middle-fingers-crossed-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fb.svg"); +} .twa-hand-with-index-and-middle-fingers-crossed-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fc.svg"); +} .twa-hand-with-index-and-middle-fingers-crossed-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fd.svg"); +} .twa-hand-with-index-and-middle-fingers-crossed-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3fe.svg"); +} .twa-hand-with-index-and-middle-fingers-crossed-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e-1f3ff.svg"); +} .twa-hand-with-index-and-middle-fingers-crossed { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f91e.svg"); +} .twa-face-with-cowboy-hat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f920.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f920.svg"); +} .twa-clown-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f921.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f921.svg"); +} .twa-nauseated-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f922.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f922.svg"); +} .twa-rolling-on-the-floor-laughing { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f923.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f923.svg"); +} .twa-drooling-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f924.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f924.svg"); +} .twa-lying-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f925.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f925.svg"); +} .twa-face-palm-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fb.svg"); +} .twa-face-palm-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fc.svg"); +} .twa-face-palm-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fd.svg"); +} .twa-face-palm-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3fe.svg"); +} .twa-face-palm-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f926-1f3ff.svg"); +} .twa-face-palm { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f926.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f926.svg"); +} .twa-sneezing-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f927.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f927.svg"); +} .twa-pregnant-woman-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fb.svg"); +} .twa-pregnant-woman-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fc.svg"); +} .twa-pregnant-woman-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fd.svg"); +} .twa-pregnant-woman-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3fe.svg"); +} .twa-pregnant-woman-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f930-1f3ff.svg"); +} .twa-pregnant-woman { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f930.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f930.svg"); +} .twa-selfie-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fb.svg"); +} .twa-selfie-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fc.svg"); +} .twa-selfie-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fd.svg"); +} .twa-selfie-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3fe.svg"); +} .twa-selfie-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f933-1f3ff.svg"); +} .twa-selfie { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f933.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f933.svg"); +} .twa-prince-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fb.svg"); +} .twa-prince-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fc.svg"); +} .twa-prince-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fd.svg"); +} .twa-prince-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3fe.svg"); +} .twa-prince-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f934-1f3ff.svg"); +} .twa-prince { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f934.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f934.svg"); +} .twa-man-in-tuxedo-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fb.svg"); +} .twa-man-in-tuxedo-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fc.svg"); +} .twa-man-in-tuxedo-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fd.svg"); +} .twa-man-in-tuxedo-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3fe.svg"); +} .twa-man-in-tuxedo-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f935-1f3ff.svg"); +} .twa-man-in-tuxedo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f935.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f935.svg"); +} .twa-mother-christmas-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fb.svg"); +} .twa-mother-christmas-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fc.svg"); +} .twa-mother-christmas-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fd.svg"); +} .twa-mother-christmas-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3fe.svg"); +} .twa-mother-christmas-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f936-1f3ff.svg"); +} .twa-mother-christmas { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f936.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f936.svg"); +} .twa-shrug-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fb.svg"); +} .twa-shrug-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fc.svg"); +} .twa-shrug-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fd.svg"); +} .twa-shrug-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3fe.svg"); +} .twa-shrug-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f937-1f3ff.svg"); +} .twa-shrug { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f937.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f937.svg"); +} .twa-person-doing-cartwheel-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fb.svg"); +} .twa-person-doing-cartwheel-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fc.svg"); +} .twa-person-doing-cartwheel-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fd.svg"); +} .twa-person-doing-cartwheel-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3fe.svg"); +} .twa-person-doing-cartwheel-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f938-1f3ff.svg"); +} .twa-person-doing-cartwheel { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f938.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f938.svg"); +} .twa-juggling-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fb.svg"); +} .twa-juggling-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fc.svg"); +} .twa-juggling-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fd.svg"); +} .twa-juggling-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3fe.svg"); +} .twa-juggling-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f939-1f3ff.svg"); +} .twa-juggling { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f939.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f939.svg"); +} .twa-fencer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93a.svg"); +} .twa-wrestlers-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fb.svg"); +} .twa-wrestlers-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fc.svg"); +} .twa-wrestlers-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fd.svg"); +} .twa-wrestlers-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3fe.svg"); +} .twa-wrestlers-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c-1f3ff.svg"); +} .twa-wrestlers { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93c.svg"); +} .twa-water-polo-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fb.svg"); +} .twa-water-polo-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fc.svg"); +} .twa-water-polo-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fd.svg"); +} .twa-water-polo-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3fe.svg"); +} .twa-water-polo-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d-1f3ff.svg"); +} .twa-water-polo { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93d.svg"); +} .twa-handball-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fb.svg"); +} .twa-handball-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fc.svg"); +} .twa-handball-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fd.svg"); +} .twa-handball-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3fe.svg"); +} .twa-handball-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e-1f3ff.svg"); +} .twa-handball { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f93e.svg"); +} .twa-wilted-flower { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f940.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f940.svg"); +} .twa-drum-with-drumsticks { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f941.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f941.svg"); +} .twa-clinking-glasses { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f942.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f942.svg"); +} .twa-tumbler-glass { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f943.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f943.svg"); +} .twa-spoon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f944.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f944.svg"); +} .twa-goal-net { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f945.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f945.svg"); +} .twa-first-place-medal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f947.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f947.svg"); +} .twa-second-place-medal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f948.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f948.svg"); +} .twa-third-place-medal { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f949.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f949.svg"); +} .twa-boxing-glove { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f94a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f94a.svg"); +} .twa-martial-arts-uniform { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f94b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f94b.svg"); +} .twa-croissant { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f950.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f950.svg"); +} .twa-avocado { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f951.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f951.svg"); +} .twa-cucumber { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f952.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f952.svg"); +} .twa-bacon { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f953.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f953.svg"); +} .twa-potato { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f954.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f954.svg"); +} .twa-carrot { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f955.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f955.svg"); +} .twa-baguette-bread { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f956.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f956.svg"); +} .twa-green-salad { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f957.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f957.svg"); +} .twa-shallow-pan-of-food { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f958.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f958.svg"); +} .twa-stuffed-flatbread { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f959.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f959.svg"); +} .twa-egg { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f95a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f95a.svg"); +} .twa-glass-of-milk { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f95b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f95b.svg"); +} .twa-peanuts { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f95c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f95c.svg"); +} .twa-kiwifruit { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f95d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f95d.svg"); +} .twa-pancakes { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f95e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f95e.svg"); +} .twa-crab { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f980.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f980.svg"); +} .twa-lion-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f981.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f981.svg"); +} .twa-scorpion { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f982.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f982.svg"); +} .twa-turkey { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f983.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f983.svg"); +} .twa-unicorn-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f984.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f984.svg"); +} .twa-eagle { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f985.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f985.svg"); +} .twa-duck { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f986.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f986.svg"); +} .twa-bat { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f987.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f987.svg"); +} .twa-shark { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f988.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f988.svg"); +} .twa-owl { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f989.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f989.svg"); +} .twa-fox-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f98a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f98a.svg"); +} .twa-butterfly { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f98b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f98b.svg"); +} .twa-deer { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f98c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f98c.svg"); +} .twa-gorilla { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f98d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f98d.svg"); +} .twa-lizard { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f98e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f98e.svg"); +} .twa-rhinoceros { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f98f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f98f.svg"); +} .twa-shrimp { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f990.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f990.svg"); +} .twa-squid { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f991.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f991.svg"); +} .twa-cheese-wedge { - background-image: url("https://twemoji.maxcdn.com/2/svg/1f9c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/1f9c0.svg"); +} .twa-double-exclamation-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/203c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/203c.svg"); +} .twa-bangbang { - background-image: url("https://twemoji.maxcdn.com/2/svg/203c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/203c.svg"); +} .twa-exclamation-question-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2049.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2049.svg"); +} .twa-interrobang { - background-image: url("https://twemoji.maxcdn.com/2/svg/2049.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2049.svg"); +} .twa-trade-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2122.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2122.svg"); +} .twa-tm { - background-image: url("https://twemoji.maxcdn.com/2/svg/2122.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2122.svg"); +} .twa-information-source { - background-image: url("https://twemoji.maxcdn.com/2/svg/2139.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2139.svg"); +} .twa-left-right-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2194.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2194.svg"); +} .twa-up-down-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2195.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2195.svg"); +} .twa-arrow-up-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/2195.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2195.svg"); +} .twa-up-left-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2196.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2196.svg"); +} .twa-arrow-upper-left { - background-image: url("https://twemoji.maxcdn.com/2/svg/2196.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2196.svg"); +} .twa-up-right-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2197.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2197.svg"); +} .twa-arrow-upper-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/2197.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2197.svg"); +} .twa-down-right-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2198.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2198.svg"); +} .twa-arrow-lower-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/2198.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2198.svg"); +} .twa-down-left-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2199.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2199.svg"); +} .twa-arrow-lower-left { - background-image: url("https://twemoji.maxcdn.com/2/svg/2199.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2199.svg"); +} .twa-right-arrow-curving-left { - background-image: url("https://twemoji.maxcdn.com/2/svg/21a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/21a9.svg"); +} .twa-leftwards-arrow-with-hook { - background-image: url("https://twemoji.maxcdn.com/2/svg/21a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/21a9.svg"); +} .twa-left-arrow-curving-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/21aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/21aa.svg"); +} .twa-arrow-right-hook { - background-image: url("https://twemoji.maxcdn.com/2/svg/21aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/21aa.svg"); +} .twa-hash { - background-image: url("https://twemoji.maxcdn.com/2/svg/23-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23-20e3.svg"); +} .twa-watch { - background-image: url("https://twemoji.maxcdn.com/2/svg/231a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/231a.svg"); +} .twa-hourglass { - background-image: url("https://twemoji.maxcdn.com/2/svg/231b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/231b.svg"); +} .twa-keyboard { - background-image: url("https://twemoji.maxcdn.com/2/svg/2328.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2328.svg"); +} .twa-eject-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23cf.svg"); +} .twa-fast-forword-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23e9.svg"); +} .twa-fast-forward { - background-image: url("https://twemoji.maxcdn.com/2/svg/23e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23e9.svg"); +} .twa-fast-reverse-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ea.svg"); +} .twa-rewind { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ea.svg"); +} .twa-fast-up-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23eb.svg"); +} .twa-arrow-double-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/23eb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23eb.svg"); +} .twa-fast-down-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ec.svg"); +} .twa-arrow-double-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ec.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ec.svg"); +} .twa-next-track-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ed.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ed.svg"); +} .twa-last-track-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ee.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ee.svg"); +} .twa-play-or-pause-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23ef.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23ef.svg"); +} .twa-alarm-clock { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f0.svg"); +} .twa-stopwatch { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f1.svg"); +} .twa-timer-clock { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f2.svg"); +} .twa-hourglass-with-flowing-sand { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f3.svg"); +} .twa-hourglass-flowing-sand { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f3.svg"); +} .twa-pause-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f8.svg"); +} .twa-stop-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23f9.svg"); +} .twa-record-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/23fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/23fa.svg"); +} .twa-circled-letter-m { - background-image: url("https://twemoji.maxcdn.com/2/svg/24c2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/24c2.svg"); +} .twa-m { - background-image: url("https://twemoji.maxcdn.com/2/svg/24c2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/24c2.svg"); +} .twa-black-small-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/25aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25aa.svg"); +} .twa-white-small-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/25ab.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25ab.svg"); +} .twa-play-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/25b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25b6.svg"); +} .twa-arrow-forward { - background-image: url("https://twemoji.maxcdn.com/2/svg/25b6.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25b6.svg"); +} .twa-reverse-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/25c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25c0.svg"); +} .twa-arrow-backward { - background-image: url("https://twemoji.maxcdn.com/2/svg/25c0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25c0.svg"); +} .twa-white-medium-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/25fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25fb.svg"); +} .twa-black-medium-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/25fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25fc.svg"); +} .twa-white-medium-small-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/25fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25fd.svg"); +} .twa-black-medium-small-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/25fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/25fe.svg"); +} .twa-sun { - background-image: url("https://twemoji.maxcdn.com/2/svg/2600.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2600.svg"); +} .twa-sunny { - background-image: url("https://twemoji.maxcdn.com/2/svg/2600.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2600.svg"); +} .twa-cloud { - background-image: url("https://twemoji.maxcdn.com/2/svg/2601.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2601.svg"); +} .twa-umbrella { - background-image: url("https://twemoji.maxcdn.com/2/svg/2602.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2602.svg"); +} .twa-snowman { - background-image: url("https://twemoji.maxcdn.com/2/svg/2603.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2603.svg"); +} .twa-comet { - background-image: url("https://twemoji.maxcdn.com/2/svg/2604.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2604.svg"); +} .twa-telephone { - background-image: url("https://twemoji.maxcdn.com/2/svg/260e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/260e.svg"); +} .twa-phone { - background-image: url("https://twemoji.maxcdn.com/2/svg/260e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/260e.svg"); +} .twa-ballot-box-with-check { - background-image: url("https://twemoji.maxcdn.com/2/svg/2611.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2611.svg"); +} .twa-umbrella-with-rain-drops { - background-image: url("https://twemoji.maxcdn.com/2/svg/2614.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2614.svg"); +} .twa-hot-beverage { - background-image: url("https://twemoji.maxcdn.com/2/svg/2615.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2615.svg"); +} .twa-coffee { - background-image: url("https://twemoji.maxcdn.com/2/svg/2615.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2615.svg"); +} .twa-shamrock { - background-image: url("https://twemoji.maxcdn.com/2/svg/2618.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2618.svg"); +} .twa-white-up-pointing-index-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fb.svg"); +} .twa-white-up-pointing-index-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fc.svg"); +} .twa-white-up-pointing-index-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fd.svg"); +} .twa-white-up-pointing-index-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3fe.svg"); +} .twa-white-up-pointing-index-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d-1f3ff.svg"); +} .twa-index-pointing-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d.svg"); +} .twa-point-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/261d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/261d.svg"); +} .twa-skull-and-crossbones { - background-image: url("https://twemoji.maxcdn.com/2/svg/2620.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2620.svg"); +} .twa-radioactive { - background-image: url("https://twemoji.maxcdn.com/2/svg/2622.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2622.svg"); +} .twa-biohazard { - background-image: url("https://twemoji.maxcdn.com/2/svg/2623.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2623.svg"); +} .twa-orthodox-cross { - background-image: url("https://twemoji.maxcdn.com/2/svg/2626.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2626.svg"); +} .twa-star-and-crescent { - background-image: url("https://twemoji.maxcdn.com/2/svg/262a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/262a.svg"); +} .twa-peace-symbol { - background-image: url("https://twemoji.maxcdn.com/2/svg/262e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/262e.svg"); +} .twa-yin-yang { - background-image: url("https://twemoji.maxcdn.com/2/svg/262f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/262f.svg"); +} .twa-wheel-of-dharma { - background-image: url("https://twemoji.maxcdn.com/2/svg/2638.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2638.svg"); +} .twa-frowning-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/2639.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2639.svg"); +} .twa-smiling-face { - background-image: url("https://twemoji.maxcdn.com/2/svg/263a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/263a.svg"); +} .twa-relaxed { - background-image: url("https://twemoji.maxcdn.com/2/svg/263a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/263a.svg"); +} .twa-aries { - background-image: url("https://twemoji.maxcdn.com/2/svg/2648.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2648.svg"); +} .twa-taurus { - background-image: url("https://twemoji.maxcdn.com/2/svg/2649.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2649.svg"); +} .twa-gemini { - background-image: url("https://twemoji.maxcdn.com/2/svg/264a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/264a.svg"); +} .twa-cancer { - background-image: url("https://twemoji.maxcdn.com/2/svg/264b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/264b.svg"); +} .twa-leo { - background-image: url("https://twemoji.maxcdn.com/2/svg/264c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/264c.svg"); +} .twa-virgo { - background-image: url("https://twemoji.maxcdn.com/2/svg/264d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/264d.svg"); +} .twa-libra { - background-image: url("https://twemoji.maxcdn.com/2/svg/264e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/264e.svg"); +} .twa-scorpius { - background-image: url("https://twemoji.maxcdn.com/2/svg/264f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/264f.svg"); +} .twa-sagittarius { - background-image: url("https://twemoji.maxcdn.com/2/svg/2650.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2650.svg"); +} .twa-capricorn { - background-image: url("https://twemoji.maxcdn.com/2/svg/2651.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2651.svg"); +} .twa-aquarius { - background-image: url("https://twemoji.maxcdn.com/2/svg/2652.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2652.svg"); +} .twa-pisces { - background-image: url("https://twemoji.maxcdn.com/2/svg/2653.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2653.svg"); +} .twa-spade-suit { - background-image: url("https://twemoji.maxcdn.com/2/svg/2660.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2660.svg"); +} .twa-spades { - background-image: url("https://twemoji.maxcdn.com/2/svg/2660.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2660.svg"); +} .twa-club-suit { - background-image: url("https://twemoji.maxcdn.com/2/svg/2663.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2663.svg"); +} .twa-clubs { - background-image: url("https://twemoji.maxcdn.com/2/svg/2663.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2663.svg"); +} .twa-heart-suit { - background-image: url("https://twemoji.maxcdn.com/2/svg/2665.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2665.svg"); +} .twa-hearts { - background-image: url("https://twemoji.maxcdn.com/2/svg/2665.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2665.svg"); +} .twa-diamond-suit { - background-image: url("https://twemoji.maxcdn.com/2/svg/2666.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2666.svg"); +} .twa-diamonds { - background-image: url("https://twemoji.maxcdn.com/2/svg/2666.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2666.svg"); +} .twa-hot-springs { - background-image: url("https://twemoji.maxcdn.com/2/svg/2668.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2668.svg"); +} .twa-hotsprings { - background-image: url("https://twemoji.maxcdn.com/2/svg/2668.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2668.svg"); +} .twa-recycling-symbol { - background-image: url("https://twemoji.maxcdn.com/2/svg/267b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/267b.svg"); +} .twa-recycle { - background-image: url("https://twemoji.maxcdn.com/2/svg/267b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/267b.svg"); +} .twa-wheelchair { - background-image: url("https://twemoji.maxcdn.com/2/svg/267f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/267f.svg"); +} .twa-hammer-and-pick { - background-image: url("https://twemoji.maxcdn.com/2/svg/2692.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2692.svg"); +} .twa-anchor { - background-image: url("https://twemoji.maxcdn.com/2/svg/2693.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2693.svg"); +} .twa-crossed-swords { - background-image: url("https://twemoji.maxcdn.com/2/svg/2694.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2694.svg"); +} .twa-balance-scale { - background-image: url("https://twemoji.maxcdn.com/2/svg/2696.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2696.svg"); +} .twa-alembic { - background-image: url("https://twemoji.maxcdn.com/2/svg/2697.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2697.svg"); +} .twa-gear { - background-image: url("https://twemoji.maxcdn.com/2/svg/2699.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2699.svg"); +} .twa-atom-symbol { - background-image: url("https://twemoji.maxcdn.com/2/svg/269b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/269b.svg"); +} .twa-fleur-de-lis { - background-image: url("https://twemoji.maxcdn.com/2/svg/269c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/269c.svg"); +} .twa-warning { - background-image: url("https://twemoji.maxcdn.com/2/svg/26a0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26a0.svg"); +} .twa-high-voltage { - background-image: url("https://twemoji.maxcdn.com/2/svg/26a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26a1.svg"); +} .twa-zap { - background-image: url("https://twemoji.maxcdn.com/2/svg/26a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26a1.svg"); +} .twa-white-circle { - background-image: url("https://twemoji.maxcdn.com/2/svg/26aa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26aa.svg"); +} .twa-black-circle { - background-image: url("https://twemoji.maxcdn.com/2/svg/26ab.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26ab.svg"); +} .twa-coffin { - background-image: url("https://twemoji.maxcdn.com/2/svg/26b0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26b0.svg"); +} .twa-funeral-urn { - background-image: url("https://twemoji.maxcdn.com/2/svg/26b1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26b1.svg"); +} .twa-soccer-ball { - background-image: url("https://twemoji.maxcdn.com/2/svg/26bd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26bd.svg"); +} .twa-soccer { - background-image: url("https://twemoji.maxcdn.com/2/svg/26bd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26bd.svg"); +} .twa-baseball { - background-image: url("https://twemoji.maxcdn.com/2/svg/26be.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26be.svg"); +} .twa-snowman-without-snow { - background-image: url("https://twemoji.maxcdn.com/2/svg/26c4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26c4.svg"); +} .twa-sun-behind-cloud { - background-image: url("https://twemoji.maxcdn.com/2/svg/26c5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26c5.svg"); +} .twa-partly-sunny { - background-image: url("https://twemoji.maxcdn.com/2/svg/26c5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26c5.svg"); +} .twa-cloud-with-lightning-and-rain { - background-image: url("https://twemoji.maxcdn.com/2/svg/26c8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26c8.svg"); +} .twa-ophiuchus { - background-image: url("https://twemoji.maxcdn.com/2/svg/26ce.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26ce.svg"); +} .twa-pick { - background-image: url("https://twemoji.maxcdn.com/2/svg/26cf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26cf.svg"); +} .twa-helmet-with-white-cross { - background-image: url("https://twemoji.maxcdn.com/2/svg/26d1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26d1.svg"); +} .twa-chains { - background-image: url("https://twemoji.maxcdn.com/2/svg/26d3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26d3.svg"); +} .twa-no-entry { - background-image: url("https://twemoji.maxcdn.com/2/svg/26d4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26d4.svg"); +} .twa-shinto-shrine { - background-image: url("https://twemoji.maxcdn.com/2/svg/26e9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26e9.svg"); +} .twa-church { - background-image: url("https://twemoji.maxcdn.com/2/svg/26ea.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26ea.svg"); +} .twa-mountain { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f0.svg"); +} .twa-umbrella-on-ground { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f1.svg"); +} .twa-fountain { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f2.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f2.svg"); +} .twa-flag-in-hole { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f3.svg"); +} .twa-golf { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f3.svg"); +} .twa-ferry { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f4.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f4.svg"); +} .twa-sailboat { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f5.svg"); +} .twa-boat { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f5.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f5.svg"); +} .twa-skier { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f7.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f7.svg"); +} .twa-ice-skate { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f8.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f8.svg"); +} .twa-person-with-ball-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fb.svg"); +} .twa-person-with-ball-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fc.svg"); +} .twa-person-with-ball-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fd.svg"); +} .twa-person-with-ball-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3fe.svg"); +} .twa-person-with-ball-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f9-1f3ff.svg"); +} .twa-person-with-ball { - background-image: url("https://twemoji.maxcdn.com/2/svg/26f9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26f9.svg"); +} .twa-tent { - background-image: url("https://twemoji.maxcdn.com/2/svg/26fa.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26fa.svg"); +} .twa-fuel-pump { - background-image: url("https://twemoji.maxcdn.com/2/svg/26fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26fd.svg"); +} .twa-fuelpump { - background-image: url("https://twemoji.maxcdn.com/2/svg/26fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/26fd.svg"); +} .twa-scissors { - background-image: url("https://twemoji.maxcdn.com/2/svg/2702.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2702.svg"); +} .twa-white-heavy-check-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2705.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2705.svg"); +} .twa-white-check-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2705.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2705.svg"); +} .twa-airplane { - background-image: url("https://twemoji.maxcdn.com/2/svg/2708.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2708.svg"); +} .twa-envelope { - background-image: url("https://twemoji.maxcdn.com/2/svg/2709.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2709.svg"); +} .twa-email { - background-image: url("https://twemoji.maxcdn.com/2/svg/2709.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2709.svg"); +} .twa-raised-fist-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fb.svg"); +} .twa-raised-fist-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fc.svg"); +} .twa-raised-fist-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fd.svg"); +} .twa-raised-fist-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3fe.svg"); +} .twa-raised-fist-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a-1f3ff.svg"); +} .twa-raised-fist { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a.svg"); +} .twa-fist { - background-image: url("https://twemoji.maxcdn.com/2/svg/270a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270a.svg"); +} .twa-raised-hand-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fb.svg"); +} .twa-raised-hand-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fc.svg"); +} .twa-raised-hand-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fd.svg"); +} .twa-raised-hand-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3fe.svg"); +} .twa-raised-hand-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b-1f3ff.svg"); +} .twa-raised-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b.svg"); +} .twa-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/270b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270b.svg"); +} .twa-victory-hand-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fb.svg"); +} .twa-victory-hand-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fc.svg"); +} .twa-victory-hand-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fd.svg"); +} .twa-victory-hand-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3fe.svg"); +} .twa-victory-hand-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c-1f3ff.svg"); +} .twa-victory-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c.svg"); +} .twa-v { - background-image: url("https://twemoji.maxcdn.com/2/svg/270c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270c.svg"); +} .twa-writing-hand-type-1-2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fb.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fb.svg"); +} .twa-writing-hand-type-3 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fc.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fc.svg"); +} .twa-writing-hand-type-4 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fd.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fd.svg"); +} .twa-writing-hand-type-5 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fe.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3fe.svg"); +} .twa-writing-hand-type-6 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3ff.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270d-1f3ff.svg"); +} .twa-writing-hand { - background-image: url("https://twemoji.maxcdn.com/2/svg/270d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270d.svg"); +} .twa-pencil { - background-image: url("https://twemoji.maxcdn.com/2/svg/270f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270f.svg"); +} .twa-pencil2 { - background-image: url("https://twemoji.maxcdn.com/2/svg/270f.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/270f.svg"); +} .twa-black-nib { - background-image: url("https://twemoji.maxcdn.com/2/svg/2712.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2712.svg"); +} .twa-heavy-check-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2714.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2714.svg"); +} .twa-heavy-multiplication-x { - background-image: url("https://twemoji.maxcdn.com/2/svg/2716.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2716.svg"); +} .twa-latin-cross { - background-image: url("https://twemoji.maxcdn.com/2/svg/271d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/271d.svg"); +} .twa-star-of-david { - background-image: url("https://twemoji.maxcdn.com/2/svg/2721.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2721.svg"); +} .twa-sparkles { - background-image: url("https://twemoji.maxcdn.com/2/svg/2728.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2728.svg"); +} .twa-eight-spoked-asterisk { - background-image: url("https://twemoji.maxcdn.com/2/svg/2733.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2733.svg"); +} .twa-eight-pointed-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/2734.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2734.svg"); +} .twa-eight-pointed-black-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/2734.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2734.svg"); +} .twa-snowflake { - background-image: url("https://twemoji.maxcdn.com/2/svg/2744.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2744.svg"); +} .twa-sparkle { - background-image: url("https://twemoji.maxcdn.com/2/svg/2747.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2747.svg"); +} .twa-cross-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/274c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/274c.svg"); +} .twa-x { - background-image: url("https://twemoji.maxcdn.com/2/svg/274c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/274c.svg"); +} .twa-cross-mark-button { - background-image: url("https://twemoji.maxcdn.com/2/svg/274e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/274e.svg"); +} .twa-negative-squared-cross-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/274e.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/274e.svg"); +} .twa-question-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2753.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2753.svg"); +} .twa-question { - background-image: url("https://twemoji.maxcdn.com/2/svg/2753.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2753.svg"); +} .twa-white-question-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2754.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2754.svg"); +} .twa-grey-question { - background-image: url("https://twemoji.maxcdn.com/2/svg/2754.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2754.svg"); +} .twa-white-exclamation-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2755.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2755.svg"); +} .twa-grey-exclamation { - background-image: url("https://twemoji.maxcdn.com/2/svg/2755.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2755.svg"); +} .twa-exclamation-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/2757.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2757.svg"); +} .twa-exclamation { - background-image: url("https://twemoji.maxcdn.com/2/svg/2757.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2757.svg"); +} .twa-heavy-heart-exclamation-mark-ornament { - background-image: url("https://twemoji.maxcdn.com/2/svg/2763.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2763.svg"); +} .twa-red-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/2764.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2764.svg"); +} .twa-heart { - background-image: url("https://twemoji.maxcdn.com/2/svg/2764.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2764.svg"); +} .twa-heavy-plus-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/2795.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2795.svg"); +} .twa-heavy-minus-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/2796.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2796.svg"); +} .twa-heavy-division-sign { - background-image: url("https://twemoji.maxcdn.com/2/svg/2797.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2797.svg"); +} .twa-right-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/27a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/27a1.svg"); +} .twa-arrow-right { - background-image: url("https://twemoji.maxcdn.com/2/svg/27a1.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/27a1.svg"); +} .twa-curly-loop { - background-image: url("https://twemoji.maxcdn.com/2/svg/27b0.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/27b0.svg"); +} .twa-double-curly-loop { - background-image: url("https://twemoji.maxcdn.com/2/svg/27bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/27bf.svg"); +} .twa-loop { - background-image: url("https://twemoji.maxcdn.com/2/svg/27bf.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/27bf.svg"); +} .twa-right-arrow-curving-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/2934.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2934.svg"); +} .twa-arrow-heading-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/2934.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2934.svg"); +} .twa-right-arrow-curving-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/2935.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2935.svg"); +} .twa-arrow-heading-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/2935.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2935.svg"); +} .twa-asterisk { - background-image: url("https://twemoji.maxcdn.com/2/svg/2a-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2a-20e3.svg"); +} .twa-left-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b05.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b05.svg"); +} .twa-arrow-left { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b05.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b05.svg"); +} .twa-up-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b06.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b06.svg"); +} .twa-arrow-up { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b06.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b06.svg"); +} .twa-down-arrow { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b07.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b07.svg"); +} .twa-arrow-down { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b07.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b07.svg"); +} .twa-black-large-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b1b.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b1b.svg"); +} .twa-white-large-square { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b1c.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b1c.svg"); +} .twa-white-medium-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b50.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b50.svg"); +} .twa-star { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b50.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b50.svg"); +} .twa-heavy-large-circle { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b55.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b55.svg"); +} .twa-o { - background-image: url("https://twemoji.maxcdn.com/2/svg/2b55.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/2b55.svg"); +} .twa-zero { - background-image: url("https://twemoji.maxcdn.com/2/svg/30-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/30-20e3.svg"); +} .twa-wavy-dash { - background-image: url("https://twemoji.maxcdn.com/2/svg/3030.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/3030.svg"); +} .twa-part-alternation-mark { - background-image: url("https://twemoji.maxcdn.com/2/svg/303d.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/303d.svg"); +} .twa-one { - background-image: url("https://twemoji.maxcdn.com/2/svg/31-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/31-20e3.svg"); +} .twa-two { - background-image: url("https://twemoji.maxcdn.com/2/svg/32-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/32-20e3.svg"); +} .twa-circled-congratulate-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/3297.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/3297.svg"); +} .twa-congratulations { - background-image: url("https://twemoji.maxcdn.com/2/svg/3297.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/3297.svg"); +} .twa-circled-secret-ideograph { - background-image: url("https://twemoji.maxcdn.com/2/svg/3299.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/3299.svg"); +} .twa-secret { - background-image: url("https://twemoji.maxcdn.com/2/svg/3299.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/3299.svg"); +} .twa-three { - background-image: url("https://twemoji.maxcdn.com/2/svg/33-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/33-20e3.svg"); +} .twa-four { - background-image: url("https://twemoji.maxcdn.com/2/svg/34-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/34-20e3.svg"); +} .twa-five { - background-image: url("https://twemoji.maxcdn.com/2/svg/35-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/35-20e3.svg"); +} .twa-six { - background-image: url("https://twemoji.maxcdn.com/2/svg/36-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/36-20e3.svg"); +} .twa-seven { - background-image: url("https://twemoji.maxcdn.com/2/svg/37-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/37-20e3.svg"); +} .twa-eight { - background-image: url("https://twemoji.maxcdn.com/2/svg/38-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/38-20e3.svg"); +} .twa-nine { - background-image: url("https://twemoji.maxcdn.com/2/svg/39-20e3.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/39-20e3.svg"); +} .twa-copyright { - background-image: url("https://twemoji.maxcdn.com/2/svg/a9.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/a9.svg"); +} .twa-registered { - background-image: url("https://twemoji.maxcdn.com/2/svg/ae.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/ae.svg"); +} .twa-shibuya { - background-image: url("https://twemoji.maxcdn.com/2/svg/e50a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/e50a.svg"); +} .twa-shibuya-109 { - background-image: url("https://twemoji.maxcdn.com/2/svg/e50a.svg"); } + background-image: url("https://twemoji.maxcdn.com/2/svg/e50a.svg"); +} diff --git a/app/css/userdata.css b/app/css/userdata.css index 99219106..c2929569 100644 --- a/app/css/userdata.css +++ b/app/css/userdata.css @@ -1,64 +1,69 @@ /*アイコンをクリックした時とかにでてくるユーザーデータ*/ #his-data { background-repeat: no-repeat; - background-image: url('../../loading.svg'); + background-image: url("../../loading.svg"); overflow-y: hidden; } -#his-name{ - font-size:1.5rem; +#his-name { + font-size: 1.5rem; } #his-prof { float: left; width: 100px; - margin-right:5px; + margin-right: 5px; } .his-float { float: left; overflow-y: scroll; padding: 5px; } -#his-float-data{ +#his-float-data { width: 400px; height: 100%; } -#his-float-timeline{ +#his-float-timeline { width: calc(100% - 400px); - height:100%; - overflow-y:hidden; + height: 100%; + overflow-y: hidden; } -#his-basic-prof{ - min-height:130px; +#his-basic-prof { + min-height: 130px; } -#his-matching-list{ +#his-matching-list { overflow-y: scroll; overflow-x: hidden; } -#his-field{ +#his-field { vertical-align: baseline; - text-align:center; - padding:0; + text-align: center; + padding: 0; } -#his-field tr{ - height:1.5rem; +#his-field tr { + height: 1.5rem; } -.his-field-title{ - height:1.5rem; padding:0; background-color:#757575; text-align:center; - padding:5px; - margin-bottom:1px; - width:30%; +.his-field-title { + height: 1.5rem; + padding: 0; + background-color: #757575; + text-align: center; + padding: 5px; + margin-bottom: 1px; + width: 30%; } -.his-field-content{ - height:1.5rem; padding:0; padding-left:5px; +.his-field-content { + height: 1.5rem; + padding: 0; + padding-left: 5px; } -#his-data a span.ellipsis:after{ - content:"..."; +#his-data a span.ellipsis:after { + content: "..."; } -#his-data a:not(.mention) span:last-of-type{ - display:none; +#his-data a:not(.mention) span:last-of-type { + display: none; } #his-data-show { margin: 20px; - background-color:var(--his-data); + background-color: var(--his-data); width: calc(100% - 20px); height: calc(100% - 20px); margin-bottom: 0; @@ -67,34 +72,37 @@ .tab-content { overflow-y: scroll; overflow-x: hidden; - height: calc(100% - 240px) + height: calc(100% - 240px); } .my-data-width { width: 10%; } -.active-back{ +.active-back { background-color: var(--active); } -#his-name .emojione,#his-name .emoji-img{ +#his-name .emojione, +#his-name .emoji-img { width: 20px; } -#his-plus-action .btn{ - width:170px +#his-plus-action .btn { + width: 170px; } -.custom-tabs{ - display:flex; +.custom-tabs { + display: flex; } -.custom-tabs .custom-tab a{ +.custom-tabs .custom-tab a { padding: 8px 12px; } -#his-des .mention{ +#his-des .mention { color: #039be5; cursor: pointer; } -#his-float-blocked{ - display:flex; justify-content: center; align-items:center; - font-size:2rem; +#his-float-blocked { + display: flex; + justify-content: center; + align-items: center; + font-size: 2rem; width: 90%; height: 100%; position: absolute; -} \ No newline at end of file +} diff --git a/app/dist/builder-effective-config.yaml b/app/dist/builder-effective-config.yaml new file mode 100644 index 00000000..8dcc43f1 --- /dev/null +++ b/app/dist/builder-effective-config.yaml @@ -0,0 +1,4 @@ +directories: + output: dist + buildResources: build +electronVersion: 1.4.13 diff --git a/app/img/thinkingdesk.png b/app/img/thinkingdesk.png new file mode 100644 index 00000000..909f10bb Binary files /dev/null and b/app/img/thinkingdesk.png differ diff --git a/app/js/common/about.js b/app/js/common/about.js index e74c452a..77d76a8a 100644 --- a/app/js/common/about.js +++ b/app/js/common/about.js @@ -1,6 +1,6 @@ //このソフトについて function about() { - var electron = require("electron"); - var ipc = electron.ipcRenderer; - ipc.send('about', 'go'); + var electron = require("electron"); + var ipc = electron.ipcRenderer; + ipc.send('about', 'go'); } \ No newline at end of file diff --git a/app/js/common/keyshortcut.js b/app/js/common/keyshortcut.js index cf505ab1..963091d4 100644 --- a/app/js/common/keyshortcut.js +++ b/app/js/common/keyshortcut.js @@ -1,16 +1,16 @@ -$(function($) { +$(function ($) { //キーボードショートカット - $(window).keydown(function(e) { + $(window).keydown(function (e) { var hasFocus = $('input').is(':focus'); var hasFocus2 = $('textarea').is(':focus'); - if(document.getElementById("webview")){ - if($("#webviewsel:checked").val()){ - var wv=false; - }else{ - var wv=true; + if (document.getElementById("webview")) { + if ($("#webviewsel:checked").val()) { + var wv = false; + } else { + var wv = true; } - }else{ - var wv=true; + } else { + var wv = true; } //Ctrl+Shift+Enter:Lgen if (event.metaKey || event.ctrlKey && wv) { @@ -20,7 +20,7 @@ $(function($) { return false; } } - + } //Ctrl+Enter:投稿 if (event.metaKey || event.ctrlKey && wv) { @@ -36,7 +36,7 @@ $(function($) { return false; } } - + //Shift+Space:Markdownゼロ幅スペース if (event.shiftKey) { if (e.keyCode === 32) { @@ -57,13 +57,13 @@ $(function($) { //Ctrl+R:ランキング if ((event.metaKey || event.ctrlKey) && wv) { if (e.keyCode === 82) { - if(localStorage.getItem("kirishima")){ + if (localStorage.getItem("kirishima")) { window.open("https://astarte.thedesk.top"); } } } //Ctrl+Sift+C:全消し - if (((event.metaKey || event.ctrlKey) && event.shiftKey )&& wv) { + if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) { if (e.keyCode === 67) { clear(); return false; @@ -78,8 +78,8 @@ $(function($) { } } //input/textareaにフォーカスなし時 - if ((!hasFocus && !hasFocus2 ) && wv) { - if(!wv){ + if ((!hasFocus && !hasFocus2) && wv) { + if (!wv) { return true; } //Ctrl+V:いつもの @@ -143,11 +143,11 @@ $(function($) { } //数字:TL if (event.metaKey || event.ctrlKey) { - if (e.keyCode >= 49 && e.keyCode <= 57) { - var kz=e.keyCode-49; - goColumn(kz); - return false; - } + if (e.keyCode >= 49 && e.keyCode <= 57) { + var kz = e.keyCode - 49; + goColumn(kz); + return false; + } } } //textareaフォーカス時 @@ -176,15 +176,15 @@ $(function($) { //C+S+(No):ワンクリ if ((event.metaKey || event.ctrlKey) && event.shiftKey) { if (e.keyCode >= 49 && e.keyCode <= 51) { - var no=e.keyCode-48; - if(localStorage.getItem("oks-"+no)){$("#textarea").val($("#textarea").val()+localStorage.getItem("oks-"+no))} + var no = e.keyCode - 48; + if (localStorage.getItem("oks-" + no)) { $("#textarea").val($("#textarea").val() + localStorage.getItem("oks-" + no)) } return false; } } } } //イメージビューワー切り替え - if (e.keyCode === 37 &&wv) { + if (e.keyCode === 37 && wv) { if ($("#imagemodal").hasClass("open")) { imgCont('prev'); return false; @@ -198,7 +198,7 @@ $(function($) { } }); //クリアボタン - $("#clear").click(function() { + $("#clear").click(function () { clear(); }); }); \ No newline at end of file diff --git a/app/js/common/materialize.js b/app/js/common/materialize.js index 4b1f61c0..7d478540 100644 --- a/app/js/common/materialize.js +++ b/app/js/common/materialize.js @@ -42,20 +42,20 @@ if (typeof jQuery === 'undefined') { $.easing['jswing'] = $.easing['swing']; var pow = Math.pow, - sqrt = Math.sqrt, - sin = Math.sin, - cos = Math.cos, - PI = Math.PI, - c1 = 1.70158, - c2 = c1 * 1.525, - c3 = c1 + 1, - c4 = 2 * PI / 3, - c5 = 2 * PI / 4.5; + sqrt = Math.sqrt, + sin = Math.sin, + cos = Math.cos, + PI = Math.PI, + c1 = 1.70158, + c2 = c1 * 1.525, + c3 = c1 + 1, + c4 = 2 * PI / 3, + c5 = 2 * PI / 4.5; // x is the fraction of animation progress, in the range 0..1 function bounceOut(x) { var n1 = 7.5625, - d1 = 2.75; + d1 = 2.75; if (x < 1 / d1) { return n1 * x * x; } else if (x < 2 / d1) { @@ -173,95 +173,97 @@ jQuery.extend(jQuery.easing, { jQuery.Velocity ? console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.") : (!function (e) { function t(e) { var t = e.length, - a = r.type(e);return "function" === a || r.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === a || 0 === t || "number" == typeof t && t > 0 && t - 1 in e; - }if (!e.jQuery) { + a = r.type(e); return "function" === a || r.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === a || 0 === t || "number" == typeof t && t > 0 && t - 1 in e; + } if (!e.jQuery) { var r = function (e, t) { return new r.fn.init(e, t); - };r.isWindow = function (e) { + }; r.isWindow = function (e) { return null != e && e == e.window; }, r.type = function (e) { return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[i.call(e)] || "object" : typeof e; }, r.isArray = Array.isArray || function (e) { return "array" === r.type(e); }, r.isPlainObject = function (e) { - var t;if (!e || "object" !== r.type(e) || e.nodeType || r.isWindow(e)) return !1;try { + var t; if (!e || "object" !== r.type(e) || e.nodeType || r.isWindow(e)) return !1; try { if (e.constructor && !o.call(e, "constructor") && !o.call(e.constructor.prototype, "isPrototypeOf")) return !1; } catch (a) { return !1; - }for (t in e) {}return void 0 === t || o.call(e, t); + } for (t in e) { } return void 0 === t || o.call(e, t); }, r.each = function (e, r, a) { var n, - o = 0, - i = e.length, - s = t(e);if (a) { - if (s) for (; i > o && (n = r.apply(e[o], a), n !== !1); o++) {} else for (o in e) { - if (n = r.apply(e[o], a), n === !1) break; - } - } else if (s) for (; i > o && (n = r.call(e[o], o, e[o]), n !== !1); o++) {} else for (o in e) { - if (n = r.call(e[o], o, e[o]), n === !1) break; - }return e; + o = 0, + i = e.length, + s = t(e); if (a) { + if (s) for (; i > o && (n = r.apply(e[o], a), n !== !1); o++) { } else for (o in e) { + if (n = r.apply(e[o], a), n === !1) break; + } + } else if (s) for (; i > o && (n = r.call(e[o], o, e[o]), n !== !1); o++) { } else for (o in e) { + if (n = r.call(e[o], o, e[o]), n === !1) break; + } return e; }, r.data = function (e, t, n) { if (void 0 === n) { var o = e[r.expando], - i = o && a[o];if (void 0 === t) return i;if (i && t in i) return i[t]; + i = o && a[o]; if (void 0 === t) return i; if (i && t in i) return i[t]; } else if (void 0 !== t) { - var o = e[r.expando] || (e[r.expando] = ++r.uuid);return a[o] = a[o] || {}, a[o][t] = n, n; + var o = e[r.expando] || (e[r.expando] = ++r.uuid); return a[o] = a[o] || {}, a[o][t] = n, n; } }, r.removeData = function (e, t) { var n = e[r.expando], - o = n && a[n];o && r.each(t, function (e, t) { - delete o[t]; - }); + o = n && a[n]; o && r.each(t, function (e, t) { + delete o[t]; + }); }, r.extend = function () { var e, - t, - a, - n, - o, - i, - s = arguments[0] || {}, - l = 1, - u = arguments.length, - c = !1;for ("boolean" == typeof s && (c = s, s = arguments[l] || {}, l++), "object" != typeof s && "function" !== r.type(s) && (s = {}), l === u && (s = this, l--); u > l; l++) { - if (null != (o = arguments[l])) for (n in o) { - e = s[n], a = o[n], s !== a && (c && a && (r.isPlainObject(a) || (t = r.isArray(a))) ? (t ? (t = !1, i = e && r.isArray(e) ? e : []) : i = e && r.isPlainObject(e) ? e : {}, s[n] = r.extend(c, i, a)) : void 0 !== a && (s[n] = a)); - } - }return s; + t, + a, + n, + o, + i, + s = arguments[0] || {}, + l = 1, + u = arguments.length, + c = !1; for ("boolean" == typeof s && (c = s, s = arguments[l] || {}, l++), "object" != typeof s && "function" !== r.type(s) && (s = {}), l === u && (s = this, l--); u > l; l++) { + if (null != (o = arguments[l])) for (n in o) { + e = s[n], a = o[n], s !== a && (c && a && (r.isPlainObject(a) || (t = r.isArray(a))) ? (t ? (t = !1, i = e && r.isArray(e) ? e : []) : i = e && r.isPlainObject(e) ? e : {}, s[n] = r.extend(c, i, a)) : void 0 !== a && (s[n] = a)); + } + } return s; }, r.queue = function (e, a, n) { function o(e, r) { - var a = r || [];return null != e && (t(Object(e)) ? !function (e, t) { + var a = r || []; return null != e && (t(Object(e)) ? !function (e, t) { for (var r = +t.length, a = 0, n = e.length; r > a;) { e[n++] = t[a++]; - }if (r !== r) for (; void 0 !== t[a];) { + } if (r !== r) for (; void 0 !== t[a];) { e[n++] = t[a++]; - }return e.length = n, e; + } return e.length = n, e; }(a, "string" == typeof e ? [e] : e) : [].push.call(a, e)), a; - }if (e) { - a = (a || "fx") + "queue";var i = r.data(e, a);return n ? (!i || r.isArray(n) ? i = r.data(e, a, o(n)) : i.push(n), i) : i || []; + } if (e) { + a = (a || "fx") + "queue"; var i = r.data(e, a); return n ? (!i || r.isArray(n) ? i = r.data(e, a, o(n)) : i.push(n), i) : i || []; } }, r.dequeue = function (e, t) { r.each(e.nodeType ? [e] : e, function (e, a) { - t = t || "fx";var n = r.queue(a, t), - o = n.shift();"inprogress" === o && (o = n.shift()), o && ("fx" === t && n.unshift("inprogress"), o.call(a, function () { - r.dequeue(a, t); - })); + t = t || "fx"; var n = r.queue(a, t), + o = n.shift(); "inprogress" === o && (o = n.shift()), o && ("fx" === t && n.unshift("inprogress"), o.call(a, function () { + r.dequeue(a, t); + })); }); - }, r.fn = r.prototype = { init: function (e) { - if (e.nodeType) return this[0] = e, this;throw new Error("Not a DOM node."); + }, r.fn = r.prototype = { + init: function (e) { + if (e.nodeType) return this[0] = e, this; throw new Error("Not a DOM node."); }, offset: function () { - var t = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { top: 0, left: 0 };return { top: t.top + (e.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), left: t.left + (e.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0) }; + var t = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { top: 0, left: 0 }; return { top: t.top + (e.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), left: t.left + (e.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0) }; }, position: function () { function e() { for (var e = this.offsetParent || document; e && "html" === !e.nodeType.toLowerCase && "static" === e.style.position;) { e = e.offsetParent; - }return e || document; - }var t = this[0], - e = e.apply(t), - a = this.offset(), - n = /^(?:body|html)$/i.test(e.nodeName) ? { top: 0, left: 0 } : r(e).offset();return a.top -= parseFloat(t.style.marginTop) || 0, a.left -= parseFloat(t.style.marginLeft) || 0, e.style && (n.top += parseFloat(e.style.borderTopWidth) || 0, n.left += parseFloat(e.style.borderLeftWidth) || 0), { top: a.top - n.top, left: a.left - n.left }; - } };var a = {};r.expando = "velocity" + new Date().getTime(), r.uuid = 0;for (var n = {}, o = n.hasOwnProperty, i = n.toString, s = "Boolean Number String Function Array Date RegExp Object Error".split(" "), l = 0; l < s.length; l++) { + } return e || document; + } var t = this[0], + e = e.apply(t), + a = this.offset(), + n = /^(?:body|html)$/i.test(e.nodeName) ? { top: 0, left: 0 } : r(e).offset(); return a.top -= parseFloat(t.style.marginTop) || 0, a.left -= parseFloat(t.style.marginLeft) || 0, e.style && (n.top += parseFloat(e.style.borderTopWidth) || 0, n.left += parseFloat(e.style.borderLeftWidth) || 0), { top: a.top - n.top, left: a.left - n.left }; + } + }; var a = {}; r.expando = "velocity" + new Date().getTime(), r.uuid = 0; for (var n = {}, o = n.hasOwnProperty, i = n.toString, s = "Boolean Number String Function Array Date RegExp Object Error".split(" "), l = 0; l < s.length; l++) { n["[object " + s[l] + "]"] = s[l].toLowerCase(); - }r.fn.init.prototype = r.fn, e.Velocity = { Utilities: r }; + } r.fn.init.prototype = r.fn, e.Velocity = { Utilities: r }; } }(window), function (e) { "object" == typeof module && "object" == typeof module.exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : e(); @@ -269,954 +271,1028 @@ jQuery.Velocity ? console.log("Velocity is already loaded. You may be needlessly return function (e, t, r, a) { function n(e) { for (var t = -1, r = e ? e.length : 0, a = []; ++t < r;) { - var n = e[t];n && a.push(n); - }return a; - }function o(e) { + var n = e[t]; n && a.push(n); + } return a; + } function o(e) { return m.isWrapped(e) ? e = [].slice.call(e) : m.isNode(e) && (e = [e]), e; - }function i(e) { - var t = f.data(e, "velocity");return null === t ? a : t; - }function s(e) { + } function i(e) { + var t = f.data(e, "velocity"); return null === t ? a : t; + } function s(e) { return function (t) { return Math.round(t * e) * (1 / e); }; - }function l(e, r, a, n) { + } function l(e, r, a, n) { function o(e, t) { return 1 - 3 * t + 3 * e; - }function i(e, t) { + } function i(e, t) { return 3 * t - 6 * e; - }function s(e) { + } function s(e) { return 3 * e; - }function l(e, t, r) { + } function l(e, t, r) { return ((o(t, r) * e + i(t, r)) * e + s(t)) * e; - }function u(e, t, r) { + } function u(e, t, r) { return 3 * o(t, r) * e * e + 2 * i(t, r) * e + s(t); - }function c(t, r) { + } function c(t, r) { for (var n = 0; m > n; ++n) { - var o = u(r, e, a);if (0 === o) return r;var i = l(r, e, a) - t;r -= i / o; - }return r; - }function p() { + var o = u(r, e, a); if (0 === o) return r; var i = l(r, e, a) - t; r -= i / o; + } return r; + } function p() { for (var t = 0; b > t; ++t) { w[t] = l(t * x, e, a); } - }function f(t, r, n) { + } function f(t, r, n) { var o, - i, - s = 0;do { - i = r + (n - r) / 2, o = l(i, e, a) - t, o > 0 ? n = i : r = i; - } while (Math.abs(o) > h && ++s < v);return i; - }function d(t) { + i, + s = 0; do { + i = r + (n - r) / 2, o = l(i, e, a) - t, o > 0 ? n = i : r = i; + } while (Math.abs(o) > h && ++s < v); return i; + } function d(t) { for (var r = 0, n = 1, o = b - 1; n != o && w[n] <= t; ++n) { r += x; - }--n;var i = (t - w[n]) / (w[n + 1] - w[n]), - s = r + i * x, - l = u(s, e, a);return l >= y ? c(t, s) : 0 == l ? s : f(t, r, r + x); - }function g() { + } --n; var i = (t - w[n]) / (w[n + 1] - w[n]), + s = r + i * x, + l = u(s, e, a); return l >= y ? c(t, s) : 0 == l ? s : f(t, r, r + x); + } function g() { V = !0, (e != r || a != n) && p(); - }var m = 4, - y = .001, - h = 1e-7, - v = 10, - b = 11, - x = 1 / (b - 1), - S = "Float32Array" in t;if (4 !== arguments.length) return !1;for (var P = 0; 4 > P; ++P) { - if ("number" != typeof arguments[P] || isNaN(arguments[P]) || !isFinite(arguments[P])) return !1; - }e = Math.min(e, 1), a = Math.min(a, 1), e = Math.max(e, 0), a = Math.max(a, 0);var w = S ? new Float32Array(b) : new Array(b), + } var m = 4, + y = .001, + h = 1e-7, + v = 10, + b = 11, + x = 1 / (b - 1), + S = "Float32Array" in t; if (4 !== arguments.length) return !1; for (var P = 0; 4 > P; ++P) { + if ("number" != typeof arguments[P] || isNaN(arguments[P]) || !isFinite(arguments[P])) return !1; + } e = Math.min(e, 1), a = Math.min(a, 1), e = Math.max(e, 0), a = Math.max(a, 0); var w = S ? new Float32Array(b) : new Array(b), V = !1, C = function (t) { - return V || g(), e === r && a === n ? t : 0 === t ? 0 : 1 === t ? 1 : l(d(t), r, n); - };C.getControlPoints = function () { - return [{ x: e, y: r }, { x: a, y: n }]; - };var T = "generateBezier(" + [e, r, a, n] + ")";return C.toString = function () { - return T; - }, C; - }function u(e, t) { - var r = e;return m.isString(e) ? b.Easings[e] || (r = !1) : r = m.isArray(e) && 1 === e.length ? s.apply(null, e) : m.isArray(e) && 2 === e.length ? x.apply(null, e.concat([t])) : m.isArray(e) && 4 === e.length ? l.apply(null, e) : !1, r === !1 && (r = b.Easings[b.defaults.easing] ? b.defaults.easing : v), r; - }function c(e) { + return V || g(), e === r && a === n ? t : 0 === t ? 0 : 1 === t ? 1 : l(d(t), r, n); + }; C.getControlPoints = function () { + return [{ x: e, y: r }, { x: a, y: n }]; + }; var T = "generateBezier(" + [e, r, a, n] + ")"; return C.toString = function () { + return T; + }, C; + } function u(e, t) { + var r = e; return m.isString(e) ? b.Easings[e] || (r = !1) : r = m.isArray(e) && 1 === e.length ? s.apply(null, e) : m.isArray(e) && 2 === e.length ? x.apply(null, e.concat([t])) : m.isArray(e) && 4 === e.length ? l.apply(null, e) : !1, r === !1 && (r = b.Easings[b.defaults.easing] ? b.defaults.easing : v), r; + } function c(e) { if (e) { var t = new Date().getTime(), - r = b.State.calls.length;r > 1e4 && (b.State.calls = n(b.State.calls));for (var o = 0; r > o; o++) { - if (b.State.calls[o]) { - var s = b.State.calls[o], + r = b.State.calls.length; r > 1e4 && (b.State.calls = n(b.State.calls)); for (var o = 0; r > o; o++) { + if (b.State.calls[o]) { + var s = b.State.calls[o], l = s[0], u = s[2], d = s[3], g = !!d, - y = null;d || (d = b.State.calls[o][3] = t - 16);for (var h = Math.min((t - d) / u.duration, 1), v = 0, x = l.length; x > v; v++) { - var P = l[v], - V = P.element;if (i(V)) { - var C = !1;if (u.display !== a && null !== u.display && "none" !== u.display) { - if ("flex" === u.display) { - var T = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"];f.each(T, function (e, t) { - S.setPropertyValue(V, "display", t); - }); - }S.setPropertyValue(V, "display", u.display); - }u.visibility !== a && "hidden" !== u.visibility && S.setPropertyValue(V, "visibility", u.visibility);for (var k in P) { - if ("element" !== k) { - var A, - F = P[k], - j = m.isString(F.easing) ? b.Easings[F.easing] : F.easing;if (1 === h) A = F.endValue;else { - var E = F.endValue - F.startValue;if (A = F.startValue + E * j(h, u, E), !g && A === F.currentValue) continue; - }if (F.currentValue = A, "tween" === k) y = A;else { - if (S.Hooks.registered[k]) { - var H = S.Hooks.getRoot(k), - N = i(V).rootPropertyValueCache[H];N && (F.rootPropertyValue = N); - }var L = S.setPropertyValue(V, k, F.currentValue + (0 === parseFloat(A) ? "" : F.unitType), F.rootPropertyValue, F.scrollData);S.Hooks.registered[k] && (i(V).rootPropertyValueCache[H] = S.Normalizations.registered[H] ? S.Normalizations.registered[H]("extract", null, L[1]) : L[1]), "transform" === L[0] && (C = !0); + y = null; d || (d = b.State.calls[o][3] = t - 16); for (var h = Math.min((t - d) / u.duration, 1), v = 0, x = l.length; x > v; v++) { + var P = l[v], + V = P.element; if (i(V)) { + var C = !1; if (u.display !== a && null !== u.display && "none" !== u.display) { + if ("flex" === u.display) { + var T = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"]; f.each(T, function (e, t) { + S.setPropertyValue(V, "display", t); + }); + } S.setPropertyValue(V, "display", u.display); + } u.visibility !== a && "hidden" !== u.visibility && S.setPropertyValue(V, "visibility", u.visibility); for (var k in P) { + if ("element" !== k) { + var A, + F = P[k], + j = m.isString(F.easing) ? b.Easings[F.easing] : F.easing; if (1 === h) A = F.endValue; else { + var E = F.endValue - F.startValue; if (A = F.startValue + E * j(h, u, E), !g && A === F.currentValue) continue; + } if (F.currentValue = A, "tween" === k) y = A; else { + if (S.Hooks.registered[k]) { + var H = S.Hooks.getRoot(k), + N = i(V).rootPropertyValueCache[H]; N && (F.rootPropertyValue = N); + } var L = S.setPropertyValue(V, k, F.currentValue + (0 === parseFloat(A) ? "" : F.unitType), F.rootPropertyValue, F.scrollData); S.Hooks.registered[k] && (i(V).rootPropertyValueCache[H] = S.Normalizations.registered[H] ? S.Normalizations.registered[H]("extract", null, L[1]) : L[1]), "transform" === L[0] && (C = !0); + } + } + } u.mobileHA && i(V).transformCache.translate3d === a && (i(V).transformCache.translate3d = "(0px, 0px, 0px)", C = !0), C && S.flushTransformCache(V); } - } - }u.mobileHA && i(V).transformCache.translate3d === a && (i(V).transformCache.translate3d = "(0px, 0px, 0px)", C = !0), C && S.flushTransformCache(V); - } - }u.display !== a && "none" !== u.display && (b.State.calls[o][2].display = !1), u.visibility !== a && "hidden" !== u.visibility && (b.State.calls[o][2].visibility = !1), u.progress && u.progress.call(s[1], s[1], h, Math.max(0, d + u.duration - t), d, y), 1 === h && p(o); + } u.display !== a && "none" !== u.display && (b.State.calls[o][2].display = !1), u.visibility !== a && "hidden" !== u.visibility && (b.State.calls[o][2].visibility = !1), u.progress && u.progress.call(s[1], s[1], h, Math.max(0, d + u.duration - t), d, y), 1 === h && p(o); + } } - } - }b.State.isTicking && w(c); - }function p(e, t) { - if (!b.State.calls[e]) return !1;for (var r = b.State.calls[e][0], n = b.State.calls[e][1], o = b.State.calls[e][2], s = b.State.calls[e][4], l = !1, u = 0, c = r.length; c > u; u++) { - var p = r[u].element;if (t || o.loop || ("none" === o.display && S.setPropertyValue(p, "display", o.display), "hidden" === o.visibility && S.setPropertyValue(p, "visibility", o.visibility)), o.loop !== !0 && (f.queue(p)[1] === a || !/\.velocityQueueEntryFlag/i.test(f.queue(p)[1])) && i(p)) { - i(p).isAnimating = !1, i(p).rootPropertyValueCache = {};var d = !1;f.each(S.Lists.transforms3D, function (e, t) { + } b.State.isTicking && w(c); + } function p(e, t) { + if (!b.State.calls[e]) return !1; for (var r = b.State.calls[e][0], n = b.State.calls[e][1], o = b.State.calls[e][2], s = b.State.calls[e][4], l = !1, u = 0, c = r.length; c > u; u++) { + var p = r[u].element; if (t || o.loop || ("none" === o.display && S.setPropertyValue(p, "display", o.display), "hidden" === o.visibility && S.setPropertyValue(p, "visibility", o.visibility)), o.loop !== !0 && (f.queue(p)[1] === a || !/\.velocityQueueEntryFlag/i.test(f.queue(p)[1])) && i(p)) { + i(p).isAnimating = !1, i(p).rootPropertyValueCache = {}; var d = !1; f.each(S.Lists.transforms3D, function (e, t) { var r = /^scale/.test(t) ? 1 : 0, - n = i(p).transformCache[t];i(p).transformCache[t] !== a && new RegExp("^\\(" + r + "[^.]").test(n) && (d = !0, delete i(p).transformCache[t]); + n = i(p).transformCache[t]; i(p).transformCache[t] !== a && new RegExp("^\\(" + r + "[^.]").test(n) && (d = !0, delete i(p).transformCache[t]); }), o.mobileHA && (d = !0, delete i(p).transformCache.translate3d), d && S.flushTransformCache(p), S.Values.removeClass(p, "velocity-animating"); - }if (!t && o.complete && !o.loop && u === c - 1) try { + } if (!t && o.complete && !o.loop && u === c - 1) try { o.complete.call(n, n); } catch (g) { setTimeout(function () { throw g; }, 1); - }s && o.loop !== !0 && s(n), i(p) && o.loop === !0 && !t && (f.each(i(p).tweensContainer, function (e, t) { + } s && o.loop !== !0 && s(n), i(p) && o.loop === !0 && !t && (f.each(i(p).tweensContainer, function (e, t) { /^rotate/.test(e) && 360 === parseFloat(t.endValue) && (t.endValue = 0, t.startValue = 360), /^backgroundPosition/.test(e) && 100 === parseFloat(t.endValue) && "%" === t.unitType && (t.endValue = 0, t.startValue = 100); }), b(p, "reverse", { loop: !0, delay: o.delay })), o.queue !== !1 && f.dequeue(p, o.queue); - }b.State.calls[e] = !1;for (var m = 0, y = b.State.calls.length; y > m; m++) { + } b.State.calls[e] = !1; for (var m = 0, y = b.State.calls.length; y > m; m++) { if (b.State.calls[m] !== !1) { - l = !0;break; + l = !0; break; } - }l === !1 && (b.State.isTicking = !1, delete b.State.calls, b.State.calls = []); - }var f, - d = function () { - if (r.documentMode) return r.documentMode;for (var e = 7; e > 4; e--) { - var t = r.createElement("div");if (t.innerHTML = "", t.getElementsByTagName("span").length) return t = null, e; - }return a; - }(), - g = function () { - var e = 0;return t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || function (t) { - var r, - a = new Date().getTime();return r = Math.max(0, 16 - (a - e)), e = a + r, setTimeout(function () { - t(a + r); - }, r); - }; - }(), - m = { isString: function (e) { - return "string" == typeof e; - }, isArray: Array.isArray || function (e) { - return "[object Array]" === Object.prototype.toString.call(e); - }, isFunction: function (e) { - return "[object Function]" === Object.prototype.toString.call(e); - }, isNode: function (e) { - return e && e.nodeType; - }, isNodeList: function (e) { - return "object" == typeof e && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e)) && e.length !== a && (0 === e.length || "object" == typeof e[0] && e[0].nodeType > 0); - }, isWrapped: function (e) { - return e && (e.jquery || t.Zepto && t.Zepto.zepto.isZ(e)); - }, isSVG: function (e) { - return t.SVGElement && e instanceof t.SVGElement; - }, isEmptyObject: function (e) { - for (var t in e) { - return !1; - }return !0; - } }, - y = !1;if (e.fn && e.fn.jquery ? (f = e, y = !0) : f = t.Velocity.Utilities, 8 >= d && !y) throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if (7 >= d) return void (jQuery.fn.velocity = jQuery.fn.animate);var h = 400, + } l === !1 && (b.State.isTicking = !1, delete b.State.calls, b.State.calls = []); + } var f, + d = function () { + if (r.documentMode) return r.documentMode; for (var e = 7; e > 4; e--) { + var t = r.createElement("div"); if (t.innerHTML = "", t.getElementsByTagName("span").length) return t = null, e; + } return a; + }(), + g = function () { + var e = 0; return t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || function (t) { + var r, + a = new Date().getTime(); return r = Math.max(0, 16 - (a - e)), e = a + r, setTimeout(function () { + t(a + r); + }, r); + }; + }(), + m = { + isString: function (e) { + return "string" == typeof e; + }, isArray: Array.isArray || function (e) { + return "[object Array]" === Object.prototype.toString.call(e); + }, isFunction: function (e) { + return "[object Function]" === Object.prototype.toString.call(e); + }, isNode: function (e) { + return e && e.nodeType; + }, isNodeList: function (e) { + return "object" == typeof e && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e)) && e.length !== a && (0 === e.length || "object" == typeof e[0] && e[0].nodeType > 0); + }, isWrapped: function (e) { + return e && (e.jquery || t.Zepto && t.Zepto.zepto.isZ(e)); + }, isSVG: function (e) { + return t.SVGElement && e instanceof t.SVGElement; + }, isEmptyObject: function (e) { + for (var t in e) { + return !1; + } return !0; + } + }, + y = !1; if (e.fn && e.fn.jquery ? (f = e, y = !0) : f = t.Velocity.Utilities, 8 >= d && !y) throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity."); if (7 >= d) return void (jQuery.fn.velocity = jQuery.fn.animate); var h = 400, v = "swing", - b = { State: { isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isAndroid: /Android/i.test(navigator.userAgent), isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), isChrome: t.chrome, isFirefox: /Firefox/i.test(navigator.userAgent), prefixElement: r.createElement("div"), prefixMatches: {}, scrollAnchor: null, scrollPropertyLeft: null, scrollPropertyTop: null, isTicking: !1, calls: [] }, CSS: {}, Utilities: f, Redirects: {}, Easings: {}, Promise: t.Promise, defaults: { queue: "", duration: h, easing: v, begin: a, complete: a, progress: a, display: a, visibility: a, loop: !1, delay: !1, mobileHA: !0, _cacheValues: !0 }, init: function (e) { - f.data(e, "velocity", { isSVG: m.isSVG(e), isAnimating: !1, computedStyle: null, tweensContainer: null, rootPropertyValueCache: {}, transformCache: {} }); - }, hook: null, mock: !1, version: { major: 1, minor: 2, patch: 2 }, debug: !1 };t.pageYOffset !== a ? (b.State.scrollAnchor = t, b.State.scrollPropertyLeft = "pageXOffset", b.State.scrollPropertyTop = "pageYOffset") : (b.State.scrollAnchor = r.documentElement || r.body.parentNode || r.body, b.State.scrollPropertyLeft = "scrollLeft", b.State.scrollPropertyTop = "scrollTop");var x = function () { - function e(e) { - return -e.tension * e.x - e.friction * e.v; - }function t(t, r, a) { - var n = { x: t.x + a.dx * r, v: t.v + a.dv * r, tension: t.tension, friction: t.friction };return { dx: n.v, dv: e(n) }; - }function r(r, a) { - var n = { dx: r.v, dv: e(r) }, - o = t(r, .5 * a, n), - i = t(r, .5 * a, o), - s = t(r, a, i), - l = 1 / 6 * (n.dx + 2 * (o.dx + i.dx) + s.dx), - u = 1 / 6 * (n.dv + 2 * (o.dv + i.dv) + s.dv);return r.x = r.x + l * a, r.v = r.v + u * a, r; - }return function a(e, t, n) { - var o, - i, - s, - l = { x: -1, v: 0, tension: null, friction: null }, - u = [0], - c = 0, - p = 1e-4, - f = .016;for (e = parseFloat(e) || 500, t = parseFloat(t) || 20, n = n || null, l.tension = e, l.friction = t, o = null !== n, o ? (c = a(e, t), i = c / n * f) : i = f; s = r(s || l, i), u.push(1 + s.x), c += 16, Math.abs(s.x) > p && Math.abs(s.v) > p;) {}return o ? function (e) { - return u[e * (u.length - 1) | 0]; - } : c; - }; - }();b.Easings = { linear: function (e) { - return e; - }, swing: function (e) { - return .5 - Math.cos(e * Math.PI) / 2; - }, spring: function (e) { - return 1 - Math.cos(4.5 * e * Math.PI) * Math.exp(6 * -e); - } }, f.each([["ease", [.25, .1, .25, 1]], ["ease-in", [.42, 0, 1, 1]], ["ease-out", [0, 0, .58, 1]], ["ease-in-out", [.42, 0, .58, 1]], ["easeInSine", [.47, 0, .745, .715]], ["easeOutSine", [.39, .575, .565, 1]], ["easeInOutSine", [.445, .05, .55, .95]], ["easeInQuad", [.55, .085, .68, .53]], ["easeOutQuad", [.25, .46, .45, .94]], ["easeInOutQuad", [.455, .03, .515, .955]], ["easeInCubic", [.55, .055, .675, .19]], ["easeOutCubic", [.215, .61, .355, 1]], ["easeInOutCubic", [.645, .045, .355, 1]], ["easeInQuart", [.895, .03, .685, .22]], ["easeOutQuart", [.165, .84, .44, 1]], ["easeInOutQuart", [.77, 0, .175, 1]], ["easeInQuint", [.755, .05, .855, .06]], ["easeOutQuint", [.23, 1, .32, 1]], ["easeInOutQuint", [.86, 0, .07, 1]], ["easeInExpo", [.95, .05, .795, .035]], ["easeOutExpo", [.19, 1, .22, 1]], ["easeInOutExpo", [1, 0, 0, 1]], ["easeInCirc", [.6, .04, .98, .335]], ["easeOutCirc", [.075, .82, .165, 1]], ["easeInOutCirc", [.785, .135, .15, .86]]], function (e, t) { - b.Easings[t[0]] = l.apply(null, t[1]); - });var S = b.CSS = { RegEx: { isHex: /^#([A-f\d]{3}){1,2}$/i, valueUnwrap: /^[A-z]+\((.*)\)$/i, wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi }, Lists: { colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"] }, Hooks: { templates: { textShadow: ["Color X Y Blur", "black 0px 0px 0px"], boxShadow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], backgroundPosition: ["X Y", "0% 0%"], transformOrigin: ["X Y Z", "50% 50% 0px"], perspectiveOrigin: ["X Y", "50% 50%"] }, registered: {}, register: function () { - for (var e = 0; e < S.Lists.colors.length; e++) { - var t = "color" === S.Lists.colors[e] ? "0 0 0 1" : "255 255 255 1";S.Hooks.templates[S.Lists.colors[e]] = ["Red Green Blue Alpha", t]; - }var r, a, n;if (d) for (r in S.Hooks.templates) { - a = S.Hooks.templates[r], n = a[0].split(" ");var o = a[1].match(S.RegEx.valueSplit);"Color" === n[0] && (n.push(n.shift()), o.push(o.shift()), S.Hooks.templates[r] = [n.join(" "), o.join(" ")]); - }for (r in S.Hooks.templates) { - a = S.Hooks.templates[r], n = a[0].split(" ");for (var e in n) { - var i = r + n[e], - s = e;S.Hooks.registered[i] = [r, s]; - } + b = { + State: { isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isAndroid: /Android/i.test(navigator.userAgent), isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), isChrome: t.chrome, isFirefox: /Firefox/i.test(navigator.userAgent), prefixElement: r.createElement("div"), prefixMatches: {}, scrollAnchor: null, scrollPropertyLeft: null, scrollPropertyTop: null, isTicking: !1, calls: [] }, CSS: {}, Utilities: f, Redirects: {}, Easings: {}, Promise: t.Promise, defaults: { queue: "", duration: h, easing: v, begin: a, complete: a, progress: a, display: a, visibility: a, loop: !1, delay: !1, mobileHA: !0, _cacheValues: !0 }, init: function (e) { + f.data(e, "velocity", { isSVG: m.isSVG(e), isAnimating: !1, computedStyle: null, tweensContainer: null, rootPropertyValueCache: {}, transformCache: {} }); + }, hook: null, mock: !1, version: { major: 1, minor: 2, patch: 2 }, debug: !1 + }; t.pageYOffset !== a ? (b.State.scrollAnchor = t, b.State.scrollPropertyLeft = "pageXOffset", b.State.scrollPropertyTop = "pageYOffset") : (b.State.scrollAnchor = r.documentElement || r.body.parentNode || r.body, b.State.scrollPropertyLeft = "scrollLeft", b.State.scrollPropertyTop = "scrollTop"); var x = function () { + function e(e) { + return -e.tension * e.x - e.friction * e.v; + } function t(t, r, a) { + var n = { x: t.x + a.dx * r, v: t.v + a.dv * r, tension: t.tension, friction: t.friction }; return { dx: n.v, dv: e(n) }; + } function r(r, a) { + var n = { dx: r.v, dv: e(r) }, + o = t(r, .5 * a, n), + i = t(r, .5 * a, o), + s = t(r, a, i), + l = 1 / 6 * (n.dx + 2 * (o.dx + i.dx) + s.dx), + u = 1 / 6 * (n.dv + 2 * (o.dv + i.dv) + s.dv); return r.x = r.x + l * a, r.v = r.v + u * a, r; + } return function a(e, t, n) { + var o, + i, + s, + l = { x: -1, v: 0, tension: null, friction: null }, + u = [0], + c = 0, + p = 1e-4, + f = .016; for (e = parseFloat(e) || 500, t = parseFloat(t) || 20, n = n || null, l.tension = e, l.friction = t, o = null !== n, o ? (c = a(e, t), i = c / n * f) : i = f; s = r(s || l, i), u.push(1 + s.x), c += 16, Math.abs(s.x) > p && Math.abs(s.v) > p;) { } return o ? function (e) { + return u[e * (u.length - 1) | 0]; + } : c; + }; + }(); b.Easings = { + linear: function (e) { + return e; + }, swing: function (e) { + return .5 - Math.cos(e * Math.PI) / 2; + }, spring: function (e) { + return 1 - Math.cos(4.5 * e * Math.PI) * Math.exp(6 * -e); } - }, getRoot: function (e) { - var t = S.Hooks.registered[e];return t ? t[0] : e; - }, cleanRootPropertyValue: function (e, t) { - return S.RegEx.valueUnwrap.test(t) && (t = t.match(S.RegEx.valueUnwrap)[1]), S.Values.isCSSNullValue(t) && (t = S.Hooks.templates[e][1]), t; - }, extractValue: function (e, t) { - var r = S.Hooks.registered[e];if (r) { - var a = r[0], - n = r[1];return t = S.Hooks.cleanRootPropertyValue(a, t), t.toString().match(S.RegEx.valueSplit)[n]; - }return t; - }, injectValue: function (e, t, r) { - var a = S.Hooks.registered[e];if (a) { - var n, - o, - i = a[0], - s = a[1];return r = S.Hooks.cleanRootPropertyValue(i, r), n = r.toString().match(S.RegEx.valueSplit), n[s] = t, o = n.join(" "); - }return r; - } }, Normalizations: { registered: { clip: function (e, t, r) { - switch (e) {case "name": - return "clip";case "extract": - var a;return S.RegEx.wrappedValueAlreadyExtracted.test(r) ? a = r : (a = r.toString().match(S.RegEx.valueUnwrap), a = a ? a[1].replace(/,(\s+)?/g, " ") : r), a;case "inject": - return "rect(" + r + ")";} - }, blur: function (e, t, r) { - switch (e) {case "name": - return b.State.isFirefox ? "filter" : "-webkit-filter";case "extract": - var a = parseFloat(r);if (!a && 0 !== a) { - var n = r.toString().match(/blur\(([0-9]+[A-z]+)\)/i);a = n ? n[1] : 0; - }return a;case "inject": - return parseFloat(r) ? "blur(" + r + ")" : "none";} - }, opacity: function (e, t, r) { - if (8 >= d) switch (e) {case "name": - return "filter";case "extract": - var a = r.toString().match(/alpha\(opacity=(.*)\)/i);return r = a ? a[1] / 100 : 1;case "inject": - return t.style.zoom = 1, parseFloat(r) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(r), 10) + ")";} else switch (e) {case "name": - return "opacity";case "extract": - return r;case "inject": - return r;} - } }, register: function () { - 9 >= d || b.State.isGingerbread || (S.Lists.transformsBase = S.Lists.transformsBase.concat(S.Lists.transforms3D));for (var e = 0; e < S.Lists.transformsBase.length; e++) { - !function () { - var t = S.Lists.transformsBase[e];S.Normalizations.registered[t] = function (e, r, n) { - switch (e) {case "name": - return "transform";case "extract": - return i(r) === a || i(r).transformCache[t] === a ? /^scale/i.test(t) ? 1 : 0 : i(r).transformCache[t].replace(/[()]/g, "");case "inject": - var o = !1;switch (t.substr(0, t.length - 1)) {case "translate": - o = !/(%|px|em|rem|vw|vh|\d)$/i.test(n);break;case "scal":case "scale": - b.State.isAndroid && i(r).transformCache[t] === a && 1 > n && (n = 1), o = !/(\d)$/i.test(n);break;case "skew": - o = !/(deg|\d)$/i.test(n);break;case "rotate": - o = !/(deg|\d)$/i.test(n);}return o || (i(r).transformCache[t] = "(" + n + ")"), i(r).transformCache[t];} - }; - }(); - }for (var e = 0; e < S.Lists.colors.length; e++) { - !function () { - var t = S.Lists.colors[e];S.Normalizations.registered[t] = function (e, r, n) { - switch (e) {case "name": - return t;case "extract": - var o;if (S.RegEx.wrappedValueAlreadyExtracted.test(n)) o = n;else { - var i, - s = { black: "rgb(0, 0, 0)", blue: "rgb(0, 0, 255)", gray: "rgb(128, 128, 128)", green: "rgb(0, 128, 0)", red: "rgb(255, 0, 0)", white: "rgb(255, 255, 255)" };/^[A-z]+$/i.test(n) ? i = s[n] !== a ? s[n] : s.black : S.RegEx.isHex.test(n) ? i = "rgb(" + S.Values.hexToRgb(n).join(" ") + ")" : /^rgba?\(/i.test(n) || (i = s.black), o = (i || n).toString().match(S.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " "); - }return 8 >= d || 3 !== o.split(" ").length || (o += " 1"), o;case "inject": - return 8 >= d ? 4 === n.split(" ").length && (n = n.split(/\s+/).slice(0, 3).join(" ")) : 3 === n.split(" ").length && (n += " 1"), (8 >= d ? "rgb" : "rgba") + "(" + n.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")";} - }; - }(); - } - } }, Names: { camelCase: function (e) { - return e.replace(/-(\w)/g, function (e, t) { - return t.toUpperCase(); - }); - }, SVGAttribute: function (e) { - var t = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return (d || b.State.isAndroid && !b.State.isChrome) && (t += "|transform"), new RegExp("^(" + t + ")$", "i").test(e); - }, prefixCheck: function (e) { - if (b.State.prefixMatches[e]) return [b.State.prefixMatches[e], !0];for (var t = ["", "Webkit", "Moz", "ms", "O"], r = 0, a = t.length; a > r; r++) { - var n;if (n = 0 === r ? e : t[r] + e.replace(/^\w/, function (e) { - return e.toUpperCase(); - }), m.isString(b.State.prefixElement.style[n])) return b.State.prefixMatches[e] = n, [n, !0]; - }return [e, !1]; - } }, Values: { hexToRgb: function (e) { - var t, - r = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, - a = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return e = e.replace(r, function (e, t, r, a) { - return t + t + r + r + a + a; - }), t = a.exec(e), t ? [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)] : [0, 0, 0]; - }, isCSSNullValue: function (e) { - return 0 == e || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e); - }, getUnitType: function (e) { - return (/^(rotate|skew)/i.test(e) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e) ? "" : "px" - ); - }, getDisplayType: function (e) { - var t = e && e.tagName.toString().toLowerCase();return (/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t) ? "inline" : /^(li)$/i.test(t) ? "list-item" : /^(tr)$/i.test(t) ? "table-row" : /^(table)$/i.test(t) ? "table" : /^(tbody)$/i.test(t) ? "table-row-group" : "block" - ); - }, addClass: function (e, t) { - e.classList ? e.classList.add(t) : e.className += (e.className.length ? " " : "") + t; - }, removeClass: function (e, t) { - e.classList ? e.classList.remove(t) : e.className = e.className.toString().replace(new RegExp("(^|\\s)" + t.split(" ").join("|") + "(\\s|$)", "gi"), " "); - } }, getPropertyValue: function (e, r, n, o) { - function s(e, r) { - function n() { - u && S.setPropertyValue(e, "display", "none"); - }var l = 0;if (8 >= d) l = f.css(e, r);else { - var u = !1;if (/^(width|height)$/.test(r) && 0 === S.getPropertyValue(e, "display") && (u = !0, S.setPropertyValue(e, "display", S.Values.getDisplayType(e))), !o) { - if ("height" === r && "border-box" !== S.getPropertyValue(e, "boxSizing").toString().toLowerCase()) { - var c = e.offsetHeight - (parseFloat(S.getPropertyValue(e, "borderTopWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "borderBottomWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingTop")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingBottom")) || 0);return n(), c; - }if ("width" === r && "border-box" !== S.getPropertyValue(e, "boxSizing").toString().toLowerCase()) { - var p = e.offsetWidth - (parseFloat(S.getPropertyValue(e, "borderLeftWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "borderRightWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingLeft")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingRight")) || 0);return n(), p; - } - }var g;g = i(e) === a ? t.getComputedStyle(e, null) : i(e).computedStyle ? i(e).computedStyle : i(e).computedStyle = t.getComputedStyle(e, null), "borderColor" === r && (r = "borderTopColor"), l = 9 === d && "filter" === r ? g.getPropertyValue(r) : g[r], ("" === l || null === l) && (l = e.style[r]), n(); - }if ("auto" === l && /^(top|right|bottom|left)$/i.test(r)) { - var m = s(e, "position");("fixed" === m || "absolute" === m && /top|left/i.test(r)) && (l = f(e).position()[r] + "px"); - }return l; - }var l;if (S.Hooks.registered[r]) { - var u = r, - c = S.Hooks.getRoot(u);n === a && (n = S.getPropertyValue(e, S.Names.prefixCheck(c)[0])), S.Normalizations.registered[c] && (n = S.Normalizations.registered[c]("extract", e, n)), l = S.Hooks.extractValue(u, n); - } else if (S.Normalizations.registered[r]) { - var p, g;p = S.Normalizations.registered[r]("name", e), "transform" !== p && (g = s(e, S.Names.prefixCheck(p)[0]), S.Values.isCSSNullValue(g) && S.Hooks.templates[r] && (g = S.Hooks.templates[r][1])), l = S.Normalizations.registered[r]("extract", e, g); - }if (!/^[\d-]/.test(l)) if (i(e) && i(e).isSVG && S.Names.SVGAttribute(r)) { - if (/^(height|width)$/i.test(r)) try { - l = e.getBBox()[r]; - } catch (m) { - l = 0; - } else l = e.getAttribute(r); - } else l = s(e, S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l) && (l = 0), b.debug >= 2 && console.log("Get " + r + ": " + l), l; - }, setPropertyValue: function (e, r, a, n, o) { - var s = r;if ("scroll" === r) o.container ? o.container["scroll" + o.direction] = a : "Left" === o.direction ? t.scrollTo(a, o.alternateValue) : t.scrollTo(o.alternateValue, a);else if (S.Normalizations.registered[r] && "transform" === S.Normalizations.registered[r]("name", e)) S.Normalizations.registered[r]("inject", e, a), s = "transform", a = i(e).transformCache[r];else { - if (S.Hooks.registered[r]) { - var l = r, - u = S.Hooks.getRoot(r);n = n || S.getPropertyValue(e, u), a = S.Hooks.injectValue(l, a, n), r = u; - }if (S.Normalizations.registered[r] && (a = S.Normalizations.registered[r]("inject", e, a), r = S.Normalizations.registered[r]("name", e)), s = S.Names.prefixCheck(r)[0], 8 >= d) try { - e.style[s] = a; - } catch (c) { - b.debug && console.log("Browser does not support [" + a + "] for [" + s + "]"); - } else i(e) && i(e).isSVG && S.Names.SVGAttribute(r) ? e.setAttribute(r, a) : e.style[s] = a;b.debug >= 2 && console.log("Set " + r + " (" + s + "): " + a); - }return [s, a]; - }, flushTransformCache: function (e) { - function t(t) { - return parseFloat(S.getPropertyValue(e, t)); - }var r = "";if ((d || b.State.isAndroid && !b.State.isChrome) && i(e).isSVG) { - var a = { translate: [t("translateX"), t("translateY")], skewX: [t("skewX")], skewY: [t("skewY")], scale: 1 !== t("scale") ? [t("scale"), t("scale")] : [t("scaleX"), t("scaleY")], rotate: [t("rotateZ"), 0, 0] };f.each(i(e).transformCache, function (e) { - /^translate/i.test(e) ? e = "translate" : /^scale/i.test(e) ? e = "scale" : /^rotate/i.test(e) && (e = "rotate"), a[e] && (r += e + "(" + a[e].join(" ") + ") ", delete a[e]); - }); - } else { - var n, o;f.each(i(e).transformCache, function (t) { - return n = i(e).transformCache[t], "transformPerspective" === t ? (o = n, !0) : (9 === d && "rotateZ" === t && (t = "rotate"), void (r += t + n + " ")); - }), o && (r = "perspective" + o + " " + r); - }S.setPropertyValue(e, "transform", r); - } };S.Hooks.register(), S.Normalizations.register(), b.hook = function (e, t, r) { - var n = a;return e = o(e), f.each(e, function (e, o) { - if (i(o) === a && b.init(o), r === a) n === a && (n = b.CSS.getPropertyValue(o, t));else { - var s = b.CSS.setPropertyValue(o, t, r);"transform" === s[0] && b.CSS.flushTransformCache(o), n = s; - } - }), n; - };var P = function () { - function e() { - return s ? k.promise || null : l; - }function n() { - function e(e) { - function p(e, t) { - var r = a, - n = a, - i = a;return m.isArray(e) ? (r = e[0], !m.isArray(e[1]) && /^[\d-]/.test(e[1]) || m.isFunction(e[1]) || S.RegEx.isHex.test(e[1]) ? i = e[1] : (m.isString(e[1]) && !S.RegEx.isHex.test(e[1]) || m.isArray(e[1])) && (n = t ? e[1] : u(e[1], s.duration), e[2] !== a && (i = e[2]))) : r = e, t || (n = n || s.easing), m.isFunction(r) && (r = r.call(o, V, w)), m.isFunction(i) && (i = i.call(o, V, w)), [r || 0, n, i]; - }function d(e, t) { - var r, a;return a = (t || "0").toString().toLowerCase().replace(/[%A-z]+$/, function (e) { - return r = e, ""; - }), r || (r = S.Values.getUnitType(e)), [a, r]; - }function h() { - var e = { myParent: o.parentNode || r.body, position: S.getPropertyValue(o, "position"), fontSize: S.getPropertyValue(o, "fontSize") }, - a = e.position === L.lastPosition && e.myParent === L.lastParent, - n = e.fontSize === L.lastFontSize;L.lastParent = e.myParent, L.lastPosition = e.position, L.lastFontSize = e.fontSize;var s = 100, - l = {};if (n && a) l.emToPx = L.lastEmToPx, l.percentToPxWidth = L.lastPercentToPxWidth, l.percentToPxHeight = L.lastPercentToPxHeight;else { - var u = i(o).isSVG ? r.createElementNS("http://www.w3.org/2000/svg", "rect") : r.createElement("div");b.init(u), e.myParent.appendChild(u), f.each(["overflow", "overflowX", "overflowY"], function (e, t) { - b.CSS.setPropertyValue(u, t, "hidden"); - }), b.CSS.setPropertyValue(u, "position", e.position), b.CSS.setPropertyValue(u, "fontSize", e.fontSize), b.CSS.setPropertyValue(u, "boxSizing", "content-box"), f.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function (e, t) { - b.CSS.setPropertyValue(u, t, s + "%"); - }), b.CSS.setPropertyValue(u, "paddingLeft", s + "em"), l.percentToPxWidth = L.lastPercentToPxWidth = (parseFloat(S.getPropertyValue(u, "width", null, !0)) || 1) / s, l.percentToPxHeight = L.lastPercentToPxHeight = (parseFloat(S.getPropertyValue(u, "height", null, !0)) || 1) / s, l.emToPx = L.lastEmToPx = (parseFloat(S.getPropertyValue(u, "paddingLeft")) || 1) / s, e.myParent.removeChild(u); - }return null === L.remToPx && (L.remToPx = parseFloat(S.getPropertyValue(r.body, "fontSize")) || 16), null === L.vwToPx && (L.vwToPx = parseFloat(t.innerWidth) / 100, L.vhToPx = parseFloat(t.innerHeight) / 100), l.remToPx = L.remToPx, l.vwToPx = L.vwToPx, l.vhToPx = L.vhToPx, b.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(l), o), l; - }if (s.begin && 0 === V) try { - s.begin.call(g, g); - } catch (x) { - setTimeout(function () { - throw x; - }, 1); - }if ("scroll" === A) { - var P, - C, - T, - F = /^x$/i.test(s.axis) ? "Left" : "Top", - j = parseFloat(s.offset) || 0;s.container ? m.isWrapped(s.container) || m.isNode(s.container) ? (s.container = s.container[0] || s.container, P = s.container["scroll" + F], T = P + f(o).position()[F.toLowerCase()] + j) : s.container = null : (P = b.State.scrollAnchor[b.State["scrollProperty" + F]], C = b.State.scrollAnchor[b.State["scrollProperty" + ("Left" === F ? "Top" : "Left")]], T = f(o).offset()[F.toLowerCase()] + j), l = { scroll: { rootPropertyValue: !1, startValue: P, currentValue: P, endValue: T, unitType: "", easing: s.easing, scrollData: { container: s.container, direction: F, alternateValue: C } }, element: o }, b.debug && console.log("tweensContainer (scroll): ", l.scroll, o); - } else if ("reverse" === A) { - if (!i(o).tweensContainer) return void f.dequeue(o, s.queue);"none" === i(o).opts.display && (i(o).opts.display = "auto"), "hidden" === i(o).opts.visibility && (i(o).opts.visibility = "visible"), i(o).opts.loop = !1, i(o).opts.begin = null, i(o).opts.complete = null, v.easing || delete s.easing, v.duration || delete s.duration, s = f.extend({}, i(o).opts, s);var E = f.extend(!0, {}, i(o).tweensContainer);for (var H in E) { - if ("element" !== H) { - var N = E[H].startValue;E[H].startValue = E[H].currentValue = E[H].endValue, E[H].endValue = N, m.isEmptyObject(v) || (E[H].easing = s.easing), b.debug && console.log("reverse tweensContainer (" + H + "): " + JSON.stringify(E[H]), o); - } - }l = E; - } else if ("start" === A) { - var E;i(o).tweensContainer && i(o).isAnimating === !0 && (E = i(o).tweensContainer), f.each(y, function (e, t) { - if (RegExp("^" + S.Lists.colors.join("$|^") + "$").test(e)) { - var r = p(t, !0), - n = r[0], - o = r[1], - i = r[2];if (S.RegEx.isHex.test(n)) { - for (var s = ["Red", "Green", "Blue"], l = S.Values.hexToRgb(n), u = i ? S.Values.hexToRgb(i) : a, c = 0; c < s.length; c++) { - var f = [l[c]];o && f.push(o), u !== a && f.push(u[c]), y[e + s[c]] = f; - }delete y[e]; + }, f.each([["ease", [.25, .1, .25, 1]], ["ease-in", [.42, 0, 1, 1]], ["ease-out", [0, 0, .58, 1]], ["ease-in-out", [.42, 0, .58, 1]], ["easeInSine", [.47, 0, .745, .715]], ["easeOutSine", [.39, .575, .565, 1]], ["easeInOutSine", [.445, .05, .55, .95]], ["easeInQuad", [.55, .085, .68, .53]], ["easeOutQuad", [.25, .46, .45, .94]], ["easeInOutQuad", [.455, .03, .515, .955]], ["easeInCubic", [.55, .055, .675, .19]], ["easeOutCubic", [.215, .61, .355, 1]], ["easeInOutCubic", [.645, .045, .355, 1]], ["easeInQuart", [.895, .03, .685, .22]], ["easeOutQuart", [.165, .84, .44, 1]], ["easeInOutQuart", [.77, 0, .175, 1]], ["easeInQuint", [.755, .05, .855, .06]], ["easeOutQuint", [.23, 1, .32, 1]], ["easeInOutQuint", [.86, 0, .07, 1]], ["easeInExpo", [.95, .05, .795, .035]], ["easeOutExpo", [.19, 1, .22, 1]], ["easeInOutExpo", [1, 0, 0, 1]], ["easeInCirc", [.6, .04, .98, .335]], ["easeOutCirc", [.075, .82, .165, 1]], ["easeInOutCirc", [.785, .135, .15, .86]]], function (e, t) { + b.Easings[t[0]] = l.apply(null, t[1]); + }); var S = b.CSS = { + RegEx: { isHex: /^#([A-f\d]{3}){1,2}$/i, valueUnwrap: /^[A-z]+\((.*)\)$/i, wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi }, Lists: { colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"] }, Hooks: { + templates: { textShadow: ["Color X Y Blur", "black 0px 0px 0px"], boxShadow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], backgroundPosition: ["X Y", "0% 0%"], transformOrigin: ["X Y Z", "50% 50% 0px"], perspectiveOrigin: ["X Y", "50% 50%"] }, registered: {}, register: function () { + for (var e = 0; e < S.Lists.colors.length; e++) { + var t = "color" === S.Lists.colors[e] ? "0 0 0 1" : "255 255 255 1"; S.Hooks.templates[S.Lists.colors[e]] = ["Red Green Blue Alpha", t]; + } var r, a, n; if (d) for (r in S.Hooks.templates) { + a = S.Hooks.templates[r], n = a[0].split(" "); var o = a[1].match(S.RegEx.valueSplit); "Color" === n[0] && (n.push(n.shift()), o.push(o.shift()), S.Hooks.templates[r] = [n.join(" "), o.join(" ")]); + } for (r in S.Hooks.templates) { + a = S.Hooks.templates[r], n = a[0].split(" "); for (var e in n) { + var i = r + n[e], + s = e; S.Hooks.registered[i] = [r, s]; } } - });for (var z in y) { - var O = p(y[z]), - q = O[0], - $ = O[1], - M = O[2];z = S.Names.camelCase(z);var I = S.Hooks.getRoot(z), - B = !1;if (i(o).isSVG || "tween" === I || S.Names.prefixCheck(I)[1] !== !1 || S.Normalizations.registered[I] !== a) { - (s.display !== a && null !== s.display && "none" !== s.display || s.visibility !== a && "hidden" !== s.visibility) && /opacity|filter/.test(z) && !M && 0 !== q && (M = 0), s._cacheValues && E && E[z] ? (M === a && (M = E[z].endValue + E[z].unitType), B = i(o).rootPropertyValueCache[I]) : S.Hooks.registered[z] ? M === a ? (B = S.getPropertyValue(o, I), M = S.getPropertyValue(o, z, B)) : B = S.Hooks.templates[I][1] : M === a && (M = S.getPropertyValue(o, z));var W, - G, - Y, - D = !1;if (W = d(z, M), M = W[0], Y = W[1], W = d(z, q), q = W[0].replace(/^([+-\/*])=/, function (e, t) { - return D = t, ""; - }), G = W[1], M = parseFloat(M) || 0, q = parseFloat(q) || 0, "%" === G && (/^(fontSize|lineHeight)$/.test(z) ? (q /= 100, G = "em") : /^scale/.test(z) ? (q /= 100, G = "") : /(Red|Green|Blue)$/i.test(z) && (q = q / 100 * 255, G = "")), /[\/*]/.test(D)) G = Y;else if (Y !== G && 0 !== M) if (0 === q) G = Y;else { - n = n || h();var Q = /margin|padding|left|right|width|text|word|letter/i.test(z) || /X$/.test(z) || "x" === z ? "x" : "y";switch (Y) {case "%": - M *= "x" === Q ? n.percentToPxWidth : n.percentToPxHeight;break;case "px": - break;default: - M *= n[Y + "ToPx"];}switch (G) {case "%": - M *= 1 / ("x" === Q ? n.percentToPxWidth : n.percentToPxHeight);break;case "px": - break;default: - M *= 1 / n[G + "ToPx"];} - }switch (D) {case "+": - q = M + q;break;case "-": - q = M - q;break;case "*": - q = M * q;break;case "/": - q = M / q;}l[z] = { rootPropertyValue: B, startValue: M, currentValue: M, endValue: q, unitType: G, easing: $ }, b.debug && console.log("tweensContainer (" + z + "): " + JSON.stringify(l[z]), o); - } else b.debug && console.log("Skipping [" + I + "] due to a lack of browser support."); - }l.element = o; - }l.element && (S.Values.addClass(o, "velocity-animating"), R.push(l), "" === s.queue && (i(o).tweensContainer = l, i(o).opts = s), i(o).isAnimating = !0, V === w - 1 ? (b.State.calls.push([R, g, s, null, k.resolver]), b.State.isTicking === !1 && (b.State.isTicking = !0, c())) : V++); - }var n, - o = this, - s = f.extend({}, b.defaults, v), - l = {};switch (i(o) === a && b.init(o), parseFloat(s.delay) && s.queue !== !1 && f.queue(o, s.queue, function (e) { - b.velocityQueueEntryFlag = !0, i(o).delayTimer = { setTimeout: setTimeout(e, parseFloat(s.delay)), next: e }; - }), s.duration.toString().toLowerCase()) {case "fast": - s.duration = 200;break;case "normal": - s.duration = h;break;case "slow": - s.duration = 600;break;default: - s.duration = parseFloat(s.duration) || 1;}b.mock !== !1 && (b.mock === !0 ? s.duration = s.delay = 1 : (s.duration *= parseFloat(b.mock) || 1, s.delay *= parseFloat(b.mock) || 1)), s.easing = u(s.easing, s.duration), s.begin && !m.isFunction(s.begin) && (s.begin = null), s.progress && !m.isFunction(s.progress) && (s.progress = null), s.complete && !m.isFunction(s.complete) && (s.complete = null), s.display !== a && null !== s.display && (s.display = s.display.toString().toLowerCase(), "auto" === s.display && (s.display = b.CSS.Values.getDisplayType(o))), s.visibility !== a && null !== s.visibility && (s.visibility = s.visibility.toString().toLowerCase()), s.mobileHA = s.mobileHA && b.State.isMobile && !b.State.isGingerbread, s.queue === !1 ? s.delay ? setTimeout(e, s.delay) : e() : f.queue(o, s.queue, function (t, r) { - return r === !0 ? (k.promise && k.resolver(g), !0) : (b.velocityQueueEntryFlag = !0, void e(t)); - }), "" !== s.queue && "fx" !== s.queue || "inprogress" === f.queue(o)[0] || f.dequeue(o); - }var s, - l, - d, - g, - y, - v, - x = arguments[0] && (arguments[0].p || f.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || m.isString(arguments[0].properties));if (m.isWrapped(this) ? (s = !1, d = 0, g = this, l = this) : (s = !0, d = 1, g = x ? arguments[0].elements || arguments[0].e : arguments[0]), g = o(g)) { - x ? (y = arguments[0].properties || arguments[0].p, v = arguments[0].options || arguments[0].o) : (y = arguments[d], v = arguments[d + 1]);var w = g.length, - V = 0;if (!/^(stop|finish)$/i.test(y) && !f.isPlainObject(v)) { - var C = d + 1;v = {};for (var T = C; T < arguments.length; T++) { - m.isArray(arguments[T]) || !/^(fast|normal|slow)$/i.test(arguments[T]) && !/^\d/.test(arguments[T]) ? m.isString(arguments[T]) || m.isArray(arguments[T]) ? v.easing = arguments[T] : m.isFunction(arguments[T]) && (v.complete = arguments[T]) : v.duration = arguments[T]; - } - }var k = { promise: null, resolver: null, rejecter: null };s && b.Promise && (k.promise = new b.Promise(function (e, t) { - k.resolver = e, k.rejecter = t; - }));var A;switch (y) {case "scroll": - A = "scroll";break;case "reverse": - A = "reverse";break;case "finish":case "stop": - f.each(g, function (e, t) { - i(t) && i(t).delayTimer && (clearTimeout(i(t).delayTimer.setTimeout), i(t).delayTimer.next && i(t).delayTimer.next(), delete i(t).delayTimer); - });var F = [];return f.each(b.State.calls, function (e, t) { - t && f.each(t[1], function (r, n) { - var o = v === a ? "" : v;return o === !0 || t[2].queue === o || v === a && t[2].queue === !1 ? void f.each(g, function (r, a) { - a === n && ((v === !0 || m.isString(v)) && (f.each(f.queue(a, m.isString(v) ? v : ""), function (e, t) { - m.isFunction(t) && t(null, !0); - }), f.queue(a, m.isString(v) ? v : "", [])), "stop" === y ? (i(a) && i(a).tweensContainer && o !== !1 && f.each(i(a).tweensContainer, function (e, t) { - t.endValue = t.currentValue; - }), F.push(e)) : "finish" === y && (t[2].duration = 1)); - }) : !0; + }, getRoot: function (e) { + var t = S.Hooks.registered[e]; return t ? t[0] : e; + }, cleanRootPropertyValue: function (e, t) { + return S.RegEx.valueUnwrap.test(t) && (t = t.match(S.RegEx.valueUnwrap)[1]), S.Values.isCSSNullValue(t) && (t = S.Hooks.templates[e][1]), t; + }, extractValue: function (e, t) { + var r = S.Hooks.registered[e]; if (r) { + var a = r[0], + n = r[1]; return t = S.Hooks.cleanRootPropertyValue(a, t), t.toString().match(S.RegEx.valueSplit)[n]; + } return t; + }, injectValue: function (e, t, r) { + var a = S.Hooks.registered[e]; if (a) { + var n, + o, + i = a[0], + s = a[1]; return r = S.Hooks.cleanRootPropertyValue(i, r), n = r.toString().match(S.RegEx.valueSplit), n[s] = t, o = n.join(" "); + } return r; + } + }, Normalizations: { + registered: { + clip: function (e, t, r) { + switch (e) { + case "name": + return "clip"; case "extract": + var a; return S.RegEx.wrappedValueAlreadyExtracted.test(r) ? a = r : (a = r.toString().match(S.RegEx.valueUnwrap), a = a ? a[1].replace(/,(\s+)?/g, " ") : r), a; case "inject": + return "rect(" + r + ")"; + } + }, blur: function (e, t, r) { + switch (e) { + case "name": + return b.State.isFirefox ? "filter" : "-webkit-filter"; case "extract": + var a = parseFloat(r); if (!a && 0 !== a) { + var n = r.toString().match(/blur\(([0-9]+[A-z]+)\)/i); a = n ? n[1] : 0; + } return a; case "inject": + return parseFloat(r) ? "blur(" + r + ")" : "none"; + } + }, opacity: function (e, t, r) { + if (8 >= d) switch (e) { + case "name": + return "filter"; case "extract": + var a = r.toString().match(/alpha\(opacity=(.*)\)/i); return r = a ? a[1] / 100 : 1; case "inject": + return t.style.zoom = 1, parseFloat(r) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(r), 10) + ")"; + } else switch (e) { + case "name": + return "opacity"; case "extract": + return r; case "inject": + return r; + } + } + }, register: function () { + 9 >= d || b.State.isGingerbread || (S.Lists.transformsBase = S.Lists.transformsBase.concat(S.Lists.transforms3D)); for (var e = 0; e < S.Lists.transformsBase.length; e++) { + !function () { + var t = S.Lists.transformsBase[e]; S.Normalizations.registered[t] = function (e, r, n) { + switch (e) { + case "name": + return "transform"; case "extract": + return i(r) === a || i(r).transformCache[t] === a ? /^scale/i.test(t) ? 1 : 0 : i(r).transformCache[t].replace(/[()]/g, ""); case "inject": + var o = !1; switch (t.substr(0, t.length - 1)) { + case "translate": + o = !/(%|px|em|rem|vw|vh|\d)$/i.test(n); break; case "scal": case "scale": + b.State.isAndroid && i(r).transformCache[t] === a && 1 > n && (n = 1), o = !/(\d)$/i.test(n); break; case "skew": + o = !/(deg|\d)$/i.test(n); break; case "rotate": + o = !/(deg|\d)$/i.test(n); + }return o || (i(r).transformCache[t] = "(" + n + ")"), i(r).transformCache[t]; + } + }; + }(); + } for (var e = 0; e < S.Lists.colors.length; e++) { + !function () { + var t = S.Lists.colors[e]; S.Normalizations.registered[t] = function (e, r, n) { + switch (e) { + case "name": + return t; case "extract": + var o; if (S.RegEx.wrappedValueAlreadyExtracted.test(n)) o = n; else { + var i, + s = { black: "rgb(0, 0, 0)", blue: "rgb(0, 0, 255)", gray: "rgb(128, 128, 128)", green: "rgb(0, 128, 0)", red: "rgb(255, 0, 0)", white: "rgb(255, 255, 255)" }; /^[A-z]+$/i.test(n) ? i = s[n] !== a ? s[n] : s.black : S.RegEx.isHex.test(n) ? i = "rgb(" + S.Values.hexToRgb(n).join(" ") + ")" : /^rgba?\(/i.test(n) || (i = s.black), o = (i || n).toString().match(S.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " "); + } return 8 >= d || 3 !== o.split(" ").length || (o += " 1"), o; case "inject": + return 8 >= d ? 4 === n.split(" ").length && (n = n.split(/\s+/).slice(0, 3).join(" ")) : 3 === n.split(" ").length && (n += " 1"), (8 >= d ? "rgb" : "rgba") + "(" + n.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")"; + } + }; + }(); + } + } + }, Names: { + camelCase: function (e) { + return e.replace(/-(\w)/g, function (e, t) { + return t.toUpperCase(); }); - }), "stop" === y && (f.each(F, function (e, t) { - p(t, !0); - }), k.promise && k.resolver(g)), e();default: - if (!f.isPlainObject(y) || m.isEmptyObject(y)) { - if (m.isString(y) && b.Redirects[y]) { - var j = f.extend({}, v), - E = j.duration, - H = j.delay || 0;return j.backwards === !0 && (g = f.extend(!0, [], g).reverse()), f.each(g, function (e, t) { - parseFloat(j.stagger) ? j.delay = H + parseFloat(j.stagger) * e : m.isFunction(j.stagger) && (j.delay = H + j.stagger.call(t, e, w)), j.drag && (j.duration = parseFloat(E) || (/^(callout|transition)/.test(y) ? 1e3 : h), j.duration = Math.max(j.duration * (j.backwards ? 1 - e / w : (e + 1) / w), .75 * j.duration, 200)), b.Redirects[y].call(t, t, j || {}, e, w, g, k.promise ? k : a); - }), e(); - }var N = "Velocity: First argument (" + y + ") was not a property map, a known action, or a registered redirect. Aborting.";return k.promise ? k.rejecter(new Error(N)) : console.log(N), e(); - }A = "start";}var L = { lastParent: null, lastPosition: null, lastFontSize: null, lastPercentToPxWidth: null, lastPercentToPxHeight: null, lastEmToPx: null, remToPx: null, vwToPx: null, vhToPx: null }, - R = [];f.each(g, function (e, t) { - m.isNode(t) && n.call(t); - });var z, - j = f.extend({}, b.defaults, v);if (j.loop = parseInt(j.loop), z = 2 * j.loop - 1, j.loop) for (var O = 0; z > O; O++) { - var q = { delay: j.delay, progress: j.progress };O === z - 1 && (q.display = j.display, q.visibility = j.visibility, q.complete = j.complete), P(g, "reverse", q); - }return e(); - } - };b = f.extend(P, b), b.animate = P;var w = t.requestAnimationFrame || g;return b.State.isMobile || r.hidden === a || r.addEventListener("visibilitychange", function () { - r.hidden ? (w = function (e) { - return setTimeout(function () { - e(!0); - }, 16); - }, c()) : w = t.requestAnimationFrame || g; - }), e.Velocity = b, e !== t && (e.fn.velocity = P, e.fn.velocity.defaults = b.defaults), f.each(["Down", "Up"], function (e, t) { - b.Redirects["slide" + t] = function (e, r, n, o, i, s) { - var l = f.extend({}, r), - u = l.begin, - c = l.complete, - p = { height: "", marginTop: "", marginBottom: "", paddingTop: "", paddingBottom: "" }, - d = {};l.display === a && (l.display = "Down" === t ? "inline" === b.CSS.Values.getDisplayType(e) ? "inline-block" : "block" : "none"), l.begin = function () { - u && u.call(i, i);for (var r in p) { - d[r] = e.style[r];var a = b.CSS.getPropertyValue(e, r);p[r] = "Down" === t ? [a, 0] : [0, a]; - }d.overflow = e.style.overflow, e.style.overflow = "hidden"; - }, l.complete = function () { - for (var t in d) { - e.style[t] = d[t]; - }c && c.call(i, i), s && s.resolver(i); - }, b(e, p, l); - }; - }), f.each(["In", "Out"], function (e, t) { - b.Redirects["fade" + t] = function (e, r, n, o, i, s) { - var l = f.extend({}, r), - u = { opacity: "In" === t ? 1 : 0 }, - c = l.complete;l.complete = n !== o - 1 ? l.begin = null : function () { - c && c.call(i, i), s && s.resolver(i); - }, l.display === a && (l.display = "In" === t ? "auto" : "none"), b(this, u, l); - }; - }), b; + }, SVGAttribute: function (e) { + var t = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; return (d || b.State.isAndroid && !b.State.isChrome) && (t += "|transform"), new RegExp("^(" + t + ")$", "i").test(e); + }, prefixCheck: function (e) { + if (b.State.prefixMatches[e]) return [b.State.prefixMatches[e], !0]; for (var t = ["", "Webkit", "Moz", "ms", "O"], r = 0, a = t.length; a > r; r++) { + var n; if (n = 0 === r ? e : t[r] + e.replace(/^\w/, function (e) { + return e.toUpperCase(); + }), m.isString(b.State.prefixElement.style[n])) return b.State.prefixMatches[e] = n, [n, !0]; + } return [e, !1]; + } + }, Values: { + hexToRgb: function (e) { + var t, + r = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, + a = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i; return e = e.replace(r, function (e, t, r, a) { + return t + t + r + r + a + a; + }), t = a.exec(e), t ? [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)] : [0, 0, 0]; + }, isCSSNullValue: function (e) { + return 0 == e || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e); + }, getUnitType: function (e) { + return (/^(rotate|skew)/i.test(e) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e) ? "" : "px" + ); + }, getDisplayType: function (e) { + var t = e && e.tagName.toString().toLowerCase(); return (/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t) ? "inline" : /^(li)$/i.test(t) ? "list-item" : /^(tr)$/i.test(t) ? "table-row" : /^(table)$/i.test(t) ? "table" : /^(tbody)$/i.test(t) ? "table-row-group" : "block" + ); + }, addClass: function (e, t) { + e.classList ? e.classList.add(t) : e.className += (e.className.length ? " " : "") + t; + }, removeClass: function (e, t) { + e.classList ? e.classList.remove(t) : e.className = e.className.toString().replace(new RegExp("(^|\\s)" + t.split(" ").join("|") + "(\\s|$)", "gi"), " "); + } + }, getPropertyValue: function (e, r, n, o) { + function s(e, r) { + function n() { + u && S.setPropertyValue(e, "display", "none"); + } var l = 0; if (8 >= d) l = f.css(e, r); else { + var u = !1; if (/^(width|height)$/.test(r) && 0 === S.getPropertyValue(e, "display") && (u = !0, S.setPropertyValue(e, "display", S.Values.getDisplayType(e))), !o) { + if ("height" === r && "border-box" !== S.getPropertyValue(e, "boxSizing").toString().toLowerCase()) { + var c = e.offsetHeight - (parseFloat(S.getPropertyValue(e, "borderTopWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "borderBottomWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingTop")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingBottom")) || 0); return n(), c; + } if ("width" === r && "border-box" !== S.getPropertyValue(e, "boxSizing").toString().toLowerCase()) { + var p = e.offsetWidth - (parseFloat(S.getPropertyValue(e, "borderLeftWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "borderRightWidth")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingLeft")) || 0) - (parseFloat(S.getPropertyValue(e, "paddingRight")) || 0); return n(), p; + } + } var g; g = i(e) === a ? t.getComputedStyle(e, null) : i(e).computedStyle ? i(e).computedStyle : i(e).computedStyle = t.getComputedStyle(e, null), "borderColor" === r && (r = "borderTopColor"), l = 9 === d && "filter" === r ? g.getPropertyValue(r) : g[r], ("" === l || null === l) && (l = e.style[r]), n(); + } if ("auto" === l && /^(top|right|bottom|left)$/i.test(r)) { + var m = s(e, "position"); ("fixed" === m || "absolute" === m && /top|left/i.test(r)) && (l = f(e).position()[r] + "px"); + } return l; + } var l; if (S.Hooks.registered[r]) { + var u = r, + c = S.Hooks.getRoot(u); n === a && (n = S.getPropertyValue(e, S.Names.prefixCheck(c)[0])), S.Normalizations.registered[c] && (n = S.Normalizations.registered[c]("extract", e, n)), l = S.Hooks.extractValue(u, n); + } else if (S.Normalizations.registered[r]) { + var p, g; p = S.Normalizations.registered[r]("name", e), "transform" !== p && (g = s(e, S.Names.prefixCheck(p)[0]), S.Values.isCSSNullValue(g) && S.Hooks.templates[r] && (g = S.Hooks.templates[r][1])), l = S.Normalizations.registered[r]("extract", e, g); + } if (!/^[\d-]/.test(l)) if (i(e) && i(e).isSVG && S.Names.SVGAttribute(r)) { + if (/^(height|width)$/i.test(r)) try { + l = e.getBBox()[r]; + } catch (m) { + l = 0; + } else l = e.getAttribute(r); + } else l = s(e, S.Names.prefixCheck(r)[0]); return S.Values.isCSSNullValue(l) && (l = 0), b.debug >= 2 && console.log("Get " + r + ": " + l), l; + }, setPropertyValue: function (e, r, a, n, o) { + var s = r; if ("scroll" === r) o.container ? o.container["scroll" + o.direction] = a : "Left" === o.direction ? t.scrollTo(a, o.alternateValue) : t.scrollTo(o.alternateValue, a); else if (S.Normalizations.registered[r] && "transform" === S.Normalizations.registered[r]("name", e)) S.Normalizations.registered[r]("inject", e, a), s = "transform", a = i(e).transformCache[r]; else { + if (S.Hooks.registered[r]) { + var l = r, + u = S.Hooks.getRoot(r); n = n || S.getPropertyValue(e, u), a = S.Hooks.injectValue(l, a, n), r = u; + } if (S.Normalizations.registered[r] && (a = S.Normalizations.registered[r]("inject", e, a), r = S.Normalizations.registered[r]("name", e)), s = S.Names.prefixCheck(r)[0], 8 >= d) try { + e.style[s] = a; + } catch (c) { + b.debug && console.log("Browser does not support [" + a + "] for [" + s + "]"); + } else i(e) && i(e).isSVG && S.Names.SVGAttribute(r) ? e.setAttribute(r, a) : e.style[s] = a; b.debug >= 2 && console.log("Set " + r + " (" + s + "): " + a); + } return [s, a]; + }, flushTransformCache: function (e) { + function t(t) { + return parseFloat(S.getPropertyValue(e, t)); + } var r = ""; if ((d || b.State.isAndroid && !b.State.isChrome) && i(e).isSVG) { + var a = { translate: [t("translateX"), t("translateY")], skewX: [t("skewX")], skewY: [t("skewY")], scale: 1 !== t("scale") ? [t("scale"), t("scale")] : [t("scaleX"), t("scaleY")], rotate: [t("rotateZ"), 0, 0] }; f.each(i(e).transformCache, function (e) { + /^translate/i.test(e) ? e = "translate" : /^scale/i.test(e) ? e = "scale" : /^rotate/i.test(e) && (e = "rotate"), a[e] && (r += e + "(" + a[e].join(" ") + ") ", delete a[e]); + }); + } else { + var n, o; f.each(i(e).transformCache, function (t) { + return n = i(e).transformCache[t], "transformPerspective" === t ? (o = n, !0) : (9 === d && "rotateZ" === t && (t = "rotate"), void (r += t + n + " ")); + }), o && (r = "perspective" + o + " " + r); + } S.setPropertyValue(e, "transform", r); + } + }; S.Hooks.register(), S.Normalizations.register(), b.hook = function (e, t, r) { + var n = a; return e = o(e), f.each(e, function (e, o) { + if (i(o) === a && b.init(o), r === a) n === a && (n = b.CSS.getPropertyValue(o, t)); else { + var s = b.CSS.setPropertyValue(o, t, r); "transform" === s[0] && b.CSS.flushTransformCache(o), n = s; + } + }), n; + }; var P = function () { + function e() { + return s ? k.promise || null : l; + } function n() { + function e(e) { + function p(e, t) { + var r = a, + n = a, + i = a; return m.isArray(e) ? (r = e[0], !m.isArray(e[1]) && /^[\d-]/.test(e[1]) || m.isFunction(e[1]) || S.RegEx.isHex.test(e[1]) ? i = e[1] : (m.isString(e[1]) && !S.RegEx.isHex.test(e[1]) || m.isArray(e[1])) && (n = t ? e[1] : u(e[1], s.duration), e[2] !== a && (i = e[2]))) : r = e, t || (n = n || s.easing), m.isFunction(r) && (r = r.call(o, V, w)), m.isFunction(i) && (i = i.call(o, V, w)), [r || 0, n, i]; + } function d(e, t) { + var r, a; return a = (t || "0").toString().toLowerCase().replace(/[%A-z]+$/, function (e) { + return r = e, ""; + }), r || (r = S.Values.getUnitType(e)), [a, r]; + } function h() { + var e = { myParent: o.parentNode || r.body, position: S.getPropertyValue(o, "position"), fontSize: S.getPropertyValue(o, "fontSize") }, + a = e.position === L.lastPosition && e.myParent === L.lastParent, + n = e.fontSize === L.lastFontSize; L.lastParent = e.myParent, L.lastPosition = e.position, L.lastFontSize = e.fontSize; var s = 100, + l = {}; if (n && a) l.emToPx = L.lastEmToPx, l.percentToPxWidth = L.lastPercentToPxWidth, l.percentToPxHeight = L.lastPercentToPxHeight; else { + var u = i(o).isSVG ? r.createElementNS("http://www.w3.org/2000/svg", "rect") : r.createElement("div"); b.init(u), e.myParent.appendChild(u), f.each(["overflow", "overflowX", "overflowY"], function (e, t) { + b.CSS.setPropertyValue(u, t, "hidden"); + }), b.CSS.setPropertyValue(u, "position", e.position), b.CSS.setPropertyValue(u, "fontSize", e.fontSize), b.CSS.setPropertyValue(u, "boxSizing", "content-box"), f.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function (e, t) { + b.CSS.setPropertyValue(u, t, s + "%"); + }), b.CSS.setPropertyValue(u, "paddingLeft", s + "em"), l.percentToPxWidth = L.lastPercentToPxWidth = (parseFloat(S.getPropertyValue(u, "width", null, !0)) || 1) / s, l.percentToPxHeight = L.lastPercentToPxHeight = (parseFloat(S.getPropertyValue(u, "height", null, !0)) || 1) / s, l.emToPx = L.lastEmToPx = (parseFloat(S.getPropertyValue(u, "paddingLeft")) || 1) / s, e.myParent.removeChild(u); + } return null === L.remToPx && (L.remToPx = parseFloat(S.getPropertyValue(r.body, "fontSize")) || 16), null === L.vwToPx && (L.vwToPx = parseFloat(t.innerWidth) / 100, L.vhToPx = parseFloat(t.innerHeight) / 100), l.remToPx = L.remToPx, l.vwToPx = L.vwToPx, l.vhToPx = L.vhToPx, b.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(l), o), l; + } if (s.begin && 0 === V) try { + s.begin.call(g, g); + } catch (x) { + setTimeout(function () { + throw x; + }, 1); + } if ("scroll" === A) { + var P, + C, + T, + F = /^x$/i.test(s.axis) ? "Left" : "Top", + j = parseFloat(s.offset) || 0; s.container ? m.isWrapped(s.container) || m.isNode(s.container) ? (s.container = s.container[0] || s.container, P = s.container["scroll" + F], T = P + f(o).position()[F.toLowerCase()] + j) : s.container = null : (P = b.State.scrollAnchor[b.State["scrollProperty" + F]], C = b.State.scrollAnchor[b.State["scrollProperty" + ("Left" === F ? "Top" : "Left")]], T = f(o).offset()[F.toLowerCase()] + j), l = { scroll: { rootPropertyValue: !1, startValue: P, currentValue: P, endValue: T, unitType: "", easing: s.easing, scrollData: { container: s.container, direction: F, alternateValue: C } }, element: o }, b.debug && console.log("tweensContainer (scroll): ", l.scroll, o); + } else if ("reverse" === A) { + if (!i(o).tweensContainer) return void f.dequeue(o, s.queue); "none" === i(o).opts.display && (i(o).opts.display = "auto"), "hidden" === i(o).opts.visibility && (i(o).opts.visibility = "visible"), i(o).opts.loop = !1, i(o).opts.begin = null, i(o).opts.complete = null, v.easing || delete s.easing, v.duration || delete s.duration, s = f.extend({}, i(o).opts, s); var E = f.extend(!0, {}, i(o).tweensContainer); for (var H in E) { + if ("element" !== H) { + var N = E[H].startValue; E[H].startValue = E[H].currentValue = E[H].endValue, E[H].endValue = N, m.isEmptyObject(v) || (E[H].easing = s.easing), b.debug && console.log("reverse tweensContainer (" + H + "): " + JSON.stringify(E[H]), o); + } + } l = E; + } else if ("start" === A) { + var E; i(o).tweensContainer && i(o).isAnimating === !0 && (E = i(o).tweensContainer), f.each(y, function (e, t) { + if (RegExp("^" + S.Lists.colors.join("$|^") + "$").test(e)) { + var r = p(t, !0), + n = r[0], + o = r[1], + i = r[2]; if (S.RegEx.isHex.test(n)) { + for (var s = ["Red", "Green", "Blue"], l = S.Values.hexToRgb(n), u = i ? S.Values.hexToRgb(i) : a, c = 0; c < s.length; c++) { + var f = [l[c]]; o && f.push(o), u !== a && f.push(u[c]), y[e + s[c]] = f; + } delete y[e]; + } + } + }); for (var z in y) { + var O = p(y[z]), + q = O[0], + $ = O[1], + M = O[2]; z = S.Names.camelCase(z); var I = S.Hooks.getRoot(z), + B = !1; if (i(o).isSVG || "tween" === I || S.Names.prefixCheck(I)[1] !== !1 || S.Normalizations.registered[I] !== a) { + (s.display !== a && null !== s.display && "none" !== s.display || s.visibility !== a && "hidden" !== s.visibility) && /opacity|filter/.test(z) && !M && 0 !== q && (M = 0), s._cacheValues && E && E[z] ? (M === a && (M = E[z].endValue + E[z].unitType), B = i(o).rootPropertyValueCache[I]) : S.Hooks.registered[z] ? M === a ? (B = S.getPropertyValue(o, I), M = S.getPropertyValue(o, z, B)) : B = S.Hooks.templates[I][1] : M === a && (M = S.getPropertyValue(o, z)); var W, + G, + Y, + D = !1; if (W = d(z, M), M = W[0], Y = W[1], W = d(z, q), q = W[0].replace(/^([+-\/*])=/, function (e, t) { + return D = t, ""; + }), G = W[1], M = parseFloat(M) || 0, q = parseFloat(q) || 0, "%" === G && (/^(fontSize|lineHeight)$/.test(z) ? (q /= 100, G = "em") : /^scale/.test(z) ? (q /= 100, G = "") : /(Red|Green|Blue)$/i.test(z) && (q = q / 100 * 255, G = "")), /[\/*]/.test(D)) G = Y; else if (Y !== G && 0 !== M) if (0 === q) G = Y; else { + n = n || h(); var Q = /margin|padding|left|right|width|text|word|letter/i.test(z) || /X$/.test(z) || "x" === z ? "x" : "y"; switch (Y) { + case "%": + M *= "x" === Q ? n.percentToPxWidth : n.percentToPxHeight; break; case "px": + break; default: + M *= n[Y + "ToPx"]; + }switch (G) { + case "%": + M *= 1 / ("x" === Q ? n.percentToPxWidth : n.percentToPxHeight); break; case "px": + break; default: + M *= 1 / n[G + "ToPx"]; + } + } switch (D) { + case "+": + q = M + q; break; case "-": + q = M - q; break; case "*": + q = M * q; break; case "/": + q = M / q; + }l[z] = { rootPropertyValue: B, startValue: M, currentValue: M, endValue: q, unitType: G, easing: $ }, b.debug && console.log("tweensContainer (" + z + "): " + JSON.stringify(l[z]), o); + } else b.debug && console.log("Skipping [" + I + "] due to a lack of browser support."); + } l.element = o; + } l.element && (S.Values.addClass(o, "velocity-animating"), R.push(l), "" === s.queue && (i(o).tweensContainer = l, i(o).opts = s), i(o).isAnimating = !0, V === w - 1 ? (b.State.calls.push([R, g, s, null, k.resolver]), b.State.isTicking === !1 && (b.State.isTicking = !0, c())) : V++); + } var n, + o = this, + s = f.extend({}, b.defaults, v), + l = {}; switch (i(o) === a && b.init(o), parseFloat(s.delay) && s.queue !== !1 && f.queue(o, s.queue, function (e) { + b.velocityQueueEntryFlag = !0, i(o).delayTimer = { setTimeout: setTimeout(e, parseFloat(s.delay)), next: e }; + }), s.duration.toString().toLowerCase()) { + case "fast": + s.duration = 200; break; case "normal": + s.duration = h; break; case "slow": + s.duration = 600; break; default: + s.duration = parseFloat(s.duration) || 1; + }b.mock !== !1 && (b.mock === !0 ? s.duration = s.delay = 1 : (s.duration *= parseFloat(b.mock) || 1, s.delay *= parseFloat(b.mock) || 1)), s.easing = u(s.easing, s.duration), s.begin && !m.isFunction(s.begin) && (s.begin = null), s.progress && !m.isFunction(s.progress) && (s.progress = null), s.complete && !m.isFunction(s.complete) && (s.complete = null), s.display !== a && null !== s.display && (s.display = s.display.toString().toLowerCase(), "auto" === s.display && (s.display = b.CSS.Values.getDisplayType(o))), s.visibility !== a && null !== s.visibility && (s.visibility = s.visibility.toString().toLowerCase()), s.mobileHA = s.mobileHA && b.State.isMobile && !b.State.isGingerbread, s.queue === !1 ? s.delay ? setTimeout(e, s.delay) : e() : f.queue(o, s.queue, function (t, r) { + return r === !0 ? (k.promise && k.resolver(g), !0) : (b.velocityQueueEntryFlag = !0, void e(t)); + }), "" !== s.queue && "fx" !== s.queue || "inprogress" === f.queue(o)[0] || f.dequeue(o); + } var s, + l, + d, + g, + y, + v, + x = arguments[0] && (arguments[0].p || f.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || m.isString(arguments[0].properties)); if (m.isWrapped(this) ? (s = !1, d = 0, g = this, l = this) : (s = !0, d = 1, g = x ? arguments[0].elements || arguments[0].e : arguments[0]), g = o(g)) { + x ? (y = arguments[0].properties || arguments[0].p, v = arguments[0].options || arguments[0].o) : (y = arguments[d], v = arguments[d + 1]); var w = g.length, + V = 0; if (!/^(stop|finish)$/i.test(y) && !f.isPlainObject(v)) { + var C = d + 1; v = {}; for (var T = C; T < arguments.length; T++) { + m.isArray(arguments[T]) || !/^(fast|normal|slow)$/i.test(arguments[T]) && !/^\d/.test(arguments[T]) ? m.isString(arguments[T]) || m.isArray(arguments[T]) ? v.easing = arguments[T] : m.isFunction(arguments[T]) && (v.complete = arguments[T]) : v.duration = arguments[T]; + } + } var k = { promise: null, resolver: null, rejecter: null }; s && b.Promise && (k.promise = new b.Promise(function (e, t) { + k.resolver = e, k.rejecter = t; + })); var A; switch (y) { + case "scroll": + A = "scroll"; break; case "reverse": + A = "reverse"; break; case "finish": case "stop": + f.each(g, function (e, t) { + i(t) && i(t).delayTimer && (clearTimeout(i(t).delayTimer.setTimeout), i(t).delayTimer.next && i(t).delayTimer.next(), delete i(t).delayTimer); + }); var F = []; return f.each(b.State.calls, function (e, t) { + t && f.each(t[1], function (r, n) { + var o = v === a ? "" : v; return o === !0 || t[2].queue === o || v === a && t[2].queue === !1 ? void f.each(g, function (r, a) { + a === n && ((v === !0 || m.isString(v)) && (f.each(f.queue(a, m.isString(v) ? v : ""), function (e, t) { + m.isFunction(t) && t(null, !0); + }), f.queue(a, m.isString(v) ? v : "", [])), "stop" === y ? (i(a) && i(a).tweensContainer && o !== !1 && f.each(i(a).tweensContainer, function (e, t) { + t.endValue = t.currentValue; + }), F.push(e)) : "finish" === y && (t[2].duration = 1)); + }) : !0; + }); + }), "stop" === y && (f.each(F, function (e, t) { + p(t, !0); + }), k.promise && k.resolver(g)), e(); default: + if (!f.isPlainObject(y) || m.isEmptyObject(y)) { + if (m.isString(y) && b.Redirects[y]) { + var j = f.extend({}, v), + E = j.duration, + H = j.delay || 0; return j.backwards === !0 && (g = f.extend(!0, [], g).reverse()), f.each(g, function (e, t) { + parseFloat(j.stagger) ? j.delay = H + parseFloat(j.stagger) * e : m.isFunction(j.stagger) && (j.delay = H + j.stagger.call(t, e, w)), j.drag && (j.duration = parseFloat(E) || (/^(callout|transition)/.test(y) ? 1e3 : h), j.duration = Math.max(j.duration * (j.backwards ? 1 - e / w : (e + 1) / w), .75 * j.duration, 200)), b.Redirects[y].call(t, t, j || {}, e, w, g, k.promise ? k : a); + }), e(); + } var N = "Velocity: First argument (" + y + ") was not a property map, a known action, or a registered redirect. Aborting."; return k.promise ? k.rejecter(new Error(N)) : console.log(N), e(); + } A = "start"; + }var L = { lastParent: null, lastPosition: null, lastFontSize: null, lastPercentToPxWidth: null, lastPercentToPxHeight: null, lastEmToPx: null, remToPx: null, vwToPx: null, vhToPx: null }, + R = []; f.each(g, function (e, t) { + m.isNode(t) && n.call(t); + }); var z, + j = f.extend({}, b.defaults, v); if (j.loop = parseInt(j.loop), z = 2 * j.loop - 1, j.loop) for (var O = 0; z > O; O++) { + var q = { delay: j.delay, progress: j.progress }; O === z - 1 && (q.display = j.display, q.visibility = j.visibility, q.complete = j.complete), P(g, "reverse", q); + } return e(); + } + }; b = f.extend(P, b), b.animate = P; var w = t.requestAnimationFrame || g; return b.State.isMobile || r.hidden === a || r.addEventListener("visibilitychange", function () { + r.hidden ? (w = function (e) { + return setTimeout(function () { + e(!0); + }, 16); + }, c()) : w = t.requestAnimationFrame || g; + }), e.Velocity = b, e !== t && (e.fn.velocity = P, e.fn.velocity.defaults = b.defaults), f.each(["Down", "Up"], function (e, t) { + b.Redirects["slide" + t] = function (e, r, n, o, i, s) { + var l = f.extend({}, r), + u = l.begin, + c = l.complete, + p = { height: "", marginTop: "", marginBottom: "", paddingTop: "", paddingBottom: "" }, + d = {}; l.display === a && (l.display = "Down" === t ? "inline" === b.CSS.Values.getDisplayType(e) ? "inline-block" : "block" : "none"), l.begin = function () { + u && u.call(i, i); for (var r in p) { + d[r] = e.style[r]; var a = b.CSS.getPropertyValue(e, r); p[r] = "Down" === t ? [a, 0] : [0, a]; + } d.overflow = e.style.overflow, e.style.overflow = "hidden"; + }, l.complete = function () { + for (var t in d) { + e.style[t] = d[t]; + } c && c.call(i, i), s && s.resolver(i); + }, b(e, p, l); + }; + }), f.each(["In", "Out"], function (e, t) { + b.Redirects["fade" + t] = function (e, r, n, o, i, s) { + var l = f.extend({}, r), + u = { opacity: "In" === t ? 1 : 0 }, + c = l.complete; l.complete = n !== o - 1 ? l.begin = null : function () { + c && c.call(i, i), s && s.resolver(i); + }, l.display === a && (l.display = "In" === t ? "auto" : "none"), b(this, u, l); + }; + }), b; }(window.jQuery || window.Zepto || window, window, document); })); -;!function (a, b, c, d) { +; !function (a, b, c, d) { "use strict"; function k(a, b, c) { return setTimeout(q(a, c), b); - }function l(a, b, c) { + } function l(a, b, c) { return Array.isArray(a) ? (m(a, c[b], c), !0) : !1; - }function m(a, b, c) { - var e;if (a) if (a.forEach) a.forEach(b, c);else if (a.length !== d) for (e = 0; e < a.length;) { + } function m(a, b, c) { + var e; if (a) if (a.forEach) a.forEach(b, c); else if (a.length !== d) for (e = 0; e < a.length;) { b.call(c, a[e], e, a), e++; } else for (e in a) { a.hasOwnProperty(e) && b.call(c, a[e], e, a); } - }function n(a, b, c) { + } function n(a, b, c) { for (var e = Object.keys(b), f = 0; f < e.length;) { (!c || c && a[e[f]] === d) && (a[e[f]] = b[e[f]]), f++; - }return a; - }function o(a, b) { + } return a; + } function o(a, b) { return n(a, b, !0); - }function p(a, b, c) { + } function p(a, b, c) { var e, - d = b.prototype;e = a.prototype = Object.create(d), e.constructor = a, e._super = d, c && n(e, c); - }function q(a, b) { + d = b.prototype; e = a.prototype = Object.create(d), e.constructor = a, e._super = d, c && n(e, c); + } function q(a, b) { return function () { return a.apply(b, arguments); }; - }function r(a, b) { + } function r(a, b) { return typeof a == g ? a.apply(b ? b[0] || d : d, b) : a; - }function s(a, b) { + } function s(a, b) { return a === d ? b : a; - }function t(a, b, c) { + } function t(a, b, c) { m(x(b), function (b) { a.addEventListener(b, c, !1); }); - }function u(a, b, c) { + } function u(a, b, c) { m(x(b), function (b) { a.removeEventListener(b, c, !1); }); - }function v(a, b) { + } function v(a, b) { for (; a;) { - if (a == b) return !0;a = a.parentNode; - }return !1; - }function w(a, b) { + if (a == b) return !0; a = a.parentNode; + } return !1; + } function w(a, b) { return a.indexOf(b) > -1; - }function x(a) { + } function x(a) { return a.trim().split(/\s+/g); - }function y(a, b, c) { - if (a.indexOf && !c) return a.indexOf(b);for (var d = 0; d < a.length;) { - if (c && a[d][c] == b || !c && a[d] === b) return d;d++; - }return -1; - }function z(a) { + } function y(a, b, c) { + if (a.indexOf && !c) return a.indexOf(b); for (var d = 0; d < a.length;) { + if (c && a[d][c] == b || !c && a[d] === b) return d; d++; + } return -1; + } function z(a) { return Array.prototype.slice.call(a, 0); - }function A(a, b, c) { + } function A(a, b, c) { for (var d = [], e = [], f = 0; f < a.length;) { - var g = b ? a[f][b] : a[f];y(e, g) < 0 && d.push(a[f]), e[f] = g, f++; - }return c && (d = b ? d.sort(function (a, c) { + var g = b ? a[f][b] : a[f]; y(e, g) < 0 && d.push(a[f]), e[f] = g, f++; + } return c && (d = b ? d.sort(function (a, c) { return a[b] > c[b]; }) : d.sort()), d; - }function B(a, b) { + } function B(a, b) { for (var c, f, g = b[0].toUpperCase() + b.slice(1), h = 0; h < e.length;) { - if (c = e[h], f = c ? c + g : b, f in a) return f;h++; - }return d; - }function D() { + if (c = e[h], f = c ? c + g : b, f in a) return f; h++; + } return d; + } function D() { return C++; - }function E(a) { - var b = a.ownerDocument;return b.defaultView || b.parentWindow; - }function ab(a, b) { - var c = this;this.manager = a, this.callback = b, this.element = a.element, this.target = a.options.inputTarget, this.domHandler = function (b) { + } function E(a) { + var b = a.ownerDocument; return b.defaultView || b.parentWindow; + } function ab(a, b) { + var c = this; this.manager = a, this.callback = b, this.element = a.element, this.target = a.options.inputTarget, this.domHandler = function (b) { r(a.options.enable, [a]) && c.handler(b); }, this.init(); - }function bb(a) { + } function bb(a) { var b, - c = a.options.inputClass;return b = c ? c : H ? wb : I ? Eb : G ? Gb : rb, new b(a, cb); - }function cb(a, b, c) { + c = a.options.inputClass; return b = c ? c : H ? wb : I ? Eb : G ? Gb : rb, new b(a, cb); + } function cb(a, b, c) { var d = c.pointers.length, - e = c.changedPointers.length, - f = b & O && 0 === d - e, - g = b & (Q | R) && 0 === d - e;c.isFirst = !!f, c.isFinal = !!g, f && (a.session = {}), c.eventType = b, db(a, c), a.emit("hammer.input", c), a.recognize(c), a.session.prevInput = c; - }function db(a, b) { + e = c.changedPointers.length, + f = b & O && 0 === d - e, + g = b & (Q | R) && 0 === d - e; c.isFirst = !!f, c.isFinal = !!g, f && (a.session = {}), c.eventType = b, db(a, c), a.emit("hammer.input", c), a.recognize(c), a.session.prevInput = c; + } function db(a, b) { var c = a.session, - d = b.pointers, - e = d.length;c.firstInput || (c.firstInput = gb(b)), e > 1 && !c.firstMultiple ? c.firstMultiple = gb(b) : 1 === e && (c.firstMultiple = !1);var f = c.firstInput, + d = b.pointers, + e = d.length; c.firstInput || (c.firstInput = gb(b)), e > 1 && !c.firstMultiple ? c.firstMultiple = gb(b) : 1 === e && (c.firstMultiple = !1); var f = c.firstInput, g = c.firstMultiple, h = g ? g.center : f.center, - i = b.center = hb(d);b.timeStamp = j(), b.deltaTime = b.timeStamp - f.timeStamp, b.angle = lb(h, i), b.distance = kb(h, i), eb(c, b), b.offsetDirection = jb(b.deltaX, b.deltaY), b.scale = g ? nb(g.pointers, d) : 1, b.rotation = g ? mb(g.pointers, d) : 0, fb(c, b);var k = a.element;v(b.srcEvent.target, k) && (k = b.srcEvent.target), b.target = k; - }function eb(a, b) { + i = b.center = hb(d); b.timeStamp = j(), b.deltaTime = b.timeStamp - f.timeStamp, b.angle = lb(h, i), b.distance = kb(h, i), eb(c, b), b.offsetDirection = jb(b.deltaX, b.deltaY), b.scale = g ? nb(g.pointers, d) : 1, b.rotation = g ? mb(g.pointers, d) : 0, fb(c, b); var k = a.element; v(b.srcEvent.target, k) && (k = b.srcEvent.target), b.target = k; + } function eb(a, b) { var c = b.center, - d = a.offsetDelta || {}, - e = a.prevDelta || {}, - f = a.prevInput || {};(b.eventType === O || f.eventType === Q) && (e = a.prevDelta = { x: f.deltaX || 0, y: f.deltaY || 0 }, d = a.offsetDelta = { x: c.x, y: c.y }), b.deltaX = e.x + (c.x - d.x), b.deltaY = e.y + (c.y - d.y); - }function fb(a, b) { + d = a.offsetDelta || {}, + e = a.prevDelta || {}, + f = a.prevInput || {}; (b.eventType === O || f.eventType === Q) && (e = a.prevDelta = { x: f.deltaX || 0, y: f.deltaY || 0 }, d = a.offsetDelta = { x: c.x, y: c.y }), b.deltaX = e.x + (c.x - d.x), b.deltaY = e.y + (c.y - d.y); + } function fb(a, b) { var f, - g, - h, - j, - c = a.lastInterval || b, - e = b.timeStamp - c.timeStamp;if (b.eventType != R && (e > N || c.velocity === d)) { - var k = c.deltaX - b.deltaX, + g, + h, + j, + c = a.lastInterval || b, + e = b.timeStamp - c.timeStamp; if (b.eventType != R && (e > N || c.velocity === d)) { + var k = c.deltaX - b.deltaX, l = c.deltaY - b.deltaY, - m = ib(e, k, l);g = m.x, h = m.y, f = i(m.x) > i(m.y) ? m.x : m.y, j = jb(k, l), a.lastInterval = b; - } else f = c.velocity, g = c.velocityX, h = c.velocityY, j = c.direction;b.velocity = f, b.velocityX = g, b.velocityY = h, b.direction = j; - }function gb(a) { + m = ib(e, k, l); g = m.x, h = m.y, f = i(m.x) > i(m.y) ? m.x : m.y, j = jb(k, l), a.lastInterval = b; + } else f = c.velocity, g = c.velocityX, h = c.velocityY, j = c.direction; b.velocity = f, b.velocityX = g, b.velocityY = h, b.direction = j; + } function gb(a) { for (var b = [], c = 0; c < a.pointers.length;) { b[c] = { clientX: h(a.pointers[c].clientX), clientY: h(a.pointers[c].clientY) }, c++; - }return { timeStamp: j(), pointers: b, center: hb(b), deltaX: a.deltaX, deltaY: a.deltaY }; - }function hb(a) { - var b = a.length;if (1 === b) return { x: h(a[0].clientX), y: h(a[0].clientY) };for (var c = 0, d = 0, e = 0; b > e;) { + } return { timeStamp: j(), pointers: b, center: hb(b), deltaX: a.deltaX, deltaY: a.deltaY }; + } function hb(a) { + var b = a.length; if (1 === b) return { x: h(a[0].clientX), y: h(a[0].clientY) }; for (var c = 0, d = 0, e = 0; b > e;) { c += a[e].clientX, d += a[e].clientY, e++; - }return { x: h(c / b), y: h(d / b) }; - }function ib(a, b, c) { + } return { x: h(c / b), y: h(d / b) }; + } function ib(a, b, c) { return { x: b / a || 0, y: c / a || 0 }; - }function jb(a, b) { + } function jb(a, b) { return a === b ? S : i(a) >= i(b) ? a > 0 ? T : U : b > 0 ? V : W; - }function kb(a, b, c) { - c || (c = $);var d = b[c[0]] - a[c[0]], - e = b[c[1]] - a[c[1]];return Math.sqrt(d * d + e * e); - }function lb(a, b, c) { - c || (c = $);var d = b[c[0]] - a[c[0]], - e = b[c[1]] - a[c[1]];return 180 * Math.atan2(e, d) / Math.PI; - }function mb(a, b) { + } function kb(a, b, c) { + c || (c = $); var d = b[c[0]] - a[c[0]], + e = b[c[1]] - a[c[1]]; return Math.sqrt(d * d + e * e); + } function lb(a, b, c) { + c || (c = $); var d = b[c[0]] - a[c[0]], + e = b[c[1]] - a[c[1]]; return 180 * Math.atan2(e, d) / Math.PI; + } function mb(a, b) { return lb(b[1], b[0], _) - lb(a[1], a[0], _); - }function nb(a, b) { + } function nb(a, b) { return kb(b[0], b[1], _) / kb(a[0], a[1], _); - }function rb() { + } function rb() { this.evEl = pb, this.evWin = qb, this.allow = !0, this.pressed = !1, ab.apply(this, arguments); - }function wb() { + } function wb() { this.evEl = ub, this.evWin = vb, ab.apply(this, arguments), this.store = this.manager.session.pointerEvents = []; - }function Ab() { + } function Ab() { this.evTarget = yb, this.evWin = zb, this.started = !1, ab.apply(this, arguments); - }function Bb(a, b) { + } function Bb(a, b) { var c = z(a.touches), - d = z(a.changedTouches);return b & (Q | R) && (c = A(c.concat(d), "identifier", !0)), [c, d]; - }function Eb() { + d = z(a.changedTouches); return b & (Q | R) && (c = A(c.concat(d), "identifier", !0)), [c, d]; + } function Eb() { this.evTarget = Db, this.targetIds = {}, ab.apply(this, arguments); - }function Fb(a, b) { + } function Fb(a, b) { var c = z(a.touches), - d = this.targetIds;if (b & (O | P) && 1 === c.length) return d[c[0].identifier] = !0, [c, c];var e, + d = this.targetIds; if (b & (O | P) && 1 === c.length) return d[c[0].identifier] = !0, [c, c]; var e, f, g = z(a.changedTouches), h = [], - i = this.target;if (f = c.filter(function (a) { - return v(a.target, i); - }), b === O) for (e = 0; e < f.length;) { - d[f[e].identifier] = !0, e++; - }for (e = 0; e < g.length;) { - d[g[e].identifier] && h.push(g[e]), b & (Q | R) && delete d[g[e].identifier], e++; - }return h.length ? [A(f.concat(h), "identifier", !0), h] : void 0; - }function Gb() { - ab.apply(this, arguments);var a = q(this.handler, this);this.touch = new Eb(this.manager, a), this.mouse = new rb(this.manager, a); - }function Pb(a, b) { + i = this.target; if (f = c.filter(function (a) { + return v(a.target, i); + }), b === O) for (e = 0; e < f.length;) { + d[f[e].identifier] = !0, e++; + } for (e = 0; e < g.length;) { + d[g[e].identifier] && h.push(g[e]), b & (Q | R) && delete d[g[e].identifier], e++; + } return h.length ? [A(f.concat(h), "identifier", !0), h] : void 0; + } function Gb() { + ab.apply(this, arguments); var a = q(this.handler, this); this.touch = new Eb(this.manager, a), this.mouse = new rb(this.manager, a); + } function Pb(a, b) { this.manager = a, this.set(b); - }function Qb(a) { - if (w(a, Mb)) return Mb;var b = w(a, Nb), - c = w(a, Ob);return b && c ? Nb + " " + Ob : b || c ? b ? Nb : Ob : w(a, Lb) ? Lb : Kb; - }function Yb(a) { + } function Qb(a) { + if (w(a, Mb)) return Mb; var b = w(a, Nb), + c = w(a, Ob); return b && c ? Nb + " " + Ob : b || c ? b ? Nb : Ob : w(a, Lb) ? Lb : Kb; + } function Yb(a) { this.id = D(), this.manager = null, this.options = o(a || {}, this.defaults), this.options.enable = s(this.options.enable, !0), this.state = Rb, this.simultaneous = {}, this.requireFail = []; - }function Zb(a) { + } function Zb(a) { return a & Wb ? "cancel" : a & Ub ? "end" : a & Tb ? "move" : a & Sb ? "start" : ""; - }function $b(a) { + } function $b(a) { return a == W ? "down" : a == V ? "up" : a == T ? "left" : a == U ? "right" : ""; - }function _b(a, b) { - var c = b.manager;return c ? c.get(a) : a; - }function ac() { + } function _b(a, b) { + var c = b.manager; return c ? c.get(a) : a; + } function ac() { Yb.apply(this, arguments); - }function bc() { + } function bc() { ac.apply(this, arguments), this.pX = null, this.pY = null; - }function cc() { + } function cc() { ac.apply(this, arguments); - }function dc() { + } function dc() { Yb.apply(this, arguments), this._timer = null, this._input = null; - }function ec() { + } function ec() { ac.apply(this, arguments); - }function fc() { + } function fc() { ac.apply(this, arguments); - }function gc() { + } function gc() { Yb.apply(this, arguments), this.pTime = !1, this.pCenter = !1, this._timer = null, this._input = null, this.count = 0; - }function hc(a, b) { + } function hc(a, b) { return b = b || {}, b.recognizers = s(b.recognizers, hc.defaults.preset), new kc(a, b); - }function kc(a, b) { + } function kc(a, b) { b = b || {}, this.options = o(b, hc.defaults), this.options.inputTarget = this.options.inputTarget || a, this.handlers = {}, this.session = {}, this.recognizers = [], this.element = a, this.input = bb(this), this.touchAction = new Pb(this, this.options.touchAction), lc(this, !0), m(b.recognizers, function (a) { - var b = this.add(new a[0](a[1]));a[2] && b.recognizeWith(a[2]), a[3] && b.requireFailure(a[3]); + var b = this.add(new a[0](a[1])); a[2] && b.recognizeWith(a[2]), a[3] && b.requireFailure(a[3]); }, this); - }function lc(a, b) { - var c = a.element;m(a.options.cssProps, function (a, d) { + } function lc(a, b) { + var c = a.element; m(a.options.cssProps, function (a, d) { c.style[B(c.style, d)] = b ? a : ""; }); - }function mc(a, c) { - var d = b.createEvent("Event");d.initEvent(a, !0, !0), d.gesture = c, c.target.dispatchEvent(d); - }var e = ["", "webkit", "moz", "MS", "ms", "o"], - f = b.createElement("div"), - g = "function", - h = Math.round, - i = Math.abs, - j = Date.now, - C = 1, - F = /mobile|tablet|ip(ad|hone|od)|android/i, - G = "ontouchstart" in a, - H = B(a, "PointerEvent") !== d, - I = G && F.test(navigator.userAgent), - J = "touch", - K = "pen", - L = "mouse", - M = "kinect", - N = 25, - O = 1, - P = 2, - Q = 4, - R = 8, - S = 1, - T = 2, - U = 4, - V = 8, - W = 16, - X = T | U, - Y = V | W, - Z = X | Y, - $ = ["x", "y"], - _ = ["clientX", "clientY"];ab.prototype = { handler: function () {}, init: function () { - this.evEl && t(this.element, this.evEl, this.domHandler), this.evTarget && t(this.target, this.evTarget, this.domHandler), this.evWin && t(E(this.element), this.evWin, this.domHandler); - }, destroy: function () { - this.evEl && u(this.element, this.evEl, this.domHandler), this.evTarget && u(this.target, this.evTarget, this.domHandler), this.evWin && u(E(this.element), this.evWin, this.domHandler); - } };var ob = { mousedown: O, mousemove: P, mouseup: Q }, + } function mc(a, c) { + var d = b.createEvent("Event"); d.initEvent(a, !0, !0), d.gesture = c, c.target.dispatchEvent(d); + } var e = ["", "webkit", "moz", "MS", "ms", "o"], + f = b.createElement("div"), + g = "function", + h = Math.round, + i = Math.abs, + j = Date.now, + C = 1, + F = /mobile|tablet|ip(ad|hone|od)|android/i, + G = "ontouchstart" in a, + H = B(a, "PointerEvent") !== d, + I = G && F.test(navigator.userAgent), + J = "touch", + K = "pen", + L = "mouse", + M = "kinect", + N = 25, + O = 1, + P = 2, + Q = 4, + R = 8, + S = 1, + T = 2, + U = 4, + V = 8, + W = 16, + X = T | U, + Y = V | W, + Z = X | Y, + $ = ["x", "y"], + _ = ["clientX", "clientY"]; ab.prototype = { + handler: function () { }, init: function () { + this.evEl && t(this.element, this.evEl, this.domHandler), this.evTarget && t(this.target, this.evTarget, this.domHandler), this.evWin && t(E(this.element), this.evWin, this.domHandler); + }, destroy: function () { + this.evEl && u(this.element, this.evEl, this.domHandler), this.evTarget && u(this.target, this.evTarget, this.domHandler), this.evWin && u(E(this.element), this.evWin, this.domHandler); + } + }; var ob = { mousedown: O, mousemove: P, mouseup: Q }, pb = "mousedown", - qb = "mousemove mouseup";p(rb, ab, { handler: function (a) { - var b = ob[a.type];b & O && 0 === a.button && (this.pressed = !0), b & P && 1 !== a.which && (b = Q), this.pressed && this.allow && (b & Q && (this.pressed = !1), this.callback(this.manager, b, { pointers: [a], changedPointers: [a], pointerType: L, srcEvent: a })); - } });var sb = { pointerdown: O, pointermove: P, pointerup: Q, pointercancel: R, pointerout: R }, - tb = { 2: J, 3: K, 4: L, 5: M }, - ub = "pointerdown", - vb = "pointermove pointerup pointercancel";a.MSPointerEvent && (ub = "MSPointerDown", vb = "MSPointerMove MSPointerUp MSPointerCancel"), p(wb, ab, { handler: function (a) { - var b = this.store, - c = !1, - d = a.type.toLowerCase().replace("ms", ""), - e = sb[d], - f = tb[a.pointerType] || a.pointerType, - g = f == J, - h = y(b, a.pointerId, "pointerId");e & O && (0 === a.button || g) ? 0 > h && (b.push(a), h = b.length - 1) : e & (Q | R) && (c = !0), 0 > h || (b[h] = a, this.callback(this.manager, e, { pointers: b, changedPointers: [a], pointerType: f, srcEvent: a }), c && b.splice(h, 1)); - } });var xb = { touchstart: O, touchmove: P, touchend: Q, touchcancel: R }, - yb = "touchstart", - zb = "touchstart touchmove touchend touchcancel";p(Ab, ab, { handler: function (a) { - var b = xb[a.type];if (b === O && (this.started = !0), this.started) { - var c = Bb.call(this, a, b);b & (Q | R) && 0 === c[0].length - c[1].length && (this.started = !1), this.callback(this.manager, b, { pointers: c[0], changedPointers: c[1], pointerType: J, srcEvent: a }); - } - } });var Cb = { touchstart: O, touchmove: P, touchend: Q, touchcancel: R }, - Db = "touchstart touchmove touchend touchcancel";p(Eb, ab, { handler: function (a) { - var b = Cb[a.type], - c = Fb.call(this, a, b);c && this.callback(this.manager, b, { pointers: c[0], changedPointers: c[1], pointerType: J, srcEvent: a }); - } }), p(Gb, ab, { handler: function (a, b, c) { - var d = c.pointerType == J, - e = c.pointerType == L;if (d) this.mouse.allow = !1;else if (e && !this.mouse.allow) return;b & (Q | R) && (this.mouse.allow = !0), this.callback(a, b, c); - }, destroy: function () { - this.touch.destroy(), this.mouse.destroy(); - } });var Hb = B(f.style, "touchAction"), - Ib = Hb !== d, - Jb = "compute", - Kb = "auto", - Lb = "manipulation", - Mb = "none", - Nb = "pan-x", - Ob = "pan-y";Pb.prototype = { set: function (a) { - a == Jb && (a = this.compute()), Ib && (this.manager.element.style[Hb] = a), this.actions = a.toLowerCase().trim(); - }, update: function () { - this.set(this.manager.options.touchAction); - }, compute: function () { - var a = [];return m(this.manager.recognizers, function (b) { - r(b.options.enable, [b]) && (a = a.concat(b.getTouchAction())); - }), Qb(a.join(" ")); - }, preventDefaults: function (a) { - if (!Ib) { - var b = a.srcEvent, - c = a.offsetDirection;if (this.manager.session.prevented) return b.preventDefault(), void 0;var d = this.actions, - e = w(d, Mb), - f = w(d, Ob), - g = w(d, Nb);return e || f && c & X || g && c & Y ? this.preventSrc(b) : void 0; - } - }, preventSrc: function (a) { - this.manager.session.prevented = !0, a.preventDefault(); - } };var Rb = 1, - Sb = 2, - Tb = 4, - Ub = 8, - Vb = Ub, - Wb = 16, - Xb = 32;Yb.prototype = { defaults: {}, set: function (a) { - return n(this.options, a), this.manager && this.manager.touchAction.update(), this; - }, recognizeWith: function (a) { - if (l(a, "recognizeWith", this)) return this;var b = this.simultaneous;return a = _b(a, this), b[a.id] || (b[a.id] = a, a.recognizeWith(this)), this; - }, dropRecognizeWith: function (a) { - return l(a, "dropRecognizeWith", this) ? this : (a = _b(a, this), delete this.simultaneous[a.id], this); - }, requireFailure: function (a) { - if (l(a, "requireFailure", this)) return this;var b = this.requireFail;return a = _b(a, this), -1 === y(b, a) && (b.push(a), a.requireFailure(this)), this; - }, dropRequireFailure: function (a) { - if (l(a, "dropRequireFailure", this)) return this;a = _b(a, this);var b = y(this.requireFail, a);return b > -1 && this.requireFail.splice(b, 1), this; - }, hasRequireFailures: function () { - return this.requireFail.length > 0; - }, canRecognizeWith: function (a) { - return !!this.simultaneous[a.id]; - }, emit: function (a) { - function d(d) { - b.manager.emit(b.options.event + (d ? Zb(c) : ""), a); - }var b = this, - c = this.state;Ub > c && d(!0), d(), c >= Ub && d(!0); - }, tryEmit: function (a) { - return this.canEmit() ? this.emit(a) : (this.state = Xb, void 0); - }, canEmit: function () { - for (var a = 0; a < this.requireFail.length;) { - if (!(this.requireFail[a].state & (Xb | Rb))) return !1;a++; - }return !0; - }, recognize: function (a) { - var b = n({}, a);return r(this.options.enable, [this, b]) ? (this.state & (Vb | Wb | Xb) && (this.state = Rb), this.state = this.process(b), this.state & (Sb | Tb | Ub | Wb) && this.tryEmit(b), void 0) : (this.reset(), this.state = Xb, void 0); - }, process: function () {}, getTouchAction: function () {}, reset: function () {} }, p(ac, Yb, { defaults: { pointers: 1 }, attrTest: function (a) { - var b = this.options.pointers;return 0 === b || a.pointers.length === b; - }, process: function (a) { - var b = this.state, - c = a.eventType, - d = b & (Sb | Tb), - e = this.attrTest(a);return d && (c & R || !e) ? b | Wb : d || e ? c & Q ? b | Ub : b & Sb ? b | Tb : Sb : Xb; - } }), p(bc, ac, { defaults: { event: "pan", threshold: 10, pointers: 1, direction: Z }, getTouchAction: function () { - var a = this.options.direction, - b = [];return a & X && b.push(Ob), a & Y && b.push(Nb), b; - }, directionTest: function (a) { - var b = this.options, - c = !0, - d = a.distance, - e = a.direction, - f = a.deltaX, - g = a.deltaY;return e & b.direction || (b.direction & X ? (e = 0 === f ? S : 0 > f ? T : U, c = f != this.pX, d = Math.abs(a.deltaX)) : (e = 0 === g ? S : 0 > g ? V : W, c = g != this.pY, d = Math.abs(a.deltaY))), a.direction = e, c && d > b.threshold && e & b.direction; - }, attrTest: function (a) { - return ac.prototype.attrTest.call(this, a) && (this.state & Sb || !(this.state & Sb) && this.directionTest(a)); - }, emit: function (a) { - this.pX = a.deltaX, this.pY = a.deltaY;var b = $b(a.direction);b && this.manager.emit(this.options.event + b, a), this._super.emit.call(this, a); - } }), p(cc, ac, { defaults: { event: "pinch", threshold: 0, pointers: 2 }, getTouchAction: function () { - return [Mb]; - }, attrTest: function (a) { - return this._super.attrTest.call(this, a) && (Math.abs(a.scale - 1) > this.options.threshold || this.state & Sb); - }, emit: function (a) { - if (this._super.emit.call(this, a), 1 !== a.scale) { - var b = a.scale < 1 ? "in" : "out";this.manager.emit(this.options.event + b, a); - } - } }), p(dc, Yb, { defaults: { event: "press", pointers: 1, time: 500, threshold: 5 }, getTouchAction: function () { - return [Kb]; - }, process: function (a) { - var b = this.options, - c = a.pointers.length === b.pointers, - d = a.distance < b.threshold, - e = a.deltaTime > b.time;if (this._input = a, !d || !c || a.eventType & (Q | R) && !e) this.reset();else if (a.eventType & O) this.reset(), this._timer = k(function () { - this.state = Vb, this.tryEmit(); - }, b.time, this);else if (a.eventType & Q) return Vb;return Xb; - }, reset: function () { - clearTimeout(this._timer); - }, emit: function (a) { - this.state === Vb && (a && a.eventType & Q ? this.manager.emit(this.options.event + "up", a) : (this._input.timeStamp = j(), this.manager.emit(this.options.event, this._input))); - } }), p(ec, ac, { defaults: { event: "rotate", threshold: 0, pointers: 2 }, getTouchAction: function () { - return [Mb]; - }, attrTest: function (a) { - return this._super.attrTest.call(this, a) && (Math.abs(a.rotation) > this.options.threshold || this.state & Sb); - } }), p(fc, ac, { defaults: { event: "swipe", threshold: 10, velocity: .65, direction: X | Y, pointers: 1 }, getTouchAction: function () { - return bc.prototype.getTouchAction.call(this); - }, attrTest: function (a) { - var c, - b = this.options.direction;return b & (X | Y) ? c = a.velocity : b & X ? c = a.velocityX : b & Y && (c = a.velocityY), this._super.attrTest.call(this, a) && b & a.direction && a.distance > this.options.threshold && i(c) > this.options.velocity && a.eventType & Q; - }, emit: function (a) { - var b = $b(a.direction);b && this.manager.emit(this.options.event + b, a), this.manager.emit(this.options.event, a); - } }), p(gc, Yb, { defaults: { event: "tap", pointers: 1, taps: 1, interval: 300, time: 250, threshold: 2, posThreshold: 10 }, getTouchAction: function () { - return [Lb]; - }, process: function (a) { - var b = this.options, - c = a.pointers.length === b.pointers, - d = a.distance < b.threshold, - e = a.deltaTime < b.time;if (this.reset(), a.eventType & O && 0 === this.count) return this.failTimeout();if (d && e && c) { - if (a.eventType != Q) return this.failTimeout();var f = this.pTime ? a.timeStamp - this.pTime < b.interval : !0, - g = !this.pCenter || kb(this.pCenter, a.center) < b.posThreshold;this.pTime = a.timeStamp, this.pCenter = a.center, g && f ? this.count += 1 : this.count = 1, this._input = a;var h = this.count % b.taps;if (0 === h) return this.hasRequireFailures() ? (this._timer = k(function () { - this.state = Vb, this.tryEmit(); - }, b.interval, this), Sb) : Vb; - }return Xb; - }, failTimeout: function () { - return this._timer = k(function () { - this.state = Xb; - }, this.options.interval, this), Xb; - }, reset: function () { - clearTimeout(this._timer); - }, emit: function () { - this.state == Vb && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input)); - } }), hc.VERSION = "2.0.4", hc.defaults = { domEvents: !1, touchAction: Jb, enable: !0, inputTarget: null, inputClass: null, preset: [[ec, { enable: !1 }], [cc, { enable: !1 }, ["rotate"]], [fc, { direction: X }], [bc, { direction: X }, ["swipe"]], [gc], [gc, { event: "doubletap", taps: 2 }, ["tap"]], [dc]], cssProps: { userSelect: "default", touchSelect: "none", touchCallout: "none", contentZooming: "none", userDrag: "none", tapHighlightColor: "rgba(0,0,0,0)" } };var ic = 1, - jc = 2;kc.prototype = { set: function (a) { - return n(this.options, a), a.touchAction && this.touchAction.update(), a.inputTarget && (this.input.destroy(), this.input.target = a.inputTarget, this.input.init()), this; - }, stop: function (a) { - this.session.stopped = a ? jc : ic; - }, recognize: function (a) { - var b = this.session;if (!b.stopped) { - this.touchAction.preventDefaults(a);var c, - d = this.recognizers, - e = b.curRecognizer;(!e || e && e.state & Vb) && (e = b.curRecognizer = null);for (var f = 0; f < d.length;) { - c = d[f], b.stopped === jc || e && c != e && !c.canRecognizeWith(e) ? c.reset() : c.recognize(a), !e && c.state & (Sb | Tb | Ub) && (e = b.curRecognizer = c), f++; + qb = "mousemove mouseup"; p(rb, ab, { + handler: function (a) { + var b = ob[a.type]; b & O && 0 === a.button && (this.pressed = !0), b & P && 1 !== a.which && (b = Q), this.pressed && this.allow && (b & Q && (this.pressed = !1), this.callback(this.manager, b, { pointers: [a], changedPointers: [a], pointerType: L, srcEvent: a })); } - } - }, get: function (a) { - if (a instanceof Yb) return a;for (var b = this.recognizers, c = 0; c < b.length; c++) { - if (b[c].options.event == a) return b[c]; - }return null; - }, add: function (a) { - if (l(a, "add", this)) return this;var b = this.get(a.options.event);return b && this.remove(b), this.recognizers.push(a), a.manager = this, this.touchAction.update(), a; - }, remove: function (a) { - if (l(a, "remove", this)) return this;var b = this.recognizers;return a = this.get(a), b.splice(y(b, a), 1), this.touchAction.update(), this; - }, on: function (a, b) { - var c = this.handlers;return m(x(a), function (a) { - c[a] = c[a] || [], c[a].push(b); - }), this; - }, off: function (a, b) { - var c = this.handlers;return m(x(a), function (a) { - b ? c[a].splice(y(c[a], b), 1) : delete c[a]; - }), this; - }, emit: function (a, b) { - this.options.domEvents && mc(a, b);var c = this.handlers[a] && this.handlers[a].slice();if (c && c.length) { - b.type = a, b.preventDefault = function () { - b.srcEvent.preventDefault(); - };for (var d = 0; d < c.length;) { - c[d](b), d++; - } - } - }, destroy: function () { - this.element && lc(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null; - } }, n(hc, { INPUT_START: O, INPUT_MOVE: P, INPUT_END: Q, INPUT_CANCEL: R, STATE_POSSIBLE: Rb, STATE_BEGAN: Sb, STATE_CHANGED: Tb, STATE_ENDED: Ub, STATE_RECOGNIZED: Vb, STATE_CANCELLED: Wb, STATE_FAILED: Xb, DIRECTION_NONE: S, DIRECTION_LEFT: T, DIRECTION_RIGHT: U, DIRECTION_UP: V, DIRECTION_DOWN: W, DIRECTION_HORIZONTAL: X, DIRECTION_VERTICAL: Y, DIRECTION_ALL: Z, Manager: kc, Input: ab, TouchAction: Pb, TouchInput: Eb, MouseInput: rb, PointerEventInput: wb, TouchMouseInput: Gb, SingleTouchInput: Ab, Recognizer: Yb, AttrRecognizer: ac, Tap: gc, Pan: bc, Swipe: fc, Pinch: cc, Rotate: ec, Press: dc, on: t, off: u, each: m, merge: o, extend: n, inherit: p, bindFn: q, prefixed: B }), typeof define == g && define.amd ? define(function () { - return hc; - }) : "undefined" != typeof module && module.exports ? module.exports = hc : a[c] = hc; -}(window, document, "Hammer");;(function (factory) { + }); var sb = { pointerdown: O, pointermove: P, pointerup: Q, pointercancel: R, pointerout: R }, + tb = { 2: J, 3: K, 4: L, 5: M }, + ub = "pointerdown", + vb = "pointermove pointerup pointercancel"; a.MSPointerEvent && (ub = "MSPointerDown", vb = "MSPointerMove MSPointerUp MSPointerCancel"), p(wb, ab, { + handler: function (a) { + var b = this.store, + c = !1, + d = a.type.toLowerCase().replace("ms", ""), + e = sb[d], + f = tb[a.pointerType] || a.pointerType, + g = f == J, + h = y(b, a.pointerId, "pointerId"); e & O && (0 === a.button || g) ? 0 > h && (b.push(a), h = b.length - 1) : e & (Q | R) && (c = !0), 0 > h || (b[h] = a, this.callback(this.manager, e, { pointers: b, changedPointers: [a], pointerType: f, srcEvent: a }), c && b.splice(h, 1)); + } + }); var xb = { touchstart: O, touchmove: P, touchend: Q, touchcancel: R }, + yb = "touchstart", + zb = "touchstart touchmove touchend touchcancel"; p(Ab, ab, { + handler: function (a) { + var b = xb[a.type]; if (b === O && (this.started = !0), this.started) { + var c = Bb.call(this, a, b); b & (Q | R) && 0 === c[0].length - c[1].length && (this.started = !1), this.callback(this.manager, b, { pointers: c[0], changedPointers: c[1], pointerType: J, srcEvent: a }); + } + } + }); var Cb = { touchstart: O, touchmove: P, touchend: Q, touchcancel: R }, + Db = "touchstart touchmove touchend touchcancel"; p(Eb, ab, { + handler: function (a) { + var b = Cb[a.type], + c = Fb.call(this, a, b); c && this.callback(this.manager, b, { pointers: c[0], changedPointers: c[1], pointerType: J, srcEvent: a }); + } + }), p(Gb, ab, { + handler: function (a, b, c) { + var d = c.pointerType == J, + e = c.pointerType == L; if (d) this.mouse.allow = !1; else if (e && !this.mouse.allow) return; b & (Q | R) && (this.mouse.allow = !0), this.callback(a, b, c); + }, destroy: function () { + this.touch.destroy(), this.mouse.destroy(); + } + }); var Hb = B(f.style, "touchAction"), + Ib = Hb !== d, + Jb = "compute", + Kb = "auto", + Lb = "manipulation", + Mb = "none", + Nb = "pan-x", + Ob = "pan-y"; Pb.prototype = { + set: function (a) { + a == Jb && (a = this.compute()), Ib && (this.manager.element.style[Hb] = a), this.actions = a.toLowerCase().trim(); + }, update: function () { + this.set(this.manager.options.touchAction); + }, compute: function () { + var a = []; return m(this.manager.recognizers, function (b) { + r(b.options.enable, [b]) && (a = a.concat(b.getTouchAction())); + }), Qb(a.join(" ")); + }, preventDefaults: function (a) { + if (!Ib) { + var b = a.srcEvent, + c = a.offsetDirection; if (this.manager.session.prevented) return b.preventDefault(), void 0; var d = this.actions, + e = w(d, Mb), + f = w(d, Ob), + g = w(d, Nb); return e || f && c & X || g && c & Y ? this.preventSrc(b) : void 0; + } + }, preventSrc: function (a) { + this.manager.session.prevented = !0, a.preventDefault(); + } + }; var Rb = 1, + Sb = 2, + Tb = 4, + Ub = 8, + Vb = Ub, + Wb = 16, + Xb = 32; Yb.prototype = { + defaults: {}, set: function (a) { + return n(this.options, a), this.manager && this.manager.touchAction.update(), this; + }, recognizeWith: function (a) { + if (l(a, "recognizeWith", this)) return this; var b = this.simultaneous; return a = _b(a, this), b[a.id] || (b[a.id] = a, a.recognizeWith(this)), this; + }, dropRecognizeWith: function (a) { + return l(a, "dropRecognizeWith", this) ? this : (a = _b(a, this), delete this.simultaneous[a.id], this); + }, requireFailure: function (a) { + if (l(a, "requireFailure", this)) return this; var b = this.requireFail; return a = _b(a, this), -1 === y(b, a) && (b.push(a), a.requireFailure(this)), this; + }, dropRequireFailure: function (a) { + if (l(a, "dropRequireFailure", this)) return this; a = _b(a, this); var b = y(this.requireFail, a); return b > -1 && this.requireFail.splice(b, 1), this; + }, hasRequireFailures: function () { + return this.requireFail.length > 0; + }, canRecognizeWith: function (a) { + return !!this.simultaneous[a.id]; + }, emit: function (a) { + function d(d) { + b.manager.emit(b.options.event + (d ? Zb(c) : ""), a); + } var b = this, + c = this.state; Ub > c && d(!0), d(), c >= Ub && d(!0); + }, tryEmit: function (a) { + return this.canEmit() ? this.emit(a) : (this.state = Xb, void 0); + }, canEmit: function () { + for (var a = 0; a < this.requireFail.length;) { + if (!(this.requireFail[a].state & (Xb | Rb))) return !1; a++; + } return !0; + }, recognize: function (a) { + var b = n({}, a); return r(this.options.enable, [this, b]) ? (this.state & (Vb | Wb | Xb) && (this.state = Rb), this.state = this.process(b), this.state & (Sb | Tb | Ub | Wb) && this.tryEmit(b), void 0) : (this.reset(), this.state = Xb, void 0); + }, process: function () { }, getTouchAction: function () { }, reset: function () { } + }, p(ac, Yb, { + defaults: { pointers: 1 }, attrTest: function (a) { + var b = this.options.pointers; return 0 === b || a.pointers.length === b; + }, process: function (a) { + var b = this.state, + c = a.eventType, + d = b & (Sb | Tb), + e = this.attrTest(a); return d && (c & R || !e) ? b | Wb : d || e ? c & Q ? b | Ub : b & Sb ? b | Tb : Sb : Xb; + } + }), p(bc, ac, { + defaults: { event: "pan", threshold: 10, pointers: 1, direction: Z }, getTouchAction: function () { + var a = this.options.direction, + b = []; return a & X && b.push(Ob), a & Y && b.push(Nb), b; + }, directionTest: function (a) { + var b = this.options, + c = !0, + d = a.distance, + e = a.direction, + f = a.deltaX, + g = a.deltaY; return e & b.direction || (b.direction & X ? (e = 0 === f ? S : 0 > f ? T : U, c = f != this.pX, d = Math.abs(a.deltaX)) : (e = 0 === g ? S : 0 > g ? V : W, c = g != this.pY, d = Math.abs(a.deltaY))), a.direction = e, c && d > b.threshold && e & b.direction; + }, attrTest: function (a) { + return ac.prototype.attrTest.call(this, a) && (this.state & Sb || !(this.state & Sb) && this.directionTest(a)); + }, emit: function (a) { + this.pX = a.deltaX, this.pY = a.deltaY; var b = $b(a.direction); b && this.manager.emit(this.options.event + b, a), this._super.emit.call(this, a); + } + }), p(cc, ac, { + defaults: { event: "pinch", threshold: 0, pointers: 2 }, getTouchAction: function () { + return [Mb]; + }, attrTest: function (a) { + return this._super.attrTest.call(this, a) && (Math.abs(a.scale - 1) > this.options.threshold || this.state & Sb); + }, emit: function (a) { + if (this._super.emit.call(this, a), 1 !== a.scale) { + var b = a.scale < 1 ? "in" : "out"; this.manager.emit(this.options.event + b, a); + } + } + }), p(dc, Yb, { + defaults: { event: "press", pointers: 1, time: 500, threshold: 5 }, getTouchAction: function () { + return [Kb]; + }, process: function (a) { + var b = this.options, + c = a.pointers.length === b.pointers, + d = a.distance < b.threshold, + e = a.deltaTime > b.time; if (this._input = a, !d || !c || a.eventType & (Q | R) && !e) this.reset(); else if (a.eventType & O) this.reset(), this._timer = k(function () { + this.state = Vb, this.tryEmit(); + }, b.time, this); else if (a.eventType & Q) return Vb; return Xb; + }, reset: function () { + clearTimeout(this._timer); + }, emit: function (a) { + this.state === Vb && (a && a.eventType & Q ? this.manager.emit(this.options.event + "up", a) : (this._input.timeStamp = j(), this.manager.emit(this.options.event, this._input))); + } + }), p(ec, ac, { + defaults: { event: "rotate", threshold: 0, pointers: 2 }, getTouchAction: function () { + return [Mb]; + }, attrTest: function (a) { + return this._super.attrTest.call(this, a) && (Math.abs(a.rotation) > this.options.threshold || this.state & Sb); + } + }), p(fc, ac, { + defaults: { event: "swipe", threshold: 10, velocity: .65, direction: X | Y, pointers: 1 }, getTouchAction: function () { + return bc.prototype.getTouchAction.call(this); + }, attrTest: function (a) { + var c, + b = this.options.direction; return b & (X | Y) ? c = a.velocity : b & X ? c = a.velocityX : b & Y && (c = a.velocityY), this._super.attrTest.call(this, a) && b & a.direction && a.distance > this.options.threshold && i(c) > this.options.velocity && a.eventType & Q; + }, emit: function (a) { + var b = $b(a.direction); b && this.manager.emit(this.options.event + b, a), this.manager.emit(this.options.event, a); + } + }), p(gc, Yb, { + defaults: { event: "tap", pointers: 1, taps: 1, interval: 300, time: 250, threshold: 2, posThreshold: 10 }, getTouchAction: function () { + return [Lb]; + }, process: function (a) { + var b = this.options, + c = a.pointers.length === b.pointers, + d = a.distance < b.threshold, + e = a.deltaTime < b.time; if (this.reset(), a.eventType & O && 0 === this.count) return this.failTimeout(); if (d && e && c) { + if (a.eventType != Q) return this.failTimeout(); var f = this.pTime ? a.timeStamp - this.pTime < b.interval : !0, + g = !this.pCenter || kb(this.pCenter, a.center) < b.posThreshold; this.pTime = a.timeStamp, this.pCenter = a.center, g && f ? this.count += 1 : this.count = 1, this._input = a; var h = this.count % b.taps; if (0 === h) return this.hasRequireFailures() ? (this._timer = k(function () { + this.state = Vb, this.tryEmit(); + }, b.interval, this), Sb) : Vb; + } return Xb; + }, failTimeout: function () { + return this._timer = k(function () { + this.state = Xb; + }, this.options.interval, this), Xb; + }, reset: function () { + clearTimeout(this._timer); + }, emit: function () { + this.state == Vb && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input)); + } + }), hc.VERSION = "2.0.4", hc.defaults = { domEvents: !1, touchAction: Jb, enable: !0, inputTarget: null, inputClass: null, preset: [[ec, { enable: !1 }], [cc, { enable: !1 }, ["rotate"]], [fc, { direction: X }], [bc, { direction: X }, ["swipe"]], [gc], [gc, { event: "doubletap", taps: 2 }, ["tap"]], [dc]], cssProps: { userSelect: "default", touchSelect: "none", touchCallout: "none", contentZooming: "none", userDrag: "none", tapHighlightColor: "rgba(0,0,0,0)" } }; var ic = 1, + jc = 2; kc.prototype = { + set: function (a) { + return n(this.options, a), a.touchAction && this.touchAction.update(), a.inputTarget && (this.input.destroy(), this.input.target = a.inputTarget, this.input.init()), this; + }, stop: function (a) { + this.session.stopped = a ? jc : ic; + }, recognize: function (a) { + var b = this.session; if (!b.stopped) { + this.touchAction.preventDefaults(a); var c, + d = this.recognizers, + e = b.curRecognizer; (!e || e && e.state & Vb) && (e = b.curRecognizer = null); for (var f = 0; f < d.length;) { + c = d[f], b.stopped === jc || e && c != e && !c.canRecognizeWith(e) ? c.reset() : c.recognize(a), !e && c.state & (Sb | Tb | Ub) && (e = b.curRecognizer = c), f++; + } + } + }, get: function (a) { + if (a instanceof Yb) return a; for (var b = this.recognizers, c = 0; c < b.length; c++) { + if (b[c].options.event == a) return b[c]; + } return null; + }, add: function (a) { + if (l(a, "add", this)) return this; var b = this.get(a.options.event); return b && this.remove(b), this.recognizers.push(a), a.manager = this, this.touchAction.update(), a; + }, remove: function (a) { + if (l(a, "remove", this)) return this; var b = this.recognizers; return a = this.get(a), b.splice(y(b, a), 1), this.touchAction.update(), this; + }, on: function (a, b) { + var c = this.handlers; return m(x(a), function (a) { + c[a] = c[a] || [], c[a].push(b); + }), this; + }, off: function (a, b) { + var c = this.handlers; return m(x(a), function (a) { + b ? c[a].splice(y(c[a], b), 1) : delete c[a]; + }), this; + }, emit: function (a, b) { + this.options.domEvents && mc(a, b); var c = this.handlers[a] && this.handlers[a].slice(); if (c && c.length) { + b.type = a, b.preventDefault = function () { + b.srcEvent.preventDefault(); + }; for (var d = 0; d < c.length;) { + c[d](b), d++; + } + } + }, destroy: function () { + this.element && lc(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null; + } + }, n(hc, { INPUT_START: O, INPUT_MOVE: P, INPUT_END: Q, INPUT_CANCEL: R, STATE_POSSIBLE: Rb, STATE_BEGAN: Sb, STATE_CHANGED: Tb, STATE_ENDED: Ub, STATE_RECOGNIZED: Vb, STATE_CANCELLED: Wb, STATE_FAILED: Xb, DIRECTION_NONE: S, DIRECTION_LEFT: T, DIRECTION_RIGHT: U, DIRECTION_UP: V, DIRECTION_DOWN: W, DIRECTION_HORIZONTAL: X, DIRECTION_VERTICAL: Y, DIRECTION_ALL: Z, Manager: kc, Input: ab, TouchAction: Pb, TouchInput: Eb, MouseInput: rb, PointerEventInput: wb, TouchMouseInput: Gb, SingleTouchInput: Ab, Recognizer: Yb, AttrRecognizer: ac, Tap: gc, Pan: bc, Swipe: fc, Pinch: cc, Rotate: ec, Press: dc, on: t, off: u, each: m, merge: o, extend: n, inherit: p, bindFn: q, prefixed: B }), typeof define == g && define.amd ? define(function () { + return hc; + }) : "undefined" != typeof module && module.exports ? module.exports = hc : a[c] = hc; +}(window, document, "Hammer");; (function (factory) { if (typeof define === 'function' && define.amd) { define(['jquery', 'hammerjs'], factory); } else if (typeof exports === 'object') { @@ -1277,10 +1353,10 @@ if (typeof exports !== 'undefined' && !exports.nodeType) { */ (function (window) { var lastTime = 0, - vendors = ['webkit', 'moz'], - requestAnimationFrame = window.requestAnimationFrame, - cancelAnimationFrame = window.cancelAnimationFrame, - i = vendors.length; + vendors = ['webkit', 'moz'], + requestAnimationFrame = window.requestAnimationFrame, + cancelAnimationFrame = window.cancelAnimationFrame, + i = vendors.length; // try to un-prefix existing raf while (--i >= 0 && !requestAnimationFrame) { @@ -1293,7 +1369,7 @@ if (typeof exports !== 'undefined' && !exports.nodeType) { if (!requestAnimationFrame || !cancelAnimationFrame) { requestAnimationFrame = function (callback) { var now = +Date.now(), - nextTime = Math.max(lastTime + 16, now); + nextTime = Math.max(lastTime + 16, now); return setTimeout(function () { callback(lastTime = nextTime); }, nextTime - now); @@ -1419,7 +1495,7 @@ if (Vel) { } else { Materialize.Vel = Velocity; } -;(function ($) { +; (function ($) { $.fn.collapsible = function (options, methodParam) { var defaults = { accordion: undefined, @@ -1451,13 +1527,17 @@ if (Vel) { object.parent().removeClass('active'); } if (object.parent().hasClass('active')) { - object.siblings('.collapsible-body').stop(true, false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function () { + object.siblings('.collapsible-body').stop(true, false).slideDown({ + duration: 350, easing: "easeOutQuart", queue: false, complete: function () { $(this).css('height', ''); - } }); + } + }); } else { - object.siblings('.collapsible-body').stop(true, false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function () { + object.siblings('.collapsible-body').stop(true, false).slideUp({ + duration: 350, easing: "easeOutQuart", queue: false, complete: function () { $(this).css('height', ''); - } }); + } + }); } $panel_headers.not(object).removeClass('active').parent().removeClass('active'); @@ -1486,13 +1566,17 @@ if (Vel) { object.parent().removeClass('active'); } if (object.parent().hasClass('active')) { - object.siblings('.collapsible-body').stop(true, false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function () { + object.siblings('.collapsible-body').stop(true, false).slideDown({ + duration: 350, easing: "easeOutQuart", queue: false, complete: function () { $(this).css('height', ''); - } }); + } + }); } else { - object.siblings('.collapsible-body').stop(true, false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function () { + object.siblings('.collapsible-body').stop(true, false).slideUp({ + duration: 350, easing: "easeOutQuart", queue: false, complete: function () { $(this).css('height', ''); - } }); + } + }); } } @@ -1596,7 +1680,7 @@ if (Vel) { $(document).ready(function () { $('.collapsible').collapsible(); }); -})(jQuery);;(function ($) { +})(jQuery);; (function ($) { // Add posibility to scroll to selected option // usefull for select for example @@ -1834,9 +1918,9 @@ if (Vel) { } // If origin is clicked and menu is open, close menu else if (origin.hasClass('active')) { - hideDropdown(); - $(document).off('click.' + activates.attr('id')); - } + hideDropdown(); + $(document).off('click.' + activates.attr('id')); + } } }); } // End else @@ -1853,7 +1937,7 @@ if (Vel) { $('.dropdown-button').dropdown(); }); })(jQuery); -;(function ($, Vel) { +; (function ($, Vel) { 'use strict'; var _defaults = { @@ -2246,7 +2330,7 @@ if (Vel) { } }; })(jQuery, Materialize.Vel); -;(function ($) { +; (function ($) { $.fn.materialbox = function () { @@ -2376,7 +2460,8 @@ if (Vel) { // Animate image + set z-index if (origin.hasClass('responsive-img')) { - origin.velocity({ 'max-width': newWidth, 'width': originalWidth }, { duration: 0, queue: false, + origin.velocity({ 'max-width': newWidth, 'width': originalWidth }, { + duration: 0, queue: false, complete: function () { origin.css({ left: 0, top: 0 }).velocity({ height: newHeight, @@ -2384,13 +2469,13 @@ if (Vel) { left: $(document).scrollLeft() + windowWidth / 2 - origin.parent('.material-placeholder').offset().left - newWidth / 2, top: $(document).scrollTop() + windowHeight / 2 - origin.parent('.material-placeholder').offset().top - newHeight / 2 }, { - duration: inDuration, - queue: false, - easing: 'easeOutQuad', - complete: function () { - doneAnimating = true; - } - }); + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function () { + doneAnimating = true; + } + }); } // End Complete }); // End Velocity } else { @@ -2400,13 +2485,13 @@ if (Vel) { left: $(document).scrollLeft() + windowWidth / 2 - origin.parent('.material-placeholder').offset().left - newWidth / 2, top: $(document).scrollTop() + windowHeight / 2 - origin.parent('.material-placeholder').offset().top - newHeight / 2 }, { - duration: inDuration, - queue: false, - easing: 'easeOutQuad', - complete: function () { - doneAnimating = true; - } - }); // End Velocity + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function () { + doneAnimating = true; + } + }); // End Velocity } // Handle Exit triggers @@ -2468,30 +2553,30 @@ if (Vel) { left: 0, top: 0 }, { - duration: outDuration, - queue: false, easing: 'easeOutQuad', - complete: function () { - placeholder.css({ - height: '', - width: '', - position: '', - top: '', - left: '' - }); + duration: outDuration, + queue: false, easing: 'easeOutQuad', + complete: function () { + placeholder.css({ + height: '', + width: '', + position: '', + top: '', + left: '' + }); - origin.removeAttr('style'); - origin.attr('style', originInlineStyles); + origin.removeAttr('style'); + origin.attr('style', originInlineStyles); - // Remove class - origin.removeClass('active'); - doneAnimating = true; + // Remove class + origin.removeClass('active'); + doneAnimating = true; - // Remove overflow overrides on ancestors - if (ancestorsChanged) { - ancestorsChanged.css('overflow', ''); + // Remove overflow overrides on ancestors + if (ancestorsChanged) { + ancestorsChanged.css('overflow', ''); + } } - } - }); + }); // Remove Caption + reset css settings on image $('.materialbox-caption').velocity({ opacity: 0 }, { @@ -2509,7 +2594,7 @@ if (Vel) { $('.materialboxed').materialbox(); }); })(jQuery); -;(function ($) { +; (function ($) { $.fn.parallax = function () { var window_width = $(window).width(); @@ -2563,7 +2648,7 @@ if (Vel) { }); }; })(jQuery); -;(function ($) { +; (function ($) { var methods = { init: function (options) { @@ -2582,21 +2667,21 @@ if (Vel) { // For each set of tabs, we want to keep track of // which tab is active and its associated content var $this = $(this), - window_width = $(window).width(); + window_width = $(window).width(); var $active, - $content, - $links = $this.find('li.tab a'), - $tabs_width = $this.width(), - $tabs_content = $(), - $tabs_wrapper, - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length, - $indicator, - index = 0, - prev_index = 0, - clicked = false, - clickedTimeout, - transition = 300; + $content, + $links = $this.find('li.tab a'), + $tabs_width = $this.width(), + $tabs_content = $(), + $tabs_wrapper, + $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length, + $indicator, + index = 0, + prev_index = 0, + clicked = false, + clickedTimeout, + transition = 300; // Finds right attribute for indicator based on active tab. // el: jQuery Object @@ -2807,10 +2892,10 @@ if (Vel) { $('ul.tabs').tabs(); }); })(jQuery); -;(function ($) { +; (function ($) { $.fn.tooltip = function (options) { var timeout = null, - margin = 5; + margin = 5; // Defaults var defaults = { @@ -2880,8 +2965,9 @@ if (Vel) { origin.off('mouseenter.tooltip mouseleave.tooltip'); // Mouse In var started = false, - timeoutRef; - origin.on({ 'mouseenter.tooltip': function (e) { + timeoutRef; + origin.on({ + 'mouseenter.tooltip': function (e) { var showTooltip = function () { setAttributes(); started = true; @@ -2920,51 +3006,51 @@ if (Vel) { } // Left Position else if (tooltipPosition === "left") { - targetTop = origin.offset().top + originHeight / 2 - tooltipHeight / 2; - targetLeft = origin.offset().left - tooltipWidth - margin; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + targetTop = origin.offset().top + originHeight / 2 - tooltipHeight / 2; + targetLeft = origin.offset().left - tooltipWidth - margin; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipHorizontalMovement = '-10px'; - backdrop.css({ - top: '-7px', - right: 0, - width: '14px', - height: '14px', - borderRadius: '14px 0 0 14px', - transformOrigin: '95% 50%', - marginTop: tooltipHeight / 2, - marginLeft: tooltipWidth - }); - } - // Right Position - else if (tooltipPosition === "right") { - targetTop = origin.offset().top + originHeight / 2 - tooltipHeight / 2; - targetLeft = origin.offset().left + originWidth + margin; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + tooltipHorizontalMovement = '-10px'; + backdrop.css({ + top: '-7px', + right: 0, + width: '14px', + height: '14px', + borderRadius: '14px 0 0 14px', + transformOrigin: '95% 50%', + marginTop: tooltipHeight / 2, + marginLeft: tooltipWidth + }); + } + // Right Position + else if (tooltipPosition === "right") { + targetTop = origin.offset().top + originHeight / 2 - tooltipHeight / 2; + targetLeft = origin.offset().left + originWidth + margin; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipHorizontalMovement = '+10px'; - backdrop.css({ - top: '-7px', - left: 0, - width: '14px', - height: '14px', - borderRadius: '0 14px 14px 0', - transformOrigin: '5% 50%', - marginTop: tooltipHeight / 2, - marginLeft: '0px' - }); - } else { - // Bottom Position - targetTop = origin.offset().top + origin.outerHeight() + margin; - targetLeft = origin.offset().left + originWidth / 2 - tooltipWidth / 2; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipVerticalMovement = '+10px'; - backdrop.css({ - top: 0, - left: 0, - marginLeft: tooltipWidth / 2 - backdropOffsetWidth / 2 - }); - } + tooltipHorizontalMovement = '+10px'; + backdrop.css({ + top: '-7px', + left: 0, + width: '14px', + height: '14px', + borderRadius: '0 14px 14px 0', + transformOrigin: '5% 50%', + marginTop: tooltipHeight / 2, + marginLeft: '0px' + }); + } else { + // Bottom Position + targetTop = origin.offset().top + origin.outerHeight() + margin; + targetLeft = origin.offset().left + originWidth / 2 - tooltipWidth / 2; + newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); + tooltipVerticalMovement = '+10px'; + backdrop.css({ + top: 0, + left: 0, + marginLeft: tooltipWidth / 2 - backdropOffsetWidth / 2 + }); + } // Set tooptip css placement tooltipEl.css({ @@ -2994,7 +3080,8 @@ if (Vel) { setTimeout(function () { if (started !== true) { tooltipEl.velocity({ - opacity: 0, translateY: 0, translateX: 0 }, { duration: 225, queue: false }); + opacity: 0, translateY: 0, translateX: 0 + }, { duration: 225, queue: false }); backdrop.velocity({ opacity: 0, scaleX: 1, scaleY: 1 }, { duration: 225, queue: false, @@ -3043,7 +3130,7 @@ if (Vel) { * https://github.com/fians/Waves/blob/master/LICENSE */ -;(function (window) { +; (function (window) { 'use strict'; var Waves = Waves || {}; @@ -3060,9 +3147,9 @@ if (Vel) { function offset(elem) { var docElem, - win, - box = { top: 0, left: 0 }, - doc = elem && elem.ownerDocument; + win, + box = { top: 0, left: 0 }, + doc = elem && elem.ownerDocument; docElem = doc.documentElement; @@ -3367,7 +3454,7 @@ if (Vel) { Waves.displayEffect(); }, false); })(window); -;(function ($, Vel) { +; (function ($, Vel) { 'use strict'; var _defaults = { @@ -3439,7 +3526,7 @@ if (Vel) { if (this.options.className) { var classes = this.options.className.split(' '); var i = void 0, - count = void 0; + count = void 0; for (i = 0, count = classes.length; i < count; i++) { toast.classList.add(classes[i]); } @@ -3717,7 +3804,7 @@ if (Vel) { return new Toast(message, displayLength, className, completeCallback); }; })(jQuery, Materialize.Vel); -;(function ($) { +; (function ($) { var methods = { init: function (options) { @@ -3760,7 +3847,7 @@ if (Vel) { $dragTarget.css({ 'left': 0 }); // Add Touch Area } else { menu.addClass('right-aligned') // Change text-alignment to right - .css('transform', 'translateX(100%)'); + .css('transform', 'translateX(100%)'); $dragTarget.css({ 'right': 0 }); // Add Touch Area } @@ -3811,15 +3898,18 @@ if (Vel) { width: '' }); - $('#sidenav-overlay').velocity({ opacity: 0 }, { duration: 200, + $('#sidenav-overlay').velocity({ opacity: 0 }, { + duration: 200, queue: false, easing: 'easeOutQuad', complete: function () { $(this).remove(); - } }); + } + }); if (options.edge === 'left') { // Reset phantom div $dragTarget.css({ width: '', right: '', left: '0' }); - menu.velocity({ 'translateX': '-100%' }, { duration: 200, + menu.velocity({ 'translateX': '-100%' }, { + duration: 200, queue: false, easing: 'easeOutCubic', complete: function () { @@ -3834,7 +3924,8 @@ if (Vel) { } else { // Reset phantom div $dragTarget.css({ width: '', right: '0', left: '' }); - menu.velocity({ 'translateX': '100%' }, { duration: 200, + menu.velocity({ 'translateX': '100%' }, { + duration: 200, queue: false, easing: 'easeOutCubic', complete: function () { @@ -3918,8 +4009,8 @@ if (Vel) { } // Right Direction else if (x >= options.menuWidth / 2) { - menuOut = true; - } + menuOut = true; + } menu.css('transform', 'translateX(' + (x - options.menuWidth) + 'px)'); } else { // Left Direction @@ -3928,8 +4019,8 @@ if (Vel) { } // Right Direction else if (x >= window.innerWidth - options.menuWidth / 2) { - menuOut = false; - } + menuOut = false; + } var rightPos = x - options.menuWidth / 2; if (rightPos < 0) { rightPos = 0; @@ -3983,7 +4074,8 @@ if (Vel) { }); // Slide menu closed menu.velocity({ 'translateX': [-1 * options.menuWidth - 10, leftPos] }, { duration: 200, queue: false, easing: 'easeOutQuad' }); - $overlay.velocity({ opacity: 0 }, { duration: 200, queue: false, easing: 'easeOutQuad', + $overlay.velocity({ opacity: 0 }, { + duration: 200, queue: false, easing: 'easeOutQuad', complete: function () { // Run 'onClose' when sidenav is closed via touch/swipe if applicable if (typeof options.onClose === 'function') { @@ -3991,7 +4083,8 @@ if (Vel) { } $(this).remove(); - } }); + } + }); $dragTarget.css({ width: '10px', right: '', left: 0 }); } } else { @@ -4013,7 +4106,8 @@ if (Vel) { // Slide menu closed menu.velocity({ 'translateX': [options.menuWidth + 10, rightPos] }, { duration: 200, queue: false, easing: 'easeOutQuad' }); - $overlay.velocity({ opacity: 0 }, { duration: 200, queue: false, easing: 'easeOutQuad', + $overlay.velocity({ opacity: 0 }, { + duration: 200, queue: false, easing: 'easeOutQuad', complete: function () { // Run 'onClose' when sidenav is closed via touch/swipe if applicable if (typeof options.onClose === 'function') { @@ -4021,7 +4115,8 @@ if (Vel) { } $(this).remove(); - } }); + } + }); $dragTarget.css({ width: '10px', right: 0, left: '' }); } } @@ -4059,7 +4154,8 @@ if (Vel) { menuOut = false; panning = false; removeMenu(); - $overlay.velocity({ opacity: 0 }, { duration: 300, queue: false, easing: 'easeOutQuad', + $overlay.velocity({ opacity: 0 }, { + duration: 300, queue: false, easing: 'easeOutQuad', complete: function () { $(this).remove(); } @@ -4068,7 +4164,8 @@ if (Vel) { // Append body $('body').append($overlay); - $overlay.velocity({ opacity: 1 }, { duration: 300, queue: false, easing: 'easeOutQuad', + $overlay.velocity({ opacity: 1 }, { + duration: 300, queue: false, easing: 'easeOutQuad', complete: function () { menuOut = true; panning = false; @@ -4146,14 +4243,14 @@ if (Vel) { * @param {number} left * @return {jQuery} A collection of elements */ - };function findElements(top, right, bottom, left) { + }; function findElements(top, right, bottom, left) { var hits = $(); $.each(elements, function (i, element) { if (element.height() > 0) { var elTop = element.offset().top, - elLeft = element.offset().left, - elRight = elLeft + element.width(), - elBottom = elTop + element.height(); + elLeft = element.offset().left, + elRight = elLeft + element.width(), + elBottom = elTop + element.height(); var isIntersect = !(elLeft > right || elRight < left || elTop > bottom || elBottom < top); @@ -4175,9 +4272,9 @@ if (Vel) { // viewport rectangle var top = jWindow.scrollTop(), - left = jWindow.scrollLeft(), - right = left + jWindow.width(), - bottom = top + jWindow.height(); + left = jWindow.scrollLeft(), + right = left + jWindow.width(), + bottom = top + jWindow.height(); // determine which elements are in view var intersections = findElements(top + offset.top + scrollOffset || 200, right + offset.right, bottom + offset.bottom, left + offset.left); @@ -4342,7 +4439,7 @@ if (Vel) { return $.scrollSpy($(this), options); }; })(jQuery); -;(function ($) { +; (function ($) { $(document).ready(function () { // Function to update labels of text fields @@ -4664,10 +4761,10 @@ if (Vel) { return this.each(function () { var $input = $(this); var data = options.data, - count = 0, - activeIndex = -1, - oldVal, - $inputDiv = $input.closest('.input-field'); // Div to append on + count = 0, + activeIndex = -1, + oldVal, + $inputDiv = $input.closest('.input-field'); // Div to append on // Check if data isn't empty if (!$.isEmptyObject(data)) { @@ -4695,10 +4792,10 @@ if (Vel) { var highlight = function (string, $el) { var img = $el.find('img'); var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""), - matchEnd = matchStart + string.length - 1, - beforeMatch = $el.text().slice(0, matchStart), - matchText = $el.text().slice(matchStart, matchEnd + 1), - afterMatch = $el.text().slice(matchEnd + 1); + matchEnd = matchStart + string.length - 1, + beforeMatch = $el.text().slice(0, matchStart), + matchText = $el.text().slice(matchStart, matchEnd + 1), + afterMatch = $el.text().slice(matchEnd + 1); $el.html("" + beforeMatch + "" + matchText + "" + afterMatch + ""); if (img.length) { $el.prepend(img); @@ -4767,9 +4864,9 @@ if (Vel) { $input.off('keydown.autocomplete').on('keydown.autocomplete', function (e) { // Arrow keys and enter key usage var keyCode = e.which, - liElement, - numItems = $autocomplete.children('li').length, - $active = $autocomplete.children('.active').first(); + liElement, + numItems = $autocomplete.children('li').length, + $active = $autocomplete.children('.active').first(); // select element on Enter if (keyCode === 13 && activeIndex >= 0) { @@ -4833,7 +4930,7 @@ if (Vel) { } var multiple = $select.attr('multiple') ? true : false, - lastID = $select.attr('data-select-id'); // Tear down structure if Select needs to be rebuilt + lastID = $select.attr('data-select-id'); // Tear down structure if Select needs to be rebuilt if (lastID) { $select.parent().find('span.caret').remove(); @@ -4856,9 +4953,9 @@ if (Vel) { wrapper.addClass($select.attr('class')); if ($select.is(':disabled')) wrapper.addClass('disabled'); var options = $(''), - selectChildren = $select.children('option, optgroup'), - valuesSelected = [], - optionsHover = false; + selectChildren = $select.children('option, optgroup'), + valuesSelected = [], + optionsHover = false; var label = $select.find('option:selected').html() || $select.find('option:first').html() || ""; @@ -5035,86 +5132,86 @@ if (Vel) { // Allow user to search by typing // this array is cleared after 1 second var filterQuery = [], - onKeyDown = function (e) { - // TAB - switch to another input - if (e.which == 9) { - $newSelect.trigger('close'); - return; - } - - // ARROW DOWN WHEN SELECT IS CLOSED - open select options - if (e.which == 40 && !options.is(':visible')) { - $newSelect.trigger('open'); - return; - } - - // ENTER WHEN SELECT IS CLOSED - submit form - if (e.which == 13 && !options.is(':visible')) { - return; - } - - e.preventDefault(); - - // CASE WHEN USER TYPE LETTERS - var letter = String.fromCharCode(e.which).toLowerCase(), - nonLetters = [9, 13, 27, 38, 40]; - if (letter && nonLetters.indexOf(e.which) === -1) { - filterQuery.push(letter); - - var string = filterQuery.join(''), - newOption = options.find('li').filter(function () { - return $(this).text().toLowerCase().indexOf(string) === 0; - })[0]; - - if (newOption) { - activateOption(options, newOption); + onKeyDown = function (e) { + // TAB - switch to another input + if (e.which == 9) { + $newSelect.trigger('close'); + return; } - } - // ENTER - select option and close when select options are opened - if (e.which == 13) { - var activeOption = options.find('li.selected:not(.disabled)')[0]; - if (activeOption) { - $(activeOption).trigger('click'); - if (!multiple) { - $newSelect.trigger('close'); + // ARROW DOWN WHEN SELECT IS CLOSED - open select options + if (e.which == 40 && !options.is(':visible')) { + $newSelect.trigger('open'); + return; + } + + // ENTER WHEN SELECT IS CLOSED - submit form + if (e.which == 13 && !options.is(':visible')) { + return; + } + + e.preventDefault(); + + // CASE WHEN USER TYPE LETTERS + var letter = String.fromCharCode(e.which).toLowerCase(), + nonLetters = [9, 13, 27, 38, 40]; + if (letter && nonLetters.indexOf(e.which) === -1) { + filterQuery.push(letter); + + var string = filterQuery.join(''), + newOption = options.find('li').filter(function () { + return $(this).text().toLowerCase().indexOf(string) === 0; + })[0]; + + if (newOption) { + activateOption(options, newOption); } } - } - // ARROW DOWN - move to next not disabled option - if (e.which == 40) { - if (options.find('li.selected').length) { - newOption = options.find('li.selected').next('li:not(.disabled)')[0]; - } else { - newOption = options.find('li:not(.disabled)')[0]; + // ENTER - select option and close when select options are opened + if (e.which == 13) { + var activeOption = options.find('li.selected:not(.disabled)')[0]; + if (activeOption) { + $(activeOption).trigger('click'); + if (!multiple) { + $newSelect.trigger('close'); + } + } } - activateOption(options, newOption); - } - // ESC - close options - if (e.which == 27) { - $newSelect.trigger('close'); - } + // ARROW DOWN - move to next not disabled option + if (e.which == 40) { + if (options.find('li.selected').length) { + newOption = options.find('li.selected').next('li:not(.disabled)')[0]; + } else { + newOption = options.find('li:not(.disabled)')[0]; + } + activateOption(options, newOption); + } - // ARROW UP - move to previous not disabled option - if (e.which == 38) { - newOption = options.find('li.selected').prev('li:not(.disabled)')[0]; - if (newOption) activateOption(options, newOption); - } + // ESC - close options + if (e.which == 27) { + $newSelect.trigger('close'); + } - // Automaticaly clean filter query so user can search again by starting letters - setTimeout(function () { - filterQuery = []; - }, 1000); - }; + // ARROW UP - move to previous not disabled option + if (e.which == 38) { + newOption = options.find('li.selected').prev('li:not(.disabled)')[0]; + if (newOption) activateOption(options, newOption); + } + + // Automaticaly clean filter query so user can search again by starting letters + setTimeout(function () { + filterQuery = []; + }, 1000); + }; $newSelect.on('keydown', onKeyDown); }); function toggleEntryFromArray(entriesArray, entryIndex, select) { var index = entriesArray.indexOf(entryIndex), - notAdded = index === -1; + notAdded = index === -1; if (notAdded) { entriesArray.push(entryIndex); @@ -5148,7 +5245,7 @@ if (Vel) { } }; })(jQuery); -;(function ($) { +; (function ($) { var methods = { @@ -5188,7 +5285,7 @@ if (Vel) { // This function will transition the slide to any index of the next slide function moveToSlide(index) { // Wrap around indices. - if (index >= $slides.length) index = 0;else if (index < 0) index = $slides.length - 1; + if (index >= $slides.length) index = 0; else if (index < 0) index = $slides.length - 1; $active_index = $slider.find('.active').index(); @@ -5198,10 +5295,12 @@ if (Vel) { $caption = $active.find('.caption'); $active.removeClass('active'); - $active.velocity({ opacity: 0 }, { duration: options.transition, queue: false, easing: 'easeOutQuad', + $active.velocity({ opacity: 0 }, { + duration: options.transition, queue: false, easing: 'easeOutQuad', complete: function () { $slides.not('.active').velocity({ opacity: 0, translateX: 0, translateY: 0 }, { duration: 0, queue: false }); - } }); + } + }); captionTransition($caption, options.transition); // Update indicators @@ -5321,7 +5420,8 @@ if (Vel) { $curr_slide = $slider.find('.active'); if (Math.abs(velocityX) > Math.abs(velocityY)) { - $curr_slide.velocity({ translateX: x + $curr_slide.velocity({ + translateX: x }, { duration: 50, queue: false, easing: 'easeOutQuad' }); } @@ -5331,8 +5431,8 @@ if (Vel) { } // Swipe Right else if (direction === 2 && (x < -1 * $this.innerWidth() / 2 || velocityX > 0.65)) { - swipeLeft = true; - } + swipeLeft = true; + } // Make Slide Behind active slide visible var next_slide; @@ -5341,7 +5441,8 @@ if (Vel) { if (next_slide.length === 0) { next_slide = $slides.first(); } - next_slide.velocity({ opacity: 1 + next_slide.velocity({ + opacity: 1 }, { duration: 300, queue: false, easing: 'easeOutQuad' }); } if (swipeRight) { @@ -5349,7 +5450,8 @@ if (Vel) { if (next_slide.length === 0) { next_slide = $slides.last(); } - next_slide.velocity({ opacity: 1 + next_slide.velocity({ + opacity: 1 }, { duration: 300, queue: false, easing: 'easeOutQuad' }); } } @@ -5362,20 +5464,25 @@ if (Vel) { if (!swipeRight && !swipeLeft || $slides.length <= 1) { // Return to original spot - $curr_slide.velocity({ translateX: 0 + $curr_slide.velocity({ + translateX: 0 }, { duration: 300, queue: false, easing: 'easeOutQuad' }); } else if (swipeLeft) { moveToSlide(curr_index + 1); - $curr_slide.velocity({ translateX: -1 * $this.innerWidth() }, { duration: 300, queue: false, easing: 'easeOutQuad', + $curr_slide.velocity({ translateX: -1 * $this.innerWidth() }, { + duration: 300, queue: false, easing: 'easeOutQuad', complete: function () { $curr_slide.velocity({ opacity: 0, translateX: 0 }, { duration: 0, queue: false }); - } }); + } + }); } else if (swipeRight) { moveToSlide(curr_index - 1); - $curr_slide.velocity({ translateX: $this.innerWidth() }, { duration: 300, queue: false, easing: 'easeOutQuad', + $curr_slide.velocity({ translateX: $this.innerWidth() }, { + duration: 300, queue: false, easing: 'easeOutQuad', complete: function () { $curr_slide.velocity({ opacity: 0, translateX: 0 }, { duration: 0, queue: false }); - } }); + } + }); } swipeLeft = false; swipeRight = false; @@ -5443,7 +5550,7 @@ if (Vel) { } }; // Plugin end })(jQuery); -;(function ($) { +; (function ($) { $(document).ready(function () { $(document).on('click.card', '.card', function (e) { @@ -5471,7 +5578,7 @@ if (Vel) { }); }); })(jQuery); -;(function ($) { +; (function ($) { var materialChipsDefaults = { data: [], placeholder: '', @@ -5786,7 +5893,7 @@ if (Vel) { this.handleEvents(); }; })(jQuery); -;(function ($) { +; (function ($) { $.fn.pushpin = function (options) { // Defaults var defaults = { @@ -5811,8 +5918,8 @@ if (Vel) { $index = 0; return this.each(function () { var $uniqueId = Materialize.guid(), - $this = $(this), - $original_offset = $(this).offset().top; + $this = $(this), + $original_offset = $(this).offset().top; function removePinClasses(object) { object.removeClass('pin-top'); @@ -5853,7 +5960,7 @@ if (Vel) { }); }); }; -})(jQuery);;(function ($) { +})(jQuery);; (function ($) { $(document).ready(function () { // jQuery reverse @@ -6106,7 +6213,7 @@ if (Vel) { }, 200); }; })(jQuery); -;(function ($) { +; (function ($) { // Image transition function Materialize.fadeInImage = function (selectorOrEl) { var element; @@ -6195,7 +6302,8 @@ if (Vel) { var x = e.gesture.deltaX; var velocityX = e.gesture.velocityX; - $this.velocity({ translateX: x + $this.velocity({ + translateX: x }, { duration: 50, queue: false, easing: 'easeOutQuad' }); // Swipe Left @@ -6225,18 +6333,23 @@ if (Vel) { fullWidth = -1 * $this.innerWidth(); } - $this.velocity({ translateX: fullWidth - }, { duration: 100, queue: false, easing: 'easeOutQuad', complete: function () { + $this.velocity({ + translateX: fullWidth + }, { + duration: 100, queue: false, easing: 'easeOutQuad', complete: function () { $this.css('border', 'none'); - $this.velocity({ height: 0, padding: 0 - }, { duration: 200, queue: false, easing: 'easeOutQuad', complete: function () { + $this.velocity({ + height: 0, padding: 0 + }, { + duration: 200, queue: false, easing: 'easeOutQuad', complete: function () { $this.remove(); } - }); + }); } - }); + }); } else { - $this.velocity({ translateX: 0 + $this.velocity({ + translateX: 0 }, { duration: 100, queue: false, easing: 'easeOutQuad' }); } swipeLeft = false; @@ -6269,7 +6382,7 @@ if (Vel) { // }); }); })(jQuery); -;(function ($) { +; (function ($) { var scrollFireEventsHandled = false; @@ -6282,8 +6395,8 @@ if (Vel) { // Get options from each line var value = options[i]; var selector = value.selector, - offset = value.offset, - callback = value.callback; + offset = value.offset, + callback = value.callback; var currentElement = document.querySelector(selector); if (currentElement !== null) { @@ -6345,238 +6458,238 @@ if (Vel) { var IS_DEFAULT_THEME = false, - // The state of the picker. - STATE = { - id: ELEMENT.id || 'P' + Math.abs(~~(Math.random() * new Date())) - }, + // The state of the picker. + STATE = { + id: ELEMENT.id || 'P' + Math.abs(~~(Math.random() * new Date())) + }, - // Merge the defaults and options passed. - SETTINGS = COMPONENT ? $.extend(true, {}, COMPONENT.defaults, OPTIONS) : OPTIONS || {}, + // Merge the defaults and options passed. + SETTINGS = COMPONENT ? $.extend(true, {}, COMPONENT.defaults, OPTIONS) : OPTIONS || {}, - // Merge the default classes with the settings classes. - CLASSES = $.extend({}, PickerConstructor.klasses(), SETTINGS.klass), + // Merge the default classes with the settings classes. + CLASSES = $.extend({}, PickerConstructor.klasses(), SETTINGS.klass), - // The element node wrapper into a jQuery object. - $ELEMENT = $(ELEMENT), + // The element node wrapper into a jQuery object. + $ELEMENT = $(ELEMENT), - // Pseudo picker constructor. - PickerInstance = function () { - return this.start(); - }, + // Pseudo picker constructor. + PickerInstance = function () { + return this.start(); + }, - // The picker prototype. - P = PickerInstance.prototype = { + // The picker prototype. + P = PickerInstance.prototype = { - constructor: PickerInstance, + constructor: PickerInstance, - $node: $ELEMENT, + $node: $ELEMENT, - /** - * Initialize everything - */ - start: function () { + /** + * Initialize everything + */ + start: function () { - // If it’s already started, do nothing. - if (STATE && STATE.start) return P; + // If it’s already started, do nothing. + if (STATE && STATE.start) return P; - // Update the picker states. - STATE.methods = {}; - STATE.start = true; - STATE.open = false; - STATE.type = ELEMENT.type; + // Update the picker states. + STATE.methods = {}; + STATE.start = true; + STATE.open = false; + STATE.type = ELEMENT.type; - // Confirm focus state, convert into text input to remove UA stylings, - // and set as readonly to prevent keyboard popup. - ELEMENT.autofocus = ELEMENT == getActiveElement(); - ELEMENT.readOnly = !SETTINGS.editable; - ELEMENT.id = ELEMENT.id || STATE.id; - if (ELEMENT.type != 'text') { - ELEMENT.type = 'text'; - } - - // Create a new picker component with the settings. - P.component = new COMPONENT(P, SETTINGS); - - // Create the picker root with a holder and then prepare it. - P.$root = $(PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"')); - prepareElementRoot(); - - // If there’s a format for the hidden input element, create the element. - if (SETTINGS.formatSubmit) { - prepareElementHidden(); - } - - // Prepare the input element. - prepareElement(); - - // Insert the root as specified in the settings. - if (SETTINGS.container) $(SETTINGS.container).append(P.$root);else $ELEMENT.before(P.$root); - - // Bind the default component and settings events. - P.on({ - start: P.component.onStart, - render: P.component.onRender, - stop: P.component.onStop, - open: P.component.onOpen, - close: P.component.onClose, - set: P.component.onSet - }).on({ - start: SETTINGS.onStart, - render: SETTINGS.onRender, - stop: SETTINGS.onStop, - open: SETTINGS.onOpen, - close: SETTINGS.onClose, - set: SETTINGS.onSet - }); - - // Once we’re all set, check the theme in use. - IS_DEFAULT_THEME = isUsingDefaultTheme(P.$root.children()[0]); - - // If the element has autofocus, open the picker. - if (ELEMENT.autofocus) { - P.open(); - } - - // Trigger queued the “start” and “render” events. - return P.trigger('start').trigger('render'); - }, //start - - - /** - * Render a new picker - */ - render: function (entireComponent) { - - // Insert a new component holder in the root or box. - if (entireComponent) P.$root.html(createWrappedComponent());else P.$root.find('.' + CLASSES.box).html(P.component.nodes(STATE.open)); - - // Trigger the queued “render” events. - return P.trigger('render'); - }, //render - - - /** - * Destroy everything - */ - stop: function () { - - // If it’s already stopped, do nothing. - if (!STATE.start) return P; - - // Then close the picker. - P.close(); - - // Remove the hidden field. - if (P._hidden) { - P._hidden.parentNode.removeChild(P._hidden); - } - - // Remove the root. - P.$root.remove(); - - // Remove the input class, remove the stored data, and unbind - // the events (after a tick for IE - see `P.close`). - $ELEMENT.removeClass(CLASSES.input).removeData(NAME); - setTimeout(function () { - $ELEMENT.off('.' + STATE.id); - }, 0); - - // Restore the element state - ELEMENT.type = STATE.type; - ELEMENT.readOnly = false; - - // Trigger the queued “stop” events. - P.trigger('stop'); - - // Reset the picker states. - STATE.methods = {}; - STATE.start = false; - - return P; - }, //stop - - - /** - * Open up the picker - */ - open: function (dontGiveFocus) { - - // If it’s already open, do nothing. - if (STATE.open) return P; - - // Add the “active” class. - $ELEMENT.addClass(CLASSES.active); - aria(ELEMENT, 'expanded', true); - - // * A Firefox bug, when `html` has `overflow:hidden`, results in - // killing transitions :(. So add the “opened” state on the next tick. - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 - setTimeout(function () { - - // Add the “opened” class to the picker root. - P.$root.addClass(CLASSES.opened); - aria(P.$root[0], 'hidden', false); - }, 0); - - // If we have to give focus, bind the element and doc events. - if (dontGiveFocus !== false) { - - // Set it as open. - STATE.open = true; - - // Prevent the page from scrolling. - if (IS_DEFAULT_THEME) { - $html.css('overflow', 'hidden').css('padding-right', '+=' + getScrollbarWidth()); + // Confirm focus state, convert into text input to remove UA stylings, + // and set as readonly to prevent keyboard popup. + ELEMENT.autofocus = ELEMENT == getActiveElement(); + ELEMENT.readOnly = !SETTINGS.editable; + ELEMENT.id = ELEMENT.id || STATE.id; + if (ELEMENT.type != 'text') { + ELEMENT.type = 'text'; } - // Pass focus to the root element’s jQuery object. - // * Workaround for iOS8 to bring the picker’s root into view. - P.$root.eq(0).focus(); + // Create a new picker component with the settings. + P.component = new COMPONENT(P, SETTINGS); - // Bind the document events. - $document.on('click.' + STATE.id + ' focusin.' + STATE.id, function (event) { + // Create the picker root with a holder and then prepare it. + P.$root = $(PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"')); + prepareElementRoot(); - var target = event.target; + // If there’s a format for the hidden input element, create the element. + if (SETTINGS.formatSubmit) { + prepareElementHidden(); + } - // If the target of the event is not the element, close the picker picker. - // * Don’t worry about clicks or focusins on the root because those don’t bubble up. - // Also, for Firefox, a click on an `option` element bubbles up directly - // to the doc. So make sure the target wasn't the doc. - // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, - // which causes the picker to unexpectedly close when right-clicking it. So make - // sure the event wasn’t a right-click. - if (target != ELEMENT && target != document && event.which != 3) { + // Prepare the input element. + prepareElement(); - // If the target was the holder that covers the screen, - // keep the element focused to maintain tabindex. - P.close(target === P.$root.children()[0]); - } - }).on('keydown.' + STATE.id, function (event) { + // Insert the root as specified in the settings. + if (SETTINGS.container) $(SETTINGS.container).append(P.$root); else $ELEMENT.before(P.$root); - var - // Get the keycode. - keycode = event.keyCode, + // Bind the default component and settings events. + P.on({ + start: P.component.onStart, + render: P.component.onRender, + stop: P.component.onStop, + open: P.component.onOpen, + close: P.component.onClose, + set: P.component.onSet + }).on({ + start: SETTINGS.onStart, + render: SETTINGS.onRender, + stop: SETTINGS.onStop, + open: SETTINGS.onOpen, + close: SETTINGS.onClose, + set: SETTINGS.onSet + }); + + // Once we’re all set, check the theme in use. + IS_DEFAULT_THEME = isUsingDefaultTheme(P.$root.children()[0]); + + // If the element has autofocus, open the picker. + if (ELEMENT.autofocus) { + P.open(); + } + + // Trigger queued the “start” and “render” events. + return P.trigger('start').trigger('render'); + }, //start - // Translate that to a selection change. - keycodeToMove = P.component.key[keycode], + /** + * Render a new picker + */ + render: function (entireComponent) { + + // Insert a new component holder in the root or box. + if (entireComponent) P.$root.html(createWrappedComponent()); else P.$root.find('.' + CLASSES.box).html(P.component.nodes(STATE.open)); + + // Trigger the queued “render” events. + return P.trigger('render'); + }, //render - // Grab the target. - target = event.target; + /** + * Destroy everything + */ + stop: function () { - // On escape, close the picker and give focus. - if (keycode == 27) { - P.close(true); + // If it’s already stopped, do nothing. + if (!STATE.start) return P; + + // Then close the picker. + P.close(); + + // Remove the hidden field. + if (P._hidden) { + P._hidden.parentNode.removeChild(P._hidden); + } + + // Remove the root. + P.$root.remove(); + + // Remove the input class, remove the stored data, and unbind + // the events (after a tick for IE - see `P.close`). + $ELEMENT.removeClass(CLASSES.input).removeData(NAME); + setTimeout(function () { + $ELEMENT.off('.' + STATE.id); + }, 0); + + // Restore the element state + ELEMENT.type = STATE.type; + ELEMENT.readOnly = false; + + // Trigger the queued “stop” events. + P.trigger('stop'); + + // Reset the picker states. + STATE.methods = {}; + STATE.start = false; + + return P; + }, //stop + + + /** + * Open up the picker + */ + open: function (dontGiveFocus) { + + // If it’s already open, do nothing. + if (STATE.open) return P; + + // Add the “active” class. + $ELEMENT.addClass(CLASSES.active); + aria(ELEMENT, 'expanded', true); + + // * A Firefox bug, when `html` has `overflow:hidden`, results in + // killing transitions :(. So add the “opened” state on the next tick. + // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 + setTimeout(function () { + + // Add the “opened” class to the picker root. + P.$root.addClass(CLASSES.opened); + aria(P.$root[0], 'hidden', false); + }, 0); + + // If we have to give focus, bind the element and doc events. + if (dontGiveFocus !== false) { + + // Set it as open. + STATE.open = true; + + // Prevent the page from scrolling. + if (IS_DEFAULT_THEME) { + $html.css('overflow', 'hidden').css('padding-right', '+=' + getScrollbarWidth()); } - // Check if there is a key movement or “enter” keypress on the element. - else if (target == P.$root[0] && (keycodeToMove || keycode == 13)) { + // Pass focus to the root element’s jQuery object. + // * Workaround for iOS8 to bring the picker’s root into view. + P.$root.eq(0).focus(); + + // Bind the document events. + $document.on('click.' + STATE.id + ' focusin.' + STATE.id, function (event) { + + var target = event.target; + + // If the target of the event is not the element, close the picker picker. + // * Don’t worry about clicks or focusins on the root because those don’t bubble up. + // Also, for Firefox, a click on an `option` element bubbles up directly + // to the doc. So make sure the target wasn't the doc. + // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, + // which causes the picker to unexpectedly close when right-clicking it. So make + // sure the event wasn’t a right-click. + if (target != ELEMENT && target != document && event.which != 3) { + + // If the target was the holder that covers the screen, + // keep the element focused to maintain tabindex. + P.close(target === P.$root.children()[0]); + } + }).on('keydown.' + STATE.id, function (event) { + + var + // Get the keycode. + keycode = event.keyCode, + + + // Translate that to a selection change. + keycodeToMove = P.component.key[keycode], + + + // Grab the target. + target = event.target; + + // On escape, close the picker and give focus. + if (keycode == 27) { + P.close(true); + } + + // Check if there is a key movement or “enter” keypress on the element. + else if (target == P.$root[0] && (keycodeToMove || keycode == 13)) { // Prevent the default action to stop page movement. event.preventDefault(); @@ -6588,275 +6701,275 @@ if (Vel) { // On “enter”, if the highlighted item isn’t disabled, set the value and close. else if (!P.$root.find('.' + CLASSES.highlighted).hasClass(CLASSES.disabled)) { - P.set('select', P.component.item.highlight); - if (SETTINGS.closeOnSelect) { - P.close(true); - } + P.set('select', P.component.item.highlight); + if (SETTINGS.closeOnSelect) { + P.close(true); } + } } // If the target is within the root and “enter” is pressed, // prevent the default action and trigger a click on the target instead. else if ($.contains(P.$root[0], target) && keycode == 13) { - event.preventDefault(); - target.click(); - } - }); - } + event.preventDefault(); + target.click(); + } + }); + } - // Trigger the queued “open” events. - return P.trigger('open'); - }, //open + // Trigger the queued “open” events. + return P.trigger('open'); + }, //open - /** - * Close the picker - */ - close: function (giveFocus) { + /** + * Close the picker + */ + close: function (giveFocus) { - // If we need to give focus, do it before changing states. - if (giveFocus) { - // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| - // The focus is triggered *after* the close has completed - causing it - // to open again. So unbind and rebind the event at the next tick. - P.$root.off('focus.toOpen').eq(0).focus(); + // If we need to give focus, do it before changing states. + if (giveFocus) { + // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| + // The focus is triggered *after* the close has completed - causing it + // to open again. So unbind and rebind the event at the next tick. + P.$root.off('focus.toOpen').eq(0).focus(); + setTimeout(function () { + P.$root.on('focus.toOpen', handleFocusToOpenEvent); + }, 0); + } + + // Remove the “active” class. + $ELEMENT.removeClass(CLASSES.active); + aria(ELEMENT, 'expanded', false); + + // * A Firefox bug, when `html` has `overflow:hidden`, results in + // killing transitions :(. So remove the “opened” state on the next tick. + // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 setTimeout(function () { - P.$root.on('focus.toOpen', handleFocusToOpenEvent); + + // Remove the “opened” and “focused” class from the picker root. + P.$root.removeClass(CLASSES.opened + ' ' + CLASSES.focused); + aria(P.$root[0], 'hidden', true); }, 0); - } - // Remove the “active” class. - $ELEMENT.removeClass(CLASSES.active); - aria(ELEMENT, 'expanded', false); + // If it’s already closed, do nothing more. + if (!STATE.open) return P; - // * A Firefox bug, when `html` has `overflow:hidden`, results in - // killing transitions :(. So remove the “opened” state on the next tick. - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 - setTimeout(function () { + // Set it as closed. + STATE.open = false; - // Remove the “opened” and “focused” class from the picker root. - P.$root.removeClass(CLASSES.opened + ' ' + CLASSES.focused); - aria(P.$root[0], 'hidden', true); - }, 0); + // Allow the page to scroll. + if (IS_DEFAULT_THEME) { + $html.css('overflow', '').css('padding-right', '-=' + getScrollbarWidth()); + } - // If it’s already closed, do nothing more. - if (!STATE.open) return P; + // Unbind the document events. + $document.off('.' + STATE.id); - // Set it as closed. - STATE.open = false; - - // Allow the page to scroll. - if (IS_DEFAULT_THEME) { - $html.css('overflow', '').css('padding-right', '-=' + getScrollbarWidth()); - } - - // Unbind the document events. - $document.off('.' + STATE.id); - - // Trigger the queued “close” events. - return P.trigger('close'); - }, //close + // Trigger the queued “close” events. + return P.trigger('close'); + }, //close - /** - * Clear the values - */ - clear: function (options) { - return P.set('clear', null, options); - }, //clear + /** + * Clear the values + */ + clear: function (options) { + return P.set('clear', null, options); + }, //clear - /** - * Set something - */ - set: function (thing, value, options) { + /** + * Set something + */ + set: function (thing, value, options) { - var thingItem, + var thingItem, thingValue, thingIsObject = $.isPlainObject(thing), thingObject = thingIsObject ? thing : {}; - // Make sure we have usable options. - options = thingIsObject && $.isPlainObject(value) ? value : options || {}; + // Make sure we have usable options. + options = thingIsObject && $.isPlainObject(value) ? value : options || {}; - if (thing) { + if (thing) { - // If the thing isn’t an object, make it one. - if (!thingIsObject) { - thingObject[thing] = value; - } - - // Go through the things of items to set. - for (thingItem in thingObject) { - - // Grab the value of the thing. - thingValue = thingObject[thingItem]; - - // First, if the item exists and there’s a value, set it. - if (thingItem in P.component.item) { - if (thingValue === undefined) thingValue = null; - P.component.set(thingItem, thingValue, options); + // If the thing isn’t an object, make it one. + if (!thingIsObject) { + thingObject[thing] = value; } - // Then, check to update the element value and broadcast a change. - if (thingItem == 'select' || thingItem == 'clear') { - $ELEMENT.val(thingItem == 'clear' ? '' : P.get(thingItem, SETTINGS.format)).trigger('change'); + // Go through the things of items to set. + for (thingItem in thingObject) { + + // Grab the value of the thing. + thingValue = thingObject[thingItem]; + + // First, if the item exists and there’s a value, set it. + if (thingItem in P.component.item) { + if (thingValue === undefined) thingValue = null; + P.component.set(thingItem, thingValue, options); + } + + // Then, check to update the element value and broadcast a change. + if (thingItem == 'select' || thingItem == 'clear') { + $ELEMENT.val(thingItem == 'clear' ? '' : P.get(thingItem, SETTINGS.format)).trigger('change'); + } } + + // Render a new picker. + P.render(); } - // Render a new picker. - P.render(); - } - - // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. - return options.muted ? P : P.trigger('set', thingObject); - }, //set + // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. + return options.muted ? P : P.trigger('set', thingObject); + }, //set - /** - * Get something - */ - get: function (thing, format) { + /** + * Get something + */ + get: function (thing, format) { - // Make sure there’s something to get. - thing = thing || 'value'; + // Make sure there’s something to get. + thing = thing || 'value'; - // If a picker state exists, return that. - if (STATE[thing] != null) { - return STATE[thing]; - } - - // Return the submission value, if that. - if (thing == 'valueSubmit') { - if (P._hidden) { - return P._hidden.value; + // If a picker state exists, return that. + if (STATE[thing] != null) { + return STATE[thing]; } - thing = 'value'; - } - // Return the value, if that. - if (thing == 'value') { - return ELEMENT.value; - } - - // Check if a component item exists, return that. - if (thing in P.component.item) { - if (typeof format == 'string') { - var thingValue = P.component.get(thing); - return thingValue ? PickerConstructor._.trigger(P.component.formats.toString, P.component, [format, thingValue]) : ''; + // Return the submission value, if that. + if (thing == 'valueSubmit') { + if (P._hidden) { + return P._hidden.value; + } + thing = 'value'; } - return P.component.get(thing); - } - }, //get + + // Return the value, if that. + if (thing == 'value') { + return ELEMENT.value; + } + + // Check if a component item exists, return that. + if (thing in P.component.item) { + if (typeof format == 'string') { + var thingValue = P.component.get(thing); + return thingValue ? PickerConstructor._.trigger(P.component.formats.toString, P.component, [format, thingValue]) : ''; + } + return P.component.get(thing); + } + }, //get - /** - * Bind events on the things. - */ - on: function (thing, method, internal) { + /** + * Bind events on the things. + */ + on: function (thing, method, internal) { - var thingName, + var thingName, thingMethod, thingIsObject = $.isPlainObject(thing), thingObject = thingIsObject ? thing : {}; - if (thing) { + if (thing) { - // If the thing isn’t an object, make it one. - if (!thingIsObject) { - thingObject[thing] = method; - } - - // Go through the things to bind to. - for (thingName in thingObject) { - - // Grab the method of the thing. - thingMethod = thingObject[thingName]; - - // If it was an internal binding, prefix it. - if (internal) { - thingName = '_' + thingName; + // If the thing isn’t an object, make it one. + if (!thingIsObject) { + thingObject[thing] = method; } - // Make sure the thing methods collection exists. - STATE.methods[thingName] = STATE.methods[thingName] || []; + // Go through the things to bind to. + for (thingName in thingObject) { - // Add the method to the relative method collection. - STATE.methods[thingName].push(thingMethod); + // Grab the method of the thing. + thingMethod = thingObject[thingName]; + + // If it was an internal binding, prefix it. + if (internal) { + thingName = '_' + thingName; + } + + // Make sure the thing methods collection exists. + STATE.methods[thingName] = STATE.methods[thingName] || []; + + // Add the method to the relative method collection. + STATE.methods[thingName].push(thingMethod); + } } - } - return P; - }, //on + return P; + }, //on - /** - * Unbind events on the things. - */ - off: function () { - var i, + /** + * Unbind events on the things. + */ + off: function () { + var i, thingName, names = arguments; - for (i = 0, namesCount = names.length; i < namesCount; i += 1) { - thingName = names[i]; - if (thingName in STATE.methods) { - delete STATE.methods[thingName]; + for (i = 0, namesCount = names.length; i < namesCount; i += 1) { + thingName = names[i]; + if (thingName in STATE.methods) { + delete STATE.methods[thingName]; + } } - } - return P; - }, + return P; + }, - /** - * Fire off method events. - */ - trigger: function (name, data) { - var _trigger = function (name) { - var methodList = STATE.methods[name]; - if (methodList) { - methodList.map(function (method) { - PickerConstructor._.trigger(method, P, [data]); - }); - } - }; - _trigger('_' + name); - _trigger(name); - return P; - } //trigger - //PickerInstance.prototype + /** + * Fire off method events. + */ + trigger: function (name, data) { + var _trigger = function (name) { + var methodList = STATE.methods[name]; + if (methodList) { + methodList.map(function (method) { + PickerConstructor._.trigger(method, P, [data]); + }); + } + }; + _trigger('_' + name); + _trigger(name); + return P; + } //trigger + //PickerInstance.prototype - /** - * Wrap the picker holder components together. - */ - };function createWrappedComponent() { + /** + * Wrap the picker holder components together. + */ + }; function createWrappedComponent() { - // Create a picker wrapper holder - return PickerConstructor._.node('div', + // Create a picker wrapper holder + return PickerConstructor._.node('div', - // Create a picker wrapper node - PickerConstructor._.node('div', + // Create a picker wrapper node + PickerConstructor._.node('div', - // Create a picker frame - PickerConstructor._.node('div', + // Create a picker frame + PickerConstructor._.node('div', - // Create a picker box node - PickerConstructor._.node('div', + // Create a picker box node + PickerConstructor._.node('div', - // Create the components nodes. - P.component.nodes(STATE.open), + // Create the components nodes. + P.component.nodes(STATE.open), - // The picker box class - CLASSES.box), + // The picker box class + CLASSES.box), - // Picker wrap class - CLASSES.wrap), + // Picker wrap class + CLASSES.wrap), - // Picker frame class - CLASSES.frame), + // Picker frame class + CLASSES.frame), - // Picker holder class - CLASSES.holder); //endreturn - } //createWrappedComponent + // Picker holder class + CLASSES.holder); //endreturn + } //createWrappedComponent /** @@ -6866,31 +6979,31 @@ if (Vel) { $ELEMENT. - // Store the picker data by component name. - data(NAME, P). + // Store the picker data by component name. + data(NAME, P). - // Add the “input” class name. - addClass(CLASSES.input). + // Add the “input” class name. + addClass(CLASSES.input). - // Remove the tabindex. - attr('tabindex', -1). + // Remove the tabindex. + attr('tabindex', -1). - // If there’s a `data-value`, update the value of the element. - val($ELEMENT.data('value') ? P.get('select', SETTINGS.format) : ELEMENT.value); + // If there’s a `data-value`, update the value of the element. + val($ELEMENT.data('value') ? P.get('select', SETTINGS.format) : ELEMENT.value); // Only bind keydown events if the element isn’t editable. if (!SETTINGS.editable) { $ELEMENT. - // On focus/click, focus onto the root to open it up. - on('focus.' + STATE.id + ' click.' + STATE.id, function (event) { - event.preventDefault(); - P.$root.eq(0).focus(); - }). + // On focus/click, focus onto the root to open it up. + on('focus.' + STATE.id + ' click.' + STATE.id, function (event) { + event.preventDefault(); + P.$root.eq(0).focus(); + }). - // Handle keyboard event based on the picker being opened or not. - on('keydown.' + STATE.id, handleKeydownEvent); + // Handle keyboard event based on the picker being opened or not. + on('keydown.' + STATE.id, handleKeydownEvent); } // Update the aria attributes. @@ -6946,44 +7059,44 @@ if (Vel) { } }). - // Add/remove the “target” class on focus and blur. - on({ - focus: function () { - $ELEMENT.addClass(CLASSES.target); - }, - blur: function () { - $ELEMENT.removeClass(CLASSES.target); - } - }). + // Add/remove the “target” class on focus and blur. + on({ + focus: function () { + $ELEMENT.addClass(CLASSES.target); + }, + blur: function () { + $ELEMENT.removeClass(CLASSES.target); + } + }). - // Open the picker and adjust the root “focused” state - on('focus.toOpen', handleFocusToOpenEvent). + // Open the picker and adjust the root “focused” state + on('focus.toOpen', handleFocusToOpenEvent). - // If there’s a click on an actionable element, carry out the actions. - on('click', '[data-pick], [data-nav], [data-clear], [data-close]', function () { + // If there’s a click on an actionable element, carry out the actions. + on('click', '[data-pick], [data-nav], [data-clear], [data-close]', function () { - var $target = $(this), + var $target = $(this), targetData = $target.data(), targetDisabled = $target.hasClass(CLASSES.navDisabled) || $target.hasClass(CLASSES.disabled), - // * For IE, non-focusable elements can be active elements as well - // (http://stackoverflow.com/a/2684561). - activeElement = getActiveElement(); - activeElement = activeElement && (activeElement.type || activeElement.href) && activeElement; + // * For IE, non-focusable elements can be active elements as well + // (http://stackoverflow.com/a/2684561). + activeElement = getActiveElement(); + activeElement = activeElement && (activeElement.type || activeElement.href) && activeElement; - // If it’s disabled or nothing inside is actively focused, re-focus the element. - if (targetDisabled || activeElement && !$.contains(P.$root[0], activeElement)) { - P.$root.eq(0).focus(); - } + // If it’s disabled or nothing inside is actively focused, re-focus the element. + if (targetDisabled || activeElement && !$.contains(P.$root[0], activeElement)) { + P.$root.eq(0).focus(); + } - // If something is superficially changed, update the `highlight` based on the `nav`. - if (!targetDisabled && targetData.nav) { - P.set('highlight', P.component.item.highlight, { nav: targetData.nav }); - } + // If something is superficially changed, update the `highlight` based on the `nav`. + if (!targetDisabled && targetData.nav) { + P.set('highlight', P.component.item.highlight, { nav: targetData.nav }); + } - // If something is picked, set `select` then close with focus. - else if (!targetDisabled && 'pick' in targetData) { + // If something is picked, set `select` then close with focus. + else if (!targetDisabled && 'pick' in targetData) { P.set('select', targetData.pick); if (SETTINGS.closeOnSelect) { P.close(true); @@ -6992,14 +7105,14 @@ if (Vel) { // If a “clear” button is pressed, empty the values and close with focus. else if (targetData.clear) { - P.clear(); - if (SETTINGS.closeOnSelect) { - P.close(true); - } - } else if (targetData.close) { + P.clear(); + if (SETTINGS.closeOnSelect) { P.close(true); } - }); //P.$root + } else if (targetData.close) { + P.close(true); + } + }); //P.$root aria(P.$root[0], 'hidden', true); } @@ -7021,21 +7134,21 @@ if (Vel) { P._hidden = $('')[0]; + // If the element has a value, set the hidden value as well. + $ELEMENT.data('value') || ELEMENT.value ? ' value="' + P.get('select', SETTINGS.formatSubmit) + '"' : '') + '>')[0]; $ELEMENT. - // If the value changes, update the hidden input with the correct format. - on('change.' + STATE.id, function () { - P._hidden.value = ELEMENT.value ? P.get('select', SETTINGS.formatSubmit) : ''; - }); + // If the value changes, update the hidden input with the correct format. + on('change.' + STATE.id, function () { + P._hidden.value = ELEMENT.value ? P.get('select', SETTINGS.formatSubmit) : ''; + }); // Insert the hidden input as specified in the settings. - if (SETTINGS.container) $(SETTINGS.container).append(P._hidden);else $ELEMENT.before(P._hidden); + if (SETTINGS.container) $(SETTINGS.container).append(P._hidden); else $ELEMENT.before(P._hidden); } // For iOS8. @@ -7044,8 +7157,8 @@ if (Vel) { var keycode = event.keyCode, - // Check if one of the delete keys was pressed. - isKeycodeDelete = /^(8|46)$/.test(keycode); + // Check if one of the delete keys was pressed. + isKeycodeDelete = /^(8|46)$/.test(keycode); // For some reason IE clears the input value on “escape”. if (keycode == 27) { @@ -7121,7 +7234,7 @@ if (Vel) { function isUsingDefaultTheme(element) { var theme, - prop = 'position'; + prop = 'position'; // For IE. if (element.currentStyle) { @@ -7130,8 +7243,8 @@ if (Vel) { // For normal browsers. else if (window.getComputedStyle) { - theme = getComputedStyle(element)[prop]; - } + theme = getComputedStyle(element)[prop]; + } return theme == 'fixed'; } @@ -7187,16 +7300,16 @@ if (Vel) { group: function (groupObject) { var - // Scope for the looped object - loopObjectScope, + // Scope for the looped object + loopObjectScope, - // Create the nodes list - nodesList = '', + // Create the nodes list + nodesList = '', - // The counter starts from the `min` - counter = PickerConstructor._.trigger(groupObject.min, groupObject); + // The counter starts from the `min` + counter = PickerConstructor._.trigger(groupObject.min, groupObject); // Loop from the `min` to `max`, incrementing by `i` for (; counter <= PickerConstructor._.trigger(groupObject.max, groupObject, [counter]); counter += groupObject.i) { @@ -7206,8 +7319,8 @@ if (Vel) { // Splice the subgroup and create nodes out of the sub nodes nodesList += PickerConstructor._.node(groupObject.node, loopObjectScope[0], // the node - loopObjectScope[1], // the classes - loopObjectScope[2] // the attributes + loopObjectScope[1], // the classes + loopObjectScope[2] // the attributes ); } @@ -7283,7 +7396,7 @@ if (Vel) { /** * Extend the picker with a component and defaults. */ - };PickerConstructor.extend = function (name, Component) { + }; PickerConstructor.extend = function (name, Component) { // Extend jQuery. $.fn[name] = function (options, action) { @@ -7336,7 +7449,7 @@ if (Vel) { data = ''; for (var key in attribute) { var attr = (key == 'role' ? '' : 'aria-') + key, - attrVal = attribute[key]; + attrVal = attribute[key]; data += attrVal == null ? '' : attr + '="' + attribute[key] + '"'; } return data; @@ -7346,7 +7459,7 @@ if (Vel) { function getActiveElement() { try { return document.activeElement; - } catch (err) {} + } catch (err) { } } // Expose the picker constructor. @@ -7365,8 +7478,8 @@ if (Vel) { * Globals and constants */ var DAYS_IN_WEEK = 7, - WEEKS_IN_CALENDAR = 6, - _ = Picker._; + WEEKS_IN_CALENDAR = 6, + _ = Picker._; /** * The date picker constructor @@ -7374,21 +7487,21 @@ if (Vel) { function DatePicker(picker, settings) { var calendar = this, - element = picker.$node[0], - elementValue = element.value, - elementDataValue = picker.$node.data('value'), - valueString = elementDataValue || elementValue, - formatString = elementDataValue ? settings.formatSubmit : settings.format, - isRTL = function () { + element = picker.$node[0], + elementValue = element.value, + elementDataValue = picker.$node.data('value'), + valueString = elementDataValue || elementValue, + formatString = elementDataValue ? settings.formatSubmit : settings.format, + isRTL = function () { - return element.currentStyle ? + return element.currentStyle ? - // For IE. - element.currentStyle.direction == 'rtl' : + // For IE. + element.currentStyle.direction == 'rtl' : - // For normal browsers. - getComputedStyle(picker.$root[0]).direction == 'rtl'; - }; + // For normal browsers. + getComputedStyle(picker.$root[0]).direction == 'rtl'; + }; calendar.settings = settings; calendar.$node = picker.$node; @@ -7405,7 +7518,7 @@ if (Vel) { enable: 'activate' // The component's item object. - };calendar.item = {}; + }; calendar.item = {}; calendar.item.clear = null; calendar.item.disable = (settings.disable || []).slice(0); @@ -7423,8 +7536,8 @@ if (Vel) { // If there’s no value, default to highlighting “today”. else { - calendar.set('select', null).set('highlight', calendar.item.now); - } + calendar.set('select', null).set('highlight', calendar.item.now); + } // The keycode to movement mapping. calendar.key = { @@ -7438,13 +7551,13 @@ if (Vel) { }, // Left go: function (timeChange) { var highlightedObject = calendar.item.highlight, - targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange); + targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange); calendar.set('highlight', targetDate, { interval: timeChange }); this.render(); } // Bind some picker events. - };picker.on('render', function () { + }; picker.on('render', function () { picker.$root.find('.' + settings.klass.selectMonth).on('change', function () { var value = this.value; if (value) { @@ -7477,7 +7590,7 @@ if (Vel) { DatePicker.prototype.set = function (type, value, options) { var calendar = this, - calendarItem = calendar.item; + calendarItem = calendar.item; // If the value is `null` just set it immediately. if (value === null) { @@ -7527,7 +7640,7 @@ if (Vel) { DatePicker.prototype.create = function (type, value, options) { var isInfiniteValue, - calendar = this; + calendar = this; // If there’s no value, use the type as the value. value = value === undefined ? type : value; @@ -7539,25 +7652,25 @@ if (Vel) { // If it’s an object, use the native date object. else if ($.isPlainObject(value) && _.isInteger(value.pick)) { - value = value.obj; - } + value = value.obj; + } - // If it’s an array, convert it into a date and make sure - // that it’s a valid date – otherwise default to today. - else if ($.isArray(value)) { - value = new Date(value[0], value[1], value[2]); - value = _.isDate(value) ? value : calendar.create().obj; - } + // If it’s an array, convert it into a date and make sure + // that it’s a valid date – otherwise default to today. + else if ($.isArray(value)) { + value = new Date(value[0], value[1], value[2]); + value = _.isDate(value) ? value : calendar.create().obj; + } - // If it’s a number or date object, make a normalized date. - else if (_.isInteger(value) || _.isDate(value)) { - value = calendar.normalize(new Date(value), options); - } + // If it’s a number or date object, make a normalized date. + else if (_.isInteger(value) || _.isDate(value)) { + value = calendar.normalize(new Date(value), options); + } - // If it’s a literal true or any other case, set it to now. - else /*if ( value === true )*/{ - value = calendar.now(type, value, options); - } + // If it’s a literal true or any other case, set it to now. + else /*if ( value === true )*/ { + value = calendar.now(type, value, options); + } // Return the compiled object. return { @@ -7578,12 +7691,12 @@ if (Vel) { DatePicker.prototype.createRange = function (from, to) { var calendar = this, - createDate = function (date) { - if (date === true || $.isArray(date) || _.isDate(date)) { - return calendar.create(date); - } - return date; - }; + createDate = function (date) { + if (date === true || $.isArray(date) || _.isDate(date)) { + return calendar.create(date); + } + return date; + }; // Create objects if possible. if (!_.isInteger(from)) { @@ -7646,12 +7759,12 @@ if (Vel) { DatePicker.prototype.navigate = function (type, value, options) { var targetDateObject, - targetYear, - targetMonth, - targetDate, - isTargetArray = $.isArray(value), - isTargetObject = $.isPlainObject(value), - viewsetObject = this.item.view; /*, + targetYear, + targetMonth, + targetDate, + isTargetArray = $.isArray(value), + isTargetObject = $.isPlainObject(value), + viewsetObject = this.item.view; /*, safety = 100*/ if (isTargetArray || isTargetObject) { @@ -7717,13 +7830,13 @@ if (Vel) { // If it’s a string, parse it. else if (typeof value == 'string') { - value = calendar.parse(type, value); - } + value = calendar.parse(type, value); + } - // If it's an integer, get a date relative to today. - else if (_.isInteger(value)) { - value = calendar.now(type, value, { rel: value }); - } + // If it's an integer, get a date relative to today. + else if (_.isInteger(value)) { + value = calendar.now(type, value, { rel: value }); + } return value; }; ///DatePicker.prototype.measure @@ -7744,45 +7857,45 @@ if (Vel) { var calendar = this, - // Keep a reference to the original date. - originalDateObject = dateObject, + // Keep a reference to the original date. + originalDateObject = dateObject, - // Make sure we have an interval. - interval = options && options.interval ? options.interval : 1, + // Make sure we have an interval. + interval = options && options.interval ? options.interval : 1, - // Check if the calendar enabled dates are inverted. - isFlippedBase = calendar.item.enable === -1, + // Check if the calendar enabled dates are inverted. + isFlippedBase = calendar.item.enable === -1, - // Check if we have any enabled dates after/before now. - hasEnabledBeforeTarget, - hasEnabledAfterTarget, + // Check if we have any enabled dates after/before now. + hasEnabledBeforeTarget, + hasEnabledAfterTarget, - // The min & max limits. - minLimitObject = calendar.item.min, - maxLimitObject = calendar.item.max, + // The min & max limits. + minLimitObject = calendar.item.min, + maxLimitObject = calendar.item.max, - // Check if we’ve reached the limit during shifting. - reachedMin, - reachedMax, + // Check if we’ve reached the limit during shifting. + reachedMin, + reachedMax, - // Check if the calendar is inverted and at least one weekday is enabled. - hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) { + // Check if the calendar is inverted and at least one weekday is enabled. + hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) { - // If there’s a date, check where it is relative to the target. - if ($.isArray(value)) { - var dateTime = calendar.create(value).pick; - if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true;else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true; - } + // If there’s a date, check where it is relative to the target. + if ($.isArray(value)) { + var dateTime = calendar.create(value).pick; + if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true; else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true; + } - // Return only integers for enabled weekdays. - return _.isInteger(value); - }).length; /*, + // Return only integers for enabled weekdays. + return _.isInteger(value); + }).length; /*, safety = 100*/ // Cases to validate for: @@ -7798,7 +7911,7 @@ if (Vel) { if (!options || !options.nav) if ( /* 1 */!isFlippedBase && calendar.disabled(dateObject) || /* 2 */isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget) || - /* 3 */!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick)) { + /* 3 */ !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick)) { // When inverted, flip the direction if there aren’t any enabled weekdays // and there are no enabled dates in the direction of the interval. @@ -7855,24 +7968,24 @@ if (Vel) { var calendar = this, - // Filter through the disabled dates to check if this is one. - isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) { + // Filter through the disabled dates to check if this is one. + isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) { - // If the date is a number, match the weekday with 0index and `firstDay` check. - if (_.isInteger(dateToDisable)) { - return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7; - } + // If the date is a number, match the weekday with 0index and `firstDay` check. + if (_.isInteger(dateToDisable)) { + return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7; + } - // If it’s an array or a native JS date, create and match the exact date. - if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) { - return dateToVerify.pick === calendar.create(dateToDisable).pick; - } + // If it’s an array or a native JS date, create and match the exact date. + if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) { + return dateToVerify.pick === calendar.create(dateToDisable).pick; + } - // If it’s an object, match a date within the “from” and “to” range. - if ($.isPlainObject(dateToDisable)) { - return calendar.withinRange(dateToDisable, dateToVerify); - } - }); + // If it’s an object, match a date within the “from” and “to” range. + if ($.isPlainObject(dateToDisable)) { + return calendar.withinRange(dateToDisable, dateToVerify); + } + }); // If this date matches a disabled date, confirm it’s not inverted. isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) { @@ -7891,7 +8004,7 @@ if (Vel) { DatePicker.prototype.parse = function (type, value, options) { var calendar = this, - parsingObject = {}; + parsingObject = {}; // If it’s already parsed, we’re good. if (!value || typeof value != 'string') { @@ -7908,13 +8021,13 @@ if (Vel) { calendar.formats.toArray(options.format).map(function (label) { var - // Grab the formatting label. - formattingLabel = calendar.formats[label], + // Grab the formatting label. + formattingLabel = calendar.formats[label], - // The format length is from the formatting label function or the - // label length without the escaping exclamation (!) mark. - formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length; + // The format length is from the formatting label function or the + // label length without the escaping exclamation (!) mark. + formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length; // If there's a format label, split the value up to the format length. // Then add it to the parsing object with appropriate label. @@ -8070,7 +8183,7 @@ if (Vel) { DatePicker.prototype.isDateOverlap = function (one, two) { var calendar = this, - firstDay = calendar.settings.firstDay ? 1 : 0; + firstDay = calendar.settings.firstDay ? 1 : 0; // When we’re working with a weekday index, compare the days. if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) { @@ -8104,7 +8217,7 @@ if (Vel) { DatePicker.prototype.deactivate = function (type, datesToDisable) { var calendar = this, - disabledItems = calendar.item.disable.slice(0); + disabledItems = calendar.item.disable.slice(0); // If we’re flipping, that’s all we need to do. if (datesToDisable == 'flip') { @@ -8120,27 +8233,27 @@ if (Vel) { // Otherwise go through the dates to disable. else { - datesToDisable.map(function (unitToDisable) { + datesToDisable.map(function (unitToDisable) { - var matchFound; + var matchFound; - // When we have disabled items, check for matches. - // If something is matched, immediately break out. - for (var index = 0; index < disabledItems.length; index += 1) { - if (calendar.isDateExact(unitToDisable, disabledItems[index])) { - matchFound = true; - break; - } + // When we have disabled items, check for matches. + // If something is matched, immediately break out. + for (var index = 0; index < disabledItems.length; index += 1) { + if (calendar.isDateExact(unitToDisable, disabledItems[index])) { + matchFound = true; + break; } + } - // If nothing was found, add the validated unit to the collection. - if (!matchFound) { - if (_.isInteger(unitToDisable) || _.isDate(unitToDisable) || $.isArray(unitToDisable) || $.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to) { - disabledItems.push(unitToDisable); - } + // If nothing was found, add the validated unit to the collection. + if (!matchFound) { + if (_.isInteger(unitToDisable) || _.isDate(unitToDisable) || $.isArray(unitToDisable) || $.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to) { + disabledItems.push(unitToDisable); } - }); - } + } + }); + } // Return the updated collection. return disabledItems; @@ -8153,8 +8266,8 @@ if (Vel) { DatePicker.prototype.activate = function (type, datesToEnable) { var calendar = this, - disabledItems = calendar.item.disable, - disabledItemsCount = disabledItems.length; + disabledItems = calendar.item.disable, + disabledItemsCount = disabledItems.length; // If we’re flipping, that’s all we need to do. if (datesToEnable == 'flip') { @@ -8170,60 +8283,60 @@ if (Vel) { // Otherwise go through the disabled dates. else { - datesToEnable.map(function (unitToEnable) { + datesToEnable.map(function (unitToEnable) { - var matchFound, disabledUnit, index, isExactRange; + var matchFound, disabledUnit, index, isExactRange; - // Go through the disabled items and try to find a match. - for (index = 0; index < disabledItemsCount; index += 1) { + // Go through the disabled items and try to find a match. + for (index = 0; index < disabledItemsCount; index += 1) { - disabledUnit = disabledItems[index]; + disabledUnit = disabledItems[index]; - // When an exact match is found, remove it from the collection. - if (calendar.isDateExact(disabledUnit, unitToEnable)) { - matchFound = disabledItems[index] = null; - isExactRange = true; - break; + // When an exact match is found, remove it from the collection. + if (calendar.isDateExact(disabledUnit, unitToEnable)) { + matchFound = disabledItems[index] = null; + isExactRange = true; + break; + } + + // When an overlapped match is found, add the “inverted” state to it. + else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) { + if ($.isPlainObject(unitToEnable)) { + unitToEnable.inverted = true; + matchFound = unitToEnable; + } else if ($.isArray(unitToEnable)) { + matchFound = unitToEnable; + if (!matchFound[3]) matchFound.push('inverted'); + } else if (_.isDate(unitToEnable)) { + matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']; } - - // When an overlapped match is found, add the “inverted” state to it. - else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) { - if ($.isPlainObject(unitToEnable)) { - unitToEnable.inverted = true; - matchFound = unitToEnable; - } else if ($.isArray(unitToEnable)) { - matchFound = unitToEnable; - if (!matchFound[3]) matchFound.push('inverted'); - } else if (_.isDate(unitToEnable)) { - matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']; - } - break; - } + break; } + } - // If a match was found, remove a previous duplicate entry. - if (matchFound) for (index = 0; index < disabledItemsCount; index += 1) { - if (calendar.isDateExact(disabledItems[index], unitToEnable)) { - disabledItems[index] = null; - break; - } + // If a match was found, remove a previous duplicate entry. + if (matchFound) for (index = 0; index < disabledItemsCount; index += 1) { + if (calendar.isDateExact(disabledItems[index], unitToEnable)) { + disabledItems[index] = null; + break; } + } - // In the event that we’re dealing with an exact range of dates, - // make sure there are no “inverted” dates because of it. - if (isExactRange) for (index = 0; index < disabledItemsCount; index += 1) { - if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) { - disabledItems[index] = null; - break; - } + // In the event that we’re dealing with an exact range of dates, + // make sure there are no “inverted” dates because of it. + if (isExactRange) for (index = 0; index < disabledItemsCount; index += 1) { + if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) { + disabledItems[index] = null; + break; } + } - // If something is still matched, add it into the collection. - if (matchFound) { - disabledItems.push(matchFound); - } - }); - } + // If something is still matched, add it into the collection. + if (matchFound) { + disabledItems.push(matchFound); + } + }); + } // Return the updated collection. return disabledItems.filter(function (val) { @@ -8238,174 +8351,174 @@ if (Vel) { DatePicker.prototype.nodes = function (isOpen) { var calendar = this, - settings = calendar.settings, - calendarItem = calendar.item, - nowObject = calendarItem.now, - selectedObject = calendarItem.select, - highlightedObject = calendarItem.highlight, - viewsetObject = calendarItem.view, - disabledCollection = calendarItem.disable, - minLimitObject = calendarItem.min, - maxLimitObject = calendarItem.max, + settings = calendar.settings, + calendarItem = calendar.item, + nowObject = calendarItem.now, + selectedObject = calendarItem.select, + highlightedObject = calendarItem.highlight, + viewsetObject = calendarItem.view, + disabledCollection = calendarItem.disable, + minLimitObject = calendarItem.min, + maxLimitObject = calendarItem.max, - // Create the calendar table head using a copy of weekday labels collection. - // * We do a copy so we don't mutate the original array. - tableHead = function (collection, fullCollection) { + // Create the calendar table head using a copy of weekday labels collection. + // * We do a copy so we don't mutate the original array. + tableHead = function (collection, fullCollection) { - // If the first day should be Monday, move Sunday to the end. - if (settings.firstDay) { - collection.push(collection.shift()); - fullCollection.push(fullCollection.shift()); - } - - // Create and return the table head group. - return _.node('thead', _.node('tr', _.group({ - min: 0, - max: DAYS_IN_WEEK - 1, - i: 1, - node: 'th', - item: function (counter) { - return [collection[counter], settings.klass.weekdays, 'scope=col title="' + fullCollection[counter] + '"']; + // If the first day should be Monday, move Sunday to the end. + if (settings.firstDay) { + collection.push(collection.shift()); + fullCollection.push(fullCollection.shift()); } - }))); //endreturn - // Materialize modified - }((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter).slice(0), settings.weekdaysFull.slice(0)), - //tableHead - - - // Create the nav for next/prev month. - createMonthNav = function (next) { - - // Otherwise, return the created month tag. - return _.node('div', ' ', settings.klass['nav' + (next ? 'Next' : 'Prev')] + ( - - // If the focused month is outside the range, disabled the button. - next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month || !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ? ' ' + settings.klass.navDisabled : ''), 'data-nav=' + (next || -1) + ' ' + _.ariaAttr({ - role: 'button', - controls: calendar.$node[0].id + '_table' - }) + ' ' + 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '"'); //endreturn - }, - //createMonthNav - - - // Create the month label. - //Materialize modified - createMonthLabel = function (override) { - - var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull; - - // Materialize modified - if (override == "short_months") { - monthsCollection = settings.monthsShort; - } - - // If there are months to select, add a dropdown menu. - if (settings.selectMonths && override == undefined) { - - return _.node('select', _.group({ + // Create and return the table head group. + return _.node('thead', _.node('tr', _.group({ min: 0, - max: 11, + max: DAYS_IN_WEEK - 1, i: 1, - node: 'option', - item: function (loopedMonth) { - - return [ - - // The looped month and no classes. - monthsCollection[loopedMonth], 0, - - // Set the value and selected index. - 'value=' + loopedMonth + (viewsetObject.month == loopedMonth ? ' selected' : '') + (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month || viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ? ' disabled' : '')]; + node: 'th', + item: function (counter) { + return [collection[counter], settings.klass.weekdays, 'scope=col title="' + fullCollection[counter] + '"']; } - }), settings.klass.selectMonth + ' browser-default', (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + settings.labelMonthSelect + '"'); - } + }))); //endreturn + // Materialize modified + }((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter).slice(0), settings.weekdaysFull.slice(0)), + //tableHead + + + // Create the nav for next/prev month. + createMonthNav = function (next) { + + // Otherwise, return the created month tag. + return _.node('div', ' ', settings.klass['nav' + (next ? 'Next' : 'Prev')] + ( + + // If the focused month is outside the range, disabled the button. + next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month || !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ? ' ' + settings.klass.navDisabled : ''), 'data-nav=' + (next || -1) + ' ' + _.ariaAttr({ + role: 'button', + controls: calendar.$node[0].id + '_table' + }) + ' ' + 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '"'); //endreturn + }, + //createMonthNav + + + // Create the month label. + //Materialize modified + createMonthLabel = function (override) { + + var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull; + + // Materialize modified + if (override == "short_months") { + monthsCollection = settings.monthsShort; + } + + // If there are months to select, add a dropdown menu. + if (settings.selectMonths && override == undefined) { + + return _.node('select', _.group({ + min: 0, + max: 11, + i: 1, + node: 'option', + item: function (loopedMonth) { + + return [ + + // The looped month and no classes. + monthsCollection[loopedMonth], 0, + + // Set the value and selected index. + 'value=' + loopedMonth + (viewsetObject.month == loopedMonth ? ' selected' : '') + (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month || viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ? ' disabled' : '')]; + } + }), settings.klass.selectMonth + ' browser-default', (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + settings.labelMonthSelect + '"'); + } + + // Materialize modified + if (override == "short_months") if (selectedObject != null) return monthsCollection[selectedObject.month]; else return monthsCollection[viewsetObject.month]; + + // If there's a need for a month selector + return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month); + }, + //createMonthLabel + + + // Create the year label. // Materialize modified - if (override == "short_months") if (selectedObject != null) return monthsCollection[selectedObject.month];else return monthsCollection[viewsetObject.month]; + createYearLabel = function (override) { - // If there's a need for a month selector - return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month); - }, - //createMonthLabel + var focusedYear = viewsetObject.year, - // Create the year label. - // Materialize modified - createYearLabel = function (override) { + // If years selector is set to a literal "true", set it to 5. Otherwise + // divide in half to get half before and half after focused year. + numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2); - var focusedYear = viewsetObject.year, + // If there are years to select, add a dropdown menu. + if (numberYears) { - - // If years selector is set to a literal "true", set it to 5. Otherwise - // divide in half to get half before and half after focused year. - numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2); - - // If there are years to select, add a dropdown menu. - if (numberYears) { - - var minYear = minLimitObject.year, + var minYear = minLimitObject.year, maxYear = maxLimitObject.year, lowestYear = focusedYear - numberYears, highestYear = focusedYear + numberYears; - // If the min year is greater than the lowest year, increase the highest year - // by the difference and set the lowest year to the min year. - if (minYear > lowestYear) { - highestYear += minYear - lowestYear; - lowestYear = minYear; - } + // If the min year is greater than the lowest year, increase the highest year + // by the difference and set the lowest year to the min year. + if (minYear > lowestYear) { + highestYear += minYear - lowestYear; + lowestYear = minYear; + } - // If the max year is less than the highest year, decrease the lowest year - // by the lower of the two: available and needed years. Then set the - // highest year to the max year. - if (maxYear < highestYear) { + // If the max year is less than the highest year, decrease the lowest year + // by the lower of the two: available and needed years. Then set the + // highest year to the max year. + if (maxYear < highestYear) { - var availableYears = lowestYear - minYear, + var availableYears = lowestYear - minYear, neededYears = highestYear - maxYear; - lowestYear -= availableYears > neededYears ? neededYears : availableYears; - highestYear = maxYear; + lowestYear -= availableYears > neededYears ? neededYears : availableYears; + highestYear = maxYear; + } + + if (settings.selectYears && override == undefined) { + return _.node('select', _.group({ + min: lowestYear, + max: highestYear, + i: 1, + node: 'option', + item: function (loopedYear) { + return [ + + // The looped year and no classes. + loopedYear, 0, + + // Set the value and selected index. + 'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')]; + } + }), settings.klass.selectYear + ' browser-default', (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + settings.labelYearSelect + '"'); + } } - if (settings.selectYears && override == undefined) { - return _.node('select', _.group({ - min: lowestYear, - max: highestYear, - i: 1, - node: 'option', - item: function (loopedYear) { - return [ - - // The looped year and no classes. - loopedYear, 0, - - // Set the value and selected index. - 'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')]; - } - }), settings.klass.selectYear + ' browser-default', (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + settings.labelYearSelect + '"'); + // Materialize modified + if (override === 'raw' && selectedObject != null) { + return _.node('div', selectedObject.year); } - } - // Materialize modified - if (override === 'raw' && selectedObject != null) { - return _.node('div', selectedObject.year); - } - - // Otherwise just return the year focused - return _.node('div', focusedYear, settings.klass.year); - }; //createYearLabel + // Otherwise just return the year focused + return _.node('div', focusedYear, settings.klass.year); + }; //createYearLabel // Materialize modified createDayLabel = function () { - if (selectedObject != null) return selectedObject.date;else return nowObject.date; + if (selectedObject != null) return selectedObject.date; else return nowObject.date; }; createWeekdayLabel = function () { var display_day; - if (selectedObject != null) display_day = selectedObject.day;else display_day = nowObject.day; + if (selectedObject != null) display_day = selectedObject.day; else display_day = nowObject.day; var weekday = settings.weekdaysShort[display_day]; return weekday; }; @@ -8413,88 +8526,88 @@ if (Vel) { // Create and return the entire calendar. return _.node( - // Date presentation View - 'div', _.node( - // Div for Year - 'div', createYearLabel("raw"), settings.klass.year_display) + _.node('span', createWeekdayLabel() + ', ', "picker__weekday-display") + _.node( - // Div for short Month - 'span', createMonthLabel("short_months") + ' ', settings.klass.month_display) + _.node( - // Div for Day - 'span', createDayLabel(), settings.klass.day_display), settings.klass.date_display) + - // Calendar container - _.node('div', _.node('div', _.node('div', (settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel()) + createMonthNav() + createMonthNav(1), settings.klass.header) + _.node('table', tableHead + _.node('tbody', _.group({ - min: 0, - max: WEEKS_IN_CALENDAR - 1, - i: 1, - node: 'tr', - item: function (rowCounter) { + // Date presentation View + 'div', _.node( + // Div for Year + 'div', createYearLabel("raw"), settings.klass.year_display) + _.node('span', createWeekdayLabel() + ', ', "picker__weekday-display") + _.node( + // Div for short Month + 'span', createMonthLabel("short_months") + ' ', settings.klass.month_display) + _.node( + // Div for Day + 'span', createDayLabel(), settings.klass.day_display), settings.klass.date_display) + + // Calendar container + _.node('div', _.node('div', _.node('div', (settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel()) + createMonthNav() + createMonthNav(1), settings.klass.header) + _.node('table', tableHead + _.node('tbody', _.group({ + min: 0, + max: WEEKS_IN_CALENDAR - 1, + i: 1, + node: 'tr', + item: function (rowCounter) { - // If Monday is the first day and the month starts on Sunday, shift the date back a week. - var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0; + // If Monday is the first day and the month starts on Sunday, shift the date back a week. + var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0; - return [_.group({ - min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index - max: function () { - return this.min + DAYS_IN_WEEK - 1; - }, - i: 1, - node: 'td', - item: function (targetDate) { + return [_.group({ + min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index + max: function () { + return this.min + DAYS_IN_WEEK - 1; + }, + i: 1, + node: 'td', + item: function (targetDate) { - // Convert the time date from a relative date to a target date. - targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)]); + // Convert the time date from a relative date to a target date. + targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)]); - var isSelected = selectedObject && selectedObject.pick == targetDate.pick, + var isSelected = selectedObject && selectedObject.pick == targetDate.pick, isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate]); - return [_.node('div', targetDate.date, function (klasses) { + return [_.node('div', targetDate.date, function (klasses) { - // Add the `infocus` or `outfocus` classes based on month in view. - klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus); + // Add the `infocus` or `outfocus` classes based on month in view. + klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus); - // Add the `today` class if needed. - if (nowObject.pick == targetDate.pick) { - klasses.push(settings.klass.now); - } + // Add the `today` class if needed. + if (nowObject.pick == targetDate.pick) { + klasses.push(settings.klass.now); + } - // Add the `selected` class if something's selected and the time matches. - if (isSelected) { - klasses.push(settings.klass.selected); - } + // Add the `selected` class if something's selected and the time matches. + if (isSelected) { + klasses.push(settings.klass.selected); + } - // Add the `highlighted` class if something's highlighted and the time matches. - if (isHighlighted) { - klasses.push(settings.klass.highlighted); - } + // Add the `highlighted` class if something's highlighted and the time matches. + if (isHighlighted) { + klasses.push(settings.klass.highlighted); + } - // Add the `disabled` class if something's disabled and the object matches. - if (isDisabled) { - klasses.push(settings.klass.disabled); - } + // Add the `disabled` class if something's disabled and the object matches. + if (isDisabled) { + klasses.push(settings.klass.disabled); + } - return klasses.join(' '); - }([settings.klass.day]), 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ - role: 'gridcell', - label: formattedDate, - selected: isSelected && calendar.$node.val() === formattedDate ? true : null, - activedescendant: isHighlighted ? true : null, - disabled: isDisabled ? true : null - }) + ' ' + (isDisabled ? '' : 'tabindex="0"')), '', _.ariaAttr({ role: 'presentation' })]; //endreturn - } - })]; //endreturn - } - })), settings.klass.table, 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ - role: 'grid', - controls: calendar.$node[0].id, - readonly: true - })), settings.klass.calendar_container) // end calendar + return klasses.join(' '); + }([settings.klass.day]), 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ + role: 'gridcell', + label: formattedDate, + selected: isSelected && calendar.$node.val() === formattedDate ? true : null, + activedescendant: isHighlighted ? true : null, + disabled: isDisabled ? true : null + }) + ' ' + (isDisabled ? '' : 'tabindex="0"')), '', _.ariaAttr({ role: 'presentation' })]; //endreturn + } + })]; //endreturn + } + })), settings.klass.table, 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ + role: 'grid', + controls: calendar.$node[0].id, + readonly: true + })), settings.klass.calendar_container) // end calendar - + + + - // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. - _.node('div', _.node('button', settings.today, "btn-flat picker__today waves-effect", 'type=button data-pick=' + nowObject.pick + (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })) + _.node('button', settings.clear, "btn-flat picker__clear waves-effect", 'type=button data-clear=1' + (isOpen ? '' : ' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })) + _.node('button', settings.close, "btn-flat picker__close waves-effect", 'type=button data-close=true ' + (isOpen ? '' : ' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })), settings.klass.footer), 'picker__container__wrapper'); //endreturn + // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. + _.node('div', _.node('button', settings.today, "btn-flat picker__today waves-effect", 'type=button data-pick=' + nowObject.pick + (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })) + _.node('button', settings.clear, "btn-flat picker__clear waves-effect", 'type=button data-clear=1' + (isOpen ? '' : ' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })) + _.node('button', settings.close, "btn-flat picker__close waves-effect", 'type=button data-close=true ' + (isOpen ? '' : ' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })), settings.klass.footer), 'picker__container__wrapper'); //endreturn }; //DatePicker.prototype.nodes @@ -8594,18 +8707,18 @@ if (Vel) { (function ($) { var $win = $(window), - $doc = $(document); + $doc = $(document); // Can I use inline svg ? var svgNS = 'http://www.w3.org/2000/svg', - svgSupported = 'SVGAngle' in window && function () { - var supported, + svgSupported = 'SVGAngle' in window && function () { + var supported, el = document.createElement('div'); - el.innerHTML = ''; - supported = (el.firstChild && el.firstChild.namespaceURI) == svgNS; - el.innerHTML = ''; - return supported; - }(); + el.innerHTML = ''; + supported = (el.firstChild && el.firstChild.namespaceURI) == svgNS; + el.innerHTML = ''; + return supported; + }(); // Can I use transition ? var transitionSupported = function () { @@ -8615,9 +8728,9 @@ if (Vel) { // Listen touch events in touch screen device, instead of mouse events in desktop. var touchSupported = 'ontouchstart' in window, - mousedownEvent = 'mousedown' + (touchSupported ? ' touchstart' : ''), - mousemoveEvent = 'mousemove.clockpicker' + (touchSupported ? ' touchmove.clockpicker' : ''), - mouseupEvent = 'mouseup.clockpicker' + (touchSupported ? ' touchend.clockpicker' : ''); + mousedownEvent = 'mousedown' + (touchSupported ? ' touchstart' : ''), + mousemoveEvent = 'mousemove.clockpicker' + (touchSupported ? ' touchmove.clockpicker' : ''), + mouseupEvent = 'mouseup.clockpicker' + (touchSupported ? ' touchend.clockpicker' : ''); // Vibrate the device if supported var vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null; @@ -8639,13 +8752,13 @@ if (Vel) { // Clock size var dialRadius = 135, - outerRadius = 105, + outerRadius = 105, - // innerRadius = 80 on 12 hour clock - innerRadius = 70, - tickRadius = 20, - diameter = dialRadius * 2, - duration = transitionSupported ? 350 : 1; + // innerRadius = 80 on 12 hour clock + innerRadius = 70, + tickRadius = 20, + diameter = dialRadius * 2, + duration = transitionSupported ? 350 : 1; // Popover template var tpl = ['
', '
', '
', '
', '
', '
', '
', '
', '', ':', '', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '', '
', '
', '
', '
', '
', '
'].join(''); @@ -8653,15 +8766,15 @@ if (Vel) { // ClockPicker function ClockPicker(element, options) { var popover = $(tpl), - plate = popover.find('.clockpicker-plate'), - holder = popover.find('.picker__holder'), - hoursView = popover.find('.clockpicker-hours'), - minutesView = popover.find('.clockpicker-minutes'), - amPmBlock = popover.find('.clockpicker-am-pm-block'), - isInput = element.prop('tagName') === 'INPUT', - input = isInput ? element : element.find('input'), - label = $("label[for=" + input.attr("id") + "]"), - self = this; + plate = popover.find('.clockpicker-plate'), + holder = popover.find('.picker__holder'), + hoursView = popover.find('.clockpicker-hours'), + minutesView = popover.find('.clockpicker-minutes'), + amPmBlock = popover.find('.clockpicker-am-pm-block'), + isInput = element.prop('tagName') === 'INPUT', + input = isInput ? element : element.find('input'), + label = $("label[for=" + input.attr("id") + "]"), + self = this; this.id = uniqueId('cp'); this.element = element; @@ -8718,10 +8831,10 @@ if (Vel) { // Build ticks var tickTpl = $('
'), - i, - tick, - radian, - radius; + i, + tick, + radian, + radius; // Hours view if (options.twelvehour) { @@ -8776,13 +8889,13 @@ if (Vel) { // Mousedown or touchstart function mousedown(e, space) { var offset = plate.offset(), - isTouch = /^touch/.test(e.type), - x0 = offset.left + dialRadius, - y0 = offset.top + dialRadius, - dx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0, - dy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0, - z = Math.sqrt(dx * dx + dy * dy), - moved = false; + isTouch = /^touch/.test(e.type), + x0 = offset.left + dialRadius, + y0 = offset.top + dialRadius, + dx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0, + dy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0, + z = Math.sqrt(dx * dx + dy * dy), + moved = false; // When clicking on minutes view space, check the mouse position if (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius)) { @@ -8802,8 +8915,8 @@ if (Vel) { $doc.off(mousemoveEvent).on(mousemoveEvent, function (e) { e.preventDefault(); var isTouch = /^touch/.test(e.type), - x = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0, - y = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0; + x = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0, + y = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0; if (!moved && x === dx && y === dy) { // Clicking in chrome on windows will trigger a mousemove event return; @@ -8817,8 +8930,8 @@ if (Vel) { $doc.off(mouseupEvent); e.preventDefault(); var isTouch = /^touch/.test(e.type), - x = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0, - y = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0; + x = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0, + y = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0; if ((space || moved) && x === dx && y === dy) { self.setHand(x, y); } @@ -8845,7 +8958,7 @@ if (Vel) { if (svgSupported) { // Draw clock hands and others var canvas = popover.find('.clockpicker-canvas'), - svg = createSvgElement('svg'); + svg = createSvgElement('svg'); svg.setAttribute('class', 'clockpicker-svg'); svg.setAttribute('width', diameter); svg.setAttribute('height', diameter); @@ -8904,12 +9017,12 @@ if (Vel) { // Set popover position ClockPicker.prototype.locate = function () { var element = this.element, - popover = this.popover, - offset = element.offset(), - width = element.outerWidth(), - height = element.outerHeight(), - align = this.options.align, - self = this; + popover = this.popover, + offset = element.offset(), + width = element.outerWidth(), + height = element.outerHeight(), + align = this.options.align, + self = this; popover.show(); }; @@ -9022,8 +9135,8 @@ if (Vel) { raiseAfterHourSelect = true; } var isHours = view === 'hours', - nextView = isHours ? this.hoursView : this.minutesView, - hideView = isHours ? this.minutesView : this.hoursView; + nextView = isHours ? this.hoursView : this.minutesView, + hideView = isHours ? this.minutesView : this.hoursView; this.currentView = view; this.spanHours.toggleClass('text-primary', isHours); @@ -9050,14 +9163,14 @@ if (Vel) { // Reset clock hand ClockPicker.prototype.resetClock = function (delay) { var view = this.currentView, - value = this[view], - isHours = view === 'hours', - unit = Math.PI / (isHours ? 6 : 30), - radian = value * unit, - radius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius, - x = Math.sin(radian) * radius, - y = -Math.cos(radian) * radius, - self = this; + value = this[view], + isHours = view === 'hours', + unit = Math.PI / (isHours ? 6 : 30), + radian = value * unit, + radius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius, + x = Math.sin(radian) * radius, + y = -Math.cos(radian) * radius, + self = this; if (svgSupported && delay) { self.canvas.addClass('clockpicker-canvas-out'); @@ -9071,13 +9184,13 @@ if (Vel) { // Set clock hand to (x, y) ClockPicker.prototype.setHand = function (x, y, roundBy5, dragging) { var radian = Math.atan2(x, -y), - isHours = this.currentView === 'hours', - unit = Math.PI / (isHours || roundBy5 ? 6 : 30), - z = Math.sqrt(x * x + y * y), - options = this.options, - inner = isHours && z < (outerRadius + innerRadius) / 2, - radius = inner ? innerRadius : outerRadius, - value; + isHours = this.currentView === 'hours', + unit = Math.PI / (isHours || roundBy5 ? 6 : 30), + z = Math.sqrt(x * x + y * y), + options = this.options, + inner = isHours && z < (outerRadius + innerRadius) / 2, + radius = inner ? innerRadius : outerRadius, + value; if (options.twelvehour) { radius = outerRadius; @@ -9143,9 +9256,9 @@ if (Vel) { // Set clock hand and others' position var cx1 = Math.sin(radian) * (radius - tickRadius), - cy1 = -Math.cos(radian) * (radius - tickRadius), - cx2 = Math.sin(radian) * radius, - cy2 = -Math.cos(radian) * radius; + cy1 = -Math.cos(radian) * (radius - tickRadius), + cx2 = Math.sin(radian) * radius, + cy2 = -Math.cos(radian) * radius; this.hand.setAttribute('x2', cx1); this.hand.setAttribute('y2', cy1); this.bg.setAttribute('cx', cx2); @@ -9159,7 +9272,7 @@ if (Vel) { this.label.addClass('active'); var last = this.input.prop('value'), - value = leadingZero(this.hours) + ':' + leadingZero(this.minutes); + value = leadingZero(this.hours) + ':' + leadingZero(this.minutes); if (this.options.twelvehour) { value = value + this.amOrPm; } @@ -9183,7 +9296,7 @@ if (Vel) { this.label.removeClass('active'); var last = this.input.prop('value'), - value = ''; + value = ''; this.input.prop('value', value); if (value !== last) { @@ -9216,7 +9329,7 @@ if (Vel) { var args = Array.prototype.slice.call(arguments, 1); return this.each(function () { var $this = $(this), - data = $this.data('clockpicker'); + data = $this.data('clockpicker'); if (!data) { var options = $.extend({}, ClockPicker.DEFAULTS, $this.data(), typeof option == 'object' && option); $this.data('clockpicker', new ClockPicker($this, options)); @@ -9229,7 +9342,7 @@ if (Vel) { }); }; })(jQuery); -;(function ($) { +; (function ($) { $.fn.characterCounter = function () { return this.each(function () { @@ -9255,8 +9368,8 @@ if (Vel) { function updateCounter() { var maxLength = +$(this).attr('data-length'), - actualLength = +$(this).val().length, - isValidLength = actualLength <= maxLength; + actualLength = +$(this).val().length, + isValidLength = actualLength <= maxLength; $(this).parent().find('span[class="character-counter"]').html(actualLength + '/' + maxLength); @@ -9293,7 +9406,7 @@ if (Vel) { $('input, textarea').characterCounter(); }); })(jQuery); -;(function ($) { +; (function ($) { var methods = { @@ -9836,7 +9949,7 @@ if (Vel) { } }; // Plugin end })(jQuery); -;(function ($) { +; (function ($) { var methods = { init: function (options) { @@ -10010,8 +10123,8 @@ if (Vel) { if (options == 'close') closeTapTarget(); }); }, - open: function () {}, - close: function () {} + open: function () { }, + close: function () { } }; $.fn.tapTarget = function (methodOrOptions) { diff --git a/app/js/common/modal.js b/app/js/common/modal.js index 6d0e135d..69d5efde 100644 --- a/app/js/common/modal.js +++ b/app/js/common/modal.js @@ -1,17 +1,17 @@ //モーダル・ドロップダウンの各種設定 -$(document).ready(function(){ - // the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered - $('.modal').modal(); - $('.dropdown-button').dropdown({ - inDuration: 300, - outDuration: 225, - constrainWidth: false, // Does not change width of dropdown to that of the activator - hover: false, // Activate on hover - gutter: 0, // Spacing from edge - belowOrigin: false, // Displays dropdown below the button - alignment: 'left', // Displays dropdown with edge aligned to the left of button - stopPropagation: false // Stops event propagation - } +$(document).ready(function () { + // the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered + $('.modal').modal(); + $('.dropdown-button').dropdown({ + inDuration: 300, + outDuration: 225, + constrainWidth: false, // Does not change width of dropdown to that of the activator + hover: false, // Activate on hover + gutter: 0, // Spacing from edge + belowOrigin: false, // Displays dropdown below the button + alignment: 'left', // Displays dropdown with edge aligned to the left of button + stopPropagation: false // Stops event propagation + } ); - - }); \ No newline at end of file + +}); \ No newline at end of file diff --git a/app/js/common/sha256.js b/app/js/common/sha256.js index c0db22db..82d3fce3 100644 --- a/app/js/common/sha256.js +++ b/app/js/common/sha256.js @@ -1,33 +1,96 @@ -/* - A JavaScript implementation of the SHA family of hashes, as - defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding - HMAC implementation as defined in FIPS PUB 198a +var sha256 = function sha256(ascii) { + function rightRotate(value, amount) { + return (value >>> amount) | (value << (32 - amount)); + }; - Copyright 2008-2018 Brian Turek, 1998-2009 Paul Johnston & Contributors - Distributed under the BSD License - See http://caligatio.github.com/jsSHA/ for more information -*/ -'use strict';(function(I){function w(c,a,d){var l=0,b=[],g=0,f,n,k,e,h,q,y,p,m=!1,t=[],r=[],u,z=!1;d=d||{};f=d.encoding||"UTF8";u=d.numRounds||1;if(u!==parseInt(u,10)||1>u)throw Error("numRounds must a integer >= 1");if(0===c.lastIndexOf("SHA-",0))if(q=function(b,a){return A(b,a,c)},y=function(b,a,l,f){var g,e;if("SHA-224"===c||"SHA-256"===c)g=(a+65>>>9<<4)+15,e=16;else throw Error("Unexpected error in SHA-2 implementation");for(;b.length<=g;)b.push(0);b[a>>>5]|=128<<24-a%32;a=a+l;b[g]=a&4294967295; -b[g-1]=a/4294967296|0;l=b.length;for(a=0;a>>3;g=e/4-1;if(eb/8){for(;a.length<=g;)a.push(0);a[g]&=4294967040}for(b=0;b<=g;b+=1)t[b]=a[b]^909522486,r[b]=a[b]^1549556828;n=q(t,n);l=h;m=!0};this.update=function(a){var c,f,e,d=0,p=h>>>5;c=k(a,b,g);a=c.binLen;f=c.value;c=a>>>5;for(e=0;e>> -5);g=a%h;z=!0};this.getHash=function(a,f){var d,h,k,q;if(!0===m)throw Error("Cannot call getHash after setting HMAC key");k=C(f);switch(a){case "HEX":d=function(a){return D(a,e,k)};break;case "B64":d=function(a){return E(a,e,k)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{h=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER"); -}q=y(b.slice(),g,l,p(n));for(h=1;h>>2]>>>8*(3+b%4*-1),l+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return d.outputUpper?l.toUpperCase():l}function E(c,a,d){var l="",b=a/8,g,f,n;for(g=0;g>>2]:0,n=g+2>>2]:0,n=(c[g>>>2]>>>8*(3+g%4*-1)&255)<<16|(f>>>8*(3+(g+1)%4*-1)&255)<<8|n>>>8*(3+(g+2)%4*-1)&255,f=0;4>f;f+=1)8*g+6*f<=a?l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(n>>> -6*(3-f)&63):l+=d.b64Pad;return l}function F(c,a){var d="",l=a/8,b,g;for(b=0;b>>2]>>>8*(3+b%4*-1)&255,d+=String.fromCharCode(g);return d}function G(c,a){var d=a/8,l,b=new ArrayBuffer(d),g;g=new Uint8Array(b);for(l=0;l>>2]>>>8*(3+l%4*-1)&255;return b}function C(c){var a={outputUpper:!1,b64Pad:"=",shakeLen:-1};c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty("b64Pad")&&(a.b64Pad=c.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option"); -if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function B(c,a){var d;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":d=function(a,b,c){var f=a.length,d,k,e,h,q;if(0!==f%2)throw Error("String of HEX type must be in byte increments");b=b||[0];c=c||0;q=c>>>3;for(d=0;d>>1)+q;for(e=h>>>2;b.length<=e;)b.push(0);b[e]|=k<<8*(3+h%4*-1)}return{value:b,binLen:4*f+c}};break;case "TEXT":d=function(c,b,d){var f,n,k=0,e,h,q,m,p,r;b=b||[0];d=d||0;q=d>>>3;if("UTF8"===a)for(r=3,e=0;ef?n.push(f):2048>f?(n.push(192|f>>>6),n.push(128|f&63)):55296>f||57344<=f?n.push(224|f>>>12,128|f>>>6&63,128|f&63):(e+=1,f=65536+((f&1023)<<10|c.charCodeAt(e)&1023),n.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),h=0;h>>2;b.length<=m;)b.push(0);b[m]|=n[h]<<8*(r+p%4*-1);k+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(r=2,n="UTF16LE"===a&&!0||"UTF16LE"!==a&&!1,e=0;e>>8);p=k+q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=f<<8*(r+p%4*-1);k+=2}return{value:b,binLen:8*k+d}};break;case "B64":d=function(a,b,c){var f=0,d,k,e,h,q,m,p;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");k=a.indexOf("=");a=a.replace(/\=/g, -"");if(-1!==k&&k> 8) return; // ASCII check: only accept characters in range 0-255 + words[i >> 2] |= j << ((3 - i) % 4) * 8; + } + words[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0); + words[words[lengthProperty]] = (asciiBitLength) + + // process each chunk + for (j = 0; j < words[lengthProperty];) { + var w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration + var oldHash = hash; + // This is now the undefinedworking hash", often labelled as variables a...g + // (we have to truncate as well, otherwise extra entries at the end accumulate + hash = hash.slice(0, 8); + + for (i = 0; i < 64; i++) { + var i2 = i + j; + // Expand the message into 64 words + // Used below if + var w15 = w[i - 15], w2 = w[i - 2]; + + // Iterate + var a = hash[0], e = hash[4]; + var temp1 = hash[7] + + (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1 + + ((e & hash[5]) ^ ((~e) & hash[6])) // ch + + k[i] + // Expand the message schedule if needed + + (w[i] = (i < 16) ? w[i] : ( + w[i - 16] + + (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) // s0 + + w[i - 7] + + (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10)) // s1 + ) | 0 + ); + // This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble + var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0 + + ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])); // maj + + hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice() + hash[4] = (hash[4] + temp1) | 0; + } + + for (i = 0; i < 8; i++) { + hash[i] = (hash[i] + oldHash[i]) | 0; + } + } + + for (i = 0; i < 8; i++) { + for (j = 3; j + 1; j--) { + var b = (hash[i] >> (j * 8)) & 255; + result += ((b < 16) ? 0 : '') + b.toString(16); + } + } + return result; +}; \ No newline at end of file diff --git a/app/js/common/time.js b/app/js/common/time.js index 949e9b9d..2a163083 100644 --- a/app/js/common/time.js +++ b/app/js/common/time.js @@ -25,7 +25,7 @@ factory(jQuery); } }(function ($) { - $.timeago = function(timestamp) { + $.timeago = function (timestamp) { if (timestamp instanceof Date) { return inWords(timestamp); } else if (typeof timestamp === "string") { @@ -68,9 +68,9 @@ } }, - inWords: function(distanceMillis) { - if (!this.settings.allowPast && ! this.settings.allowFuture) { - throw 'timeago allowPast and allowFuture settings can not both be set to false.'; + inWords: function (distanceMillis) { + if (!this.settings.allowPast && !this.settings.allowFuture) { + throw 'timeago allowPast and allowFuture settings can not both be set to false.'; } var $l = this.settings.strings; @@ -116,20 +116,20 @@ return $.trim([prefix, words, suffix].join(separator)); }, - parse: function(iso8601) { + parse: function (iso8601) { var s = $.trim(iso8601); - s = s.replace(/\.\d+/,""); // remove milliseconds - s = s.replace(/-/,"/").replace(/-/,"/"); - s = s.replace(/T/," ").replace(/Z/," UTC"); - s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 - s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900 + s = s.replace(/\.\d+/, ""); // remove milliseconds + s = s.replace(/-/, "/").replace(/-/, "/"); + s = s.replace(/T/, " ").replace(/Z/, " UTC"); + s = s.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2"); // -04:00 -> -0400 + s = s.replace(/([\+\-]\d\d)$/, " $100"); // +09 -> +0900 return new Date(s); }, - datetime: function(elem) { + datetime: function (elem) { var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title"); return $t.parse(iso8601); }, - isTime: function(elem) { + isTime: function (elem) { // jQuery's `is()` doesn't play well with HTML5 in IE return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time"); } @@ -139,7 +139,7 @@ // init is default when no action is given // functions are called with context of a single element var functions = { - init: function() { + init: function () { functions.dispose.call(this); var refresh_el = $.proxy(refresh, this); refresh_el(); @@ -148,7 +148,7 @@ this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis); } }, - update: function(timestamp) { + update: function (timestamp) { var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp); $(this).data('timeago', { datetime: date }); if ($t.settings.localeTitle) { @@ -156,8 +156,8 @@ } refresh.apply(this); }, - updateFromDOM: function() { - $(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) }); + updateFromDOM: function () { + $(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) }); refresh.apply(this); }, dispose: function () { @@ -168,13 +168,13 @@ } }; - $.fn.timeago = function(action, options) { + $.fn.timeago = function (action, options) { var fn = action ? functions[action] : functions.init; if (!fn) { - throw new Error("Unknown function name '"+ action +"' for timeago"); + throw new Error("Unknown function name '" + action + "' for timeago"); } // each over objects here and call the requested function - this.each(function() { + this.each(function () { fn.call(this, options); }); return this; @@ -184,7 +184,7 @@ var $s = $t.settings; //check if it's still visible - if ($s.autoDispose && !$.contains(document.documentElement,this)) { + if ($s.autoDispose && !$.contains(document.documentElement, this)) { //stop if it has been removed $(this).timeago("dispose"); return this; @@ -193,11 +193,11 @@ var data = prepareData(this); if (!isNaN(data.datetime)) { - if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { + if ($s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { $(this).text(inWords(data.datetime)); } else { if ($(this).attr('title').length > 0) { - $(this).text($(this).attr('title')); + $(this).text($(this).attr('title')); } } } diff --git a/app/js/common/version.js b/app/js/common/version.js index be0c5d9f..28a78175 100644 --- a/app/js/common/version.js +++ b/app/js/common/version.js @@ -1,264 +1,275 @@ //バージョンチェッカー function verck(ver) { - console.log("Welcome") - if(localStorage.getItem("ver")!=ver){ + console.log("%c Welcome😊", "color: red;font-size:200%;") + if (localStorage.getItem("ver") != ver) { localStorage.setItem("ver", ver); - console.log("Thank you for your update"); - $(document).ready(function(){ + console.log("%c Thank you for your update🎉", "color: red;font-size:200%;"); + $(document).ready(function () { $('#releasenote').modal('open'); - verp=ver.replace( '(', ''); - verp=verp.replace( '.', '-'); - verp=verp.replace( '.', '-'); - verp=verp.replace( '[', '-'); - verp=verp.replace( ']', ''); - verp=verp.replace( ')', ''); - verp=verp.replace( ' ', '_'); - console.log(verp); - if(lang.language=="ja"){ - $("#release-"+verp).show(); - }else{ + verp = ver.replace('(', ''); + verp = verp.replace('.', '-'); + verp = verp.replace('.', '-'); + verp = verp.replace('[', '-'); + verp = verp.replace(']', ''); + verp = verp.replace(')', ''); + verp = verp.replace(' ', '_'); + console.log("%c " + verp, "color: red;font-size:200%;"); + if (lang.language == "ja") { + $("#release-" + verp).show(); + } else { $("#release-en").show(); } - - }); + + }); } var electron = require("electron"); - var remote=electron.remote; - var dialog=remote.dialog; - var platform=remote.process.platform; - if(platform=="win32"){ + var remote = electron.remote; + var dialog = remote.dialog; + var platform = remote.process.platform; + console.log("Your platform:"+remote.process.platform) + if (platform == "win32") { const options = { type: 'info', title: "Select your platform", message: lang.lang_version_platform, - buttons: [lang.lang_no,lang.lang_yesno] - } - if(!localStorage.getItem("winstore")){ - - dialog.showMessageBox(options, function(arg) { - if(arg==1){ - localStorage.setItem("winstore","winstore") - }else{ - localStorage.setItem("winstore","localinstall") - } - }); - } - }else if(platform=="linux"){ - if(localStorage.getItem("winstore")=="unix"){ + buttons: [lang.lang_no, lang.lang_yesno] + } + if (!localStorage.getItem("winstore")) { + + dialog.showMessageBox(options, function (arg) { + if (arg == 1) { + localStorage.setItem("winstore", "winstore") + } else { + localStorage.setItem("winstore", "localinstall") + } + }); + } + } else if (platform == "linux") { + if (localStorage.getItem("winstore") == "unix") { localStorage.removeItem("winstore") } - if(!localStorage.getItem("winstore")){ + if (!localStorage.getItem("winstore")) { const options = { type: 'info', title: "Select your platform", message: lang.lang_version_platform_linux, - buttons: [lang.lang_no,lang.lang_yesno] - } - dialog.showMessageBox(options, function(arg) { - if(arg==1){ - localStorage.setItem("winstore","snapcraft") - }else{ - localStorage.setItem("winstore","localinstall") - } + buttons: [lang.lang_no, lang.lang_yesno] + } + dialog.showMessageBox(options, function (arg) { + if (arg == 1) { + localStorage.setItem("winstore", "snapcraft") + } else { + localStorage.setItem("winstore", "localinstall") + } }); } - }else if(platform=="darwin"){ - if(localStorage.getItem("winstore")=="unix"){ + } else if (platform == "darwin") { + if (localStorage.getItem("winstore") == "unix") { localStorage.removeItem("winstore") } - if(!localStorage.getItem("winstore")){ + if (!localStorage.getItem("winstore")) { const options = { type: 'info', title: "Select your platform", message: lang.lang_version_platform_mac, - buttons: [lang.lang_no,lang.lang_yesno] - } - dialog.showMessageBox(options, function(arg) { - if(arg==1){ - localStorage.setItem("winstore","brewcask") - }else{ - localStorage.setItem("winstore","localinstall") - } + buttons: [lang.lang_no, lang.lang_yesno] + } + dialog.showMessageBox(options, function (arg) { + if (arg == 1) { + localStorage.setItem("winstore", "brewcask") + } else { + localStorage.setItem("winstore", "localinstall") + } }); } - }else{ - localStorage.setItem("winstore","unix") - } - if(localStorage.getItem("winstore")=="brewcask" || localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){ - var winstore=true; - }else{ - var winstore=false; - } + } else { + localStorage.setItem("winstore", "unix") + } + if (localStorage.getItem("winstore") == "brewcask" || localStorage.getItem("winstore") == "snapcraft" || localStorage.getItem("winstore") == "winstore") { + var winstore = true; + } else { + var winstore = false; + } var l = 5; // 生成する文字列に含める文字セット var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var cl = c.length; var r = ""; - for(var i=0; iShow'; - }else{ - var toot=""; - } - if(obj.Ver!=""){ - if(obj.Ver==ver){ - show=true; - }else{ - show=false; + } else { + var last = localStorage.getItem("last-notice-id") + localStorage.setItem("last-notice-id", mess[0].ID) + for (i = 0; i < mess.length; i++) { + var obj = mess[i]; + if (obj.ID * 1 <= last) { + break; + } else { + var show = true; + if (obj.toot != "") { + var toot = ''; + } else { + var toot = ""; + } + if (obj.Ver != "") { + if (obj.Ver == ver) { + show = true; + } else { + show = false; + } + } + if (obj.Domain != "") { + var multi = localStorage.getItem("multi"); + if (multi) { + show = false; + var accts = JSON.parse(multi); + Object.keys(accts).forEach(function (key) { + var acct = accts[key]; + if (acct.domain == obj.Domain) { + show = true; + } + }); + } + } + if (show) { + Materialize.toast(escapeHTML(obj.Text) + toot + '(スライドして消去)', 86400); } } - if(obj.Domain!=""){ - var multi = localStorage.getItem("multi"); - if (multi) { - show=false; - var accts = JSON.parse(multi); - Object.keys(accts).forEach(function(key) { - var acct = accts[key]; - if(acct.domain==obj.Domain){ - show=true; - } - }); - } - } - if(show){ - Materialize.toast(escapeHTML(obj.Text)+toot+'(スライドして消去)', 86400); - } + } - } - } }); } -var infostreaming=false; -function infowebsocket(){ +var infostreaming = false; +function infowebsocket() { infows = new WebSocket("wss://thedesk.top/ws/"); - infows.onopen = function(mess) { - console.log(tlid + ":Connect Streaming Info:"); - console.log(mess); - infostreaming=true; + infows.onopen = function (mess) { + console.log([tlid, ":Connect Streaming Info:", mess]); + infostreaming = true; } - infows.onmessage = function(mess) { - console.log(":Receive Streaming:"); - console.log(JSON.parse(mess.data)); - var obj=JSON.parse(mess.data); - if(obj.type!="counter"){ - localStorage.setItem("last-notice-id",obj.id) - var show=true; - if(obj.toot!=""){ - var toot=''; - }else{ - var toot=""; + infows.onmessage = function (mess) { + console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]); + var obj = JSON.parse(mess.data); + if (obj.type != "counter") { + localStorage.setItem("last-notice-id", obj.id) + var show = true; + if (obj.toot != "") { + var toot = ''; + } else { + var toot = ""; } - if(obj.ver!=""){ - if(obj.ver==ver){ - show=true; - }else{ - show=false; + if (obj.ver != "") { + if (obj.ver == ver) { + show = true; + } else { + show = false; } } - if(obj.domain!=""){ + if (obj.domain != "") { var multi = localStorage.getItem("multi"); if (multi) { - show=false; + show = false; var accts = JSON.parse(multi); - Object.keys(accts).forEach(function(key) { + Object.keys(accts).forEach(function (key) { var acct = accts[key]; - if(acct.domain==obj.domain){ - show=true; + if (acct.domain == obj.domain) { + show = true; } }); } } - if(show){ - Materialize.toast(escapeHTML(obj.text)+toot+'(スライドして消去)', 86400); + if (show) { + Materialize.toast(escapeHTML(obj.text) + toot + '(スライドして消去)', 86400); } - }else{ - $("#persons").text(obj.text); + } else { + $("#persons").text(obj.text); + } } - } - infows.onerror = function(error) { - infostreaming=false; + infows.onerror = function (error) { + infostreaming = false; console.error("Error closing:info"); console.error(error); return false; }; - infows.onclose = function() { - infostreaming=false; + infows.onclose = function () { + infostreaming = false; console.error("Closing:info"); }; } -setInterval(function(){ - if(!infostreaming){ - console.log("try to connect") +setInterval(function () { + if (!infostreaming) { + console.log("try to connect to base-streaming") infowebsocket(); } -}, 10000); \ No newline at end of file +}, 10000); +function openRN() { + $('#releasenote').modal('open'); + if (lang.language == "ja") { + verp = ver.replace('(', ''); + verp = verp.replace('.', '-'); + verp = verp.replace('.', '-'); + verp = verp.replace('[', '-'); + verp = verp.replace(']', ''); + verp = verp.replace(')', ''); + verp = verp.replace(' ', '_'); + $("#release-" + verp).show(); + } else { + $("#release-en").show(); + } +} \ No newline at end of file diff --git a/app/js/emoji/default-emoji.js b/app/js/emoji/default-emoji.js index 3ec3019a..62f1bebf 100644 --- a/app/js/emoji/default-emoji.js +++ b/app/js/emoji/default-emoji.js @@ -1,93 +1,89 @@ -var defaultemojiList=["activity","flag","food","nature","object","people","place","symbol"]; -var defaultemoji={ - activity:activity, - flag:flag, - food:food, - nature:nature, - object:object, - people:people, - place:place, - symbol:symbol +var defaultemojiList = ["activity", "flag", "food", "nature", "object", "people", "place", "symbol"]; +var defaultemoji = { + activity: activity, + flag: flag, + food: food, + nature: nature, + object: object, + people: people, + place: place, + symbol: symbol }; -if(lang=="ja"){ - var defaultemojiname={ - activity:"活動", - flag:"国旗", - food:"食べ物", - nature:"自然", - object:"もの", - people:"ひと", - place:"場所", - symbol:"記号" +if (lang == "ja") { + var defaultemojiname = { + activity: "活動", + flag: "国旗", + food: "食べ物", + nature: "自然", + object: "もの", + people: "ひと", + place: "場所", + symbol: "記号" }; -}else{ - var defaultemojiname={ - activity:"Activities", - flag:"Flags", - food:"Foods", - nature:"Nature", - object:"Tools", - people:"People", - place:"Places", - symbol:"Symbols" +} else { + var defaultemojiname = { + activity: "Activities", + flag: "Flags", + food: "Foods", + nature: "Nature", + object: "Tools", + people: "People", + place: "Places", + symbol: "Symbols" }; } -function defaultEmoji(target){ - var json=defaultemoji[target]; - var emojis=""; - Object.keys(json).forEach(function(key) { +function defaultEmoji(target) { + var json = defaultemoji[target]; + var emojis = ""; + Object.keys(json).forEach(function (key) { var emoji = json[key]; - emojis = emojis + ''; + emojis = emojis + ''; }); $("#emoji-list").html(emojis); - $("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}" ,defaultemojiname[target])); - console.log(target); + $("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}", defaultemojiname[target])); $(".emoji-control").addClass("hide"); } -function customEmoji(){ +function customEmoji() { $("#emoji-suggest").val(""); $(".emoji-control").removeClass("hide"); emojiList('home') } -function defEmoji(target){ - var emojiraw = newpack.filter(function(item, index){ - if (item.short_name == target) return true; +function defEmoji(target) { + var emojiraw = newpack.filter(function (item, index) { + if (item.short_name == target) return true; }); - var hex=emojiraw[0].unified.split("-"); - if(hex.length===2){ - emoji=twemoji.convert.fromCodePoint(hex[0])+twemoji.convert.fromCodePoint(hex[1]); - }else{ - emoji=twemoji.convert.fromCodePoint(hex[0]); + var hex = emojiraw[0].unified.split("-"); + if (hex.length === 2) { + emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1]); + } else { + emoji = twemoji.convert.fromCodePoint(hex[0]); } - console.log(emoji) var now = $("#textarea").val(); var selin = localStorage.getItem("cursor"); var now = $("#textarea").val(); - if(selin>0){ + if (selin > 0) { var before = now.substr(0, selin); var after = now.substr(selin, now.length); - newt = before+ emoji + after; - }else{ - newt = emoji+now; - } - console.log(emoji); - $("#textarea").val(newt); - $("#textarea").focus(); - var selin = $("#textarea").prop('selectionStart'); - if(!selin){ - selin=0; - } - localStorage.setItem("cursor", selin); + newt = before + emoji + after; + } else { + newt = emoji + now; + } + $("#textarea").val(newt); + $("#textarea").focus(); + var selin = $("#textarea").prop('selectionStart'); + if (!selin) { + selin = 0; + } + localStorage.setItem("cursor", selin); } -function faicon(){ - var json=faicons; - console.log(json); - var emojis=""; - Object.keys(json).forEach(function(key) { +function faicon() { + var json = faicons; + var emojis = ""; + Object.keys(json).forEach(function (key) { var emoji = json[key]; - var eje = emoji.replace( /fa-/g , "" ) ; - emojis = emojis + ''; + var eje = emoji.replace(/fa-/g, ""); + emojis = emojis + ''; }); $("#emoji-list").html(emojis); $("#now-emoji").text("faicon"); diff --git a/app/js/lang/lang.en.js b/app/js/lang/lang.en.js index 2b4baef2..48c12bf6 100644 --- a/app/js/lang/lang.en.js +++ b/app/js/lang/lang.en.js @@ -1,250 +1,253 @@ //commonError -var lang={ - "language":"en", - "lang_toot":"Toot", - "lang_there":"Yes", - "lang_nothing":"None", - "lang_yesno":"Yes", - "lang_no":"No", - "lang_progress":"Wait...", - "lang_edit":"Edit", - "lang_del":"Delete", - "lang_add":"Add", - "lang_fatalerroroccured":"Some errors are occured, please restart TheDesk.", - "lang_speech":"Google US English", +var lang = { + "language": "en", + "lang_toot": "Toot", + "lang_there": "Yes", + "lang_nothing": "None", + "lang_yesno": "Yes", + "lang_no": "No", + "lang_progress": "Wait...", + "lang_edit": "Edit", + "lang_del": "Delete", + "lang_add": "Add", + "lang_fatalerroroccured": "Some errors are occured, please restart TheDesk.", + "lang_speech": "Google US English", //language.html - "lang_lang":"Language", - "lang_langlocale":"English", - "lang_back":"Back", - "lang_set":"Set", - "lang_langadd":"Translate TheDesk to other languages or proofread TheDesk on GitHub. TheDesk needs your help.", + "lang_lang": "Language", + "lang_langlocale": "English", + "lang_back": "Back", + "lang_set": "Set", + "lang_langadd": "Translate TheDesk to other languages or proofread TheDesk on GitHub. TheDesk needs your help.", //common/version.js - "lang_version_usever":"No update is found({{ver}})", - "lang_version_skipver":"Update was ignored.", - "lang_version_platform":"Was this software installed at Microsoft Store? When select 'yes', any update was ignored.", - "lang_version_platform_linux":"Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.", - "lang_version_platform_mac":"Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.", + "lang_version_usever": "No update is found({{ver}})", + "lang_version_skipver": "Update was ignored.", + "lang_version_platform": "Was this software installed at Microsoft Store? When select 'yes', any update was ignored.", + "lang_version_platform_linux": "Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.", + "lang_version_platform_mac": "Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.", //login //login/login.js - "lang_login_noauth":"Show TL of unlogined accounts", + "lang_login_noauth": "Show TL of unlogined accounts", //login/manager.js - "lang_manager_info":"About this instance", - "lang_manager_refresh":"Refresh", - "lang_manager_delete":"Logout", - "lang_manager_color":"Account Color", - "lang_manager_confirm":"is about to logout. Continue?", - "lang_manager_mainAcct":"Done:choose main account", - "lang_manager_def":"Default", - "lang_manager_none":"None", - "lang_manager_godev":"Open DevCenter of Misskey. We show also an official documents to refer.", + "lang_manager_info": "About this instance", + "lang_manager_refresh": "Refresh", + "lang_manager_delete": "Logout", + "lang_manager_color": "Account Color", + "lang_manager_confirm": "is about to logout. Continue?", + "lang_manager_mainAcct": "Done:choose main account", + "lang_manager_def": "Default", + "lang_manager_none": "None", + "lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.", //post/bb-md.js - "lang_bbmd_misskey":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", + "lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", //post/emoji.js - "lang_emoji_get":"Get emojis", - "lang_emoji_custom":"Custom emojis", - "lang_defaultemojis_text":"Emojis about {{cat}}", + "lang_emoji_get": "Get emojis", + "lang_emoji_custom": "Custom emojis", + "lang_defaultemojis_text": "Emojis about {{cat}}", //post/img.js - "lang_postimg_previewdis":"cannot preview", - "lang_postimg_aftupload":"You cannot change accounts after uploading.", - "lang_postimg_delete":"Delete this image.", + "lang_postimg_previewdis": "cannot preview", + "lang_postimg_aftupload": "You cannot change accounts after uploading.", + "lang_postimg_delete": "Delete this image.", //post/post.js - "lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?", - "lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.", - "lang_post_cwtitle":"Auto CW Alert", - "lang_post_cwtxt":"You are about to post longer toot than you set.\nWarning text:", - "lang_post_btn1":"Cancel (will not post)", - "lang_post_btn2":"Make text hidden automatically", - "lang_post_btn3":"Continue to post", + "lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?", + "lang_post_tagVis": "This toot(not 'public' toot) is not shown on this tag's TL.", + "lang_post_cwtitle": "Auto CW Alert", + "lang_post_cwtxt": "You are about to post longer toot than you set.\nWarning text:", + "lang_post_btn1": "Cancel (will not post)", + "lang_post_btn2": "Make text hidden automatically", + "lang_post_btn3": "Continue to post", //post/status.js - "lang_status_favWarn":"It will take a miunte to favourite a remote toot.", - "lang_status_btWarn":"It will take a miunte to boost a remote toot.", - "lang_status_follow":"Follow", - "lang_status_unfollow":"Unfollow", - "lang_status_block":"Block", - "lang_status_unblock":"Unblock", - "lang_status_mute":"Mute", - "lang_status_unmute":"Unmute", - "lang_status_redraft":"Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.", - "lang_status_emphas":"'s toots are emphasized. Please reload after this action.", - "lang_status_unemphas":"'s toots are not emphasized. Please reload after this action.", - "lang_status_unendorse":"Not feature on profile", - "lang_status_endorse":"Feature on profile", + "lang_status_favWarn": "It will take a miunte to favourite a remote toot.", + "lang_status_btWarn": "It will take a miunte to boost a remote toot.", + "lang_status_follow": "Follow", + "lang_status_unfollow": "Unfollow", + "lang_status_block": "Block", + "lang_status_unblock": "Unblock", + "lang_status_mute": "Mute", + "lang_status_unmute": "Unmute", + "lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.", + "lang_status_emphas": "'s toots are emphasized. Please reload after this action.", + "lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.", + "lang_status_unendorse": "Not feature on profile", + "lang_status_endorse": "Feature on profile", //post/suggest.js - "lang_suggest_nodata":"Please get emojis list in order to show suggestion.", + "lang_suggest_nodata": "Please get emojis list in order to show suggestion.", //post/use-txtbox.js - "lang_usetxtbox_reply":"Reply Mode. Ctrl+Shift+C to clear.", + "lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.", //tl/card.js - "lang_cards_check":" check", - "lang_cards_pip":"PiP mode", + "lang_cards_check": " check", + "lang_cards_pip": "PiP mode", //tl/details.js - "lang_details_nodata":"No data", - "lang_details_filtered":"Filtered toot", - "lang_details_embed":"Embed HTML is cliped.", - "lang_details_url":"URL of this toot is cliped.", - "lang_details_txt":"Content of this toot is cliped.", + "lang_details_nodata": "No data", + "lang_details_filtered": "Filtered toot", + "lang_details_embed": "Embed HTML is cliped.", + "lang_details_url": "URL of this toot is cliped.", + "lang_details_txt": "Content of this toot is cliped.", //tl/filter.js - "lang_filter_nodata":"No data", - "lang_filter_errordegree":"Please check a context", + "lang_filter_nodata": "No data", + "lang_filter_errordegree": "Please check a context", //tl/list.js - "lang_list_nodata":"No data", - "lang_list_show":"Show", - "lang_list_users":"Users list", - "lang_list_nouser":"No users in this list.", - "lang_list_add":"Add to the list", - "lang_list_add_misskey":"(perhaps this user has been listed)", - "lang_list_remove":"Remove from the list", + "lang_list_nodata": "No data", + "lang_list_show": "Show", + "lang_list_users": "Users list", + "lang_list_nouser": "No users in this list.", + "lang_list_add": "Add to the list", + "lang_list_add_misskey": "(perhaps this user has been listed)", + "lang_list_remove": "Remove from the list", //tl/notification.js - "lang_notf_new":" new notifications", + "lang_notf_new": " new notifications", //tl/speech.js - "lang_speech_refresh":"Save value about TTS config", + "lang_speech_refresh": "Save value about TTS config", //tl/src.js - "lang_src_ts":"chronological order", - "lang_src_people":" people toot", + "lang_src_ts": "chronological order", + "lang_src_people": " people toot", //tl/tag.js - "lang_tags_always":"Always toots with ", - "lang_tags_realtime":"Tag-stream toot", - "lang_tags_tagunpin":"Unpin {{tag}}", - "lang_tags_unrealtime":"Disable TsT", - "lang_tags_tagwarn":"Auto complete {{tag}}, if toot without {{tag}}", + "lang_tags_always": "Always toots with ", + "lang_tags_realtime": "Tag-stream toot", + "lang_tags_tagunpin": "Unpin {{tag}}", + "lang_tags_unrealtime": "Disable TsT", + "lang_tags_tagwarn": "Auto complete {{tag}}, if toot without {{tag}}", //tl/tl.js - "lang_tl_media":"Media", - "lang_tl_reconnect":"Reconnect to streaming API", + "lang_tl_media": "Media", + "lang_tl_reconnect": "Reconnect to streaming API", //ui/layout.js - "lang_layout_gotop":"Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", - "lang_layout_thisacct":"{{notf}} of this account", - "lang_layout_delthis":"Remove this column", - "lang_layout_setthis":"Preferences of this column", - "lang_layout_mediafil":"Media filtering", - "lang_layout_linkana":"Auto Link Analyzer", - "lang_layout_linkanades":"Auto link analyzer", - "lang_layout_tts":"Text to speech ", - "lang_layout_reconnect":"Reconnect to streaming API", - "lang_layout_headercolor":"Header color of this column", - "lang_layout_nodata":"[No data]
F5/⌘+R to reload", - "lang_layout_dm":"Direct Message", - "lang_layout_webviewmode":"Prefer WebView", - "lang_excluded":"Excluded type of notification", - "lang_layout_excludingbt":"Show BT mode(OFF/Exclude BT/Only BT)", - "lang_layout_leftFold":"Stack to the left", - "lang_layout_leftUnfold":"Dock on the right", + "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", + "lang_layout_thisacct": "{{notf}} of this account", + "lang_layout_delthis": "Remove this column", + "lang_layout_setthis": "Preferences of this column", + "lang_layout_mediafil": "Media filtering", + "lang_layout_linkana": "Auto Link Analyzer", + "lang_layout_linkanades": "Auto link analyzer", + "lang_layout_tts": "Text to speech ", + "lang_layout_reconnect": "Reconnect to streaming API", + "lang_layout_headercolor": "Header color of this column", + "lang_layout_nodata": "[No data]
F5/⌘+R to reload", + "lang_layout_dm": "Direct Message", + "lang_layout_webviewmode": "Prefer WebView", + "lang_excluded": "Excluded type of notification", + "lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)", + "lang_layout_leftFold": "Stack to the left", + "lang_layout_leftUnfold": "Dock on the right", //ui/sort.js - "lang_sort_gothis":"Go to this column", - "lang_sort_remthis":"Delete this column", + "lang_sort_gothis": "Go to this column", + "lang_sort_remthis": "Delete this column", //ui/spotify.js - "lang_spotify_img":"Attach an album artwork", - "lang_spotify_imgno":"Not attach an album artwork", - "lang_spotify_acct":"Connect TheDesk to Spotify", - "lang_spotify_np":"Done:templete of NowPlaying", - "lang_setting_npprovide":"NowPlaying provider:{{set}}", + "lang_spotify_img": "Attach an album artwork", + "lang_spotify_imgno": "Not attach an album artwork", + "lang_spotify_acct": "Connect TheDesk to Spotify", + "lang_spotify_np": "Done:templete of NowPlaying", + "lang_setting_npprovide": "NowPlaying provider:{{set}}", //userdata/his-data.js - "lang_hisdata_frcreq":"Required Mastodon 2.4.3 and above", - "lang_hisdata_frcwarn":"Unfollow accounts will be shown.", - "lang_hisdata_taketime":"It will take 30s ~ several minutes", - "lang_hisdata_notonmisskey":"Misskey is unable to request.", - "lang_hisdata_key":"This user is proofed by {{set}}", + "lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above", + "lang_hisdata_frcwarn": "Unfollow accounts will be shown.", + "lang_hisdata_taketime": "It will take 30s ~ several minutes", + "lang_hisdata_notonmisskey": "Misskey is unable to request.", + "lang_hisdata_key": "This user is proofed by {{set}}", //userdata/showOnTL.js - "lang_showontl_movetxt":"This account was moved", - "lang_showontl_movebtn":"Continue on the new account", - "lang_showontl_botacct":"[bot]", - "lang_showontl_followed":"Following you", - "lang_showontl_notf":"Notification ", - "lang_showontl_domain":"Domain ", - "lang_showontl_listwarn":"Follow to add this user to lists.", - "lang_showontl_verified":"This website is verified by owner at ", -//parse - "lang_parse_mentioned":" replied to you", - "lang_parse_faved":" favourited your toot", - "lang_parse_bted":" boosted your toot", - "lang_parse_btedsimple":" boosted", - "lang_parse_polled":"'s poll", - "lang_parse_notftime":"Actioned at", - "lang_parse_cwshow":"Show", - "lang_parse_fulltext":"Full size text:", - "lang_parse_autofold":"Auto folded", - "lang_parse_more":"More", - "lang_parse_url":"URL Analyzer", - "lang_parse_tagTL":"Timeline of {{tag}}", - "lang_parse_tagtoot":"Toot with {{tag}}", - "lang_parse_tagpin":"Pin {{tag}}", - "lang_parse_public":"Public", - "lang_parse_unlisted":"Unlisted", - "lang_parse_private":"Private", - "lang_parse_direct":"Direct", - "lang_parse_clickcopy":"Click to copy text of this toot", - "lang_parse_clickcopyurl":"Click to copy URL of this toot", - "lang_parse_trans":"Translate to Japanese", - "lang_parse_replyto":"Reply to this toot", - "lang_parse_bt":"Boost this toot", - "lang_parse_fav":"Favourite this toot", - "lang_parse_quote":"Quote this toot", - "lang_parse_del":"Delete this toot", - "lang_parse_pin":"Pin this toot", - "lang_parse_det":"Details via your main account.", - "lang_parse_redraft":"Delete & re-draft", - "lang_parse_followed":"Followed you", - "lang_parse_clientop":"Operation of this client", - "lang_parse_clienttxt":" will be", - "lang_parse_clientno":"done nothing", - "lang_parse_clientemp":"emphasized(/not emphasized)", - "lang_parse_clientmute":"muted", - "lang_parse_mute":" will be muted. You can remove on preferences.", - "lang_parse_voted":"Voted", - "lang_parse_vote":"Vote", - "lang_parse_unvoted":"Show the result without voting", - "lang_parse_endedvote":"Expired", - "lang_parse_thread":"Show thread", + "lang_showontl_movetxt": "This account was moved", + "lang_showontl_movebtn": "Continue on the new account", + "lang_showontl_botacct": "[bot]", + "lang_showontl_followed": "Following you", + "lang_showontl_notf": "Notification ", + "lang_showontl_domain": "Domain ", + "lang_showontl_listwarn": "Follow to add this user to lists.", + "lang_showontl_verified": "This website is verified by owner at ", + //parse + "lang_parse_mentioned": " replied to you", + "lang_parse_faved": " favourited your toot", + "lang_parse_bted": " boosted your toot", + "lang_parse_btedsimple": " boosted", + "lang_parse_polled": "'s poll", + "lang_parse_notftime": "Actioned at", + "lang_parse_cwshow": "Show", + "lang_parse_fulltext": "Full size text:", + "lang_parse_autofold": "Auto folded", + "lang_parse_more": "More", + "lang_parse_url": "URL Analyzer", + "lang_parse_tagTL": "Timeline of {{tag}}", + "lang_parse_tagtoot": "Toot with {{tag}}", + "lang_parse_tagpin": "Pin {{tag}}", + "lang_parse_public": "Public", + "lang_parse_unlisted": "Unlisted", + "lang_parse_private": "Private", + "lang_parse_direct": "Direct", + "lang_parse_clickcopy": "Click to copy text of this toot", + "lang_parse_clickcopyurl": "Click to copy URL of this toot", + "lang_parse_trans": "Translate to Japanese", + "lang_parse_replyto": "Reply to this toot", + "lang_parse_bt": "Boost this toot", + "lang_parse_fav": "Favourite this toot", + "lang_parse_quote": "Quote this toot", + "lang_parse_del": "Delete this toot", + "lang_parse_pin": "Pin this toot", + "lang_parse_det": "Details via your main account.", + "lang_parse_redraft": "Delete & re-draft", + "lang_parse_followed": "Followed you", + "lang_parse_clientop": "Operation of this client", + "lang_parse_clienttxt": " will be", + "lang_parse_clientno": "done nothing", + "lang_parse_clientemp": "emphasized(/not emphasized)", + "lang_parse_clientmute": "muted", + "lang_parse_mute": " will be muted. You can remove on preferences.", + "lang_parse_voted": "Voted", + "lang_parse_vote": "Vote", + "lang_parse_unvoted": "Show the result without voting", + "lang_parse_endedvote": "Expired", + "lang_parse_thread": "Show thread", + "lang_parse_unknown": "Attached file", + "lang_parse_nsfw": "NSFW media", + "lang_parse_notffilter":"Show this user's notifications", //misskey - "lang_misskeyparse_renote":"Repost", - "lang_misskeyparse_renoteqt":"Renote", - "lang_misskeyparse_reaction":"Reaction", - "lang_misskeyparse_tagnostr":"No streaming API on Tag TLs", - "lang_misskeyparse_listnostr":"No streaming API on List TLs", - "lang_misskeyparse_home":"Home", - "lang_misskeyparse_followers":"Follower", - "lang_misskeyparse_specified":"Specified User", - "lang_misskeyparse_qt":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear", - "lang_misskeyparse_renoted":" renoted your following post.", - "lang_misskeyparse_quoted":" quoted your following post.", - "lang_misskeyparse_reacted":" reacted your following post.", -//setting - "lang_setting_time":"Time format:{{set}}", - "lang_setting_theme":"Theme:{{set}}", - "lang_setting_nsfw":"NSFW:{{set}}", - "lang_setting_cw":"CW:{{set}}", - "lang_setting_cwtext":"Default CW text:{{set}}", - "lang_setting_cws":"Always CW on:{{set}}", - "lang_setting_rp":"Reply counter:{{set}}", - "lang_setting_vis":"Default visibility:{{set}}", - "lang_setting_popup":"Popup notification:{{set}}", - "lang_setting_off":"Off", - "lang_setting_s":"s", - "lang_setting_box":"Default toot box action:{{set}}", - "lang_setting_gif":"GIF:{{set}}", - "lang_setting_selt":"Auto fold:{{set1}} lines and above, {{set2}} letters and above", - "lang_setting_autocw":"Auto CW:{{set1}} lines and above, {{set2}} letters and above", - "lang_setting_width":"Minimam width:{{set}}", - "lang_setting_fixwidth":"TweetDeck fixed width:{{set}}px", - "lang_setting_img":"After posting an image:{{set}}", - "lang_setting_font":"Fonts:{{set}}", - "lang_setting_default":"default font", - "lang_setting_size":"Font size:{{set}}px", - "lang_setting_imgheight":"Image height:{{set}}px", - "lang_setting_ticker":"#InstanceTicker:{{set}}px", - "lang_setting_animation":"Animation: {{set}}", - "lang_setting_tag":"Tag TL:{{set}}", - "lang_setting_boxConfirm":"Post box:{{set}}", - "lang_setting_ul":"Native locale:{{set}}", - "lang_setting_notf":"Native notification:{{set}}", - "lang_setting_quote":"Quote format:{{set}}", - "lang_setting_via":"Via:{{set}}", - "lang_setting_mov":"Action buttons hiding:{{set}}", - "lang_setting_setasread":"Notification markers:{{set}}", - "lang_setting_main":"Default account:{{set}}", - "lang_setting_sec":"Secondary toot button:{{set}}", - "lang_setting_ksref":"Keyboard shortcuts are refreshed.", - "lang_setting_nomuting":"No client is muted.", - "lang_setting_notftest":" Notification test ", - "lang_setting_notftestprof":"Your icon is shown.", - "lang_setting_exportwarn":"Only important data will be exported. You must keep this data secure.", - "lang_setting_importwarn":"All data will be deleted.", + "lang_misskeyparse_renote": "Repost", + "lang_misskeyparse_renoteqt": "Renote", + "lang_misskeyparse_reaction": "Reaction", + "lang_misskeyparse_tagnostr": "No streaming API on Tag TLs", + "lang_misskeyparse_listnostr": "No streaming API on List TLs", + "lang_misskeyparse_home": "Home", + "lang_misskeyparse_followers": "Follower", + "lang_misskeyparse_specified": "Specified User", + "lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear", + "lang_misskeyparse_renoted": " renoted your following post.", + "lang_misskeyparse_quoted": " quoted your following post.", + "lang_misskeyparse_reacted": " reacted your following post.", + //setting + "lang_setting_time": "Time format:{{set}}", + "lang_setting_theme": "Theme:{{set}}", + "lang_setting_nsfw": "NSFW:{{set}}", + "lang_setting_cw": "CW:{{set}}", + "lang_setting_cwtext": "Default CW text:{{set}}", + "lang_setting_cws": "Always CW on:{{set}}", + "lang_setting_rp": "Reply counter:{{set}}", + "lang_setting_vis": "Default visibility:{{set}}", + "lang_setting_popup": "Popup notification:{{set}}", + "lang_setting_off": "Off", + "lang_setting_s": "s", + "lang_setting_box": "Default toot box action:{{set}}", + "lang_setting_gif": "GIF:{{set}}", + "lang_setting_selt": "Auto fold:{{set1}} lines and above, {{set2}} letters and above", + "lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above", + "lang_setting_width": "Minimam width:{{set}}", + "lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px", + "lang_setting_img": "After posting an image:{{set}}", + "lang_setting_font": "Fonts:{{set}}", + "lang_setting_default": "default font", + "lang_setting_size": "Font size:{{set}}px", + "lang_setting_imgheight": "Image height:{{set}}px", + "lang_setting_ticker": "#InstanceTicker:{{set}}px", + "lang_setting_animation": "Animation: {{set}}", + "lang_setting_tag": "Tag TL:{{set}}", + "lang_setting_boxConfirm": "Post box:{{set}}", + "lang_setting_ul": "Native locale:{{set}}", + "lang_setting_notf": "Native notification:{{set}}", + "lang_setting_quote": "Quote format:{{set}}", + "lang_setting_via": "Via:{{set}}", + "lang_setting_mov": "Action buttons hiding:{{set}}", + "lang_setting_setasread": "Notification markers:{{set}}", + "lang_setting_main": "Default account:{{set}}", + "lang_setting_sec": "Secondary toot button:{{set}}", + "lang_setting_ksref": "Keyboard shortcuts are refreshed.", + "lang_setting_nomuting": "No client is muted.", + "lang_setting_notftest": " Notification test ", + "lang_setting_notftestprof": "Your icon is shown.", + "lang_setting_exportwarn": "Only important data will be exported. You must keep this data secure.", + "lang_setting_importwarn": "All data will be deleted.", } \ No newline at end of file diff --git a/app/js/lang/lang.ja.js b/app/js/lang/lang.ja.js index 2860f8b4..3891a719 100644 --- a/app/js/lang/lang.ja.js +++ b/app/js/lang/lang.ja.js @@ -1,252 +1,255 @@ - //commonError -var lang={ - "language":"ja", - "lang_toot":"トゥート", - "lang_there":"あり", - "lang_nothing":"なし", - "lang_yesno":"はい", - "lang_no":"いいえ", - "lang_progress":"処理中", - "lang_edit":"編集", - "lang_del":"削除", - "lang_add":"追加", - "lang_fatalerroroccured":"エラーが発生しました。しばらく待ってから再起動してください。", - "lang_speech":"Google 日本語", -//language.html - "lang_lang":"言語", - "lang_langlocale":"日本語", - "lang_back":"戻る", - "lang_set":"設定", - "lang_langadd":"GitHubから翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。", -//common/version.js - "lang_version_usever":"お使いのバージョン{{ver}}は最新です。", - "lang_version_skipver":"アップデートはスキップされました。", - "lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)", - "lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)", - "lang_version_platform_mac":"このソフトウェアはHomebrew Caskからインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)", -//login -//login/login.js - "lang_login_noauth":"認証せずに見る", -//login/manager.js - "lang_manager_info":"インスタンス情報", - "lang_manager_refresh":"情報更新", - "lang_manager_delete":"削除", - "lang_manager_color":"アカウントカラーを選択", - "lang_manager_confirm":"を削除します。", - "lang_manager_mainAcct":"メインアカウントを設定しました。", - "lang_manager_def":"既定", - "lang_manager_none":"なし", - "lang_manager_godev":"MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。", -//post/bb-md.js - "lang_bbmd_misskey":"TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。", -//post/emoji.js - "lang_emoji_get":"絵文字リストを取得", - "lang_emoji_custom":"カスタム絵文字", - "lang_defaultemojis_text":"{{cat}}の絵文字", -//post/img.js - "lang_postimg_previewdis":"プレビューできません。", - "lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。", - "lang_postimg_delete":"この画像を削除します", -//post/post.js - "lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。", - "lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)", - "lang_post_cwtitle":"長文投稿の警告", - "lang_post_cwtxt":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:", - "lang_post_btn1":"キャンセル(投稿しない)", - "lang_post_btn2":"自動でCWを付ける", - "lang_post_btn3":"そのまま投稿", -//post/status.js - "lang_status_favWarn":"お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。", - "lang_status_btWarn":"ブーストしました。インスタンスが違うときは時間がかかる場合があります。", - "lang_status_follow":"フォロー", - "lang_status_unfollow":"フォロー解除", - "lang_status_block":"ブロック", - "lang_status_unblock":"ブロック解除", - "lang_status_mute":"ミュート", - "lang_status_unmute":"ミュート解除", - "lang_status_redraft":"削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。", - "lang_status_emphas":"を強調します。リロードしてください。", - "lang_status_unemphas":"を強調解除します。リロードしてください。", - "lang_status_unendorse":"紹介解除", - "lang_status_endorse":"プロフで紹介する", -//post/suggest.js - "lang_suggest_nodata":"サジェストのために絵文字リストを取得してください。", -//post/use-txtbox.js - "lang_usetxtbox_reply":"返信モードです。クリアするときはCtrl+Shift+Cを押してください。", -//tl/card.js - "lang_cards_check":"チェック", - "lang_cards_pip":"ながら観モード", -//tl/details.js - "lang_details_nodata":"データなし", - "lang_details_filtered":"フィルターされました。", - "lang_details_embed":"埋め込みHTMLがコピーされました。", - "lang_details_url":"トゥートURLがコピーされました。", - "lang_details_txt":"トゥート本文がコピーされました。", -//tl/filter.js - "lang_filter_nodata":"フィルターはありません", - "lang_filter_errordegree":"適応範囲を最低一つ以上チェックしてください。", -//tl/list.js - "lang_list_nodata":"リストはありません", - "lang_list_show":"表示", - "lang_list_users":"ユーザー一覧", - "lang_list_nouser":"ユーザーはいません", - "lang_list_add":"リストに追加", - "lang_list_add_misskey":"(重複追加の可能性があります)", - "lang_list_remove":"リストから削除", -//tl/notification.js - "lang_notf_new":"件の新しい通知", -//tl/speech.js - "lang_speech_refresh":"音声読み上げ設定を更新しました。", -//tl/src.js - "lang_src_ts":"時系列", - "lang_src_people":"人がトゥート", -//tl/tag.js - "lang_tags_always":"常に", - "lang_tags_realtime":"実況", - "lang_tags_tagunpin":"{{tag}}をよく使うタグから削除", - "lang_tags_unrealtime":"実況解除", - "lang_tags_tagwarn":"{{tag}}がない場合自動で補完されます。", -//tl/tl.js - "lang_tl_media":"メディア", - "lang_tl_reconnect":"Streamingに再接続しました", -//ui/img.js - "lang_img_DLDone":"ダウンロード先:", -//ui/layout.js - "lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。", - "lang_layout_thisacct":"このアカウントの{{notf}}", - "lang_layout_delthis":"このカラムを削除", - "lang_layout_setthis":"このカラムの設定", - "lang_layout_mediafil":"メディアフィルター", - "lang_layout_linkana":"リンク解析", - "lang_layout_linkanades":"リンクの解析を切り替え", - "lang_layout_tts":"読み上げ", - "lang_layout_reconnect":"ストリーミング再接続", - "lang_layout_headercolor":"TLヘッダーカラー", - "lang_layout_nodata":"[ここにトゥートはありません。]
F5/⌘+Rで再読込できます。", - "lang_layout_dm":"ダイレクトメッセージ", - "lang_layout_webviewmode":"WebView優先", - "lang_excluded":"除外する通知", - "lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)", - "lang_layout_leftFold":"左へ重ねる", - "lang_layout_leftUnfold":"右へ出す", -//ui/sort.js - "lang_sort_gothis":"このカラムへ", - "lang_sort_remthis":"このカラムを削除", -//ui/spotify.js - "lang_spotify_img":"アルバムアートワークを添付します。", - "lang_spotify_imgno":"アルバムアートワークを添付しません。", - "lang_spotify_acct":"アカウント連携をしてください。", - "lang_spotify_np":"NowPlaying文書を更新しました。", - "lang_setting_npprovide":"NowPlayingのソースを{{set}}に設定しました。", -//userdata/his-data.js - "lang_hisdata_frcreq":"Mastodon 2.4.3~が必要です", - "lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。", - "lang_hisdata_taketime":"30秒から数分かかります", - "lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。", - "lang_hisdata_key":"このユーザーの信頼性は{{set}}によって示されています", -//userdata/showOnTL.js - "lang_showontl_movetxt":"このアカウントは移行しています", - "lang_showontl_movebtn":"移行先を見る", - "lang_showontl_botacct":"botアカウント", - "lang_showontl_followed":"フォローされています", - "lang_showontl_notf":"通知", - "lang_showontl_domain":"ドメイン", - "lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。", - "lang_showontl_verified":"このユーザーの所持するWebサイトであると証明されています。", -//parse - "lang_parse_mentioned":"が返信しました", - "lang_parse_faved":"がお気に入り登録しました", - "lang_parse_bted":"がブーストしました", - "lang_parse_btedsimple":"がブースト", - "lang_parse_polled":"のアンケート", - "lang_parse_notftime":"通知された時間", - "lang_parse_cwshow":"見る", - "lang_parse_fulltext":"以下全文", - "lang_parse_autofold":"自動折り畳み", - "lang_parse_more":"続き...", - "lang_parse_url":"URL解析", - "lang_parse_tagTL":"{{tag}}のタイムライン", - "lang_parse_tagtoot":"{{tag}}でトゥート", - "lang_parse_tagpin":"{{tag}}をよく使うタグへ", - "lang_parse_public":"公開", - "lang_parse_unlisted":"未収載", - "lang_parse_private":"非公開", - "lang_parse_direct":"ダイレクト", - "lang_parse_clickcopy":"クリックして本文をコピー", - "lang_parse_clickcopyurl":"クリックしてトゥートURLをコピー", - "lang_parse_trans":"このトゥートを日本語に翻訳", - "lang_parse_replyto":"このトゥートに返信", - "lang_parse_bt":"このトゥートをブースト", - "lang_parse_fav":"このトゥートをお気に入り登録", - "lang_parse_quote":"このトゥートを引用", - "lang_parse_del":"このトゥートを削除", - "lang_parse_pin":"このトゥートをピン留め", - "lang_parse_det":"詳細(メインアカウント経由)", - "lang_parse_redraft":"このトゥートを削除して再編集", - "lang_parse_followed":"フォローされました。", - "lang_parse_clientop":"クライアント処理", - "lang_parse_clienttxt":"に対する処理を選択してください。", - "lang_parse_clientno":"何もしない", - "lang_parse_clientemp":"強調表示/解除", - "lang_parse_clientmute":"ミュート", - "lang_parse_mute":"ミュートします。設定から解除できます。", - "lang_parse_voted":"投票済みです", - "lang_parse_vote":"投票", - "lang_parse_unvoted":"結果だけ見る", - "lang_parse_endedvote":"終了済み", - "lang_parse_thread":"会話を表示", +//commonError +var lang = { + "language": "ja", + "lang_toot": "トゥート", + "lang_there": "あり", + "lang_nothing": "なし", + "lang_yesno": "はい", + "lang_no": "いいえ", + "lang_progress": "処理中", + "lang_edit": "編集", + "lang_del": "削除", + "lang_add": "追加", + "lang_fatalerroroccured": "エラーが発生しました。しばらく待ってから再起動してください。", + "lang_speech": "Google 日本語", + //language.html + "lang_lang": "言語", + "lang_langlocale": "日本語", + "lang_back": "戻る", + "lang_set": "設定", + "lang_langadd": "GitHubから翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。", + //common/version.js + "lang_version_usever": "お使いのバージョン{{ver}}は最新です。", + "lang_version_skipver": "アップデートはスキップされました。", + "lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)", + "lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)", + "lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)", + //login + //login/login.js + "lang_login_noauth": "認証せずに見る", + //login/manager.js + "lang_manager_info": "インスタンス情報", + "lang_manager_refresh": "情報更新", + "lang_manager_delete": "削除", + "lang_manager_color": "アカウントカラーを選択", + "lang_manager_confirm": "を削除します。", + "lang_manager_mainAcct": "メインアカウントを設定しました。", + "lang_manager_def": "既定", + "lang_manager_none": "なし", + "lang_manager_godev": "MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。", + //post/bb-md.js + "lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。", + //post/emoji.js + "lang_emoji_get": "絵文字リストを取得", + "lang_emoji_custom": "カスタム絵文字", + "lang_defaultemojis_text": "{{cat}}の絵文字", + //post/img.js + "lang_postimg_previewdis": "プレビューできません。", + "lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。", + "lang_postimg_delete": "この画像を削除します", + //post/post.js + "lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。", + "lang_post_tagVis": "公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)", + "lang_post_cwtitle": "長文投稿の警告", + "lang_post_cwtxt": "指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:", + "lang_post_btn1": "キャンセル(投稿しない)", + "lang_post_btn2": "自動でCWを付ける", + "lang_post_btn3": "そのまま投稿", + //post/status.js + "lang_status_favWarn": "お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。", + "lang_status_btWarn": "ブーストしました。インスタンスが違うときは時間がかかる場合があります。", + "lang_status_follow": "フォロー", + "lang_status_unfollow": "フォロー解除", + "lang_status_block": "ブロック", + "lang_status_unblock": "ブロック解除", + "lang_status_mute": "ミュート", + "lang_status_unmute": "ミュート解除", + "lang_status_redraft": "削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。", + "lang_status_emphas": "を強調します。リロードしてください。", + "lang_status_unemphas": "を強調解除します。リロードしてください。", + "lang_status_unendorse": "紹介解除", + "lang_status_endorse": "プロフで紹介する", + //post/suggest.js + "lang_suggest_nodata": "サジェストのために絵文字リストを取得してください。", + //post/use-txtbox.js + "lang_usetxtbox_reply": "返信モードです。クリアするときはCtrl+Shift+Cを押してください。", + //tl/card.js + "lang_cards_check": "チェック", + "lang_cards_pip": "ながら観モード", + //tl/details.js + "lang_details_nodata": "データなし", + "lang_details_filtered": "フィルターされました。", + "lang_details_embed": "埋め込みHTMLがコピーされました。", + "lang_details_url": "トゥートURLがコピーされました。", + "lang_details_txt": "トゥート本文がコピーされました。", + //tl/filter.js + "lang_filter_nodata": "フィルターはありません", + "lang_filter_errordegree": "適応範囲を最低一つ以上チェックしてください。", + //tl/list.js + "lang_list_nodata": "リストはありません", + "lang_list_show": "表示", + "lang_list_users": "ユーザー一覧", + "lang_list_nouser": "ユーザーはいません", + "lang_list_add": "リストに追加", + "lang_list_add_misskey": "(重複追加の可能性があります)", + "lang_list_remove": "リストから削除", + //tl/notification.js + "lang_notf_new": "件の新しい通知", + //tl/speech.js + "lang_speech_refresh": "音声読み上げ設定を更新しました。", + //tl/src.js + "lang_src_ts": "時系列", + "lang_src_people": "人がトゥート", + //tl/tag.js + "lang_tags_always": "常に", + "lang_tags_realtime": "実況", + "lang_tags_tagunpin": "{{tag}}をよく使うタグから削除", + "lang_tags_unrealtime": "実況解除", + "lang_tags_tagwarn": "{{tag}}がない場合自動で補完されます。", + //tl/tl.js + "lang_tl_media": "メディア", + "lang_tl_reconnect": "Streamingに再接続しました", + //ui/img.js + "lang_img_DLDone": "ダウンロード先:", + //ui/layout.js + "lang_layout_gotop": "一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。", + "lang_layout_thisacct": "このアカウントの{{notf}}", + "lang_layout_delthis": "このカラムを削除", + "lang_layout_setthis": "このカラムの設定", + "lang_layout_mediafil": "メディアフィルター", + "lang_layout_linkana": "リンク解析", + "lang_layout_linkanades": "リンクの解析を切り替え", + "lang_layout_tts": "読み上げ", + "lang_layout_reconnect": "ストリーミング再接続", + "lang_layout_headercolor": "TLヘッダーカラー", + "lang_layout_nodata": "[ここにトゥートはありません。]
F5/⌘+Rで再読込できます。", + "lang_layout_dm": "ダイレクトメッセージ", + "lang_layout_webviewmode": "WebView優先", + "lang_excluded": "除外する通知", + "lang_layout_excludingbt": "BT表示(OFF/BT除外/BTのみ)", + "lang_layout_leftFold": "左へ重ねる", + "lang_layout_leftUnfold": "右へ出す", + //ui/sort.js + "lang_sort_gothis": "このカラムへ", + "lang_sort_remthis": "このカラムを削除", + //ui/spotify.js + "lang_spotify_img": "アルバムアートワークを添付します。", + "lang_spotify_imgno": "アルバムアートワークを添付しません。", + "lang_spotify_acct": "アカウント連携をしてください。", + "lang_spotify_np": "NowPlaying文書を更新しました。", + "lang_setting_npprovide": "NowPlayingのソースを{{set}}に設定しました。", + //userdata/his-data.js + "lang_hisdata_frcreq": "Mastodon 2.4.3~が必要です", + "lang_hisdata_frcwarn": "非フォローだけど絡みがある時に表示されます。", + "lang_hisdata_taketime": "30秒から数分かかります", + "lang_hisdata_notonmisskey": "このシステムはMisskeyにはありません。", + "lang_hisdata_key": "このユーザーの信頼性は{{set}}によって示されています", + //userdata/showOnTL.js + "lang_showontl_movetxt": "このアカウントは移行しています", + "lang_showontl_movebtn": "移行先を見る", + "lang_showontl_botacct": "botアカウント", + "lang_showontl_followed": "フォローされています", + "lang_showontl_notf": "通知", + "lang_showontl_domain": "ドメイン", + "lang_showontl_listwarn": "リストに追加するためにはフォローが必要です。", + "lang_showontl_verified": "このユーザーの所持するWebサイトであると証明されています。", + //parse + "lang_parse_mentioned": "が返信しました", + "lang_parse_faved": "がお気に入り登録しました", + "lang_parse_bted": "がブーストしました", + "lang_parse_btedsimple": "がブースト", + "lang_parse_polled": "のアンケート", + "lang_parse_notftime": "通知された時間", + "lang_parse_cwshow": "見る", + "lang_parse_fulltext": "以下全文", + "lang_parse_autofold": "自動折り畳み", + "lang_parse_more": "続き...", + "lang_parse_url": "URL解析", + "lang_parse_tagTL": "{{tag}}のタイムライン", + "lang_parse_tagtoot": "{{tag}}でトゥート", + "lang_parse_tagpin": "{{tag}}をよく使うタグへ", + "lang_parse_public": "公開", + "lang_parse_unlisted": "未収載", + "lang_parse_private": "非公開", + "lang_parse_direct": "ダイレクト", + "lang_parse_clickcopy": "クリックして本文をコピー", + "lang_parse_clickcopyurl": "クリックしてトゥートURLをコピー", + "lang_parse_trans": "このトゥートを日本語に翻訳", + "lang_parse_replyto": "このトゥートに返信", + "lang_parse_bt": "このトゥートをブースト", + "lang_parse_fav": "このトゥートをお気に入り登録", + "lang_parse_quote": "このトゥートを引用", + "lang_parse_del": "このトゥートを削除", + "lang_parse_pin": "このトゥートをピン留め", + "lang_parse_det": "詳細(メインアカウント経由)", + "lang_parse_redraft": "このトゥートを削除して再編集", + "lang_parse_followed": "フォローされました。", + "lang_parse_clientop": "クライアント処理", + "lang_parse_clienttxt": "に対する処理を選択してください。", + "lang_parse_clientno": "何もしない", + "lang_parse_clientemp": "強調表示/解除", + "lang_parse_clientmute": "ミュート", + "lang_parse_mute": "ミュートします。設定から解除できます。", + "lang_parse_voted": "投票済みです", + "lang_parse_vote": "投票", + "lang_parse_unvoted": "結果だけ見る", + "lang_parse_endedvote": "終了済み", + "lang_parse_thread": "会話を表示", + "lang_parse_unknown": "添付ファイル", + "lang_parse_nsfw": "閲覧注意", + "lang_parse_notffilter":"このユーザーの通知のみを表示", //misskey - "lang_misskeyparse_renote":"再投稿", - "lang_misskeyparse_renoteqt":"引用", - "lang_misskeyparse_reaction":"リアクション", - "lang_misskeyparse_tagnostr":"タグTLはストリーミング非対応です。", - "lang_misskeyparse_listnostr":"リストTLはストリーミング非対応です。", - "lang_misskeyparse_home":"ホーム", - "lang_misskeyparse_followers":"フォロワー", - "lang_misskeyparse_specified":"ユーザー指定", - "lang_misskeyparse_qt":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア", - "lang_misskeyparse_renoted":"がRepost", - "lang_misskeyparse_quoted":"が引用", - "lang_misskeyparse_reacted":"がリアクション", -//setting - "lang_setting_time":"時間設定を{{set}}に設定しました。", - "lang_setting_theme":"テーマ設定を{{set}}に設定しました。", - "lang_setting_nsfw":"画像表示設定を{{set}}に設定しました。", - "lang_setting_cw":"テキスト表示設定を{{set}}に設定しました。", - "lang_setting_cwtext":"デフォルトの警告文を「{{set}}」に設定しました。", - "lang_setting_cws":"標準でCW:{{set}}", - "lang_setting_rp":"リプライ数表示:{{set}}", - "lang_setting_vis":"デフォルトの公開設定を{{set}}に設定しました。", - "lang_setting_popup":"ポップアップお知らせを{{set}}に設定しました。", - "lang_setting_off":"オフ", - "lang_setting_s":"秒", - "lang_setting_box":"デフォルトでのボックスの挙動を{{set}}に設定しました。", - "lang_setting_gif":"アイコンアニメーション再生を{{set}}に設定しました。", - "lang_setting_selt":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。", - "lang_setting_autocw":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。", - "lang_setting_width":"横幅最低を{{set}}pxに設定しました。", - "lang_setting_fixwidth":"TweetDeckの横幅を{{set}}pxに設定しました。", - "lang_setting_img":"画像投稿後の設定を「{{set}}」に設定しました。", - "lang_setting_font":"フォントを{{set}}に設定しました。", - "lang_setting_default":"デフォルト", - "lang_setting_size":"フォントサイズを{{set}}pxに設定しました。", - "lang_setting_imgheight":"画像高さを{{set}}pxに設定しました。", - "lang_setting_ticker":"#InstanceTicker使用を{{set}}に設定しました。", - "lang_setting_animation":"アニメーションを{{set}}に設定しました。", - "lang_setting_tag":"タグの取得範囲を「{{set}}」に設定しました。", - "lang_setting_boxConfirm":"投稿ボックスを{{set}}", - "lang_setting_ul":"独自ロケール設定を{{set}}に設定しました。", - "lang_setting_notf":"ネイティブ通知を{{set}}に設定しました。", - "lang_setting_quote":"引用形式を{{set}}に設定しました。", - "lang_setting_via":"via表示を{{set}}に設定しました。", - "lang_setting_mov":"アクションボタン非表示を{{set}}に設定しました。", - "lang_setting_setasread":"通知カラム存在時新着非表示を{{set}}に設定しました。", - "lang_setting_main":"起動時・投稿時のアカウントを{{set}}に設定しました。", - "lang_setting_sec":"セカンダリートゥートボタン:{{set}}", - "lang_setting_ksref":"キーボードショートカットが更新されました。", - "lang_setting_nomuting":"ミュートしているクライアントはありません。", - "lang_setting_notftest":"通知テスト", - "lang_setting_notftestprof":"アイコンはあなたのアカウントのものです。", - "lang_setting_exportwarn":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。", - "lang_setting_importwarn":"全てのデータがリセットされます。" + "lang_misskeyparse_renote": "再投稿", + "lang_misskeyparse_renoteqt": "引用", + "lang_misskeyparse_reaction": "リアクション", + "lang_misskeyparse_tagnostr": "タグTLはストリーミング非対応です。", + "lang_misskeyparse_listnostr": "リストTLはストリーミング非対応です。", + "lang_misskeyparse_home": "ホーム", + "lang_misskeyparse_followers": "フォロワー", + "lang_misskeyparse_specified": "ユーザー指定", + "lang_misskeyparse_qt": "MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア", + "lang_misskeyparse_renoted": "がRepost", + "lang_misskeyparse_quoted": "が引用", + "lang_misskeyparse_reacted": "がリアクション", + //setting + "lang_setting_time": "時間設定を{{set}}に設定しました。", + "lang_setting_theme": "テーマ設定を{{set}}に設定しました。", + "lang_setting_nsfw": "画像表示設定を{{set}}に設定しました。", + "lang_setting_cw": "テキスト表示設定を{{set}}に設定しました。", + "lang_setting_cwtext": "デフォルトの警告文を「{{set}}」に設定しました。", + "lang_setting_cws": "標準でCW:{{set}}", + "lang_setting_rp": "リプライ数表示:{{set}}", + "lang_setting_vis": "デフォルトの公開設定を{{set}}に設定しました。", + "lang_setting_popup": "ポップアップお知らせを{{set}}に設定しました。", + "lang_setting_off": "オフ", + "lang_setting_s": "秒", + "lang_setting_box": "デフォルトでのボックスの挙動を{{set}}に設定しました。", + "lang_setting_gif": "アイコンアニメーション再生を{{set}}に設定しました。", + "lang_setting_selt": "{{set1}}行以上または{{set2}}文字以上でテキストを隠します。", + "lang_setting_autocw": "{{set1}}行以上または{{set2}}文字以上で警告を表示します。", + "lang_setting_width": "横幅最低を{{set}}pxに設定しました。", + "lang_setting_fixwidth": "TweetDeckの横幅を{{set}}pxに設定しました。", + "lang_setting_img": "画像投稿後の設定を「{{set}}」に設定しました。", + "lang_setting_font": "フォントを{{set}}に設定しました。", + "lang_setting_default": "デフォルト", + "lang_setting_size": "フォントサイズを{{set}}pxに設定しました。", + "lang_setting_imgheight": "画像高さを{{set}}pxに設定しました。", + "lang_setting_ticker": "#InstanceTicker使用を{{set}}に設定しました。", + "lang_setting_animation": "アニメーションを{{set}}に設定しました。", + "lang_setting_tag": "タグの取得範囲を「{{set}}」に設定しました。", + "lang_setting_boxConfirm": "投稿ボックスを{{set}}", + "lang_setting_ul": "独自ロケール設定を{{set}}に設定しました。", + "lang_setting_notf": "ネイティブ通知を{{set}}に設定しました。", + "lang_setting_quote": "引用形式を{{set}}に設定しました。", + "lang_setting_via": "via表示を{{set}}に設定しました。", + "lang_setting_mov": "アクションボタン非表示を{{set}}に設定しました。", + "lang_setting_setasread": "通知カラム存在時新着非表示を{{set}}に設定しました。", + "lang_setting_main": "起動時・投稿時のアカウントを{{set}}に設定しました。", + "lang_setting_sec": "セカンダリートゥートボタン:{{set}}", + "lang_setting_ksref": "キーボードショートカットが更新されました。", + "lang_setting_nomuting": "ミュートしているクライアントはありません。", + "lang_setting_notftest": "通知テスト", + "lang_setting_notftestprof": "アイコンはあなたのアカウントのものです。", + "lang_setting_exportwarn": "重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。", + "lang_setting_importwarn": "全てのデータがリセットされます。" } \ No newline at end of file diff --git a/app/js/lang/lang.ps.js b/app/js/lang/lang.ps.js index 1b046e44..3e37a750 100644 --- a/app/js/lang/lang.ps.js +++ b/app/js/lang/lang.ps.js @@ -1,4 +1,4 @@ -var lang={ +var lang = { "language": "crwdns1960:0crwdne1960:0", "lang_toot": "crwdns1962:0crwdne1962:0", "lang_there": "crwdns1964:0crwdne1964:0", diff --git a/app/js/login/instance.js b/app/js/login/instance.js index 0f770ed8..3aded1ac 100644 --- a/app/js/login/instance.js +++ b/app/js/login/instance.js @@ -1,126 +1,126 @@ //インスタンスリスト -var idata={ - "kirishima.cloud":"instance", - "kirishima.cloud_name":"アスタルテ", - "kirishima.cloud_letters":"6229", - "kirishima.cloud_bbcode":"enabled", - "kirishima.cloud_markdown":"enabled", - "kirishima.cloud_glitch":"enabled", - "kirishima.cloud_public":"パブリックタイムライン", - "minohdon.jp":"instance", - "minohdon.jp_name":"箕面どん", - "minohdon.jp_letters":"500", - "minohdon.jp_bbcode":"disabled", - "minohdon.jp_markdown":"disabled", - "minohdon.jp_glitch":"disabled", - "knzk.me":"instance", - "knzk.me_name":"Knzk", - "knzk.me_letters":"5000", - "knzk.me_bbcode":"disabled", - "knzk.me_markdown":"disabled", - "knzk.me_glitch":"disabled", - "mastodos.com":"instance", - "mastodos.com_name":"マストどす", - "mastodos.com_letters":"500", - "mastodos.com_bbcode":"disabled", - "mastodos.com_markdown":"disabled", - "mastodos.com_glitch":"disabled", - "dev.kirishima.cloud":"hidden", - "dev.kirishima.cloud_name":"アスタルテ(Dev)", - "dev.kirishima.cloud_letters":"6229", - "dev.kirishima.cloud_bbcode":"enabled", - "dev.kirishima.cloud_markdown":"enabled", - "dev.kirishima.cloud_glitch":"enabled", - "mstdn.y-zu.org":"instance", - "mstdn.y-zu.org_name":"Yづドン(Y-zuDon)", - "mstdn.y-zu.org_letters":"500", - "mstdn.y-zu.org_bbcode":"disabled", - "mstdn.y-zu.org_markdown":"enabled", - "mstdn.y-zu.org_glitch":"disabled", - "imastodon.net":"instance", - "imastodon.net_name":"im@stodon", - "imastodon.net_letters":"500", - "imastodon.net_bbcode":"disabled", - "imastodon.net_markdown":"disabled", - "imastodon.net_home":"オフィス", - "imastodon.net_local":"楽屋", - "imastodon.net_notification":"ホワイトボード", - "imastodon.net_public":"ライブステージ", - "imastodon.net_post":"あふぅ", - "imastodon.net_fav":"の頭にティンときたようです", - "imastodon.net_bt":":「わかるわ」", - "imastodon.net_follow":"名刺をいただきました", - "imastodon.net_glitch":"disabled", - "mstdn.osaka":"instance", - "mstdn.osaka_name":"大阪丼", - "mstdn.osaka_letters":"500", - "mstdn.osaka_bbcode":"disabled", - "mstdn.osaka_markdown":"disabled", - "mstdn.osaka_home":"ウチ", - "mstdn.osaka_local":"近所", - "mstdn.osaka_notification":"あめちゃん", - "mstdn.osaka_public":"新世界", - "mstdn.osaka_post":"なんや!", - "mstdn.osaka_fav":"がええやん言いました", - "mstdn.osaka_bt":"がしばいた", - "mstdn.osaka_follow":"ツルまれました", - "mstdn.osaka_glitch":"disabled", - "mstdn.kemono-friends.info":"instance", - "mstdn.kemono-friends.info_name":"ますとどんちほー", - "mstdn.kemono-friends.info_letters":"1024", - "mstdn.kemono-friends.info_bbcode":"disabled", - "mstdn.kemono-friends.info_markdown":"disabled", - "mstdn.kemono-friends.info_home":"なわばり", - "mstdn.kemono-friends.info_local":"ますとどんちほー", - "mstdn.kemono-friends.info_notification":"ねえねえ!", - "mstdn.kemono-friends.info_public":"ジャパリパーク", - "mstdn.kemono-friends.info_post":"がおー!", - "mstdn.kemono-friends.info_fav":":「すごーい」", - "mstdn.kemono-friends.info_bt":":「たーのしー」", - "mstdn.kemono-friends.info_glitch":"disabled", - "itabashi.0j0.jp":"instance", - "itabashi.0j0.jp_name":"板橋丼", - "itabashi.0j0.jp_letters":"1024", - "itabashi.0j0.jp_bbcode":"disabled", - "itabashi.0j0.jp_markdown":"disabled", - "itabashi.0j0.jp_glitch":"disabled", - "dtp-mstdn.jp":"instance", - "dtp-mstdn.jp_name":"DTP鯖", - "dtp-mstdn.jp_letters":"500", - "dtp-mstdn.jp_bbcode":"disabled", - "dtp-mstdn.jp_markdown":"disabled", - "dtp-mstdn.jp_glitch":"disabled", - "misskey.xyz":"misskey", - "misskey.xyz_name":"misskey.xyz", - "misskey.xyz_letters":"1000", - "misskey.xyz_bbcode":"disabled", - "misskey.xyz_markdown":"enabled", - "misskey.xyz_public":"Global", - "misskey.xyz_post":"Post", - "misskey.xyz_fav":" reacted your post.", - "misskey.xyz_bt":" reposted your post.", - "misskey.dev":"misskey", - "misskey.dev_name":"misskey.dev", - "misskey.dev_letters":"1024", - "misskey.dev_bbcode":"disabled", - "misskey.dev_markdown":"enabled", - "misskey.dev_public":"Global", - "misskey.dev_post":"Post", - "misskey.dev_fav":" reacted your post.", - "misskey.dev_bt":" reposted your post.", - "precure.ml":"instance", - "precure.ml_name":"キュアスタ!", - "precure.ml_letters":"1024", - "precure.ml_bbcode":"disabled", - "precure.ml_markdown":"disabled", - "precure.ml_post":"キュア!", - "precure.ml_glitch":"disabled", - "best-friends.chat":"instance", - "best-friends.chat_name":"Best Friends", - "best-friends.chat_letters":"500", - "best-friends.chat_bbcode":"disabled", - "best-friends.chat_markdown":"disabled", - "best-friends.chat_glitch":"disabled", +var idata = { + "kirishima.cloud": "instance", + "kirishima.cloud_name": "アスタルテ", + "kirishima.cloud_letters": "6229", + "kirishima.cloud_bbcode": "enabled", + "kirishima.cloud_markdown": "enabled", + "kirishima.cloud_glitch": "enabled", + "kirishima.cloud_public": "パブリックタイムライン", + "minohdon.jp": "instance", + "minohdon.jp_name": "箕面どん", + "minohdon.jp_letters": "500", + "minohdon.jp_bbcode": "disabled", + "minohdon.jp_markdown": "disabled", + "minohdon.jp_glitch": "disabled", + "knzk.me": "instance", + "knzk.me_name": "Knzk", + "knzk.me_letters": "5000", + "knzk.me_bbcode": "disabled", + "knzk.me_markdown": "disabled", + "knzk.me_glitch": "disabled", + "mastodos.com": "instance", + "mastodos.com_name": "マストどす", + "mastodos.com_letters": "500", + "mastodos.com_bbcode": "disabled", + "mastodos.com_markdown": "disabled", + "mastodos.com_glitch": "disabled", + "dev.kirishima.cloud": "hidden", + "dev.kirishima.cloud_name": "アスタルテ(Dev)", + "dev.kirishima.cloud_letters": "6229", + "dev.kirishima.cloud_bbcode": "enabled", + "dev.kirishima.cloud_markdown": "enabled", + "dev.kirishima.cloud_glitch": "enabled", + "mstdn.y-zu.org": "instance", + "mstdn.y-zu.org_name": "Yづドン(Y-zuDon)", + "mstdn.y-zu.org_letters": "500", + "mstdn.y-zu.org_bbcode": "disabled", + "mstdn.y-zu.org_markdown": "enabled", + "mstdn.y-zu.org_glitch": "disabled", + "imastodon.net": "instance", + "imastodon.net_name": "im@stodon", + "imastodon.net_letters": "500", + "imastodon.net_bbcode": "disabled", + "imastodon.net_markdown": "disabled", + "imastodon.net_home": "オフィス", + "imastodon.net_local": "楽屋", + "imastodon.net_notification": "ホワイトボード", + "imastodon.net_public": "ライブステージ", + "imastodon.net_post": "あふぅ", + "imastodon.net_fav": "の頭にティンときたようです", + "imastodon.net_bt": ":「わかるわ」", + "imastodon.net_follow": "名刺をいただきました", + "imastodon.net_glitch": "disabled", + "mstdn.osaka": "instance", + "mstdn.osaka_name": "大阪丼", + "mstdn.osaka_letters": "500", + "mstdn.osaka_bbcode": "disabled", + "mstdn.osaka_markdown": "disabled", + "mstdn.osaka_home": "ウチ", + "mstdn.osaka_local": "近所", + "mstdn.osaka_notification": "あめちゃん", + "mstdn.osaka_public": "新世界", + "mstdn.osaka_post": "なんや!", + "mstdn.osaka_fav": "がええやん言いました", + "mstdn.osaka_bt": "がしばいた", + "mstdn.osaka_follow": "ツルまれました", + "mstdn.osaka_glitch": "disabled", + "mstdn.kemono-friends.info": "instance", + "mstdn.kemono-friends.info_name": "ますとどんちほー", + "mstdn.kemono-friends.info_letters": "1024", + "mstdn.kemono-friends.info_bbcode": "disabled", + "mstdn.kemono-friends.info_markdown": "disabled", + "mstdn.kemono-friends.info_home": "なわばり", + "mstdn.kemono-friends.info_local": "ますとどんちほー", + "mstdn.kemono-friends.info_notification": "ねえねえ!", + "mstdn.kemono-friends.info_public": "ジャパリパーク", + "mstdn.kemono-friends.info_post": "がおー!", + "mstdn.kemono-friends.info_fav": ":「すごーい」", + "mstdn.kemono-friends.info_bt": ":「たーのしー」", + "mstdn.kemono-friends.info_glitch": "disabled", + "itabashi.0j0.jp": "instance", + "itabashi.0j0.jp_name": "板橋丼", + "itabashi.0j0.jp_letters": "1024", + "itabashi.0j0.jp_bbcode": "disabled", + "itabashi.0j0.jp_markdown": "disabled", + "itabashi.0j0.jp_glitch": "disabled", + "dtp-mstdn.jp": "instance", + "dtp-mstdn.jp_name": "DTP鯖", + "dtp-mstdn.jp_letters": "500", + "dtp-mstdn.jp_bbcode": "disabled", + "dtp-mstdn.jp_markdown": "disabled", + "dtp-mstdn.jp_glitch": "disabled", + "misskey.xyz": "misskey", + "misskey.xyz_name": "misskey.xyz", + "misskey.xyz_letters": "1000", + "misskey.xyz_bbcode": "disabled", + "misskey.xyz_markdown": "enabled", + "misskey.xyz_public": "Global", + "misskey.xyz_post": "Post", + "misskey.xyz_fav": " reacted your post.", + "misskey.xyz_bt": " reposted your post.", + "misskey.dev": "misskey", + "misskey.dev_name": "misskey.dev", + "misskey.dev_letters": "1024", + "misskey.dev_bbcode": "disabled", + "misskey.dev_markdown": "enabled", + "misskey.dev_public": "Global", + "misskey.dev_post": "Post", + "misskey.dev_fav": " reacted your post.", + "misskey.dev_bt": " reposted your post.", + "precure.ml": "instance", + "precure.ml_name": "キュアスタ!", + "precure.ml_letters": "1024", + "precure.ml_bbcode": "disabled", + "precure.ml_markdown": "disabled", + "precure.ml_post": "キュア!", + "precure.ml_glitch": "disabled", + "best-friends.chat": "instance", + "best-friends.chat_name": "Best Friends", + "best-friends.chat_letters": "500", + "best-friends.chat_bbcode": "disabled", + "best-friends.chat_markdown": "disabled", + "best-friends.chat_glitch": "disabled", }; localStorage.setItem("instance", JSON.stringify(idata)); diff --git a/app/js/login/login.js b/app/js/login/login.js index e3cef8b4..8379e79c 100644 --- a/app/js/login/login.js +++ b/app/js/login/login.js @@ -6,51 +6,52 @@ localStorage.removeItem("kirishima") localStorage.removeItem("imas") localStorage.removeItem("image"); localStorage.removeItem("stable") -localStorage.setItem("mode_misskey.xyz","misskey") +localStorage.setItem("mode_misskey.xyz", "misskey") function ck() { var main = localStorage.getItem("main"); - if(!main){ - localStorage.setItem("main",0) + if (!main) { + localStorage.setItem("main", 0) } var domainz = localStorage.getItem("domain_0"); var at = localStorage.getItem("acct_0_at"); //コード受信 - if(location.search){ + if (location.search) { var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode=m[1]; - var codex=m[2]; - if(mode=="manager" || mode=="login"){ - code(codex,mode); - }else{ + var mode = m[1]; + var codex = m[2]; + if (mode == "manager" || mode == "login") { + code(codex, mode); + } else { } } var multi = localStorage.getItem("multi"); - if(!multi || multi=="[]"){ - location.href="acct.html?mode=first&code=true" - }else{ + if (!multi || multi == "[]") { + location.href = "acct.html?mode=first&code=true" + } else { var obj = JSON.parse(multi); - Object.keys(obj).forEach(function(key) { - var acct=obj[key]; - if(acct.domain){ - refresh(key,true) + Object.keys(obj).forEach(function (key) { + var acct = obj[key]; + if (acct.domain) { + refresh(key, true) + } + }); + if (obj[0].domain) { + $("#tl").show(); + ticker(); + multiSelector(); + verck(ver); + $("#something-wrong img").attr("src", "../../img/thinkingdesk.png") } - }); -if (obj[0].domain) { - $("#tl").show(); - ticker(); - multiSelector(); - verck(ver); } } -} - ck(); +ck(); //ログインポップアップ function login(url) { - if($('#linux:checked').val()=="on"){ + if ($('#linux:checked').val() == "on") { var red = "urn:ietf:wg:oauth:2.0:oob" - }else{ + } else { var red = 'thedesk://login'; } localStorage.setItem("redirect", red); @@ -65,28 +66,27 @@ function login(url) { redirect_uris: red, website: "https://thedesk.top" })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); var auth = "https://" + url + "/oauth/authorize?client_id=" + json[ "client_id"] + "&client_secret=" + json["client_secret"] + - "&response_type=code&redirect_uri="+red+"&scope=read+write+follow"; - localStorage.setItem("domain_" + acct_id, url); - localStorage.setItem("client_id", json["client_id"]); - localStorage.setItem("client_secret", json["client_secret"]); - $("#auth").show(); - $("#masara").hide(); - const { shell } = require('electron'); + "&response_type=code&redirect_uri=" + red + "&scope=read+write+follow"; + localStorage.setItem("domain_" + acct_id, url); + localStorage.setItem("client_id", json["client_id"]); + localStorage.setItem("client_secret", json["client_secret"]); + $("#auth").show(); + $("#masara").hide(); + const { shell } = require('electron'); - shell.openExternal(auth); - - if($('#linux:checked').val()=="on"){ - }else{ - var electron = require("electron"); - var ipc = electron.ipcRenderer; - ipc.send('quit', 'go'); - } + shell.openExternal(auth); + + if ($('#linux:checked').val() == "on") { + } else { + var electron = require("electron"); + var ipc = electron.ipcRenderer; + ipc.send('quit', 'go'); + } } } } @@ -99,15 +99,15 @@ function instance() { //コードを入れた後認証 -function code(code,mode) { +function code(code, mode) { var red = localStorage.getItem("redirect"); localStorage.removeItem("redirect") - if(!code){ + if (!code) { var code = $("#code").val(); } - if(localStorage.getItem("domain_tmp")){ + if (localStorage.getItem("domain_tmp")) { var url = localStorage.getItem("domain_tmp"); - }else{ + } else { var url = localStorage.getItem("domain_" + acct_id); } var start = "https://" + url + "/oauth/token"; @@ -125,21 +125,21 @@ function code(code,mode) { client_secret: secret, code: code }) - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { todo(json); if (json["access_token"]) { localStorage.setItem(url + "_at", json["access_token"]); - if(mode=="manager"){ + if (mode == "manager") { getdataAdv(url, json["access_token"]); - }else{ + } else { getdata(); } - + } }); } @@ -148,7 +148,7 @@ function code(code,mode) { function getdata() { var acct_id = 0; var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/verify_credentials"; fetch(start, { method: 'GET', @@ -156,23 +156,22 @@ function getdata() { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json.error) { console.error("Error:" + json.error); - Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error, + Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error, 5000); return; } - var avatar=json["avatar"]; + var avatar = json["avatar"]; //missingがmissingなやつ - if(avatar=="/avatars/original/missing.png"){ - avatar="./img/missing.svg"; + if (avatar == "/avatars/original/missing.png") { + avatar = "./img/missing.svg"; } var obj = [{ at: at, @@ -184,7 +183,6 @@ function getdata() { vis: json["source"]["privacy"] }]; var json = JSON.stringify(obj); - console.log(obj); localStorage.setItem("multi", json); localStorage.setItem("name_" + acct_id, json["display_name"]); localStorage.setItem("user_" + acct_id, json["acct"]); @@ -206,28 +204,27 @@ function getdataAdv(domain, at) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json.error) { console.error("Error:" + json.error); - Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error, + Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error, 5000); return; } - var avatar=json["avatar"]; + var avatar = json["avatar"]; //missingがmissingなやつ - if(avatar=="/avatars/original/missing.png"){ - avatar="../../img/missing.svg"; + if (avatar == "/avatars/original/missing.png") { + avatar = "../../img/missing.svg"; } - if(json["source"]["privacy"]){ - var priv=json["source"]["privacy"]; - }else{ - var priv="public"; + if (json["source"]["privacy"]) { + var priv = json["source"]["privacy"]; + } else { + var priv = "public"; } var add = { at: at, @@ -246,45 +243,42 @@ function getdataAdv(domain, at) { localStorage.setItem("user_" + target, json["acct"]); localStorage.setItem("user-id_" + target, json["id"]); localStorage.setItem("prof_" + target, avatar); - console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("multi", json); - location.href="index.html"; + location.href = "index.html"; }); } //ユーザーデータ更新 -function refresh(target,loadskip) { +function refresh(target, loadskip) { var multi = localStorage.getItem("multi"); var obj = JSON.parse(multi); - if(obj[target].mode=="misskey"){ + if (obj[target].mode == "misskey") { return } var start = "https://" + obj[target].domain + "/api/v1/accounts/verify_credentials"; - console.log(start); fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + obj[target].at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json.error) { console.error("Error:" + json.error); - Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error, + Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error, 5000); return; } - var avatar=json["avatar"]; + var avatar = json["avatar"]; //missingがmissingなやつ - if(avatar=="/avatars/original/missing.png" || !avatar){ - avatar="./img/missing.svg"; + if (avatar == "/avatars/original/missing.png" || !avatar) { + avatar = "./img/missing.svg"; } var ref = { at: obj[target].at, @@ -298,14 +292,12 @@ function refresh(target,loadskip) { localStorage.setItem("name_" + target, json["display_name"]); localStorage.setItem("user_" + target, json["acct"]); localStorage.setItem("user-id_" + target, json["id"]); - console.log("user-id_" + target+":"+json["id"]) - console.log(localStorage.getItem("user-id_"+target)); localStorage.setItem("prof_" + target, avatar); localStorage.setItem("follow_" + target, json["following_count"]); obj[target] = ref; var json = JSON.stringify(obj); localStorage.setItem("multi", json); - if(!loadskip){ + if (!loadskip) { load(); } }); @@ -324,95 +316,94 @@ function ckdb(acct_id) { localStorage.removeItem("fav_" + acct_id); localStorage.removeItem("bt_" + acct_id); localStorage.removeItem("followlocale_" + acct_id); - if(domain=="kirishima.cloud"){ + if (domain == "kirishima.cloud") { localStorage.setItem("kirishima", "true"); $("#ranking-btn").show(); - }else if(domain=="imastodon.net"){ + } else if (domain == "imastodon.net") { localStorage.setItem("imas", "true"); $(".imasonly").show(); } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var bbcode = domain + "_bbcode"; var letters = domain + "_letters"; - if(localStorage.getItem("instance")){ - var json=JSON.parse(localStorage.getItem("instance")); - if (json[bbcode]) { - if (json[bbcode] == "enabled") { - localStorage.setItem("bb_" + acct_id, "true"); - } else { - localStorage.removeItem("bb_" + acct_id); - $("[data-activates='bbcode']").addClass("disabled"); - $("[data-activates='bbcode']").prop("disabled", true); - } + if (localStorage.getItem("instance")) { + var json = JSON.parse(localStorage.getItem("instance")); + if (json[bbcode]) { + if (json[bbcode] == "enabled") { + localStorage.setItem("bb_" + acct_id, "true"); } else { localStorage.removeItem("bb_" + acct_id); $("[data-activates='bbcode']").addClass("disabled"); - $("[data-activates='bbcode']").addClass("disabled", true); - } - - if (json[domain + "_markdown"] == "enabled") { - localStorage.setItem("md_" + acct_id, "true"); - $(".markdown").show(); - }else{ - $(".anti-markdown").hide(); - $(".markdown").hide(); - localStorage.removeItem("bb_" + acct_id); - } - if(json[domain + "_home"]){ - console.log("unique name:"+json[domain + "_home"]); - localStorage.setItem("home_" + acct_id, json[domain + "_home"]); - } - if(json[domain + "_local"]){ - localStorage.setItem("local_" + acct_id, json[domain + "_local"]); - } - if(json[domain + "_public"]){ - localStorage.setItem("public_" + acct_id, json[domain + "_public"]); - } - if(json[domain + "_notification"]){ - localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]); - } - if(json[domain + "_post"]){ - localStorage.setItem("post_" + acct_id, json[domain + "_post"]); - } - if(json[domain + "_fav"]){ - localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]); - } - if(json[domain + "_bt"]){ - localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]); - } - if(json[domain + "_follow"]){ - localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]); + $("[data-activates='bbcode']").prop("disabled", true); } + } else { + localStorage.removeItem("bb_" + acct_id); + $("[data-activates='bbcode']").addClass("disabled"); + $("[data-activates='bbcode']").addClass("disabled", true); + } + + if (json[domain + "_markdown"] == "enabled") { + localStorage.setItem("md_" + acct_id, "true"); + $(".markdown").show(); + } else { + $(".anti-markdown").hide(); + $(".markdown").hide(); + localStorage.removeItem("bb_" + acct_id); + } + if (json[domain + "_home"]) { + localStorage.setItem("home_" + acct_id, json[domain + "_home"]); + } + if (json[domain + "_local"]) { + localStorage.setItem("local_" + acct_id, json[domain + "_local"]); + } + if (json[domain + "_public"]) { + localStorage.setItem("public_" + acct_id, json[domain + "_public"]); + } + if (json[domain + "_notification"]) { + localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]); + } + if (json[domain + "_post"]) { + localStorage.setItem("post_" + acct_id, json[domain + "_post"]); + } + if (json[domain + "_fav"]) { + localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]); + } + if (json[domain + "_bt"]) { + localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]); + } + if (json[domain + "_follow"]) { + localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]); + } } - if(localStorage.getItem("mode_" + domain)!="misskey"){ + if (localStorage.getItem("mode_" + domain) != "misskey") { var start = "https://" + domain + "/api/v1/instance"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json' }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json.error) { + console.error(json.error); return; } - if(json){ - if(json["max_toot_chars"]){ + if (json) { + if (json["max_toot_chars"]) { localStorage.setItem("letters_" + acct_id, json["max_toot_chars"]); } - if(json["urls"]["streaming_api"]){ + if (json["urls"]["streaming_api"]) { localStorage.setItem("streaming_" + acct_id, json["urls"]["streaming_api"]); } } }); - - }else{ + + } else { } - + } @@ -427,92 +418,94 @@ function multiSelector() { var obj = JSON.parse(multi); } var templete; - if(localStorage.getItem("mainuse")=="main"){ + if (localStorage.getItem("mainuse") == "main") { var last = localStorage.getItem("main"); - }else if(localStorage.getItem("last-use")){ + } else if (localStorage.getItem("last-use")) { var last = localStorage.getItem("last-use"); - }else{ - var last=0; - } - var sel; - if(obj.length<1){ - $("#src-acct-sel").html(''); - $("#add-acct-sel").html(''); - }else{ - Object.keys(obj).forEach(function(key) { - var acct = obj[key]; - var list = key * 1 + 1; - if (key == last) { - sel = "selected"; - var domain = acct.domain; - localStorage.setItem("domain_" + key, domain); - if(idata[domain+"_letters"]){ - $("#textarea").attr("data-length", idata[domain+"_letters"]) - }else{ - var maxletters = localStorage.getItem("letters_" + key); - if(maxletters>0){ - $("#textarea").attr("data-length", maxletters) - }else{ - $("#textarea").attr("data-length", 500) - } - } - if(idata[domain+"_glitch"]){ - $("#local-button").removeClass("hide") - } - var profimg = acct.prof; - localStorage.setItem("prof_" + key, profimg); - console.log(profimg); - if(!profimg){ - profimg="../../img/missing.svg"; - } - $("#acct-sel-prof").attr("src",profimg); - console.log(domain); - if(domain){ - var cc="("+domain+")"; - }else{ - var cc=""; - } - $("#toot-post-btn").text(lang.lang_toot+cc); - if(acct.background && acct.background!="def" && acct.text && acct.text!="def"){ - $("#toot-post-btn").removeClass("indigo"); - $("#toot-post-btn").css("background-color","#"+acct.background); - $("#toot-post-btn").css("color",acct.text); - }else{ - } - if(domain=="kirishima.cloud"){ - $("#faicon-btn").show(); - }else{ - $("#faicon-btn").hide(); - } - if(domain=="imastodon.net"){ - trendTag(); - }else{ - $("#trendtag").html(""); - } - } else { - sel = ""; + if (last == "webview" || last == "noauth") { + last = "0"; } - templete = ''; - $(".acct-sel").append(templete); - - }); + } else { + var last = "0"; + } + last = last + ""; + var sel; + if (obj.length < 1) { + $("#src-acct-sel").html(''); + $("#add-acct-sel").html(''); + } else { + Object.keys(obj).forEach(function (key) { + var acct = obj[key]; + var list = key * 1 + 1; + if (key+"" === last) { + sel = "selected"; + var domain = acct.domain; + localStorage.setItem("domain_" + key, domain); + if (idata[domain + "_letters"]) { + $("#textarea").attr("data-length", idata[domain + "_letters"]) + } else { + var maxletters = localStorage.getItem("letters_" + key); + if (maxletters > 0) { + $("#textarea").attr("data-length", maxletters) + } else { + $("#textarea").attr("data-length", 500) + } + } + if (idata[domain + "_glitch"]) { + $("#local-button").removeClass("hide") + } + var profimg = acct.prof; + localStorage.setItem("prof_" + key, profimg); + if (!profimg) { + profimg = "../../img/missing.svg"; + } + $("#acct-sel-prof").attr("src", profimg); + if (domain) { + var cc = "(" + domain + ")"; + } else { + var cc = ""; + } + $("#toot-post-btn").text(lang.lang_toot + cc); + if (acct.background && acct.background != "def" && acct.text && acct.text != "def") { + $("#toot-post-btn").removeClass("indigo"); + $("#toot-post-btn").css("background-color", "#" + acct.background); + $("#toot-post-btn").css("color", acct.text); + } else { + } + if (domain == "kirishima.cloud") { + $("#faicon-btn").show(); + } else { + $("#faicon-btn").hide(); + } + if (domain == "imastodon.net") { + trendTag(); + } else { + $("#trendtag").html(""); + } + } else { + sel = ""; + } + templete = ''; + $(".acct-sel").append(templete); + + }); $("#src-acct-sel").append(''); - $("#add-acct-sel").append(''); + $("#add-acct-sel").append(''); } $('select').material_select('update'); parseColumn(true); } //バージョンエンコ -function enc(ver){ - var ver = ver.replace( /\s/g , "" ); - var ver = ver.replace( /\(/g , "-" ); - var ver = ver.replace( /\)/g , "" ); - var ver = ver.replace( /\[/g , "_" ); - var ver = ver.replace( /\]/g , "" ); - return ver; +function enc(ver) { + var ver = ver.replace(/\s/g, ""); + var ver = ver.replace(/\(/g, "-"); + var ver = ver.replace(/\)/g, ""); + var ver = ver.replace(/\[/g, "_"); + var ver = ver.replace(/\]/g, ""); + return ver; } //インスタンスティッカー function ticker() { @@ -522,15 +515,15 @@ function ticker() { headers: { 'content-type': 'application/json' }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { console.error(error); - }).then(function(json) { + }).then(function (json) { if (json.error) { return; } - if(json){ + if (json) { localStorage.setItem("ticker", JSON.stringify(json)); } }); diff --git a/app/js/login/logout.js b/app/js/login/logout.js index 5e195e5d..56b71c23 100644 --- a/app/js/login/logout.js +++ b/app/js/login/logout.js @@ -1,7 +1,7 @@ //ログアウトします -function logout(){ - localStorage.removeItem("acct_"+ acct_id + "_at"); - localStorage.removeItem("domain_"+acct_id); - location.href="index.html"; +function logout() { + localStorage.removeItem("acct_" + acct_id + "_at"); + localStorage.removeItem("domain_" + acct_id); + location.href = "index.html"; todc(); } \ No newline at end of file diff --git a/app/js/login/manager.js b/app/js/login/manager.js index 9c476257..16e151ec 100644 --- a/app/js/login/manager.js +++ b/app/js/login/manager.js @@ -2,13 +2,13 @@ //最初に読むやつ function load() { $("#acct-list").html(""); - if(location.search){ + if (location.search) { var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode=m[1]; - var codex=m[2]; - if(mode=="first" && codex=="true"){ + var mode = m[1]; + var codex = m[2]; + if (mode == "first" && codex == "true") { $("body").addClass("first") - }else{ + } else { } } var prof = localStorage.getItem("prof"); @@ -25,40 +25,40 @@ function load() { } else { var obj = JSON.parse(multi); } - if(obj[0]){ - if(!obj[0].at){ - obj=[]; + if (obj[0]) { + if (!obj[0].at) { + obj = []; localStorage.removeItem("multi"); } } - - console.log(obj); + + console.table(obj); var templete; - Object.keys(obj).forEach(function(key) { + Object.keys(obj).forEach(function (key) { var acct = obj[key]; var list = key * 1 + 1; - if(acct.background!="def" && acct.text!="def"){ - var style='style="background-color:#'+acct.background+'; color:'+acct.text+';"' - }else{ - var style="" + if (acct.background != "def" && acct.text != "def") { + var style = 'style="background-color:#' + acct.background + '; color:' + acct.text + ';"' + } else { + var style = "" } - if(acct.name){ - var name=acct.name; - }else{ - var name=acct.user; + if (acct.name) { + var name = acct.name; + } else { + var name = acct.user; } - templete = '
' + list + + templete = ''; + ')">delete' + lang.lang_manager_delete + '
' + lang.lang_manager_color + '
'; $("#acct-list").append(templete); - colorpicker(key) + colorpicker(key) }); multisel(); var acctN = localStorage.getItem("acct"); @@ -93,13 +93,12 @@ function data(domain) { 'content-type': 'application/json', 'Authorization': 'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M' }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (!json.error) { $("#ins-name").text(json.name); $("#ins-upd").text(date(json.checked_at, 'full')); @@ -110,21 +109,22 @@ function data(domain) { $("#ins-per").text(json.uptime * 100); $("#ins-user").text(json.users); $("#ins-ver").text(json.version); + } else { + console.error(json.error); } }); - var start = "https://" + domain +"/api/v1/instance"; + var start = "https://" + domain + "/api/v1/instance"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (!json.error) { $("#ins-title").text(json.title); $("#ins-desc").html(json.description); @@ -133,8 +133,10 @@ function data(domain) { $("#ins-user").text(json.stats.user_count); $("#ins-ver").text(json.version); $("#ins-prof").attr('src', json.thumbnail); - $("#ins-admin").text(escapeHTML(json.contact_account.display_name)+"("+json.contact_account.acct+")"); - $("#ins-admin").attr("href","index.html?mode=user&code="+json.contact_account.username+"@"+domain); + $("#ins-admin").text(escapeHTML(json.contact_account.display_name) + "(" + json.contact_account.acct + ")"); + $("#ins-admin").attr("href", "index.html?mode=user&code=" + json.contact_account.username + "@" + domain); + } else { + console.error(json.error); } }); } @@ -144,15 +146,14 @@ function multiDel(target) { var multi = localStorage.getItem("multi"); var obj = JSON.parse(multi); //削除確認ダイアログ - if (confirm(obj[target]["user"] + "@" + obj[target]["domain"] +lang.lang_manager_confirm)) { - Object.keys(obj).forEach(function(key) { - var nk=key-1; + if (confirm(obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm)) { + Object.keys(obj).forEach(function (key) { + var nk = key - 1; //公開範囲(差分のみ) - if(key>=target){ - var oldvis=localStorage.getItem("vis-memory-"+key); - console.log(oldvis); - if(oldvis){ - localStorage.setItem("vis-memory-"+nk,oldvis); + if (key >= target) { + var oldvis = localStorage.getItem("vis-memory-" + key); + if (oldvis) { + localStorage.setItem("vis-memory-" + nk, oldvis); } } //独自ロケール @@ -161,11 +162,11 @@ function multiDel(target) { localStorage.removeItem("public_" + key); localStorage.removeItem("notification_" + key); //アクセストークンとドメイン、プロフ(差分) - if(key>target){ - var olddom=localStorage.getItem("domain_"+key); - localStorage.setItem("domain_"+nk,olddom); - var oldat=localStorage.getItem("acct_"+key+"_at"); - localStorage.setItem("acct_"+nk+"_at",oldat); + if (key > target) { + var olddom = localStorage.getItem("domain_" + key); + localStorage.setItem("domain_" + nk, olddom); + var oldat = localStorage.getItem("acct_" + key + "_at"); + localStorage.setItem("acct_" + nk + "_at", oldat); localStorage.setItem("name_" + nk, localStorage.getItem("name_" + key)); localStorage.setItem("user_" + target, localStorage.getItem("user_" + key)); localStorage.setItem("user-id_" + target, localStorage.getItem("user-id_" + key)); @@ -175,25 +176,24 @@ function multiDel(target) { }); //とりあえず消す obj.splice(target, 1); - console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("multi", json); load(); //カラムデータコンフリクト var col = localStorage.getItem("column"); var oldcols = JSON.parse(col); - var newcols=[]; - Object.keys(oldcols).forEach(function(key) { - var nk=key-1; - var oldcol=oldcols[key]; - if(target=target){ - var oldvis=localStorage.getItem("vis-memory-"+key); - console.log(oldvis); - if(oldvis){ - var nk=key-1; - localStorage.setItem("vis-memory-"+nk,oldvis); - } - } - localStorage.removeItem("home_" + key); - localStorage.removeItem("local_" + key); - localStorage.removeItem("public_" + key); - localStorage.removeItem("notification_" + key); - refresh(key); - }); - var col = localStorage.getItem("column"); - if (!col) { - var obj = [{ - domain: 0, - type: 'local' - }]; - localStorage.setItem("card_0","true"); - var json = JSON.stringify(obj); - localStorage.setItem("column", json); - } else { - var cobj = JSON.parse(col); - } - Object.keys(cobj).forEach(function(key) { - var column = cobj[key]; - if(column.domain>target){ - var nk=key-1; - column.domain=nk; - cobj[key]=column; - }else if(column.domain==target){ - localStorage.removeItem("card_" + tlid); - cobj.splice(key, 1); + Object.keys(obj).forEach(function (key) { + if (key >= target) { + var oldvis = localStorage.getItem("vis-memory-" + key); + if (oldvis) { + var nk = key - 1; + localStorage.setItem("vis-memory-" + nk, oldvis); } - }); - var json = JSON.stringify(column); + } + localStorage.removeItem("home_" + key); + localStorage.removeItem("local_" + key); + localStorage.removeItem("public_" + key); + localStorage.removeItem("notification_" + key); + refresh(key); + }); + var col = localStorage.getItem("column"); + if (!col) { + var obj = [{ + domain: 0, + type: 'local' + }]; + localStorage.setItem("card_0", "true"); + var json = JSON.stringify(obj); localStorage.setItem("column", json); + } else { + var cobj = JSON.parse(col); + } + Object.keys(cobj).forEach(function (key) { + var column = cobj[key]; + if (column.domain > target) { + var nk = key - 1; + column.domain = nk; + cobj[key] = column; + } else if (column.domain == target) { + localStorage.removeItem("card_" + tlid); + cobj.splice(key, 1); + } + }); + var json = JSON.stringify(column); + localStorage.setItem("column", json); load(); } } //サポートインスタンス function support() { - Object.keys(idata).forEach(function(key) { - var instance = idata[key]; - if (instance == "instance") { - templete = '' + idata[key + "_name"] + '(' + key + ')'; - $("#support").append(templete); - }else if (instance == "misskey") { - templete = '' + idata[key + "_name"] + '(' + key + ')'; - $("#support").append(templete); - } - }); + Object.keys(idata).forEach(function (key) { + var instance = idata[key]; + if (instance == "instance") { + templete = '' + idata[key + "_name"] + '(' + key + ')'; + $("#support").append(templete); + } else if (instance == "misskey") { + templete = '' + idata[key + "_name"] + '(' + key + ')'; + $("#support").append(templete); + } + }); } //URL指定してポップアップ function login(url) { var multi = localStorage.getItem("multi"); var obj = JSON.parse(multi); - if($('#misskey:checked').val()=="on"){ + if ($('#misskey:checked').val() == "on") { $("#misskey").prop("checked", true); misskeyLogin(url); return; } - if($('#linux:checked').val()=="on"){ + if ($('#linux:checked').val() == "on") { var red = "https://thedesk.top/hello.html" - }else{ + } else { var red = 'thedesk://manager'; } - console.log(red); localStorage.setItem("redirect", red); var start = "https://" + url + "/api/v1/apps"; var httpreq = new XMLHttpRequest(); @@ -300,13 +298,12 @@ function login(url) { redirect_uris: red, website: "https://thedesk.top" })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); - localStorage.setItem("msky","false"); + localStorage.setItem("msky", "false"); var auth = "https://" + url + "/oauth/authorize?client_id=" + json[ - "client_id"] + "&client_secret=" + json["client_secret"] + + "client_id"] + "&client_secret=" + json["client_secret"] + "&response_type=code&scope=read+write+follow&redirect_uri=" + encodeURIComponent(red); localStorage.setItem("domain_tmp", url); localStorage.setItem("client_id", json["client_id"]); @@ -316,111 +313,109 @@ function login(url) { const { shell } = require('electron'); - + shell.openExternal(auth); var electron = require("electron"); var ipc = electron.ipcRenderer; - if ($('#linux:checked').val() == "on") {} else { + if ($('#linux:checked').val() == "on") { } else { ipc.send('quit', 'go'); } } } - + } //これが後のMisskeyである。 function misskeyLogin(url) { - if(!url){ - var url=$("#misskey-url").val(); + if (!url) { + var url = $("#misskey-url").val(); } - var start = "https://"+url+"/api/app/create"; + var start = "https://" + url + "/api/app/create"; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.responseType = "json"; - localStorage.setItem("msky","true"); + localStorage.setItem("msky", "true"); httpreq.send(JSON.stringify({ - name: "TheDesk(PC)", - description: "Mastodon client for PC", - permission: [ - "account-read", - "account-write", - "account/read", - "account/write", - "drive-read", - "drive-write", - "favorite-read", - "favorite-write", - "favorites-read", - "following-read", - "following-write", - "messaging-read", - "messaging-write", - "note-read", - "note-write", - "notification-read", - "notification-write", - "reaction-read", - "reaction-write", - "vote-read", - "vote-write", - "read:account", - "write:account", - "read:drive", - "write:drive", - "read:blocks", - "write:blocks", - "read:favorites", - "write:favorites", - "read:following", - "write:following", - "read:messaging", - "write:messaging", - "read:mutes", - "write:mutes", - "write:notes", - "read:notifications", - "write:notifications", - "read:reactions", - "write:reactions", - "write:votes" - ] + name: "TheDesk(PC)", + description: "Mastodon client for PC", + permission: [ + "account-read", + "account-write", + "account/read", + "account/write", + "drive-read", + "drive-write", + "favorite-read", + "favorite-write", + "favorites-read", + "following-read", + "following-write", + "messaging-read", + "messaging-write", + "note-read", + "note-write", + "notification-read", + "notification-write", + "reaction-read", + "reaction-write", + "vote-read", + "vote-write", + "read:account", + "write:account", + "read:drive", + "write:drive", + "read:blocks", + "write:blocks", + "read:favorites", + "write:favorites", + "read:following", + "write:following", + "read:messaging", + "write:messaging", + "read:mutes", + "write:mutes", + "write:notes", + "read:notifications", + "write:notifications", + "read:reactions", + "write:reactions", + "write:votes" + ] })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); misskeyAuth(url, json.secret) } } - + } -function misskeyAuth(url, mkc){ - var start = "https://"+url+"/api/auth/session/generate"; +function misskeyAuth(url, mkc) { + var start = "https://" + url + "/api/auth/session/generate"; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.responseType = "json"; - localStorage.setItem("mkc",mkc) - localStorage.setItem("msky","true"); + localStorage.setItem("mkc", mkc) + localStorage.setItem("msky", "true"); httpreq.send(JSON.stringify({ appSecret: mkc })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); const { shell } = require('electron'); - var token=json.token; + var token = json.token; $("#auth").show(); $("#code").val(token); $("#add").hide(); $("#misskey").prop("checked", false); - localStorage.setItem("domain_tmp",url); + localStorage.setItem("domain_tmp", url); shell.openExternal(json.url); } } @@ -429,7 +424,7 @@ function misskeyAuth(url, mkc){ //テキストボックスにURL入れた function instance() { var url = $("#url").val(); - if(url.indexOf("@")!=-1 || url.indexOf("https")!=-1){ + if (url.indexOf("@") != -1 || url.indexOf("https") != -1) { alert("入力形式が違います。(Cutls@mstdn.jpにログインする場合、入力するのは\"mstdn.jp\"です。)") return false; } @@ -439,30 +434,28 @@ function instance() { //コード入れてAccessTokenゲット function code(code) { localStorage.removeItem("redirect") - if(!code){ + if (!code) { var code = $("#code").val(); $("#code").val(""); } var url = localStorage.getItem("domain_tmp"); localStorage.removeItem("domain_tmp"); - console.log(localStorage.getItem("msky")); - if(localStorage.getItem("msky")=="true"){ - var start = "https://"+url+"/api/auth/session/userkey"; + if (localStorage.getItem("msky") == "true") { + var start = "https://" + url + "/api/auth/session/userkey"; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.responseType = "json"; httpreq.send(JSON.stringify({ - token:code, - appSecret:localStorage.getItem("mkc") + token: code, + appSecret: localStorage.getItem("mkc") })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; var i = sha256(json.accessToken + localStorage.getItem("mkc")); - console.log(json); - var avatar=json["user"]["avatarUrl"]; - var priv="public"; + var avatar = json["user"]["avatarUrl"]; + var priv = "public"; var add = { at: i, name: json["user"]["name"], @@ -473,7 +466,7 @@ function code(code) { vis: priv, mode: "misskey" }; - localStorage.setItem("mode_" + url,"misskey") + localStorage.setItem("mode_" + url, "misskey") var multi = localStorage.getItem("multi"); var obj = JSON.parse(multi); var target = obj.lengtth; @@ -482,18 +475,17 @@ function code(code) { localStorage.setItem("user_" + target, json["user"]["username"]); localStorage.setItem("user-id_" + target, json["user"]["id"]); localStorage.setItem("prof_" + target, avatar); - console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("multi", json); - if($("body").hasClass("first")){ - location.href="index.html" + if ($("body").hasClass("first")) { + location.href = "index.html" } load(); return; } - } + } return; - }else{ + } else { var start = "https://" + url + "/oauth/token"; var id = localStorage.getItem("client_id"); var secret = localStorage.getItem("client_secret"); @@ -508,10 +500,9 @@ function code(code) { client_secret: secret, code: code })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); if (json["access_token"]) { $("#auth").hide(); $("#add").show(); @@ -520,7 +511,7 @@ function code(code) { } } } - + } //ユーザーデータ取得 function getdata(domain, at) { @@ -531,28 +522,27 @@ function getdata(domain, at) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json.error) { console.error("Error:" + json.error); - Materialize.toast(lang.lang_fatalerroroccured+"Error:" + escapeHTML(json.error), + Materialize.toast(lang.lang_fatalerroroccured + "Error:" + escapeHTML(json.error), 5000); return; } - var avatar=json["avatar"]; + var avatar = json["avatar"]; //missingがmissingなやつ - if(avatar=="/avatars/original/missing.png"){ - avatar="../../img/missing.svg"; + if (avatar == "/avatars/original/missing.png") { + avatar = "../../img/missing.svg"; } - if(json["source"]){ - var priv=json["source"]["privacy"]; - }else{ - var priv="public"; + if (json["source"]) { + var priv = json["source"]["privacy"]; + } else { + var priv = "public"; } var add = { at: at, @@ -572,11 +562,10 @@ function getdata(domain, at) { localStorage.setItem("user_" + target, json["acct"]); localStorage.setItem("user-id_" + target, json["id"]); localStorage.setItem("prof_" + target, avatar); - console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("multi", json); - if($("body").hasClass("first")){ - location.href="index.html" + if ($("body").hasClass("first")) { + location.href = "index.html" } load(); }); @@ -586,36 +575,34 @@ function getdata(domain, at) { function refresh(target) { var multi = localStorage.getItem("multi"); var obj = JSON.parse(multi); - if(obj[target].mode=="misskey"){ - misskeyRefresh(obj,target,obj[target].domain); + if (obj[target].mode == "misskey") { + misskeyRefresh(obj, target, obj[target].domain); return } var start = "https://" + obj[target].domain + "/api/v1/accounts/verify_credentials"; - console.log(start); fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + obj[target].at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json.error) { console.error("Error:" + json.error); - Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error, + Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error, 5000); return; } - var avatar=json["avatar"]; + var avatar = json["avatar"]; //missingがmissingなやつ - if(avatar=="/avatars/original/missing.png" || !avatar){ - avatar="./img/missing.svg"; + if (avatar == "/avatars/original/missing.png" || !avatar) { + avatar = "./img/missing.svg"; } var ref = { at: obj[target].at, @@ -629,8 +616,6 @@ function refresh(target) { localStorage.setItem("name_" + target, json["display_name"]); localStorage.setItem("user_" + target, json["acct"]); localStorage.setItem("user-id_" + target, json["id"]); - console.log("user-id_" + target+":"+json["id"]) - console.log(localStorage.getItem("user-id_"+target)); localStorage.setItem("prof_" + target, avatar); obj[target] = ref; var json = JSON.stringify(obj); @@ -639,47 +624,45 @@ function refresh(target) { load(); }); } -function misskeyRefresh(obj,target,url){ - var start = "https://"+url+"/api/users/show"; - var httpreq = new XMLHttpRequest(); - httpreq.open('POST', start, true); - httpreq.setRequestHeader('Content-Type', 'application/json'); - httpreq.responseType = "json"; - httpreq.send(JSON.stringify({ - username:obj[target].user, - i:localStorage.getItem("at") - })); - httpreq.onreadystatechange = function() { - if (httpreq.readyState === 4) { - var json = httpreq.response; - console.log(json); - return; - var avatar=json["user"]["avatarURL"]; - var priv="public"; - var add = { - at: json.accessToken, - name: json["user"]["name"], - domain: url, - user: json["user"]["username"], - prof: avatar, - id: json["user"]["id"], - vis: priv - }; - var multi = localStorage.getItem("multi"); - var obj = JSON.parse(multi); - var target = obj.lengtth; - obj.push(add); - localStorage.setItem("name_" + target, json["user"]["name"]); - localStorage.setItem("user_" + target, json["user"]["username"]); - localStorage.setItem("user-id_" + target, json["user"]["id"]); - localStorage.setItem("prof_" + target, avatar); - console.log(obj); - var json = JSON.stringify(obj); - localStorage.setItem("multi", json); - load(); - return; - } - } +function misskeyRefresh(obj, target, url) { + var start = "https://" + url + "/api/users/show"; + var httpreq = new XMLHttpRequest(); + httpreq.open('POST', start, true); + httpreq.setRequestHeader('Content-Type', 'application/json'); + httpreq.responseType = "json"; + httpreq.send(JSON.stringify({ + username: obj[target].user, + i: localStorage.getItem("at") + })); + httpreq.onreadystatechange = function () { + if (httpreq.readyState === 4) { + var json = httpreq.response; + return; + var avatar = json["user"]["avatarURL"]; + var priv = "public"; + var add = { + at: json.accessToken, + name: json["user"]["name"], + domain: url, + user: json["user"]["username"], + prof: avatar, + id: json["user"]["id"], + vis: priv + }; + var multi = localStorage.getItem("multi"); + var obj = JSON.parse(multi); + var target = obj.lengtth; + obj.push(add); + localStorage.setItem("name_" + target, json["user"]["name"]); + localStorage.setItem("user_" + target, json["user"]["username"]); + localStorage.setItem("user-id_" + target, json["user"]["id"]); + localStorage.setItem("prof_" + target, avatar); + var json = JSON.stringify(obj); + localStorage.setItem("multi", json); + load(); + return; + } + } } //アカウントを選択…を実装 function multisel() { @@ -694,89 +677,88 @@ function multisel() { var templete; var last = localStorage.getItem("main"); var sel; - console.log(obj.length) - if(obj.length<1){ + if (obj.length < 1) { $("#src-acct-sel").html(''); - $("#add-acct-sel").html(''); - }else{ - Object.keys(obj).forEach(function(key) { - var acct = obj[key]; - var list = key * 1 + 1; - if (key == last) { - sel = "selected"; - mainb='('+lang.lang_manager_def+')' - var domain = localStorage.getItem("domain_" + key); - var profimg=localStorage.getItem("prof_"+key); - var domain=localStorage.getItem("domain_"+key); - if(!profimg){ - profimg="../../img/missing.svg"; + $("#add-acct-sel").html(''); + } else { + Object.keys(obj).forEach(function (key) { + var acct = obj[key]; + var list = key * 1 + 1; + if (key == last) { + sel = "selected"; + mainb = '(' + lang.lang_manager_def + ')' + var domain = localStorage.getItem("domain_" + key); + var profimg = localStorage.getItem("prof_" + key); + var domain = localStorage.getItem("domain_" + key); + if (!profimg) { + profimg = "../../img/missing.svg"; + } + } else { + sel = ""; + mainb = "" } - } else { - sel = ""; - mainb="" - } - templete = ''; - $(".acct-sel").append(templete); - - }); + templete = ''; + $(".acct-sel").append(templete); + + }); } $('select').material_select('update'); } -function mainacct(){ +function mainacct() { var acct_id = $("#main-acct-sel").val(); localStorage.setItem("main", acct_id); Materialize.toast(lang.lang_manager_mainAcct, 3000); } -function colorpicker(key){ - temp= - '
'+lang.lang_manager_none+'
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'; - $("#colorsel_"+key).html(temp); +function colorpicker(key) { + temp = + '
' + lang.lang_manager_none + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
'; + $("#colorsel_" + key).html(temp); } -function coloradd(key,bg,txt){ +function coloradd(key, bg, txt) { var col = localStorage.getItem("multi"); var o = JSON.parse(col); - var obj=o[key]; - obj.background=bg; - obj.text=txt; - o[key]=obj; + var obj = o[key]; + obj.background = bg; + obj.text = txt; + o[key] = obj; var json = JSON.stringify(o); localStorage.setItem("multi", json); - if(txt=="def"){ - $("#acct_"+key).attr("style","") - }else{ - $("#acct_"+key).css('background-color','#'+bg); - if(txt=="black"){ - var bghex="000000"; - var ichex="9e9e9e" - }else if(txt=="white"){ - var bghex="ffffff"; - var ichex="eeeeee" - } - $("#acct_"+key+" .nex").css('color','#'+ichex); - $("#acct_"+key).css('color','#'+bghex); + if (txt == "def") { + $("#acct_" + key).attr("style", "") + } else { + $("#acct_" + key).css('background-color', '#' + bg); + if (txt == "black") { + var bghex = "000000"; + var ichex = "9e9e9e" + } else if (txt == "white") { + var bghex = "ffffff"; + var ichex = "eeeeee" + } + $("#acct_" + key + " .nex").css('color', '#' + ichex); + $("#acct_" + key).css('color', '#' + bghex); } } //入力時にハッシュタグと@をサジェスト @@ -787,10 +769,10 @@ var input = document.getElementById("url"); var prev_val = input.value; var oldSuggest; var suggest; -input.addEventListener("focus", function() { +input.addEventListener("focus", function () { $("#ins-suggest").html(""); window.clearInterval(timer); - timer = window.setInterval(function() { + timer = window.setInterval(function () { var new_val = input.value; if (prev_val != new_val) { if (new_val.length > 3) { @@ -802,22 +784,22 @@ input.addEventListener("focus", function() { 'content-type': 'application/json', 'Authorization': 'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M' }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (!json.error) { - var urls = "Suggest:"; - Object.keys(json.instances).forEach(function(key) { + Object.keys(json.instances).forEach(function (key) { var url = json.instances[key]; urls = urls + ' ' +escapeHTML(url.name) + ' '; + '\')" class="pointer">' + escapeHTML(url.name) + ' '; }); $("#ins-suggest").html(urls); + } else { + console.error(json.error); } }); } @@ -827,6 +809,6 @@ input.addEventListener("focus", function() { }, 1000); }, false); -input.addEventListener("blur", function() { +input.addEventListener("blur", function () { window.clearInterval(timer); }, false); \ No newline at end of file diff --git a/app/js/platform/end.js b/app/js/platform/end.js index 7bb937c1..f9b70220 100644 --- a/app/js/platform/end.js +++ b/app/js/platform/end.js @@ -1,171 +1,136 @@ //プラットフォーム別 最後に読むやつ //リンクを外部で開くか内部で出すか - $(document).on('click', 'a', e => { - var $a = $(e.target); - var url = $a.attr('href'); - if (!url) { - var url = $a.parent().attr('href'); - } - var urls=[]; - if(url){ +$(document).on('click', 'a', e => { + var $a = $(e.target); + var url = $a.attr('href'); + if (!url) { + var url = $a.parent().attr('href'); + } + var urls = []; + if (url) { urls = url.match(/https?:\/\/(.+)/); //トゥートのURLぽかったら toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/); //タグのURLぽかったら - var tags=[]; - tags = url.match( - /https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/ - ); + var tags = []; + tags = url.match( + /https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/ + ); //メンションっぽかったら - var ats=[]; - ats = url.match( - /https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/ - ); - console.log(toot); - if(toot){ - if(toot[1]){ - var acct_id=$a.parent().attr("data-acct"); - if(!acct_id){ - acct_id=0; + var ats = []; + ats = url.match( + /https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/ + ); + if (toot) { + if (toot[1]) { + var acct_id = $a.parent().attr("data-acct"); + if (!acct_id) { + acct_id = 0; } $a.parent().addClass("loadp") $a.parent().text("Loading...") - detEx(url,acct_id); + detEx(url, acct_id); } - - }else if(tags){ - if(tags[2]){ - var acct_id=$a.parent().attr("data-acct"); - if(!acct_id){ - acct_id=0; + + } else if (tags) { + if (tags[2]) { + var acct_id = $a.parent().attr("data-acct"); + if (!acct_id) { + acct_id = 0; } - tl('tag',decodeURI(tags[2]),acct_id,'add') + tl('tag', decodeURI(tags[2]), acct_id, 'add') } - }else if(ats){ - console.log(ats); - if(ats[2]){ + } else if (ats) { + if (ats[2]) { //Quesdon判定 - if(!~ats[2].indexOf("@")){ - udgEx(ats[2]+"@"+ats[1],"main"); + if (!~ats[2].indexOf("@")) { + udgEx(ats[2] + "@" + ats[1], "main"); return false - }else{ + } else { const { shell } = require('electron'); - + shell.openExternal(url); } - - - } - }else{ - //hrefがhttp/httpsならブラウザで - if(urls){ - if (urls[0]) { - const {shell} = require('electron'); - if(~url.indexOf("thedeks.top")){ - //alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot."); - url="https://thedesk.top"; - } - shell.openExternal(url); - } else { - - location.href = url; - } - }else{ - location.href = url; - } - } - } - return false; - }); - - //よく使うライブラリ - /*マルチバイト用切り出し*/ - $.isSurrogatePear = function(upper, lower) { - return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF; - }; - $.mb_strlen = function(str) { - var ret = 0; - for (var i = 0; i < str.length; i++, ret++) { - var upper = str.charCodeAt(i); - var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0; - if ($.isSurrogatePear(upper, lower)) { - i++; - } - } - return ret; - }; - $.mb_substr = function(str, begin, end) { - var ret = ''; - for (var i = 0, len = 0; i < str.length; i++, len++) { - var upper = str.charCodeAt(i); - var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0; - var s = ''; - if ($.isSurrogatePear(upper, lower)) { - i++; - s = String.fromCharCode(upper, lower); - } else { - s = String.fromCharCode(upper); - } - if (begin <= len && len < end) { - ret += s; - } - } - return ret; - }; - //コピー - function execCopy(string){ + + } + } else { + //hrefがhttp/httpsならブラウザで + if (urls) { + if (urls[0]) { + const { shell } = require('electron'); + if (~url.indexOf("thedeks.top")) { + //alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot."); + url = "https://thedesk.top"; + } + shell.openExternal(url); + } else { + + location.href = url; + } + } else { + location.href = url; + } + } + } + return false; +}); + +//よく使うライブラリ + +//コピー +function execCopy(string) { var temp = $("#copy"); temp.val(string); temp.select(); var result = document.execCommand('copy'); return result; - } - //Nano -function nano(){ - var electron = require("electron"); - var ipc = electron.ipcRenderer; - ipc.send('nano', ""); +} +//Nano +function nano() { + var electron = require("electron"); + var ipc = electron.ipcRenderer; + ipc.send('nano', ""); } function progshow(e) { if (e.lengthComputable) { - var percent = e.loaded / e.total; - console.log(percent * 100); - $("#imgsel").hide(); - if(percent<1){ - $("#imgup").text(Math.floor(percent*100)+"%"); - }else{ - $("#imgup").text(lang.lang_progress); - } + var percent = e.loaded / e.total; + console.log("Progress: " + percent * 100); + $("#imgsel").hide(); + if (percent < 1) { + $("#imgup").text(Math.floor(percent * 100) + "%"); + } else { + $("#imgup").text(lang.lang_progress); + } } - } +} - var electron = require("electron"); - var ipc = electron.ipcRenderer; - ipc.on('reload', function (event, arg) { +var electron = require("electron"); +var ipc = electron.ipcRenderer; +ipc.on('reload', function (event, arg) { location.reload(); }) ipc.on('mess', function (event, arg) { - if(arg=="unzip"){ - if(lang=="ja"){ + if (arg == "unzip") { + if (lang == "ja") { $("body").text("アップデートを展開中です。"); - }else{ + } else { $("body").text("Unzipping..."); } - - } + + } }) //Native Notf ipc.on('shownotf', function (event, args) { - if(args["type"]=="toot"){ + if (args["type"] == "toot") { details(id, acct_id) - }else if(args["type"]=="userdata"){ + } else if (args["type"] == "userdata") { udg(user, acct_id) } }) -function opendev(){ +function opendev() { var webview = document.getElementById("webview"); webview.openDevTools(); /*webview.sendInputEvent({ @@ -179,15 +144,15 @@ var webviewDom = document.getElementById('webview'); const { shell } = require('electron'); -webviewDom.addEventListener('new-window', function(e) { - shell.openExternal(e.url); +webviewDom.addEventListener('new-window', function (e) { + shell.openExternal(e.url); }); function playSound() { window.AudioContext = window.AudioContext || window.webkitAudioContext; context = new AudioContext(); context.createBufferSource().start(0); context.decodeAudioData(request.response, function (buf) { - console.log(source) + console.log("Playing:" + source) source.buffer = buf; source.loop = false; }); @@ -195,7 +160,6 @@ function playSound() { volumeControl = context.createGain(); source.connect(volumeControl); volumeControl.connect(context.destination); - volumeControl.gain.value=0.8 - console.log(volumeControl) + volumeControl.gain.value = 0.8 source.start(0); } \ No newline at end of file diff --git a/app/js/platform/first.js b/app/js/platform/first.js index 4f1525d4..20e3e8ad 100644 --- a/app/js/platform/first.js +++ b/app/js/platform/first.js @@ -1,91 +1,91 @@ //jQuery読む window.jQuery = window.$ = require('../../js/common/jquery.js'); var Hammer = require('../../js/common/hammer.min.js'); -$.strip_tags = function(str, allowed) { - if(!str){ +$.strip_tags = function (str, allowed) { + if (!str) { + return ""; + } + allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []) + .join(''); + var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, + commentsAndPhpTags = /|<\?(?:php)?[\s\S]*?\?>/gi; + return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) { + return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''; + }); +}; +function escapeHTML(str) { + if (!str) { return ""; } - allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []) - .join(''); - var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, - commentsAndPhpTags = /|<\?(?:php)?[\s\S]*?\?>/gi; - return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) { - return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''; - }); - }; - function escapeHTML(str) { - if(!str){ - return ""; - } return str.replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); - } - //PHPのnl2brと同様 + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} +//PHPのnl2brと同様 function nl2br(str) { - if(!str){ + if (!str) { return ""; } - str = str.replace(/\r\n/g, "
"); + str = str.replace(/\r\n/g, "
"); str = str.replace(/(\n|\r)/g, "
"); - return str; + return str; } function br2nl(str) { - if(!str){ + if (!str) { return ""; } - str = str.replace(/
/g, "\r\n"); - return str; + str = str.replace(/
/g, "\r\n"); + return str; } -function formattime(date){ - var str=date.getFullYear()+"-"; - if(date.getMonth()+1<10){ - str=str+"0"+(date.getMonth()+1)+"-"; - }else{ - str=str+(date.getMonth()+1)+"-"; +function formattime(date) { + var str = date.getFullYear() + "-"; + if (date.getMonth() + 1 < 10) { + str = str + "0" + (date.getMonth() + 1) + "-"; + } else { + str = str + (date.getMonth() + 1) + "-"; } - if(date.getDate()<10){ - str=str+"0"+date.getDate() - }else{ - str=str+date.getDate() + if (date.getDate() < 10) { + str = str + "0" + date.getDate() + } else { + str = str + date.getDate() } - str=str+"T"; - if(date.getHours()<10){ - str=str+"0"+date.getHours()+":" - }else{ - str=str+date.getHours()+":" + str = str + "T"; + if (date.getHours() < 10) { + str = str + "0" + date.getHours() + ":" + } else { + str = str + date.getHours() + ":" } - if(date.getMinutes()<10){ - str=str+"0"+date.getMinutes() - }else{ - str=str+date.getMinutes() + if (date.getMinutes() < 10) { + str = str + "0" + date.getMinutes() + } else { + str = str + date.getMinutes() } return escapeHTML(str); } -function formattimeutc(date){ - var str=date.getUTCFullYear()+"-"; - if(date.getUTCMonth()+1<10){ - str=str+"0"+(date.getUTCMonth()+1)+"-"; - }else{ - str=str+(date.getUTCMonth()+1)+"-"; +function formattimeutc(date) { + var str = date.getUTCFullYear() + "-"; + if (date.getUTCMonth() + 1 < 10) { + str = str + "0" + (date.getUTCMonth() + 1) + "-"; + } else { + str = str + (date.getUTCMonth() + 1) + "-"; } - if(date.getUTCDate()<10){ - str=str+"0"+date.getUTCDate() - }else{ - str=str+date.getUTCDate() + if (date.getUTCDate() < 10) { + str = str + "0" + date.getUTCDate() + } else { + str = str + date.getUTCDate() } - str=str+"T"; - if(date.getUTCHours()<10){ - str=str+"0"+date.getUTCHours()+":" - }else{ - str=str+date.getUTCHours()+":" + str = str + "T"; + if (date.getUTCHours() < 10) { + str = str + "0" + date.getUTCHours() + ":" + } else { + str = str + date.getUTCHours() + ":" } - if(date.getUTCMinutes()<10){ - str=str+"0"+date.getUTCMinutes() - }else{ - str=str+date.getUTCMinutes() + if (date.getUTCMinutes() < 10) { + str = str + "0" + date.getUTCMinutes() + } else { + str = str + date.getUTCMinutes() } return escapeHTML(str); } @@ -93,75 +93,104 @@ var electron = require("electron"); var ipc = electron.ipcRenderer; ipc.send('custom-css-request', ""); ipc.on('custom-css-response', function (event, arg) { - if(arg==""){ return false; } + if (arg == "") { return false; } var styleNode = document.createElement("style"); - styleNode.setAttribute("type","text/css") + styleNode.setAttribute("type", "text/css") var content = document.createTextNode(arg) styleNode.append(content) document.getElementsByTagName("head")[0].append(styleNode) }) ipc.on('theme-css-response', function (event, arg) { - if(arg==""){ return false; } + if (arg == "") { return false; } var styleNode = document.createElement("style"); - styleNode.setAttribute("type","text/css") + styleNode.setAttribute("type", "text/css") var content = document.createTextNode(arg) styleNode.append(content) document.getElementsByTagName("head")[0].append(styleNode) }) -function makeCID(){ - return randomStr(8)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(12); +function makeCID() { + return randomStr(8) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(12); } -function randomStr(l){ +function randomStr(l) { // 生成する文字列に含める文字セット var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var cl = c.length; var r = ""; - for(var i=0; i (i + 1) ? str.charCodeAt(i + 1) : 0; + if ($.isSurrogatePear(upper, lower)) { + i++; + } + } + return ret; +}; +$.mb_substr = function (str, begin, end) { + var ret = ''; + for (var i = 0, len = 0; i < str.length; i++ , len++) { + var upper = str.charCodeAt(i); + var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0; + var s = ''; + if ($.isSurrogatePear(upper, lower)) { + i++; + s = String.fromCharCode(upper, lower); + } else { + s = String.fromCharCode(upper); + } + if (begin <= len && len < end) { + ret += s; + } + } + return ret; +}; +localStorage.removeItem("errors"); \ No newline at end of file diff --git a/app/js/platform/nano.js b/app/js/platform/nano.js index e960e293..d7618bf1 100644 --- a/app/js/platform/nano.js +++ b/app/js/platform/nano.js @@ -1,38 +1,37 @@ //TL取得 function tl(data) { - var tlid=0; - var acct_id = $("#post-acct-sel").val(); - var type = $("#type-sel").val(); + var tlid = 0; + var acct_id = $("#post-acct-sel").val(); + var type = $("#type-sel").val(); var domain = localStorage.getItem("domain_" + acct_id); //タグの場合はカラム追加して描画 - if (!type) { - //デフォルト - var type = "local"; - } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + if (!type) { + //デフォルト + var type = "local"; + } + var at = localStorage.getItem("acct_" + acct_id + "_at"); $("#notice_nano").text(cap(type, data) + " TL(" + localStorage.getItem( "user_" + acct_id) + "@" + domain + ")"); var start = "https://" + domain + "/api/v1/timelines/" + com(type, data); - console.log(start); fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { console.error(error); - }).then(function(json) { + }).then(function (json) { var templete = parse([json[0]], '', acct_id, tlid); $("#timeline_nano").html(templete); jQuery("time.timeago").timeago(); }); -//Streaming接続 -var websocket=[]; - var tlid=0; + //Streaming接続 + var websocket = []; + var tlid = 0; if (type == "home") { var start = "wss://" + domain + "/api/v1/streaming/?stream=user&access_token=" + at; @@ -44,19 +43,14 @@ var websocket=[]; "/api/v1/streaming/?stream=public:local&access_token=" + at; } else if (type == "tag") { var start = "wss://" + domain + - "/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at; - } - console.log(start); + "/api/v1/streaming/?stream=hashtag&tag=" + data + "&access_token=" + at; + } var wsid = websocket.length; websocket[wsid] = new WebSocket(start); - websocket[wsid].onopen = function(mess) { - console.log(tlid + ":Connect Streaming API:" + type); - console.log(mess); + websocket[wsid].onopen = function (mess) { $("#notice_icon_" + tlid).removeClass("red-text"); } - websocket[wsid].onmessage = function(mess) { - console.log(tlid + ":Receive Streaming API:"); - console.log(websocket[wsid]); + websocket[wsid].onmessage = function (mess) { var typeA = JSON.parse(mess.data).event; if (typeA == "delete") { var obj = JSON.parse(mess.data).payload; @@ -64,15 +58,14 @@ var websocket=[]; $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); } else if (typeA == "update") { var obj = JSON.parse(JSON.parse(mess.data).payload); - console.log(obj); - var templete = parse([obj], '', acct_id, tlid); - $("#timeline_nano").html(templete); + var templete = parse([obj], '', acct_id, tlid); + $("#timeline_nano").html(templete); } - websocket[wsid].onclose = function(mess) { - console.log("Close Streaming API:" + type); + websocket[wsid].onclose = function (mess) { + console.error("Close Streaming API:" + type); } } - websocket[wsid].onerror = function(error) { + websocket[wsid].onerror = function (error) { console.error('WebSocket Error ' + error); }; } @@ -124,12 +117,12 @@ function icon(type) { return "subject" } } -function todo(){} -function todc(){} -function hide(){} -$(function($) { +function todo() { } +function todc() { } +function hide() { } +$(function ($) { //キーボードショートカット - $(window).keydown(function(e) { + $(window).keydown(function (e) { var hasFocus = $('input').is(':focus'); var hasFocus2 = $('textarea').is(':focus'); //Ctrl+Enter:投稿 diff --git a/app/js/platform/screenshot.js b/app/js/platform/screenshot.js index da43e630..ff1d4bb4 100644 --- a/app/js/platform/screenshot.js +++ b/app/js/platform/screenshot.js @@ -3,49 +3,49 @@ const fs = require("fs"); const os = require('os') const shell = electron.shell; const path = require('path') -function shot(){ +function shot() { //screenshotMsg.textContent = 'Gathering screens...' $(window).height - let options = { + let options = { types: ['screen'], thumbnailSize: { width: window.parent.screen.width, height: window.parent.screen.height - } - } - const desktopCapturer = electron.desktopCapturer; - desktopCapturer.getSources(options, function(error, sources) { - if (error) return console.log(error) + } + } + const desktopCapturer = electron.desktopCapturer; + desktopCapturer.getSources(options, function (error, sources) { + if (error) return console.log(error) - sources.forEach(function(source) { - if(location.search){ + sources.forEach(function (source) { + if (location.search) { var m = location.search.match(/\?id=([a-zA-Z-0-9]+)/); - var title=m[1]; - }else{ - var title="screenshot"; + var title = m[1]; + } else { + var title = "screenshot"; } - if (source.name === 'Screen 1' || source.name === 'TheDesk') { - var durl=source.thumbnail.toDataURL(); + if (source.name === 'Screen 1' || source.name === 'TheDesk') { + var durl = source.thumbnail.toDataURL(); var b64 = durl.match( /data:image\/png;base64,(.+)/ ); const screenshotPath = path.join(os.tmpdir(), 'screenshot.png'); const savePath = path.join(os.tmpdir(), 'screenshot.png'); - var ipc = electron.ipcRenderer; - var h = $(window).height()-150; - var w = $(window).width(); - ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title]); - if($(".img-parsed").length>0){ - for(i=0;i<$(".img-parsed").length;i++){ - var url=$(".img-parsed").eq(i).attr("data-url"); - ipc.send('shot-img-dl', [url,title+"_img"+i+".png"]); - } + var ipc = electron.ipcRenderer; + var h = $(window).height() - 150; + var w = $(window).width(); + ipc.send('shot', ['file://' + screenshotPath, w, h, b64[1], title]); + if ($(".img-parsed").length > 0) { + for (i = 0; i < $(".img-parsed").length; i++) { + var url = $(".img-parsed").eq(i).attr("data-url"); + ipc.send('shot-img-dl', [url, title + "_img" + i + ".png"]); } - window.close(); - return; - const message = `Saved screenshot to: ${screenshotPath}` - //screenshotMsg.textContent = message - } - }) - }) - } \ No newline at end of file + } + window.close(); + return; + const message = `Saved screenshot to: ${screenshotPath}` + //screenshotMsg.textContent = message + } + }) + }) +} \ No newline at end of file diff --git a/app/js/platform/twitter.js b/app/js/platform/twitter.js index 85daf7e5..51c377e6 100644 --- a/app/js/platform/twitter.js +++ b/app/js/platform/twitter.js @@ -12,33 +12,33 @@ function _classCallCheck(a, e) { if (!(a instanceof e)) throw new TypeError("Cannot call a class as a function") } var TJScrollTask = function () { - function a(e, f, g) { - _classCallCheck(this, a), this.tjDeck = e, this.$t = e.$wrap, this.x = f, this.d = g, this.sl = e.wrapL, this.sTime = Date.now(), this.ended = !1, this._bindAnim = this._anim.bind(this); - var h = e.getClms(); - 0 > f || f > h[0].offsetWidth * (h.length - 1) ? this.ended = !0 : requestAnimationFrame(this._bindAnim) + function a(e, f, g) { + _classCallCheck(this, a), this.tjDeck = e, this.$t = e.$wrap, this.x = f, this.d = g, this.sl = e.wrapL, this.sTime = Date.now(), this.ended = !1, this._bindAnim = this._anim.bind(this); + var h = e.getClms(); + 0 > f || f > h[0].offsetWidth * (h.length - 1) ? this.ended = !0 : requestAnimationFrame(this._bindAnim) + } + return _createClass(a, [{ + key: "stop", + value: function stop() { + this.ended || (this.ended = !0, cancelAnimationFrame(this._bindAnim)) } - return _createClass(a, [{ - key: "stop", - value: function stop() { - this.ended || (this.ended = !0, cancelAnimationFrame(this._bindAnim)) + }, { + key: "_anim", + value: function _anim() { + if (!this.ended) { + var e = (Date.now() - this.sTime) / this.d, + f = this.sl, + g = this.x - this.sl; + 1 < e && !this.ended && (this.stop(), e = 1), this.tjDeck.scrollWrap(this._easeOut(e, f, g, 1)), 1 > e && requestAnimationFrame(this._bindAnim) } - }, { - key: "_anim", - value: function _anim() { - if (!this.ended) { - var e = (Date.now() - this.sTime) / this.d, - f = this.sl, - g = this.x - this.sl; - 1 < e && !this.ended && (this.stop(), e = 1), this.tjDeck.scrollWrap(this._easeOut(e, f, g, 1)), 1 > e && requestAnimationFrame(this._bindAnim) - } - } - }, { - key: "_easeOut", - value: function _easeOut(e, f, g, h) { - return e /= h, --e, g * (e * e * e + 1) + f - } - }]), a - }(), + } + }, { + key: "_easeOut", + value: function _easeOut(e, f, g, h) { + return e /= h, --e, g * (e * e * e + 1) + f + } + }]), a +}(), TJDeck = function () { function a() { _classCallCheck(this, a), this.version = "0.0.9", this.$wrap = document.querySelector(".js-app-columns"), this.wrapL = 0, this.scrollTask = null, this.options = this.getOptionObj(), this.setOptionFromObj(this.options), this.$options = this.createOptionPanel(), document.body.appendChild(this.$options), this.updateBlur(), this.updateLight() @@ -117,22 +117,22 @@ var TJScrollTask = function () { key: "observeModals", value: function observeModals() { for (var e = new MutationObserver(function (j) { - for (var k, l, m = 0; m < j.length; m++) { - k = j[m]; - for (var o = 0; o < k.addedNodes.length; o++) l = k.addedNodes[m], this.stopAnkerFromModal(l) - } - }.bind(this)), f = { - attributes: !1, - characterData: !0, - childList: !0 - }, g = document.querySelectorAll(".js-modals-container, .js-modal"), h = 0; h < g.length; h++) e.observe(g[h], f) + for (var k, l, m = 0; m < j.length; m++) { + k = j[m]; + for (var o = 0; o < k.addedNodes.length; o++) l = k.addedNodes[m], this.stopAnkerFromModal(l) + } + }.bind(this)), f = { + attributes: !1, + characterData: !0, + childList: !0 + }, g = document.querySelectorAll(".js-modals-container, .js-modal"), h = 0; h < g.length; h++) e.observe(g[h], f) } }, { key: "stopAnkerFromModal", value: function stopAnkerFromModal(e) { for (var g, f = e.querySelectorAll("a"), h = function (k) { - return k.preventDefault(), k.target.removeEventListener("click", h), !1 - }, j = 0; j < f.length; j++) g = f[j], g.href && g.href.match(/#$/) && g.addEventListener("click", h) + return k.preventDefault(), k.target.removeEventListener("click", h), !1 + }, j = 0; j < f.length; j++) g = f[j], g.href && g.href.match(/#$/) && g.addEventListener("click", h) } }, { key: "observeClms", @@ -160,7 +160,7 @@ var TJScrollTask = function () { if (j) { if (0 > j) { var l = this._getPosObj(k); - if (Math.abs(l.x - e.x) < Math.abs(l.y - e.y)) return void(j = 0); + if (Math.abs(l.x - e.x) < Math.abs(l.y - e.y)) return void (j = 0); j = 1 } if (1 == j) { @@ -217,7 +217,7 @@ var TJScrollTask = function () { } }, { key: "showTJSetting", - value: function showTJSetting() {} + value: function showTJSetting() { } }, { key: "addTJNav", value: function addTJNav() { @@ -298,7 +298,7 @@ var TJScrollTask = function () { } }, { key: "refreshStyle", - value: function refreshStyle() {} + value: function refreshStyle() { } }, { key: "addStyle", value: function addStyle() { diff --git a/app/js/post/bb-md.js b/app/js/post/bb-md.js index 75a88882..02a72af7 100644 --- a/app/js/post/bb-md.js +++ b/app/js/post/bb-md.js @@ -1,67 +1,67 @@ //BBCodeとMarkdownの入力・パーサー //アカウント変えた時にBBとかMDとか -function mdCheck(){ +function mdCheck() { var acct_id = $("#post-acct-sel").val(); - var profimg=localStorage.getItem("prof_"+acct_id); - if(!profimg){ - profimg="../../img/missing.svg"; + var profimg = localStorage.getItem("prof_" + acct_id); + if (!profimg) { + profimg = "../../img/missing.svg"; } - $("#acct-sel-prof").attr("src",profimg); - if(localStorage.getItem("post_" + acct_id)){ - $("#toot-post-btn").text(localStorage.getItem("post_" + acct_id)+"("+localStorage.getItem("domain_"+acct_id)+")"); - }else{ - $("#toot-post-btn").text(lang.lang_toot+"("+localStorage.getItem("domain_"+acct_id)+")"); - } - if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){ - $(".markdown").addClass("hide"); + $("#acct-sel-prof").attr("src", profimg); + if (localStorage.getItem("post_" + acct_id)) { + $("#toot-post-btn").text(localStorage.getItem("post_" + acct_id) + "(" + localStorage.getItem("domain_" + acct_id) + ")"); + } else { + $("#toot-post-btn").text(lang.lang_toot + "(" + localStorage.getItem("domain_" + acct_id) + ")"); + } + if (!localStorage.getItem("bb_" + acct_id) && !localStorage.getItem("md_" + acct_id)) { + $(".markdown").addClass("hide"); $(".anti-markdown").addClass("hide"); - }else{ + } else { $(".anti-markdown").removeClass("hide"); - } - if($(".markdown").hasClass("hide")){ - localStorage.setItem("md","hide"); - }else{ + } + if ($(".markdown").hasClass("hide")) { + localStorage.setItem("md", "hide"); + } else { localStorage.removeItem("md"); } var domain = localStorage.getItem("domain_" + acct_id); - if(domain=="itabashi.0j0.jp"){ + if (domain == "itabashi.0j0.jp") { $("#limited-button").removeClass("hide"); - }else{ + } else { $("#limited-button").addClass("hide"); } - if(domain=="kirishima.cloud"){ + if (domain == "kirishima.cloud") { $("#faicon-btn").show(); - }else{ + } else { $("#faicon-btn").hide(); } - if(domain=="imastodon.net"){ + if (domain == "imastodon.net") { trendTag(); - }else{ + } else { $("#trendtag").html(""); } - if(localStorage.getItem("mode_" + domain)=="misskey"){ + if (localStorage.getItem("mode_" + domain) == "misskey") { Materialize.toast(lang.lang_bbmd_misskey, 5000); } - if(idata[domain+"_letters"]){ - $("#textarea").attr("data-length", idata[domain+"_letters"]) - }else{ + if (idata[domain + "_letters"]) { + $("#textarea").attr("data-length", idata[domain + "_letters"]) + } else { $("#textarea").attr("data-length", 500) } - if(idata[domain+"_glitch"]==="true"){ + if (idata[domain + "_glitch"] === "true") { $("#local-button").removeClass("hide"); - }else{ + } else { $("#local-button").addClass("hide"); } var multi = localStorage.getItem("multi"); if (multi) { var obj = JSON.parse(multi); - if(obj[acct_id].background && obj[acct_id].background!="def" && obj[acct_id].text && obj[acct_id].text!="def"){ + if (obj[acct_id].background && obj[acct_id].background != "def" && obj[acct_id].text && obj[acct_id].text != "def") { $("#toot-post-btn").removeClass("indigo"); - $("#toot-post-btn").css("background-color","#"+obj[acct_id].background); - $("#toot-post-btn").css("color",obj[acct_id].text); - }else{ - $("#toot-post-btn").css("background-color",""); - $("#toot-post-btn").css("color",""); + $("#toot-post-btn").css("background-color", "#" + obj[acct_id].background); + $("#toot-post-btn").css("color", obj[acct_id].text); + } else { + $("#toot-post-btn").css("background-color", ""); + $("#toot-post-btn").css("color", ""); $("#toot-post-btn").addClass("indigo"); } @@ -69,248 +69,248 @@ function mdCheck(){ loadVis(); } //BOXのトグルボタン -function mdToggle(){ +function mdToggle() { $(".markdown").toggleClass("hide"); $(".anti-markdown").toggleClass("hide"); - if($(".markdown").hasClass("hide")){ - localStorage.setItem("md","hide"); - }else{ + if ($(".markdown").hasClass("hide")) { + localStorage.setItem("md", "hide"); + } else { localStorage.removeItem("md"); } - + } //最初に読み込みます(MD対応インスタンスかチェック) -if(localStorage.getItem("md")=="hide"){ +if (localStorage.getItem("md") == "hide") { $(".markdown").addClass("hide"); $(".anti-markdown").removeClass("hide"); } //タグを選んだ時に(BB版) - function tagsel(tag){ - var acct_id = $("#post-acct-sel").val(); - if(!localStorage.getItem("bb_"+acct_id)){ - return false; - } - if(tag=="large" || tag=="size" || tag=="color" || tag=="colorhex"){ - var sub=$("#"+tag).val(); - var sub = sub.replace( /#/g , "" ) ; - surroundHTML(tag+"="+sub,tag); - }else if(tag=="flip=vertical" || tag=="flip=horizontal"){ - surroundHTML(tag,"flip"); - }else{ - surroundHTML(tag,tag); - } - $("#textarea").focus(); - } - //HTMLをエスケープしてXSSを防ぐ - function escape_html (string) { - if(typeof string !== 'string') { - return string; - } - return string.replace(/[&'`"<>]/g, function(match) { - return { - '&': '&', - "'": ''', - '`': '`', - '"': '"', - '<': '<', - '>': '>', - }[match] - }); +function tagsel(tag) { + var acct_id = $("#post-acct-sel").val(); + if (!localStorage.getItem("bb_" + acct_id)) { + return false; + } + if (tag == "large" || tag == "size" || tag == "color" || tag == "colorhex") { + var sub = $("#" + tag).val(); + var sub = sub.replace(/#/g, ""); + surroundHTML(tag + "=" + sub, tag); + } else if (tag == "flip=vertical" || tag == "flip=horizontal") { + surroundHTML(tag, "flip"); + } else { + surroundHTML(tag, tag); + } + $("#textarea").focus(); +} +//HTMLをエスケープしてXSSを防ぐ +function escape_html(string) { + if (typeof string !== 'string') { + return string; + } + return string.replace(/[&'`"<>]/g, function (match) { + return { + '&': '&', + "'": ''', + '`': '`', + '"': '"', + '<': '<', + '>': '>', + }[match] + }); } //テキストボックスで選択したやつをタグで囲む(BB版) -function surroundHTML(tagS,tagE) { +function surroundHTML(tagS, tagE) { var acct_id = $("#post-acct-sel").val(); - if(!localStorage.getItem("bb_"+acct_id)){ - return false; - } - var target = document.getElementById("textarea"); - var pos = getAreaRange(target); - - var val = target.value; - var range = val.slice(pos.start, pos.end); - var beforeNode = val.slice(0, pos.start); - var afterNode = val.slice(pos.end); - var insertNode; - if (range || pos.start != pos.end) { - insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']'; - target.value = beforeNode + insertNode + afterNode; - } - - else if (pos.start == pos.end) { - insertNode = '[' + tagS + ']' + '[/' + tagE + ']'; - target.value = beforeNode + insertNode + afterNode; - } -} - function markdown(tag,ck,br,space){ - if(space=="before"){ - tagE=tag; - tag=" "+tag; - }else{ - tagE=tag; - } - surroundMD(tag,tagE,ck,br); - $("#textarea").focus(); - } -function surroundMD(tagS,tagE,ck,br) { - var acct_id = $("#post-acct-sel").val(); - if(!localStorage.getItem("md_"+acct_id)){ - return false; - } - var target = document.getElementById("textarea"); - var pos = getAreaRange(target); - - var val = target.value; - var range = val.slice(pos.start, pos.end); - var beforeNode = val.slice(0, pos.start); - var afterNode = val.slice(pos.end); - var insertNode; - if(br=="yes"){ - var br="\n"; - }else{ - var br=""; + if (!localStorage.getItem("bb_" + acct_id)) { + return false; + } + var target = document.getElementById("textarea"); + var pos = getAreaRange(target); + + var val = target.value; + var range = val.slice(pos.start, pos.end); + var beforeNode = val.slice(0, pos.start); + var afterNode = val.slice(pos.end); + var insertNode; + if (range || pos.start != pos.end) { + insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']'; + target.value = beforeNode + insertNode + afterNode; + } + + else if (pos.start == pos.end) { + insertNode = '[' + tagS + ']' + '[/' + tagE + ']'; + target.value = beforeNode + insertNode + afterNode; + } +} +function markdown(tag, ck, br, space) { + if (space == "before") { + tagE = tag; + tag = " " + tag; + } else { + tagE = tag; + } + surroundMD(tag, tagE, ck, br); + $("#textarea").focus(); +} +function surroundMD(tagS, tagE, ck, br) { + var acct_id = $("#post-acct-sel").val(); + if (!localStorage.getItem("md_" + acct_id)) { + return false; + } + var target = document.getElementById("textarea"); + var pos = getAreaRange(target); + + var val = target.value; + var range = val.slice(pos.start, pos.end); + var beforeNode = val.slice(0, pos.start); + var afterNode = val.slice(pos.end); + var insertNode; + if (br == "yes") { + var br = "\n"; + } else { + var br = ""; + } + + if ((range || pos.start != pos.end) && ck == "yes") { + insertNode = tagS + range + tagE; + target.value = beforeNode + insertNode + br + afterNode; + } + + else if (pos.start == pos.end || ck == "no") { + insertNode = tagS + range; + target.value = beforeNode + insertNode + br + afterNode; } - - if ((range || pos.start != pos.end )&& ck=="yes") { - insertNode = tagS + range + tagE ; - target.value = beforeNode + insertNode + br + afterNode; - } - - else if (pos.start == pos.end || ck=="no") { - insertNode = tagS + range; - target.value = beforeNode + insertNode + br + afterNode; - } } //テキストボックスの前後チェック function getAreaRange(obj) { var pos = new Object(); - if(window.getSelection()) { + if (window.getSelection()) { pos.start = obj.selectionStart; - pos.end = obj.selectionEnd; + pos.end = obj.selectionEnd; } return pos; } //Markdownのリンク挿入 -function markdownLink(){ +function markdownLink() { var acct_id = $("#post-acct-sel").val(); - if(!localStorage.getItem("md_"+acct_id)){ - return false; - } - var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")"; - if(linkIns!="[]()"){ - $("#textarea").val($("#textarea").val()+linkIns); - $("#linkt").val(""); - $("#link2").val(""); - $("#textarea").focus(); + if (!localStorage.getItem("md_" + acct_id)) { + return false; + } + var linkIns = "[" + $("#linkt").val() + "]" + "(" + $("#link2").val() + ")"; + if (linkIns != "[]()") { + $("#textarea").val($("#textarea").val() + linkIns); + $("#linkt").val(""); + $("#link2").val(""); + $("#textarea").focus(); } } //Markdownのimg挿入 -function markdownImage(){ +function markdownImage() { var acct_id = $("#post-acct-sel").val(); - if(!localStorage.getItem("md_"+acct_id)){ - return false; - } - var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")"; - if(imgIns!="![]()"){ - $("#textarea").val($("#textarea").val()+imgIns); - $("#image").val(""); - $("#image2").val(""); - $("#textarea").focus(); + if (!localStorage.getItem("md_" + acct_id)) { + return false; + } + var imgIns = "![" + $("#image").val() + "]" + "(" + $("#image2").val() + ")"; + if (imgIns != "![]()") { + $("#textarea").val($("#textarea").val() + imgIns); + $("#image").val(""); + $("#image2").val(""); + $("#textarea").focus(); } } //文字数をチェック(hタグ用) function str_count(all, part) { - return (all.match(new RegExp(part, "g")) || []).length; + return (all.match(new RegExp(part, "g")) || []).length; } //プレビュー -function preview(){ - $("#preview-field").show(); - $("#toot-field").hide(); - $("#preview-btn").hide(); - var bb=escape_html($("#textarea").val()); +function preview() { + $("#preview-field").show(); + $("#toot-field").hide(); + $("#preview-btn").hide(); + var bb = escape_html($("#textarea").val()); //quote - var bb=bb.replace(/>(.+)$/g,'
$1<\/blockquote>'); + var bb = bb.replace(/>(.+)$/g, '
$1<\/blockquote>'); //spin - var bb=bb.replace(/\[spin\](.+)\[\/spin\]/g,'$1<\/span>'); + var bb = bb.replace(/\[spin\](.+)\[\/spin\]/g, '$1<\/span>'); //pulse - var bb=bb.replace(/\[pulse\](.+)\[\/pulse\]/g,'$1<\/span>'); + var bb = bb.replace(/\[pulse\](.+)\[\/pulse\]/g, '$1<\/span>'); //large - var bb=bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g,'$2<\/span>'); + var bb = bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g, '$2<\/span>'); //vertical - var bb=bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g,'$1<\/span>'); + var bb = bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g, '$1<\/span>'); //horizontal - var bb=bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g,'$1<\/span>'); + var bb = bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g, '$1<\/span>'); //b - var bb=bb.replace(/\[b\](.+)\[\/b\]/g,'$1<\/b>'); + var bb = bb.replace(/\[b\](.+)\[\/b\]/g, '$1<\/b>'); //i - var bb=bb.replace(/\[i\](.+)\[\/i\]/g,'$1<\/i>'); + var bb = bb.replace(/\[i\](.+)\[\/i\]/g, '$1<\/i>'); //u - var bb=bb.replace(/\[u\](.+)\[\/u\]/g,'$1<\/u>'); + var bb = bb.replace(/\[u\](.+)\[\/u\]/g, '$1<\/u>'); //s - var bb=bb.replace(/\[s\](.+)\[\/s\]/g,'$1<\/s>'); + var bb = bb.replace(/\[s\](.+)\[\/s\]/g, '$1<\/s>'); //size - var bb=bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g,'$2<\/span>'); + var bb = bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g, '$2<\/span>'); //colorhex - var bb=bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g,'$2<\/span>'); + var bb = bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g, '$2<\/span>'); //code - var bb=bb.replace(/`(.+)`/g,'$1<\/code>'); + var bb = bb.replace(/`(.+)`/g, '$1<\/code>'); //head var m; - m=bb.match(/^#{1,6}(.+)$/gm); - if(m){ - for(let i = 0; i < m.length; i++) { - var t=m[i].match(/^#{1,6}(.+)$/); - var indexct=''+t[1]+''; - var bb=bb.replace(new RegExp(m[i], ""),indexct); - } + m = bb.match(/^#{1,6}(.+)$/gm); + if (m) { + for (let i = 0; i < m.length; i++) { + var t = m[i].match(/^#{1,6}(.+)$/); + var indexct = '' + t[1] + ''; + var bb = bb.replace(new RegExp(m[i], ""), indexct); + } } //list(ul) var li; - li=bb.match(/^\- (.+)$/gm); - if(li){ - for(let l = 0; l < li.length; l++) { - var u=li[l].match(/^\- (.+)$/); - var listUl='
  • '+u[1]+'
  • '; - if(l == 0){ - listUl='
      '+listUl; + li = bb.match(/^\- (.+)$/gm); + if (li) { + for (let l = 0; l < li.length; l++) { + var u = li[l].match(/^\- (.+)$/); + var listUl = '
    • ' + u[1] + '
    • '; + if (l == 0) { + listUl = '
        ' + listUl; + } + if (l == li.length - 1) { + listUl = listUl + '
      '; + } + var bb = bb.replace(new RegExp(li[l], ""), listUl); } - if(l==li.length-1){ - listUl=listUl+'
    '; - } - var bb=bb.replace(new RegExp(li[l], ""),listUl); - } } //list(ol) var li; - li=bb.match(/^1\. (.+)$/gm); - if(li){ - for(let l = 0; l < li.length; l++) { - var u=li[l].match(/^1\. (.+)$/); - var listUl='
  • '+u[1]+'
  • '; - if(l === 0){ - listUl='
      '+listUl; + li = bb.match(/^1\. (.+)$/gm); + if (li) { + for (let l = 0; l < li.length; l++) { + var u = li[l].match(/^1\. (.+)$/); + var listUl = '
    1. ' + u[1] + '
    2. '; + if (l === 0) { + listUl = '
        ' + listUl; + } + if (l === li.length - 1) { + listUl = listUl + '
      '; + } + var bb = bb.replace(new RegExp(li[l], ""), listUl); } - if(l===li.length-1){ - listUl=listUl+'
    '; - } - var bb=bb.replace(new RegExp(li[l], ""),listUl); - } } //img - var bb=bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,''); + var bb = bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g, ''); //link - var bb=bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'$1<\/a>'); - bb=nl2br(bb); - bb=bb.replace(new RegExp("
    ", "g"),""); + var bb = bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g, '
    $1<\/a>'); + bb = nl2br(bb); + bb = bb.replace(new RegExp("
    ", "g"), ""); $("#md-preview").html(bb); - } - //Editで戻る - function previewEdit(){ - $("#preview-field").hide(); - $("#toot-field").show(); - $("#preview-btn").show(); - $("#md-preview").html(""); - } \ No newline at end of file +} +//Editで戻る +function previewEdit() { + $("#preview-field").hide(); + $("#toot-field").show(); + $("#preview-btn").show(); + $("#md-preview").html(""); +} \ No newline at end of file diff --git a/app/js/post/emoji.js b/app/js/post/emoji.js index 19038798..0b4e4609 100644 --- a/app/js/post/emoji.js +++ b/app/js/post/emoji.js @@ -179,7 +179,6 @@ function emojiInsert(code, del) { } else { var brank = " "; } - console.log(selin); var now = $("#textarea").val(); if (selin > 0) { var before = now.substr(0, selin); diff --git a/app/js/post/img.js b/app/js/post/img.js index cc3c45b9..6e991976 100644 --- a/app/js/post/img.js +++ b/app/js/post/img.js @@ -2,26 +2,26 @@ var obj = $("body"); var system; //ドラッグスタート -obj.on('dragstart', function(e) { +obj.on('dragstart', function (e) { system = "locked" }); //何もなくファイルが通過 -obj.on('dragend', function(e) { +obj.on('dragend', function (e) { system = ""; }); //ドラッグファイルが画面上に -obj.on('dragenter', function(e) { +obj.on('dragenter', function (e) { if (system != "locked") { $("#drag").css('display', 'flex'); } }); -$("body").on('dragover', function(e) { +$("body").on('dragover', function (e) { e.stopPropagation(); e.preventDefault(); }); //ドロップした -$("body").on('drop', function(e) { +$("body").on('drop', function (e) { if (system != "locked") { $("#drag").css('display', 'none'); e.preventDefault(); @@ -30,31 +30,31 @@ $("body").on('drop', function(e) { } }); //何もなくファイルが通過 -$("#drag").on('dragleave', function(e) { +$("#drag").on('dragleave', function (e) { $("#drag").css('display', 'none'); }); //複数アップ function pimg(files) { - console.log(files); + console.table(files); for (i = 0; i < files.length; i++) { - var dot=files[i].path.match(/\.(.+)$/)[1]; - if(dot=="bmp" || dot=="BMP"){ + var dot = files[i].path.match(/\.(.+)$/)[1]; + if (dot == "bmp" || dot == "BMP") { var electron = require("electron"); - var ipc = electron.ipcRenderer; - ipc.send('bmp-image', [files[i].path,i]); - todo(lang.lang_progress); - - }else{ - handleFileUpload(files[i], obj,i); + var ipc = electron.ipcRenderer; + ipc.send('bmp-image', [files[i].path, i]); + todo(lang.lang_progress); + + } else { + handleFileUpload(files[i], obj, i); } } } var electron = require("electron"); var ipc = electron.ipcRenderer; ipc.on('bmp-img-comp', function (event, b64) { - media(b64[0],"image/png",b64[1]); - }); + media(b64[0], "image/png", b64[1]); +}); //ドラッグ・アンド・ドロップを終了 function closedrop() { $("#drag").css('display', 'none'); @@ -67,7 +67,7 @@ function fileselect() { //ファイル読み込み function handleFileUpload(files, obj, no) { var fr = new FileReader(); - fr.onload = function(evt) { + fr.onload = function (evt) { var b64 = evt.target.result; $('#b64-box').val(b64); var ret = media(b64, files["type"], no) @@ -82,27 +82,26 @@ function media(b64, type, no) { var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var cl = c.length; var r = ""; - for(var i=0; i'; + if (json.type.indexOf("image") != -1) { + var html = ''; $('#preview').append(html); } else { $('#preview').append(lang.lang_postimg_previewdis); @@ -140,11 +138,11 @@ function media(b64, type, no) { var img = "no-act"; } if (img != "inline") { - var mediav=$("#media").val(); - var regExp = new RegExp("tmp_"+r, "g"); + var mediav = $("#media").val(); + var regExp = new RegExp("tmp_" + r, "g"); mediav = mediav.replace(regExp, json["id"]); $("#media").val(mediav); - + } if (img == "url") { $("#textarea").val($("#textarea").val() + " " + json["text_url"]) @@ -180,61 +178,59 @@ function toBlob(base64, type) { return blob; } //画像を貼り付けたら… -var element = document.querySelector("#textarea"); -element.addEventListener("paste", function(e){ - console.log(e) - if (!e.clipboardData || !e.clipboardData.items) { - return true; - } - // DataTransferItemList に画像が含まれいない場合は終了する +var element = document.querySelector("#textarea"); +element.addEventListener("paste", function (e) { + if (!e.clipboardData || !e.clipboardData.items) { + return true; + } + // DataTransferItemList に画像が含まれいない場合は終了する var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image')); - if (imageItems.length == 0) { - console.log("not image") - return true; - } + if (imageItems.length == 0) { + console.warn("it is not image") + return true; + } - // ファイルとして得る - // DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ - var imageFile = imageItems[0].getAsFile(); - var imageType = imageItems[0].type; + // ファイルとして得る + // DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ + var imageFile = imageItems[0].getAsFile(); + var imageType = imageItems[0].type; - // FileReaderで読み込む - var fr = new FileReader(); - fr.onload = function(e) { - // onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり + // FileReaderで読み込む + var fr = new FileReader(); + fr.onload = function (e) { + // onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり var base64 = e.target.result; var mediav = $("#media").val(); - if(mediav){ - var i=mediav.split(",").length; + if (mediav) { + var i = mediav.split(",").length; } - // DataTransferItem の type に mime tipes があるのでそれを使う + // DataTransferItem の type に mime tipes があるのでそれを使う media(base64, imageType, i) - }; - fr.readAsDataURL(imageFile); + }; + fr.readAsDataURL(imageFile); - // 画像以外がペーストされたときのために、元に戻しておく + // 画像以外がペーストされたときのために、元に戻しておく }); //Adobeフォトエディタ -function adobe(){ +function adobe() { var agree = localStorage.getItem("adobeagree"); ipc.send('adobe', agree); } ipc.on('adobeagree', function (event, arg) { - localStorage.setItem("adobeagree",arg); - }); -function deleteImage(key){ - console.log(key); - if(!confirm(lang.lang_postimg_delete)){ + localStorage.setItem("adobeagree", arg); +}); +function deleteImage(key) { + if (!confirm(lang.lang_postimg_delete)) { return false; } var media = $("#media").val(); - var arr=media.split(","); - for(var i=0;i'+escapeHTML(choice.text)+'('+choice.votes+''+myvote+')'; + poll = poll + '
    ' + escapeHTML(choice.text) + '(' + choice.votes + '' + myvote + ')
    '; }); - $(".vote_"+json.id).html(poll) - } - } - } + $(".vote_" + json.id).html(poll) + } + } + } } \ No newline at end of file diff --git a/app/js/post/post.js b/app/js/post/post.js index c1b1a34f..978fb538 100644 --- a/app/js/post/post.js +++ b/app/js/post/post.js @@ -1,177 +1,177 @@ -/*投稿系*/ +/*投稿系*/ //投稿 -function sec(){ - var mode=localStorage.getItem("sec"); +function sec() { + var mode = localStorage.getItem("sec"); var acct_id = $("#post-acct-sel").val(); var domain = localStorage.getItem("domain_" + acct_id); - if(~domain.indexOf("kirishima.cloud")>=0 && mode=="local"){ - mode="unlisted"; + if (~domain.indexOf("kirishima.cloud") >= 0 && mode == "local") { + mode = "unlisted"; } - post(null,mode); + post(null, mode); } -function post(mode,postvis) { - if($("#toot-post-btn").prop("disabled")){ +function post(mode, postvis) { + if ($("#toot-post-btn").prop("disabled")) { return false; } var str = $("#textarea").val(); var acct_id = $("#post-acct-sel").val(); localStorage.setItem("last-use", acct_id); var domain = localStorage.getItem("domain_" + acct_id); - if(domain=="theboss.tech"){ - if(~str.indexOf("#")){ - if(str.indexOf("#theboss_tech")=="-1"){ - if(!confirm(lang.lang_post_tagTL)){ + if (domain == "theboss.tech") { + if (~str.indexOf("#")) { + if (str.indexOf("#theboss_tech") == "-1") { + if (!confirm(lang.lang_post_tagTL)) { return false; } } } } - if(domain=="dtp-mstdn.jp"){ - if(~str.indexOf("#")){ - if(str.indexOf("#dtp")=="-1"){ - if(!confirm(lang.lang_post_tagTL)){ + if (domain == "dtp-mstdn.jp") { + if (~str.indexOf("#")) { + if (str.indexOf("#dtp") == "-1") { + if (!confirm(lang.lang_post_tagTL)) { return false; } } } } - if(!localStorage.getItem("cw_sentence")){ - var cw_sent=500; - }else{ - var cw_sent=localStorage.getItem("cw_sentence"); + if (!localStorage.getItem("cw_sentence")) { + var cw_sent = 500; + } else { + var cw_sent = localStorage.getItem("cw_sentence"); } - if(!localStorage.getItem("cw_letters")){ - var cw_ltres=500; - }else{ - var cw_ltres=localStorage.getItem("cw_letters"); + if (!localStorage.getItem("cw_letters")) { + var cw_ltres = 500; + } else { + var cw_ltres = localStorage.getItem("cw_letters"); } - if(domain!="kirishima.cloud"){ - if(mode!="pass" && !$("#cw").hasClass("cw-avail") && (str.length>cw_sent || (str.split("\n").length - 1)>cw_ltres)){ - var electron = require("electron"); - var remote=electron.remote; - var dialog=remote.dialog; - var plus=str.replace(/\n/g,"").slice(0,10)+"..."; - const options = { - type: 'info', - title: lang.lang_post_cwtitle, - message: lang.lang_post_cwtxt+plus, - buttons: [lang.lang_post_btn1,lang.lang_post_btn2, lang.lang_post_btn3] - } - dialog.showMessageBox(options, function(arg) { - if(arg===1){ - $("#cw-text").show(); - $("#cw").addClass("yellow-text"); - $("#cw").addClass("cw-avail"); - $("#cw-text").val(plus); - post("pass"); - }else if(arg===2){ - post("pass"); + if (domain != "kirishima.cloud") { + if (mode != "pass" && !$("#cw").hasClass("cw-avail") && (str.length > cw_sent || (str.split("\n").length - 1) > cw_ltres)) { + var electron = require("electron"); + var remote = electron.remote; + var dialog = remote.dialog; + var plus = str.replace(/\n/g, "").slice(0, 10) + "..."; + const options = { + type: 'info', + title: lang.lang_post_cwtitle, + message: lang.lang_post_cwtxt + plus, + buttons: [lang.lang_post_btn1, lang.lang_post_btn2, lang.lang_post_btn3] } - }) - return false; + dialog.showMessageBox(options, function (arg) { + if (arg === 1) { + $("#cw-text").show(); + $("#cw").addClass("yellow-text"); + $("#cw").addClass("cw-avail"); + $("#cw-text").val(plus); + post("pass"); + } else if (arg === 2) { + post("pass"); + } + }) + return false; + } } -} - if(localStorage.getItem("mode_" + domain)=="misskey"){ + if (localStorage.getItem("mode_" + domain) == "misskey") { misskeyPost(); return; } $(".toot-btn-group").prop("disabled", true); todo("Posting"); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/statuses"; var reply = $("#reply").val(); - if(str.indexOf(localStorage.getItem("stable"))==-1){ - str+" #"+localStorage.getItem("stable"); + if (str.indexOf(localStorage.getItem("stable")) == -1) { + str + " #" + localStorage.getItem("stable"); } - var toot={ + var toot = { status: str } - if(reply){ - toot.in_reply_to_id=reply + if (reply) { + toot.in_reply_to_id = reply } var media = $("#media").val(); - if(media){ - toot.media_ids=media.split(","); + if (media) { + toot.media_ids = media.split(","); } if ($("#nsfw").hasClass("nsfw-avail")) { var nsfw = "true"; - toot.sensitive=nsfw; + toot.sensitive = nsfw; } else { var nsfw = "false"; } - if(postvis){ + if (postvis) { var vis = postvis; - }else{ + } else { var vis = $("#vis").text(); } - - if(vis!="inherit" && vis!="local"){ - toot.visibility=vis; - }else if(vis=="local"){ - toot.status=str+"👁️"; + + if (vis != "inherit" && vis != "local") { + toot.visibility = vis; + } else if (vis == "local") { + toot.status = str + "👁️"; } //ここに非公開・未収載タグについてwarn - if(domain!="kirishima.cloud" && domain!="imastodon.net"){ - if(~str.indexOf("#")){ - if(vis == "local" || vis=="unlisted" || vis=="direct" || vis=="private"){ - if(!confirm(lang.lang_post_tagVis)){ - return false; + if (domain != "kirishima.cloud" && domain != "imastodon.net") { + if (~str.indexOf("#")) { + if (vis == "local" || vis == "unlisted" || vis == "direct" || vis == "private") { + if (!confirm(lang.lang_post_tagVis)) { + return false; + } } } } -} if ($("#cw").hasClass("cw-avail")) { var spo = $("#cw-text").val(); cw(); - toot.spoiler_text=spo; + toot.spoiler_text = spo; } else { var spo = ""; } if ($("#sch-box").hasClass("sch-avail")) { - var scheduled=formattimeutc(new Date(Date.parse($("#sch-date").val()))) - console.log(scheduled) + var scheduled = formattimeutc(new Date(Date.parse($("#sch-date").val()))) + console.log("This toot will be posted at:" + scheduled) schedule(); - toot.scheduled_at=scheduled; + toot.scheduled_at = scheduled; } else { var scheduled = ""; } - if ($("#poll-sel").val()=="mastodon-poll") { - var options=[]; - $(".mastodon-choice").map(function() { - var choice=$(this).val(); - if(choice!=""){ + if ($("#poll-sel").val() == "mastodon-poll") { + var options = []; + $(".mastodon-choice").map(function () { + var choice = $(this).val(); + if (choice != "") { options.push(choice); } }); - if($("#poll-multiple:checked").val()=="1"){ - var mul=true; - }else{ - var mul=false; + if ($("#poll-multiple:checked").val() == "1") { + var mul = true; + } else { + var mul = false; } - if($("#poll-until:checked").val()=="1"){ - var htt=true; - }else{ - var htt=false; + if ($("#poll-until:checked").val() == "1") { + var htt = true; + } else { + var htt = false; } - var exin=pollCalc(); - if(!exin){ + var exin = pollCalc(); + if (!exin) { todc("Error: Poll expires_in param") } - toot.poll={ + toot.poll = { options: options, expires_in: exin, multiple: mul, hide_totals: htt } } - console.log(toot); + console.table(toot); var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(JSON.stringify(toot)); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; var box = localStorage.getItem("box"); @@ -185,71 +185,71 @@ function post(mode,postvis) { } } } -function misskeyPost(){ +function misskeyPost() { var str = $("#textarea").val(); var acct_id = $("#post-acct-sel").val(); localStorage.setItem("last-use", acct_id); var domain = localStorage.getItem("domain_" + acct_id); $(".toot-btn-group").prop("disabled", true); todo("Posting"); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/notes/create"; var reply = $("#reply").val(); - var toot={ + var toot = { text: str } - if(reply){ - if(reply.indexOf("renote")!== -1){ - toot.renoteId=reply.replace("renote_","") - }else{ - toot.replyId=reply + if (reply) { + if (reply.indexOf("renote") !== -1) { + toot.renoteId = reply.replace("renote_", "") + } else { + toot.replyId = reply } } - + var media = $("#media").val(); - if(media){ - toot.mediaIds=media.split(","); + if (media) { + toot.mediaIds = media.split(","); } if ($("#nsfw").hasClass("nsfw-avail")) { var nsfw = "true"; - toot.sensitive=nsfw; + toot.sensitive = nsfw; } else { var nsfw = "false"; } var vis = $("#vis").text(); - if(vis=="unlisted"){ - vis=="home" - }else if(vis=="direct"){ - vis=="specified"; - toot.visibleUserIds=str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@"); + if (vis == "unlisted") { + vis == "home" + } else if (vis == "direct") { + vis == "specified"; + toot.visibleUserIds = str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@"); } - if(vis!="inherit"){ - toot.visibility=vis; + if (vis != "inherit") { + toot.visibility = vis; } if ($("#cw").hasClass("cw-avail")) { var spo = $("#cw-text").val(); cw(); - toot.cw=spo; + toot.cw = spo; } else { var spo = ""; } - toot.i=at; + toot.i = at; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.responseType = "json"; httpreq.send(JSON.stringify(toot)); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { - if(str.indexOf(localStorage.getItem("stable"))==-1){ + if (str.indexOf(localStorage.getItem("stable")) == -1) { localStorage.removeItem("stable") } var json = httpreq.response; - console.log(json); + console.log(["Success: toot", json]); var box = localStorage.getItem("box"); if (box == "yes") { hide(); - }else if (box == "hide"){ + } else if (box == "hide") { $("body").addClass("mini-post"); $(".mini-btn").text("expand_less"); } @@ -263,8 +263,8 @@ function misskeyPost(){ //クリア(Shift+C) function clear() { $("#textarea").val(""); - if(localStorage.getItem("stable")){ - $("#textarea").val("#"+localStorage.getItem("stable")+" ") + if (localStorage.getItem("stable")) { + $("#textarea").val("#" + localStorage.getItem("stable") + " ") } $("#textarea").attr("placeholder", lang.lang_toot); $("#reply").val(""); @@ -280,7 +280,7 @@ function clear() { $("#cw").removeClass("yellow-text"); $("#cw").removeClass("cw-avail"); $("#cw-text").hide(); - }else{ + } else { $("#cw").addClass("yellow-text"); $("#cw").addClass("cw-avail"); $("#cw-text").show(); @@ -297,13 +297,13 @@ function clear() { $(".toot-btn-group").prop("disabled", false); $("#post-acct-sel").prop("disabled", false); $("#days_poll").val(0); - $("#hours_poll").val(0); + $("#hours_poll").val(0); $("#mins_poll").val(6); - $(".mastodon-choice").map(function() { + $(".mastodon-choice").map(function () { $(this).val(""); }); localStorage.removeItem("image"); - if(localStorage.getItem("mainuse")=="main"){ + if (localStorage.getItem("mainuse") == "main") { $("#post-acct-sel").val(localStorage.getItem("main")); } $('select').material_select(); diff --git a/app/js/post/secure.js b/app/js/post/secure.js index d3b87dfb..e45416f1 100644 --- a/app/js/post/secure.js +++ b/app/js/post/secure.js @@ -1,11 +1,11 @@ /*保護系*/ //画像保護 -function nsfw(){ - if($("#nsfw").hasClass("nsfw-avail")){ +function nsfw() { + if ($("#nsfw").hasClass("nsfw-avail")) { $("#nsfw").removeClass("yellow-text"); $("#nsfw").html("visibility_off"); $("#nsfw").removeClass("nsfw-avail"); - }else{ + } else { $("#nsfw").addClass("yellow-text"); $("#nsfw").html("visibility"); $("#nsfw").addClass("nsfw-avail"); @@ -13,7 +13,7 @@ function nsfw(){ } //投稿公開範囲 -function vis(set){ +function vis(set) { $("#vis").text(set); $("#vis-icon").removeClass("red-text"); $("#vis-icon").removeClass("orange-text"); @@ -21,109 +21,107 @@ function vis(set){ $("#vis-icon").removeClass("purple-text"); $("#vis-icon").removeClass("light-blue-text"); $("#vis-icon").removeClass("teal-text"); - if(set=="public"){ + if (set == "public") { $("#vis-icon").text("public"); $("#vis-icon").addClass("purple-text"); - }else if(set=="unlisted"){ + } else if (set == "unlisted") { $("#vis-icon").text("lock_open"); $("#vis-icon").addClass("blue-text"); - }else if(set=="private"){ + } else if (set == "private") { $("#vis-icon").text("lock"); $("#vis-icon").addClass("orange-text"); - }else if(set=="direct"){ + } else if (set == "direct") { $("#vis-icon").text("mail"); $("#vis-icon").addClass("red-text"); - }else if(set=="limited"){ + } else if (set == "limited") { $("#vis-icon").text("group"); $("#vis-icon").addClass("teal-text"); - }else if(set=="local"){ + } else if (set == "local") { $("#vis-icon").text("visibility"); $("#vis-icon").addClass("light-blue-text"); } - var vis=localStorage.getItem("vis"); - if(vis=="memory"){ - var acct_id = $("#post-acct-sel").val(); - localStorage.setItem("vis-memory-"+acct_id,set); - } + var vis = localStorage.getItem("vis"); + if (vis == "memory") { + var acct_id = $("#post-acct-sel").val(); + localStorage.setItem("vis-memory-" + acct_id, set); + } $('.dropdown-button').dropdown('close'); } -function loadVis(){ - var vist = localStorage.getItem("vis"); - console.log(vist); - if (!vist) { - vis("public"); - } else { - if (vist == "memory") { - var acct_id = $("#post-acct-sel").val(); - var memory = localStorage.getItem("vis-memory-"+acct_id); - if (!memory) { - memory = "public"; - } - vis(memory); - } else if(vist == "useapi") { - var acct_id = $("#post-acct-sel").val(); - var multi = localStorage.getItem("multi"); - var obj = JSON.parse(multi); - var memory = obj[acct_id]["vis"]; - if (!memory) { - memory = "public"; - } - vis(memory); - } else { - vis(vist); +function loadVis() { + var vist = localStorage.getItem("vis"); + if (!vist) { + vis("public"); + } else { + if (vist == "memory") { + var acct_id = $("#post-acct-sel").val(); + var memory = localStorage.getItem("vis-memory-" + acct_id); + if (!memory) { + memory = "public"; } + vis(memory); + } else if (vist == "useapi") { + var acct_id = $("#post-acct-sel").val(); + var multi = localStorage.getItem("multi"); + var obj = JSON.parse(multi); + var memory = obj[acct_id]["vis"]; + if (!memory) { + memory = "public"; + } + vis(memory); + } else { + vis(vist); + } } } loadVis(); //コンテントワーニング -function cw(){ - if($("#cw").hasClass("cw-avail")){ +function cw() { + if ($("#cw").hasClass("cw-avail")) { $("#cw-text").val(); $("#cw-text").hide(); $("#cw").removeClass("yellow-text"); $("#cw").removeClass("cw-avail"); - }else{ + } else { $("#cw-text").show(); $("#cw").addClass("yellow-text"); $("#cw").addClass("cw-avail"); - var cwt=localStorage.getItem("cw-text"); - if(cwt){ + var cwt = localStorage.getItem("cw-text"); + if (cwt) { $("#cw-text").val(cwt); } } } //TLでコンテントワーニングを表示トグル -function cw_show(id){ - $(".cw_hide_"+id).toggleClass("cw"); - $(".cw-long-"+id).toggleClass("hide"); +function cw_show(id) { + $(".cw_hide_" + id).toggleClass("cw"); + $(".cw-long-" + id).toggleClass("hide"); } -$(function() { - $('#cw-text').on('change', function(event) { +$(function () { + $('#cw-text').on('change', function (event) { var acct_id = $("#post-acct-sel").val(); var domain = localStorage.getItem("domain_" + acct_id); - var cwlen=$('#cw-text').val().length; + var cwlen = $('#cw-text').val().length; - if(idata[domain+"_letters"]){ - $("#textarea").attr("data-length", idata[domain+"_letters"]-cwlen) - }else{ - $("#textarea").attr("data-length", 500-cwlen) + if (idata[domain + "_letters"]) { + $("#textarea").attr("data-length", idata[domain + "_letters"] - cwlen) + } else { + $("#textarea").attr("data-length", 500 - cwlen) } - + }); - }); +}); //スケジュール -function schedule(){ - if($("#sch-box").hasClass("sch-avail")){ +function schedule() { + if ($("#sch-box").hasClass("sch-avail")) { $("#sch-box").hide(); $("#sch-box").removeClass("sch-avail"); - }else{ + } else { var date = new Date(); - + $("#sch-box").show(); $("#sch-date").val(formattime(date)); - console.log(formattime(date)); $("#sch-box").addClass("sch-avail"); } } diff --git a/app/js/post/status.js b/app/js/post/status.js index d725be7e..ea06cab9 100644 --- a/app/js/post/status.js +++ b/app/js/post/status.js @@ -7,7 +7,7 @@ function fav(id, acct_id, remote) { var flag = "favourite"; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -15,19 +15,19 @@ function fav(id, acct_id, remote) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { - if (httpreq.readyState === 4) { - var json = httpreq.response; - if(remote!="remote"){ + httpreq.onreadystatechange = function () { + if (httpreq.readyState === 4) { + var json = httpreq.response; + if (remote != "remote") { //APIのふぁぼカウントがおかしい - if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count){ - if(flag=="unfavourite"){ - var fav=json.favourites_count - 1; - }else{ - var fav=json.favourites_count + 1; + if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count) { + if (flag == "unfavourite") { + var fav = json.favourites_count - 1; + } else { + var fav = json.favourites_count + 1; //var fav = json.favourites_count; } - }else{ + } else { var fav = json.favourites_count; } $("[toot-id=" + id + "] .fav_ct").text(fav); @@ -35,17 +35,17 @@ function fav(id, acct_id, remote) { } else { $("[toot-id=" + id + "] .rt_ct").text(fav); } - if ($("[toot-id=" + id +"]").hasClass("faved")) { - $("[toot-id=" + id +"]").removeClass("faved"); + if ($("[toot-id=" + id + "]").hasClass("faved")) { + $("[toot-id=" + id + "]").removeClass("faved"); $(".fav_" + id).removeClass("yellow-text"); } else { - $("[toot-id=" + id +"]").addClass("faved"); + $("[toot-id=" + id + "]").addClass("faved"); $(".fav_" + id).addClass("yellow-text"); } - }else{ - Materialize.toast(lang.lang_status_favWarn, 1000); - } - } + } else { + Materialize.toast(lang.lang_status_favWarn, 1000); + } + } } } @@ -57,7 +57,7 @@ function rt(id, acct_id, remote) { var flag = "reblog"; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -65,10 +65,10 @@ function rt(id, acct_id, remote) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); + console.log(["Success: boost", json]); if (remote != "remote") { $("[toot-id=" + id + "] .fav_ct").text(json.favourites_count); if (!json.reblog) { @@ -97,10 +97,10 @@ function rt(id, acct_id, remote) { } //フォロー -function follow(acct_id,remote) { - if (!acct_id && acct_id!="selector") { +function follow(acct_id, remote) { + if (!acct_id && acct_id != "selector") { var acct_id = $('#his-data').attr("use-acct"); - }else if (acct_id=="selector") { + } else if (acct_id == "selector") { var acct_id = $("#user-acct-sel").val(); } if (!remote && $("#his-data").hasClass("following")) { @@ -111,34 +111,33 @@ function follow(acct_id,remote) { var flagm = "create"; } var id = $("#his-data").attr("user-id"); - if(!remote){ + if (!remote) { var remote = $("#his-data").attr("remote"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var start = "https://" + domain + "/api/following/"+flagm; - var user=$("#his-acct").text(); - var ent={"i":at,"userId":id} - }else if(remote=="true" && flag=="follow"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { + var start = "https://" + domain + "/api/following/" + flagm; + var user = $("#his-acct").text(); + var ent = { "i": at, "userId": id } + } else if (remote == "true" && flag == "follow") { var start = "https://" + domain + "/api/v1/follows"; - var user=$("#his-acct").text(); - var ent={"uri":user} - }else{ + var user = $("#his-acct").text(); + var ent = { "uri": user } + } else { var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag; - var ent={} + var ent = {} } - console.log(ent); var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(JSON.stringify(ent)); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); + console.log(["Success: folllow", json]); if ($("#his-data").hasClass("following")) { $("#his-data").removeClass("following"); $("#his-follow-btn").text(lang.lang_status_follow); @@ -162,7 +161,7 @@ function block(acct_id) { var flag = "block"; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -170,7 +169,7 @@ function block(acct_id) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { if ($("#his-data").hasClass("blocking")) { $("#his-data").removeClass("blocking"); @@ -197,14 +196,14 @@ function mute(acct_id) { var flagm = "create"; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var start = "https://" + domain + "/api/mute/"+flagm; - var ent={"i":at,"userId":id} - var rq=JSON.stringify(ent); - }else{ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { + var start = "https://" + domain + "/api/mute/" + flagm; + var ent = { "i": at, "userId": id } + var rq = JSON.stringify(ent); + } else { var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag; - var rq=""; + var rq = ""; } var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -212,7 +211,7 @@ function mute(acct_id) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(rq); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { if ($("#his-data").hasClass("muting")) { $("#his-data").removeClass("muting"); @@ -228,17 +227,17 @@ function mute(acct_id) { //投稿削除 function del(id, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/notes/delete"; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.responseType = "json"; - httpreq.send(JSON.stringify({i:at,noteId:id})); - $("[toot-id=" + id+ "]").hide(); - $("[toot-id=" + id + "]").remove(); - }else{ + httpreq.send(JSON.stringify({ i: at, noteId: id })); + $("[toot-id=" + id + "]").hide(); + $("[toot-id=" + id + "]").remove(); + } else { var start = "https://" + domain + "/api/v1/statuses/" + id; var httpreq = new XMLHttpRequest(); httpreq.open('DELETE', start, true); @@ -247,42 +246,42 @@ function del(id, acct_id) { httpreq.responseType = "json"; httpreq.send(); } - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { } } } //redraft -function redraft(id, acct_id){ - if(confirm(lang.lang_status_redraft)){ +function redraft(id, acct_id) { + if (confirm(lang.lang_status_redraft)) { show(); del(id, acct_id); $("#post-acct-sel").prop("disabled", true); - var medias=$("[toot-id="+id+"]").attr("data-medias"); - var vismode=$("[toot-id="+id+"] .vis-data").attr("data-vis"); + var medias = $("[toot-id=" + id + "]").attr("data-medias"); + var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis"); vis(vismode); $("#media").val(medias); - var ct=medias.split(",").length; - $("[toot-id="+id+"] img.toot-img").each(function(i, elem) { - if(i'); } }); - var html=$("[toot-id="+id+"] .toot").html(); - html = html.replace(/^

    (.+)<\/p>$/,"$1"); + var html = $("[toot-id=" + id + "] .toot").html(); + html = html.replace(/^

    (.+)<\/p>$/, "$1"); html = html.replace(//, "\n"); html = html.replace(/

    /, "\n"); html = html.replace(/<\/p>/, "\n"); html = html.replace(//g, "$1"); - html=$.strip_tags(html); - localStorage.setItem("nohide",true); + html = $.strip_tags(html); + localStorage.setItem("nohide", true); show(); $("#textarea").val(html); - var cwtxt=$("[toot-id="+id+"] .cw_text").html(); - if(cwtxt!=""){ - cwtxt=$.strip_tags(cwtxt); + var cwtxt = $("[toot-id=" + id + "] .cw_text").html(); + if (cwtxt != "") { + cwtxt = $.strip_tags(cwtxt); cw(); $("#cw-text").val(cwtxt); } @@ -296,7 +295,7 @@ function pin(id, acct_id) { var flag = "pin"; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -304,10 +303,10 @@ function pin(id, acct_id) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); + console.log(["Success: pinned", json]); if ($("[toot-id=" + id + "]").hasClass("pined")) { $("[toot-id=" + id + "]").removeClass("pined"); $(".pin_" + id).removeClass("blue-text"); @@ -322,7 +321,7 @@ function pin(id, acct_id) { //フォロリク function request(id, flag, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/follow_requests/" + id + "/" + flag; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -330,10 +329,10 @@ function request(id, flag, acct_id) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); + console.log(["Success: request", "type:" + flag, json]); showReq(); } } @@ -345,7 +344,7 @@ function domainblock(add, flag, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/domain_blocks" var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -353,10 +352,10 @@ function domainblock(add, flag, acct_id) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); + console.log(["Success: domain block", json]); showDom(); } } @@ -367,25 +366,24 @@ function addDomainblock() { domainblock(domain, 'POST'); } //ユーザー強調 -function empUser(){ +function empUser() { var usr = localStorage.getItem("user_emp"); var obj = JSON.parse(usr); - var id=$("#his-acct").attr("fullname"); - console.log(id); - if(!obj){ - var obj=[]; + var id = $("#his-acct").attr("fullname"); + if (!obj) { + var obj = []; obj.push(id); - Materialize.toast(id+lang.lang_status_emphas, 4000); - }else{ + Materialize.toast(id + lang.lang_status_emphas, 4000); + } else { var can; - Object.keys(obj).forEach(function(key) { + Object.keys(obj).forEach(function (key) { var usT = obj[key]; - if(usT!=id && !can){ - can=false; - }else{ - can=true; + if (usT != id && !can) { + can = false; + } else { + can = true; obj.splice(key, 1); - Materialize.toast(id+lang.lang_status_unemphas, 4000); + Materialize.toast(id + lang.lang_status_unemphas, 4000); } }); } @@ -393,16 +391,16 @@ function empUser(){ localStorage.setItem("user_emp", json); } //Endorse -function pinUser(){ - var id=$("#his-data").attr("user-id"); - var acct_id=$("#his-data").attr("use-acct"); +function pinUser() { + var id = $("#his-data").attr("user-id"); + var acct_id = $("#his-data").attr("use-acct"); if ($("#his-end-btn").hasClass("endorsed")) { var flag = "unpin"; } else { var flag = "pin"; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag; var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); @@ -410,73 +408,72 @@ function pinUser(){ httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); if ($("#his-end-btn").hasClass("endorsed")) { $("#his-end-btn").removeClass("endorsed") $("#his-end-btn").text(lang.lang_status_endorse) } else { $("#his-end-btn").addClass("endorsed") $("#his-end-btn").text(lang.lang_status_unendorse) - + } } } } //URLコピー -function tootUriCopy(url){ +function tootUriCopy(url) { execCopy(url); Materialize.toast(lang.lang_details_url, 1500); } //他のアカウントで… -function staEx(mode){ - var url=$("#tootmodal").attr("data-url"); +function staEx(mode) { + var url = $("#tootmodal").attr("data-url"); var acct_id = $("#status-acct-sel").val(); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/search?resolve=true&q=" + url fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at } - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - var id=json.statuses[0].id; - if(mode=="rt"){ + }).then(function (json) { + var id = json.statuses[0].id; + if (mode == "rt") { rt(id, acct_id, 'remote') - }else if(mode=="fav"){ + } else if (mode == "fav") { fav(id, acct_id, 'remote') - }else if(mode=="reply"){ + } else if (mode == "reply") { reEx(id) } }); return; } -function toggleAction(id,tlid,acct_id){ - if(tlid=="notf"){ - var tlide="[data-notf="+acct_id+"]"; - }else{ - var tlide="[tlid="+tlid+"]"; +function toggleAction(id, tlid, acct_id) { + if (tlid == "notf") { + var tlide = "[data-notf=" + acct_id + "]"; + } else { + var tlide = "[tlid=" + tlid + "]"; } - if(!$(tlide+" [toot-id="+id+"]").hasClass("ext-mode")){ - $(tlide+" [toot-id="+id+"] .type-a").hide(); - $(tlide+" [toot-id="+id+"] .type-b").show(); - $(tlide+" [toot-id="+id+"]").addClass("ext-mode") - $(tlide+" [toot-id="+id+"] .act-icon").text("expand_less"); - }else{ - $(tlide+" [toot-id="+id+"] .type-b").hide(); - $(tlide+" [toot-id="+id+"] .type-a").show(); - $(tlide+" [toot-id="+id+"]").removeClass("ext-mode") - $(tlide+" [toot-id="+id+"] .act-icon").text("expand_more"); + if (!$(tlide + " [toot-id=" + id + "]").hasClass("ext-mode")) { + $(tlide + " [toot-id=" + id + "] .type-a").hide(); + $(tlide + " [toot-id=" + id + "] .type-b").show(); + $(tlide + " [toot-id=" + id + "]").addClass("ext-mode") + $(tlide + " [toot-id=" + id + "] .act-icon").text("expand_less"); + } else { + $(tlide + " [toot-id=" + id + "] .type-b").hide(); + $(tlide + " [toot-id=" + id + "] .type-a").show(); + $(tlide + " [toot-id=" + id + "]").removeClass("ext-mode") + $(tlide + " [toot-id=" + id + "] .act-icon").text("expand_more"); } - + } \ No newline at end of file diff --git a/app/js/post/suggest.js b/app/js/post/suggest.js index ba5a9188..71bf9c7a 100644 --- a/app/js/post/suggest.js +++ b/app/js/post/suggest.js @@ -7,102 +7,102 @@ var prev_val = input.value; var oldSuggest; var suggest; -input.addEventListener("focus", function() { +input.addEventListener("focus", function () { var acct_id = $("#post-acct-sel").val(); $("#suggest").html(""); window.clearInterval(timer); - timer = window.setInterval(function() { + timer = window.setInterval(function () { var new_val = input.value; - if(new_val==""){ + if (new_val == "") { $("#suggest").html(""); - if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){ + if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { $("#right-side").hide() } return; } if (prev_val != new_val) { var semoji = new_val.match(/:(\S{3,})/); - if(semoji){ + if (semoji) { var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id)); - if(!obj){ - var ehtml=lang.lang_suggest_nodata; - }else{ + if (!obj) { + var ehtml = lang.lang_suggest_nodata; + } else { var num = obj.length; - var ehtml=""; + var ehtml = ""; for (i = 0; i < num; i++) { var emoji = obj[i]; - if ( ~emoji.shortcode.indexOf(semoji[1])) { + if (~emoji.shortcode.indexOf(semoji[1])) { if (emoji) { - ehtml = ehtml+''; + ehtml = ehtml + ''; } } - } + } } - if(ehtml!=""){ + if (ehtml != "") { $("#right-side").show() $("#poll").addClass("hide") $("#emoji").addClass("hide") - }else{ - if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){ + } else { + if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { $("#right-side").hide() } } $("#suggest").html(ehtml); } - + var tag = new_val.match(/#(\S{3,})/); var acct = new_val.match(/@(\S{3,})/); if (tag && tag[1]) { var q = tag[1]; } else if (acct && acct[1]) { var q = acct[1]; - }else { + } else { $("#suggest").html(""); - if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){ + if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { $("#right-side").hide() } return; } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); suggest = "https://" + domain + "/api/v1/search?q=" + q if (suggest != oldSuggest) { - console.log(suggest) + console.log("Try to get suggest at " + suggest) fetch(suggest, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json.hashtags[0] && tag) { - if(tag[1]){ - var tags = ""; - Object.keys(json.hashtags).forEach(function(key4) { - var tag = json.hashtags[key4]; - if(tag!=q){ - tags = tags + '#' + tag + '
    '; - } - }); - $("#right-side").show() - $("#suggest").html("Tags:
    " + tags); - $("#poll").addClass("hide") - $("#emoji").addClass("hide") + if (tag[1]) { + var tags = ""; + Object.keys(json.hashtags).forEach(function (key4) { + var tag = json.hashtags[key4]; + if (tag != q) { + tags = tags + '#' + tag + '
    '; + } + }); + $("#right-side").show() + $("#suggest").html("Tags:
    " + tags); + $("#poll").addClass("hide") + $("#emoji").addClass("hide") } } else if (json.accounts[0] && acct[1]) { var accts = ""; - Object.keys(json.accounts).forEach(function(key3) { + Object.keys(json.accounts).forEach(function (key3) { var acct = json.accounts[key3]; - if(acct.acct!=q){ + if (acct.acct != q) { accts = accts + '@' + acct.acct + '
    '; + '\',\'@' + q + '\')" class="pointer">@' + acct.acct + '
    '; } }); $("#right-side").show() @@ -110,7 +110,7 @@ input.addEventListener("focus", function() { $("#poll").addClass("hide") $("#emoji").addClass("hide") } else { - if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){ + if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { $("#right-side").hide() } } @@ -122,7 +122,7 @@ input.addEventListener("focus", function() { }, 1000); }, false); -input.addEventListener("blur", function() { +input.addEventListener("blur", function () { window.clearInterval(timer); favTag(); }, false); @@ -133,48 +133,47 @@ function tagInsert(code, del) { } else { var regExp = new RegExp(del, "g"); var now = now.replace(regExp, ""); - selin=selin-del.length; + selin = selin - del.length; } - if(selin>0){ - var before = now.substr(0, selin); - var after = now.substr(selin, now.length); - newt = before + " "+ code+" " + after; - }else{ - newt = code+" "+now; + if (selin > 0) { + var before = now.substr(0, selin); + var after = now.substr(selin, now.length); + newt = before + " " + code + " " + after; + } else { + newt = code + " " + now; } $("#textarea").val(newt); $("#textarea").focus(); - if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){ + if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { $("#right-side").hide() } $("#suggest").html(""); } -function cgNPs(q){ +function cgNPs(q) { suggest = "https://cg.toot.app/api/v1/search/light?q=" + q - if (suggest != oldSuggest) { - console.log(suggest) - fetch(suggest, { - method: 'GET', - headers: { - 'content-type': 'application/json' - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - console.log(json); - if (json[0]) { - var tags = ""; - Object.keys(json).forEach(function(key4) { - var tag = json[key4]; - tags = tags + '' + escapeHTML(json[key4]) + ' '; - }); - $("#suggest").html("Cinderella NowPlaying:" + tags); - }else{ - $("#suggest").html("Cinderella NowPlaying:Not Found"); - } + if (suggest != oldSuggest) { + console.log("Try to get suggest at " + suggest) + fetch(suggest, { + method: 'GET', + headers: { + 'content-type': 'application/json' + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (json[0]) { + var tags = ""; + Object.keys(json).forEach(function (key4) { + var tag = json[key4]; + tags = tags + '' + escapeHTML(json[key4]) + ' '; }); + $("#suggest").html("Cinderella NowPlaying:" + tags); + } else { + $("#suggest").html("Cinderella NowPlaying:Not Found"); } + }); + } } \ No newline at end of file diff --git a/app/js/post/use-txtbox.js b/app/js/post/use-txtbox.js index b66d6a05..44223d1b 100644 --- a/app/js/post/use-txtbox.js +++ b/app/js/post/use-txtbox.js @@ -1,62 +1,62 @@ /*リプライ*/ -function re(id,ats_cm,acct_id,mode){ +function re(id, ats_cm, acct_id, mode) { clear(); - var ats=ats_cm.split(','); - localStorage.setItem("nohide",true); + var ats = ats_cm.split(','); + localStorage.setItem("nohide", true); show(); $("#reply").val(id); - for(var i=0;i(.+)<\/p>$/)[1]; html = html.replace(//, "\n"); html = html.replace(/

    /, "\n"); html = html.replace(/<\/p>/, "\n"); - html=$.strip_tags(html); - $("#textarea").val("\n"+"@"+at+" "+html+"\n"+url); + html = $.strip_tags(html); + $("#textarea").val("\n" + "@" + at + " " + html + "\n" + url); } $("#textarea").focus(); $("#post-acct-sel").val(acct_id); diff --git a/app/js/tl/card.js b/app/js/tl/card.js index 1b638c14..fcacbbbc 100644 --- a/app/js/tl/card.js +++ b/app/js/tl/card.js @@ -3,211 +3,208 @@ function additional(acct_id, tlid) { //メンション系 //$(".mention").attr("href", ""); - + $("#timeline-container .mention").addClass("parsed"); - $("#timeline-container .hashtag").each(function(i, elem) { + $("#timeline-container .hashtag").each(function (i, elem) { var tags = $(this).attr("href").match( /https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ ); - $(this).attr("href","#"); - if(tags){ - if(tags[2]){ - $(this).attr("onclick",'tagShow(\'' + tags[2] + '\')'); + $(this).attr("href", "#"); + if (tags) { + if (tags[2]) { + $(this).attr("onclick", 'tagShow(\'' + tags[2] + '\')'); } - + } }); - + //トゥートサムネ - $("#timeline_" + tlid + " .toot a:not(.parsed)").each(function(i, elem) { + $("#timeline_" + tlid + " .toot a:not(.parsed)").each(function (i, elem) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var card = localStorage.getItem("card_" + tlid); var text = $(this).attr('href'); - if(text){ - if(text.indexOf("twimg.com")=== -1){ + if (text) { + if (text.indexOf("twimg.com") === -1) { var urls = text.match( /https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ ); } - }else{ - text="" - var urls =[] + } else { + text = "" + var urls = [] } - + //トゥートのURLぽかったら toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/); - if(toot){ - if(toot[1]){ - $(this).attr("data-acct",acct_id); + if (toot) { + if (toot[1]) { + $(this).attr("data-acct", acct_id); } } if (urls) { $(this).remove(); } else if (!card) { var id = $(this).parents('.cvo').attr("toot-id"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var start = "https://" + domain + "/url?url="+text; + if (localStorage.getItem("mode_" + domain) == "misskey") { + var start = "https://" + domain + "/url?url=" + text; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json' }, //body: JSON.stringify({}) - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json.title) { $("[toot-id=" + id + "] .additional").html( - "URL"+lang.lang_cards_check+":
    Title:" + escapeHTML(json.title) + "
    " + + "URL" + lang.lang_cards_check + ":
    Title:" + escapeHTML(json.title) + "
    " + escapeHTML(json.description) + "
    "); $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); $("[toot-id=" + id + "]").addClass("parsed"); } }); } - - }else{ - $(this).attr("title",text); + + } else { + $(this).attr("title", text); } }); - $("i.unparsed").each(function(i, elem) { - var dem=$(this).text(); - var dom=$(this); + $("i.unparsed").each(function (i, elem) { + var dem = $(this).text(); + var dom = $(this); var start = "./js/emoji/emoji-map.json"; var xmlHttpRequest = new XMLHttpRequest(); - xmlHttpRequest.onreadystatechange = function() - { - if( this.readyState === 4 && this.status === 200 ) { - if( this.response){ - var json=this.response; - var emojis=json.emojis; - for (i = 0; i < emojis.length; i++) { - var emojie = emojis[i]; - var regExp = new RegExp(dem, "g"); - if (emojie.emoji.match(regExp)) { - var sc=emojie.name; - var sc="twa-"+sc.replace(/_/g,"-"); - dom.addClass(sc); - dom.text(""); - dom.removeClass("unparsed"); - break; - } - } - } - } - } - xmlHttpRequest.open( 'GET', start, true ); - xmlHttpRequest.responseType = 'json'; - xmlHttpRequest.send( null ); + xmlHttpRequest.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + if (this.response) { + var json = this.response; + var emojis = json.emojis; + for (i = 0; i < emojis.length; i++) { + var emojie = emojis[i]; + var regExp = new RegExp(dem, "g"); + if (emojie.emoji.match(regExp)) { + var sc = emojie.name; + var sc = "twa-" + sc.replace(/_/g, "-"); + dom.addClass(sc); + dom.text(""); + dom.removeClass("unparsed"); + break; + } + } + } + } + } + xmlHttpRequest.open('GET', start, true); + xmlHttpRequest.responseType = 'json'; + xmlHttpRequest.send(null); }); - - $("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function(i, elem) { + + $("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function (i, elem) { $(this).parent().find(".add-show").hide(); }); //Markdownイメージビューワー - $("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function(i, elem) { - var ilink=$(this).attr("href"); - var id = $(this).parents('.cvo').attr("toot-id"); - $(this).attr("href","#"); - $(this).attr("onclick","imgv('"+id+"','"+i+"')"); - $(this).attr("data-type","image"); - $(this).attr("id",id+"-image-"+i); - $(this).attr("data-url",ilink); - $(this).addClass("img-parsed"); + $("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function (i, elem) { + var ilink = $(this).attr("href"); + var id = $(this).parents('.cvo').attr("toot-id"); + $(this).attr("href", "#"); + $(this).attr("onclick", "imgv('" + id + "','" + i + "')"); + $(this).attr("data-type", "image"); + $(this).attr("id", id + "-image-" + i); + $(this).attr("data-url", ilink); + $(this).addClass("img-parsed"); }); } function additionalIndv(tlid, acct_id, id) { - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var text = $("[toot-id="+id+"] .toot a").attr('href'); - var urls = text.match( - /https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ - ); - if (urls) { - $("[toot-id="+id+"] .toot a").remove(); + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var text = $("[toot-id=" + id + "] .toot a").attr('href'); + var urls = text.match( + /https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ + ); + if (urls) { + $("[toot-id=" + id + "] .toot a").remove(); + } else { + if (localStorage.getItem("mode_" + domain) == "misskey") { + var start = "https://" + domain + "/url?url=" + text; + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json' + }, + //body: JSON.stringify({}) + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (json.title) { + $("[toot-id=" + id + "] .additional").html( + "URL" + lang.lang_cards_check + ":
    Title:" + escapeHTML(json.title) + "
    " + + escapeHTML(json.description) + "
    "); + $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); + $("[toot-id=" + id + "]").addClass("parsed"); + } + }); } else { - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var start = "https://" + domain + "/url?url="+text; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json' - }, - //body: JSON.stringify({}) - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { + var id = $("[toot-id=" + id + "] .toot a").parents('.cvo').attr("toot-id"); + var start = "https://" + domain + "/api/v1/statuses/" + id + "/card"; + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + at + }, + //body: JSON.stringify({}) + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + //このリンク鳥やんけ、ってとき + if (json.provider_name == "Twitter") { + if (json.image) { + var twiImg = '
    '; + } else { + var twiImg = ''; + } + $("[toot-id=" + id + "] .additional").html( + '

    '); + } else if (json.provider_name == "pixiv") { + if (json.image) { + var pxvImg = '
    '; + } else { + var pxvImg = ''; + } + $("[toot-id=" + id + "] .additional").html( + '
    ' + escapeHTML(json.author_name) + '
    ' + escapeHTML(json.title) + pxvImg + '
    '); + } else { if (json.title) { $("[toot-id=" + id + "] .additional").html( - "URL"+lang.lang_cards_check+":
    Title:" + escapeHTML(json.title) + "
    " + + "URL" + lang.lang_cards_check + ":
    Title:" + escapeHTML(json.title) + "
    " + escapeHTML(json.description) + "
    "); - $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); - $("[toot-id=" + id + "]").addClass("parsed"); } - }); - }else{ - var id = $("[toot-id="+id+"] .toot a").parents('.cvo').attr("toot-id"); - var start = "https://" + domain + "/api/v1/statuses/" + id + "/card"; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - //body: JSON.stringify({}) - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - console.log(json); - //このリンク鳥やんけ、ってとき - console.log(json.provider_name); - if (json.provider_name=="Twitter"){ - if(json.image){ - var twiImg='
    '; - }else{ - var twiImg=''; - } - $("[toot-id=" + id + "] .additional").html( - ''); - }else if (json.provider_name=="pixiv"){ - if(json.image){ - var pxvImg='
    '; - }else{ - var pxvImg=''; - } - $("[toot-id=" + id + "] .additional").html( - '
    '+escapeHTML(json.author_name)+'
    '+escapeHTML(json.title)+pxvImg+'
    '); - }else{ - if (json.title) { - $("[toot-id=" + id + "] .additional").html( - "URL"+lang.lang_cards_check+":
    Title:" + escapeHTML(json.title) + "
    " + - escapeHTML(json.description) + "
    "); - } - if (json.html) { - $("[toot-id=" + id + "] .additional").html(json.html+'picture_in_picture_alt'); - - } + if (json.html) { + $("[toot-id=" + id + "] .additional").html(json.html + 'picture_in_picture_alt'); + } - if (json.title) { - $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); - $("[toot-id=" + id + "]").addClass("parsed"); - } - }); - } - + } + if (json.title) { + $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); + $("[toot-id=" + id + "]").addClass("parsed"); + } + }); } + + } } //各TL上方のLink[On/Off] @@ -216,11 +213,11 @@ function cardToggle(tlid) { if (!card) { localStorage.setItem("card_" + tlid, "true"); $("#sta-card-" + tlid).text("Off"); - $("#sta-card-" + tlid).css("color",'red'); + $("#sta-card-" + tlid).css("color", 'red'); } else { localStorage.removeItem("card_" + tlid); $("#sta-card-" + tlid).text("On"); - $("#sta-card-" + tlid).css("color",'#009688'); + $("#sta-card-" + tlid).css("color", '#009688'); } } //各TL上方のLink[On/Off]をチェック @@ -228,57 +225,56 @@ function cardCheck(tlid) { var card = localStorage.getItem("card_" + tlid); if (!card) { $("#sta-card-" + tlid).text("On"); - $("#sta-card-" + tlid).css("color",'#009688'); + $("#sta-card-" + tlid).css("color", '#009688'); } else { $("#sta-card-" + tlid).text("Off"); - $("#sta-card-" + tlid).css("color",'red'); + $("#sta-card-" + tlid).css("color", 'red'); } } -function mov(id,tlid,type){ - if(tlid=="notf"){ - var tlide="[data-notf="+acct_id+"]"; - }else if(tlid=="user"){ - var tlide="#his-data"; - }else{ - var tlide="[tlid="+tlid+"]"; +function mov(id, tlid, type) { + if (tlid == "notf") { + var tlide = "[data-notf=" + acct_id + "]"; + } else if (tlid == "user") { + var tlide = "#his-data"; + } else { + var tlide = "[tlid=" + tlid + "]"; } - console.log(tlid) - var mouseover=localStorage.getItem("mouseover"); - if(!mouseover){ - mouseover=""; + var mouseover = localStorage.getItem("mouseover"); + if (!mouseover) { + mouseover = ""; } - if(mouseover=="yes"){ - mouseover="hide"; - }else if(mouseover=="click"){ - if(type=="mv"){ - mouseover=""; - }else{ - mouseover="hide"; + if (mouseover == "yes") { + mouseover = "hide"; + } else if (mouseover == "click") { + if (type == "mv") { + mouseover = ""; + } else { + mouseover = "hide"; } - }else if(mouseover=="no"){ - mouseover=""; + } else if (mouseover == "no") { + mouseover = ""; } - if(mouseover=="hide"){ - $(tlide+" [toot-id="+id+"] .area-actions").toggleClass("hide") - $(tlide+" [toot-id="+id+"] .area-side").toggleClass("hide") + if (mouseover == "hide") { + $(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide") + $(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide") } } -function resetmv(type){ - var mouseover=localStorage.getItem("mouseover"); - if(!mouseover){ - mouseover=""; - }else if(mouseover=="yes"){ - mouseover="hide"; - }else if(mouseover=="no"){ - mouseover=""; - }else if(mouseover=="click" && type!="mv"){ - mouseover="hide"; +function resetmv(type) { + var mouseover = localStorage.getItem("mouseover"); + if (!mouseover) { + mouseover = ""; + } else if (mouseover == "yes") { + mouseover = "hide"; + } else if (mouseover == "no") { + mouseover = ""; + } else if (mouseover == "click" && type != "mv") { + mouseover = "hide"; } - if(mouseover=="hide"){ + if (mouseover == "hide") { $(".area-actions").addClass("hide"); $(".area-side").addClass("hide"); } - + } \ No newline at end of file diff --git a/app/js/tl/datails.js b/app/js/tl/datails.js index 8c305119..d0bf290a 100644 --- a/app/js/tl/datails.js +++ b/app/js/tl/datails.js @@ -1,31 +1,31 @@ //トゥートの詳細 function details(id, acct_id, tlid, mode) { - if(mode=="dm"){ + if (mode == "dm") { $(".dm-hide").hide(); - }else{ + } else { $(".dm-hide").show(); } - $(".toot-reset").html(''+lang.lang_details_nodata+''); - var html = $("#timeline_"+tlid+" [toot-id=" + id + "]").html(); + $(".toot-reset").html('' + lang.lang_details_nodata + ''); + var html = $("#timeline_" + tlid + " [toot-id=" + id + "]").html(); $("#toot-this").html(html); $('#tootmodal').modal('open'); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/notes/show"; - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify({ - i:at, - noteId:id + body: JSON.stringify({ + i: at, + noteId: id }) } - }else{ + } else { var start = "https://" + domain + "/api/v1/statuses/" + id; - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -33,61 +33,61 @@ function details(id, acct_id, tlid, mode) { }, } } - - fetch(start, i).then(function(response) { + + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); - if(!$("#timeline_"+tlid+" #pub_" + id).length){ + }).then(function (json) { + console.log(["Toot data:", json]); + if (!$("#timeline_" + tlid + " #pub_" + id).length) { var html = parse([json], '', acct_id); $("#toot-this").html(html); jQuery("time.timeago").timeago(); } - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var url="https://"+domain+"/notes/"+json.id; - var scn=json.user.username; - if(!json.user.host){ - var local=true; - }else{ - var local=false; - scn=scn+"@"+host; + if (localStorage.getItem("mode_" + domain) == "misskey") { + var url = "https://" + domain + "/notes/" + json.id; + var scn = json.user.username; + if (!json.user.host) { + var local = true; + } else { + var local = false; + scn = scn + "@" + host; } - var rep=""; - var uid=json.user.id; - if(json._replyIds){ + var rep = ""; + var uid = json.user.id; + if (json._replyIds) { replyTL(json._replyIds[0], acct_id); } - }else{ - var url=json.url - if(json.account.acct==json.account.username){ - var local=true; - }else{ - var local=false; + } else { + var url = json.url + if (json.account.acct == json.account.username) { + var local = true; + } else { + var local = false; } - var scn=json.account.acct; - var uid=json.account.id; + var scn = json.account.acct; + var uid = json.account.id; if (json["in_reply_to_id"]) { replyTL(json["in_reply_to_id"], acct_id); } } $("#toot-this .fav_ct").text(json.favourites_count); $("#toot-this .rt_ct").text(json.reblogs_count); - $("#tootmodal").attr("data-url",url); - $("#tootmodal").attr("data-id",json.id); - if(local){ - $("#tootmodal").attr("data-user",scn+"@"+domain); - }else{ - $("#tootmodal").attr("data-user",scn); + $("#tootmodal").attr("data-url", url); + $("#tootmodal").attr("data-id", json.id); + if (local) { + $("#tootmodal").attr("data-user", scn + "@" + domain); + } else { + $("#tootmodal").attr("data-user", scn); } context(id, acct_id); - var dom=null; - if(!local){ - dom=scn.replace(/.+@/g,''); - }else{ - dom=domain; + var dom = null; + if (!local) { + dom = scn.replace(/.+@/g, ''); + } else { + dom = domain; } beforeToot(id, acct_id, dom); userToot(id, acct_id, uid); @@ -96,37 +96,37 @@ function details(id, acct_id, tlid, mode) { afterFTLToot(id, acct_id, dom); faved(id, acct_id); rted(id, acct_id); - if($("#toot-this div").hasClass("cvo")){ + if ($("#toot-this div").hasClass("cvo")) { $("#toot-this").removeClass("cvo"); - }else{ + } else { $("#toot-this").addClass("cvo"); } - if(!$("#activator").hasClass("active")){ + if (!$("#activator").hasClass("active")) { $('#det-col').collapsible('open', 4); } - + }); } //返信タイムライン function replyTL(id, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/notes/show"; - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify({ - i:at, - noteId:id + body: JSON.stringify({ + i: at, + noteId: id }) } - }else{ + } else { var start = "https://" + domain + "/api/v1/statuses/" + id; - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -134,65 +134,65 @@ function replyTL(id, acct_id) { }, } } - fetch(start, i).then(function(response) { + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ - var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread"); - }else{ - var mute=[]; + }).then(function (json) { + if (localStorage.getItem("filter_" + acct_id) != "undefined") { + var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "thread"); + } else { + var mute = []; } - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var templete = misskeyParse([json], '', acct_id,"","",mute); + if (localStorage.getItem("mode_" + domain) == "misskey") { + var templete = misskeyParse([json], '', acct_id, "", "", mute); $("#toot-after").prepend(templete); $("#toot-after .hide").html(lang.lang_details_filtered); - $("#toot-after .by_filter").css("display","block"); + $("#toot-after .by_filter").css("display", "block"); $("#toot-after .by_filter").removeClass("hide"); - var rep="_replyIds"; + var rep = "_replyIds"; if (json[rep]) { replyTL(json[rep][0], acct_id); } - }else{ - var templete = parse([json], '', acct_id,"","",mute); - if(templete!=""){ + } else { + var templete = parse([json], '', acct_id, "", "", mute); + if (templete != "") { $("#toot-reply .no-data").hide(); } $("#toot-reply").prepend(templete); $("#toot-reply .hide").html(lang.lang_details_filtered); - $("#toot-reply .by_filter").css("display","block"); + $("#toot-reply .by_filter").css("display", "block"); $("#toot-reply .by_filter").removeClass("hide"); - jQuery("time.timeago").timeago(); - var rep="in_reply_to_id"; + jQuery("time.timeago").timeago(); + var rep = "in_reply_to_id"; if (json[rep]) { replyTL(json[rep], acct_id); } } - + }); } //コンテクストってなんですか function context(id, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/notes/conversation"; - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify({ - i:at, - noteId:id + body: JSON.stringify({ + i: at, + noteId: id }) } - }else{ + } else { var start = "https://" + domain + "/api/v1/statuses/" + id + "/context"; - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -200,83 +200,82 @@ function context(id, acct_id) { }, } } - fetch(start, i).then(function(response) { + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(localStorage.getItem("mode_" + domain)=="misskey"){ + }).then(function (json) { + if (localStorage.getItem("mode_" + domain) == "misskey") { json.reverse(); - console.log(json); - var templete = misskeyParse(json, '', acct_id,"","",[]); + var templete = misskeyParse(json, '', acct_id, "", "", []); $("#toot-reply").html(templete); $("#toot-reply .hide").html(lang.lang_details_filtered); - $("#toot-reply .by_filter").css("display","block"); + $("#toot-reply .by_filter").css("display", "block"); $("#toot-reply .by_filter").removeClass("hide"); jQuery("time.timeago").timeago(); - }else{ - if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ - var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread"); - }else{ - var mute=[]; + } else { + if (localStorage.getItem("filter_" + acct_id) != "undefined") { + var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "thread"); + } else { + var mute = []; } - var templete = parse(json.descendants, '', acct_id,"","",mute); - if(templete!=""){ + var templete = parse(json.descendants, '', acct_id, "", "", mute); + if (templete != "") { $("#toot-after .no-data").hide(); } $("#toot-after").html(templete); $("#toot-after .hide").html(lang.lang_details_filtered); - $("#toot-after .by_filter").css("display","block"); + $("#toot-after .by_filter").css("display", "block"); $("#toot-after .by_filter").removeClass("hide"); jQuery("time.timeago").timeago(); } - + }); } //前のトゥート(Back TL) function beforeToot(id, acct_id, domain) { //var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + - "/api/notes/local-timeline" + "/api/notes/local-timeline" fetch(start, { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify({ - i:at, - untilID:id + body: JSON.stringify({ + i: at, + untilID: id }) - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - var templete = misskeyParse(json, 'noauth', acct_id); - $("#toot-before").html(templete); - jQuery("time.timeago").timeago(); - }); - }else{ + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + var templete = misskeyParse(json, 'noauth', acct_id); + $("#toot-before").html(templete); + jQuery("time.timeago").timeago(); + }); + } else { var start = "https://" + domain + - "/api/v1/timelines/public?local=true&max_id=" + id; + "/api/v1/timelines/public?local=true&max_id=" + id; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { var templete = parse(json, 'noauth', acct_id); - if(templete!=""){ + if (templete != "") { $("#toot-before .no-data").hide(); } $("#toot-before").html(templete); @@ -287,31 +286,31 @@ function beforeToot(id, acct_id, domain) { //前のユーザーのトゥート function userToot(id, acct_id, user) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + - "/api/users/notes" + "/api/users/notes" fetch(start, { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify({ - i:at, - untilID:id, - userId:user + body: JSON.stringify({ + i: at, + untilID: id, + userId: user }) - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - var templete = misskeyParse(json, 'noauth', acct_id); - $("#user-before").html(templete); - jQuery("time.timeago").timeago(); - }); - }else{ + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + var templete = misskeyParse(json, 'noauth', acct_id); + $("#user-before").html(templete); + jQuery("time.timeago").timeago(); + }); + } else { var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?max_id=" + id; fetch(start, { method: 'GET', @@ -319,103 +318,103 @@ function userToot(id, acct_id, user) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { var templete = parse(json, '', acct_id); - if(templete!=""){ + if (templete != "") { $("#user-before .no-data").hide(); } $("#user-before").html(templete); jQuery("time.timeago").timeago(); }); } - + } //後のLTL function afterToot(id, acct_id, domain) { //var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/timelines/public?local=true&min_id=" + id; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - var templete = parse(json, 'noauth', acct_id); - if(templete!=""){ - $("#ltl-after .no-data").hide(); - } - $("#ltl-after").html(templete); - jQuery("time.timeago").timeago(); - }); + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + var templete = parse(json, 'noauth', acct_id); + if (templete != "") { + $("#ltl-after .no-data").hide(); + } + $("#ltl-after").html(templete); + jQuery("time.timeago").timeago(); + }); } //後のUTL function afterUserToot(id, acct_id, user) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?min_id=" + id; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - var templete = parse(json, '', acct_id); - if(templete!=""){ - $("#user-after .no-data").hide(); - } - $("#user-after").html(templete); - jQuery("time.timeago").timeago(); - }); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?min_id=" + id; + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + at + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + var templete = parse(json, '', acct_id); + if (templete != "") { + $("#user-after .no-data").hide(); + } + $("#user-after").html(templete); + jQuery("time.timeago").timeago(); + }); } //後のFTL function afterFTLToot(id, acct_id, domain) { //var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/timelines/public?min_id=" + id; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - var templete = parse(json, 'noauth', acct_id); - if(templete!=""){ - $("#ftl-after .no-data").hide(); - } - $("#ftl-after").html(templete); - jQuery("time.timeago").timeago(); - }); + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + var templete = parse(json, 'noauth', acct_id); + if (templete != "") { + $("#ftl-after .no-data").hide(); + } + $("#ftl-after").html(templete); + jQuery("time.timeago").timeago(); + }); } //ふぁぼ一覧 function faved(id, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { return false; } + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/statuses/" + id + "/favourited_by"; fetch(start, { method: 'GET', @@ -423,14 +422,14 @@ function faved(id, acct_id) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { var templete = userparse(json, '', acct_id); - if(templete!=""){ + if (templete != "") { $("#toot-fav .no-data").hide(); } $("#toot-fav").html(templete); @@ -440,8 +439,8 @@ function faved(id, acct_id) { //ブースト一覧 function rted(id, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { return false; } + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/statuses/" + id + "/reblogged_by"; fetch(start, { method: 'GET', @@ -449,77 +448,77 @@ function rted(id, acct_id) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { var templete = userparse(json, '', acct_id); $("#toot-rt").html(templete); }); } //URL等のコピー -function cbCopy(mode){ - var url=$("#tootmodal").attr("data-url"); +function cbCopy(mode) { + var url = $("#tootmodal").attr("data-url"); var urls = url.match(/https?:\/\/([-.a-zA-Z0-9]+)/); - var domain=urls[1]; - if(mode=="emb"){ - var emb=''; + var domain = urls[1]; + if (mode == "emb") { + var emb = ''; execCopy(emb) Materialize.toast(lang.lang_details_embed, 1500); - }else{ - if(execCopy(url)){ + } else { + if (execCopy(url)) { Materialize.toast(lang.lang_details_url, 1500); } - + } } //本文のコピー -function staCopy(id){ - var html=$("[toot-id="+id+"] .toot").html(); - html = html.replace(/^

    (.+)<\/p>$/,"$1"); +function staCopy(id) { + var html = $("[toot-id=" + id + "] .toot").html(); + html = html.replace(/^

    (.+)<\/p>$/, "$1"); html = html.replace(//, "\n"); html = html.replace(/

    /, "\n"); html = html.replace(/<\/p>/, "\n"); - console.log(html); + console.log("Copy it:\n" + html); html = html.replace(//g, "$1"); - html=$.strip_tags(html); - if(execCopy(html)){ + html = $.strip_tags(html); + if (execCopy(html)) { Materialize.toast(lang.lang_details_txt, 1500); } - + } //翻訳 -function trans(tar,to){ - var html=$("#toot-this .toot").html(); - if(html.match(/^

    (.+)<\/p>$/)){ +function trans(tar, to) { + var html = $("#toot-this .toot").html(); + if (html.match(/^

    (.+)<\/p>$/)) { html = html.match(/^

    (.+)<\/p>$/)[1]; } html = html.replace(//g, "\n"); html = html.replace(/

    /g, "\n"); html = html.replace(/<\/p>/g, "\n"); - html=$.strip_tags(html); - if(~tar.indexOf("zh")){ - tar="zh"; + html = $.strip_tags(html); + if (~tar.indexOf("zh")) { + tar = "zh"; } $("#toot-this .additional").text("Loading...(Powered by Google Translate)"); - var exec='https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text='+encodeURIComponent(html)+'&source='+tar+'&target='+to - console.log(exec); + var exec = 'https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text=' + encodeURIComponent(html) + '&source=' + tar + '&target=' + to + console.log("Try to translate from " + tar + " to " + to + " at " + exec); fetch(exec, { method: 'GET', - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(text) { - $("#toot-this .additional").html(''+text.text+''); + }).then(function (text) { + $("#toot-this .additional").html('' + text.text + ''); }); } //ブラウザで開く -function brws(){ - var url=$("#tootmodal").attr("data-url"); +function brws() { + var url = $("#tootmodal").attr("data-url"); const { shell } = require('electron'); @@ -527,38 +526,38 @@ function brws(){ shell.openExternal(url); } //外部からトゥート開く -function detEx(url,acct_id){ - if(acct_id=="main"){ - acct_id=localStorage.getItem("main"); +function detEx(url, acct_id) { + if (acct_id == "main") { + acct_id = localStorage.getItem("main"); } - var domain = localStorage.getItem("domain_"+acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/search?resolve=true&q=" + url fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at } - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(!json.statuses){ + }).then(function (json) { + if (!json.statuses) { const { shell } = require('electron'); - + shell.openExternal(url); - }else{ - var id=json.statuses[0].id; + } else { + var id = json.statuses[0].id; $(".loadp").text($(".loadp").attr("href")); $(".loadp").removeClass("loadp"); details(id, acct_id, 0) } - + }); return; } \ No newline at end of file diff --git a/app/js/tl/date.js b/app/js/tl/date.js index 505eb54d..cbc3a329 100644 --- a/app/js/tl/date.js +++ b/app/js/tl/date.js @@ -15,7 +15,7 @@ function date(str, datetype) { } else { var min = date.getMinutes(); } - var sec=null; + var sec = null; if (date.getSeconds() < 10) { sec = "0" + date.getSeconds(); } else { @@ -57,31 +57,31 @@ function date(str, datetype) { //特殊フォーマット(インスタンス情報で利用) function crat(str) { var date = new Date(str); - var mnt=null; - if(date.getMonth()<9){ - mnt="0"+(date.getMonth()+1); - }else{ - mnt=date.getMonth()+1; + var mnt = null; + if (date.getMonth() < 9) { + mnt = "0" + (date.getMonth() + 1); + } else { + mnt = date.getMonth() + 1; } - if(date.getDate()<10){ - var dat="0"+date.getDate(); - }else{ - var dat=date.getDate(); + if (date.getDate() < 10) { + var dat = "0" + date.getDate(); + } else { + var dat = date.getDate(); } - if(date.getHours()<10){ - var hrs="0"+date.getHours(); - }else{ - var hrs=date.getHours(); + if (date.getHours() < 10) { + var hrs = "0" + date.getHours(); + } else { + var hrs = date.getHours(); } - if(date.getMinutes()<10){ - var mns="0"+date.getMinutes(); - }else{ - var mns=date.getMinutes(); + if (date.getMinutes() < 10) { + var mns = "0" + date.getMinutes(); + } else { + var mns = date.getMinutes(); } - if(date.getSeconds()<10){ - var sec="0"+date.getSeconds(); - }else{ - var sec=date.getSeconds(); + if (date.getSeconds() < 10) { + var sec = "0" + date.getSeconds(); + } else { + var sec = date.getSeconds(); } format_str = 'YYYY-MM-DD hh:mm:ss'; format_str = format_str.replace(/YYYY/g, date.getFullYear()); diff --git a/app/js/tl/dm.js b/app/js/tl/dm.js index 657b0d3a..079dc737 100644 --- a/app/js/tl/dm.js +++ b/app/js/tl/dm.js @@ -1,80 +1,79 @@ //DM(Conv) TL -function dm(acct_id, tlid, type,delc,voice) { +function dm(acct_id, tlid, type, delc, voice) { - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/conversations"; + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/conversations"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - var templete = '

    '+dmListParse(json, type, acct_id, tlid, "", mute)+'
    '; - localStorage.setItem("lastobj_"+ tlid,json[0].id) - $("#timeline_" + tlid).html(templete); - additional(acct_id, tlid); - jQuery("time.timeago").timeago(); - todc(); - //reload(type, '', acct_id, tlid, data, mute, delc,voice); - $(window).scrollTop(0); - }); - + }).then(function (json) { + var templete = '
    ' + dmListParse(json, type, acct_id, tlid, "", mute) + '
    '; + localStorage.setItem("lastobj_" + tlid, json[0].id) + $("#timeline_" + tlid).html(templete); + additional(acct_id, tlid); + jQuery("time.timeago").timeago(); + todc(); + //reload(type, '', acct_id, tlid, data, mute, delc,voice); + $(window).scrollTop(0); + }); + } -function dmmore(tlid){ +function dmmore(tlid) { var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); var acct_id = obj[tlid].domain; var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id"); - var start = "https://" + domain + "/api/v1/conversations?max_id="+sid; - var type="dm"; + var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid; + var type = "dm"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - var templete = '
    '+dmListParse(json, type, acct_id, tlid, "", mute)+'
    '; - $("#timeline_" + tlid).append(templete); - additional(acct_id, tlid); - jQuery("time.timeago").timeago(); - moreloading=false; + }).then(function (json) { + var templete = '
    ' + dmListParse(json, type, acct_id, tlid, "", mute) + '
    '; + $("#timeline_" + tlid).append(templete); + additional(acct_id, tlid); + jQuery("time.timeago").timeago(); + moreloading = false; }) } //DMオブジェクトパーサー(トゥート) function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { - console.log(obj); var templete = ''; - if(obj[0]){ - localStorage.setItem("lastunix_"+ tlid,date(obj[0].created_at, 'unix')); + if (obj[0]) { + localStorage.setItem("lastunix_" + tlid, date(obj[0].created_at, 'unix')); } - + var actb = localStorage.getItem("action_btns"); - var actb='re,rt,fav,qt,del,pin,red'; - if(actb){ + var actb = 're,rt,fav,qt,del,pin,red'; + if (actb) { var actb = actb.split(','); - var disp={}; - for(var k=0;k'; + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; var regExp = new RegExp(":" + shortcode + ":", "g"); dis_name = dis_name.replace(regExp, emoji_url); - + }); } - var noticeavatar=""; - var if_notf=""; - var uniqueid=toot.id; - var notice = ""; - var boostback = ""; - //ユーザー強調 - if(toot.account.username!=toot.account.acct){ - var fullname=toot.account.acct; - }else{ - var domain = localStorage.getItem("domain_" + acct_id); - var fullname=toot.account.acct+"@"+domain; - } - if(useremp){ - Object.keys(useremp).forEach(function(key10) { + var noticeavatar = ""; + var if_notf = ""; + var uniqueid = toot.id; + var notice = ""; + var boostback = ""; + //ユーザー強調 + if (toot.account.username != toot.account.acct) { + var fullname = toot.account.acct; + } else { + var domain = localStorage.getItem("domain_" + acct_id); + var fullname = toot.account.acct + "@" + domain; + } + if (useremp) { + Object.keys(useremp).forEach(function (key10) { var user = useremp[key10]; - if(user==fullname){ + if (user == fullname) { boostback = "emphasized"; } }); } - var id = toot.id; - var home = ""; + var id = toot.id; + var home = ""; if (toot.account.locked) { var locked = ' '; } else { @@ -249,25 +248,25 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { } if (!toot.application) { var via = ''; - viashow="hide"; + viashow = "hide"; } else { var via = escapeHTML(toot.application.name); //強調チェック - Object.keys(emp).forEach(function(key6) { + Object.keys(emp).forEach(function (key6) { var cli = emp[key6]; - if(cli == via){ + if (cli == via) { boostback = "emphasized"; } }); //ミュートチェック - Object.keys(mute).forEach(function(key7) { + Object.keys(mute).forEach(function (key7) { var cli = mute[key7]; - if(cli == via){ + if (cli == via) { boostback = "hide"; } }); } - if(mix=="pinned"){ + if (mix == "pinned") { boostback = "emphasized"; } if (toot.spoiler_text && cw) { @@ -276,19 +275,19 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { var spoiler = "cw cw_hide_" + toot.id; var api_spoil = "gray"; var spoiler_show = ''+lang.lang_parse_cwshow+'
    '; + '\')" class="nex parsed">' + lang.lang_parse_cwshow + '
    '; } else { - var ct1 = toot.content.split('

    ').length + toot.content.split('
    ').length -2; - var ct2 = toot.content.split('

    ').length + toot.content.split('
    ').length -2; - if(ct1>ct2){ var ct= ct1; }else{ var ct= ct2; } + var ct1 = toot.content.split('

    ').length + toot.content.split('
    ').length - 2; + var ct2 = toot.content.split('

    ').length + toot.content.split('
    ').length - 2; + if (ct1 > ct2) { var ct = ct1; } else { var ct = ct2; } if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) { - var content = ''+lang.lang_parse_fulltext+'
    ' + toot.content + var content = '' + lang.lang_parse_fulltext + '
    ' + toot.content var spoil = '' + $.mb_substr($.strip_tags( - toot.content), 0, 100) + - ''+lang.lang_parse_autofold+''; + toot.content), 0, 100) + + '
    ' + lang.lang_parse_autofold + ''; var spoiler = "cw cw_hide_" + toot.id; var spoiler_show = ''+lang.lang_parse_more+'
    '; + '\')" class="nex parsed">' + lang.lang_parse_more + '
    '; } else { var content = toot.content; var spoil = escapeHTML(toot.spoiler_text); @@ -301,66 +300,66 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { ); if (urls) { var analyze = ''+lang.lang_parse_url+'
    '; + ',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '
    '; } else { var analyze = ''; } var viewer = ""; var hasmedia = ""; var youtube = ""; - if(toot.emojis){ + if (toot.emojis) { var emojick = toot.emojis[0]; - }else{ - var emojick=false; + } else { + var emojick = false; } //絵文字があれば if (emojick) { - Object.keys(toot.emojis).forEach(function(key5) { + Object.keys(toot.emojis).forEach(function (key5) { var emoji = toot.emojis[key5]; var shortcode = emoji.shortcode; var emoji_url = ' :'+shortcode+': '; + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; var regExp = new RegExp(":" + shortcode + ":", "g"); content = content.replace(regExp, emoji_url); spoil = spoil.replace(regExp, emoji_url); }); } //ニコフレ絵文字 - if(toot.profile_emojis){ + if (toot.profile_emojis) { var nicoemojick = toot.profile_emojis[0]; - }else{ - var nicoemojick=false; + } else { + var nicoemojick = false; } //絵文字があれば if (nicoemojick) { - Object.keys(toot.profile_emojis).forEach(function(keynico) { + Object.keys(toot.profile_emojis).forEach(function (keynico) { var emoji = toot.profile_emojis[keynico]; var shortcode = emoji.shortcode; var emoji_url = ' :'+shortcode+': '; + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; var regExp = new RegExp(":" + shortcode + ":", "g"); content = content.replace(regExp, emoji_url); spoil = spoil.replace(regExp, emoji_url); }); } //デフォ絵文字 - content=twemoji.parse(content); - if(dis_name){ - dis_name=twemoji.parse(dis_name); + content = twemoji.parse(content); + if (dis_name) { + dis_name = twemoji.parse(dis_name); } - if(spoil){ - spoil=twemoji.parse(spoil); + if (spoil) { + spoil = twemoji.parse(spoil); } var mediack = toot.media_attachments[0]; //メディアがあれば - var media_ids=""; + var media_ids = ""; if (mediack) { hasmedia = "hasmedia"; var cwdt = 100 / toot.media_attachments.length; - Object.keys(toot.media_attachments).forEach(function(key2) { + Object.keys(toot.media_attachments).forEach(function (key2) { var media = toot.media_attachments[key2]; var purl = media.preview_url; - media_ids=media_ids+media.id+","; + media_ids = media_ids + media.id + ","; var url = media.url; if (toot.sensitive && nsfw) { var sense = "sensitive" @@ -371,9 +370,9 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url + '" data-type="' + media.type + '" class="img-parsed">
    '; + ' toot-img pointer" style="width:' + cwdt + '%; height:' + imh + 'px;">
    '; }); - media_ids = media_ids.slice(0, -1) ; + media_ids = media_ids.slice(0, -1); } else { viewer = ""; hasmedia = "nomedia"; @@ -383,7 +382,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { //メンションであれば if (menck) { mentions = ""; - Object.keys(toot.mentions).forEach(function(key3) { + Object.keys(toot.mentions).forEach(function (key3) { var mention = toot.mentions[key3]; mentions = mentions + '@' + mention.acct + ' '; @@ -394,11 +393,11 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { var tags = ""; //タグであれば if (tagck) { - Object.keys(toot.tags).forEach(function(key4) { + Object.keys(toot.tags).forEach(function (key4) { var tag = toot.tags[key4]; tags = tags + '#' + tag.name + ':TL Toot '+ - 'Pin '; + ',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag.name) + '">TL Toot ' + + 'Pin
    '; }); tags = '
    ' + tags + '
    '; } @@ -409,38 +408,38 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { var avatar = toot.account.avatar_static; } //ワードミュート - if(wordmute){ - Object.keys(wordmute).forEach(function(key8) { + if (wordmute) { + Object.keys(wordmute).forEach(function (key8) { var worde = wordmute[key8]; - if(worde){ - if(worde.tag){ - var word=worde.tag; - }else{ - var word=worde + if (worde) { + if (worde.tag) { + var word = worde.tag; + } else { + var word = worde } - var regExp = new RegExp( word, "g" ) ; - if($.strip_tags(content).match(regExp)){ + var regExp = new RegExp(word, "g"); + if ($.strip_tags(content).match(regExp)) { boostback = "hide by_filter"; } } }); } //ワード強調 - if(wordemp){ - Object.keys(wordemp).forEach(function(key9) { + if (wordemp) { + Object.keys(wordemp).forEach(function (key9) { var word = wordemp[key9]; - if(word){ - var word=word.tag; - var regExp = new RegExp( word, "g" ) ; - content=content.replace(regExp,''+escapeHTML(word)+""); + if (word) { + var word = word.tag; + var regExp = new RegExp(word, "g"); + content = content.replace(regExp, '' + escapeHTML(word) + ""); } }); } //日本語じゃない - if(toot.language!="ja"){ - var trans=''; - }else{ - var trans=""; + if (toot.language != "ja") { + var trans = ''; + } else { + var trans = ""; } if (toot.favourited) { var if_fav = " yellow-text"; @@ -451,72 +450,72 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) { } //Cards if (!card && toot.card) { - var cards=toot.card; - if (cards.provider_name=="Twitter"){ - if(cards.image){ - var twiImg='
    '; - }else{ - var twiImg=''; - } - analyze=''; + var cards = toot.card; + if (cards.provider_name == "Twitter") { + if (cards.image) { + var twiImg = '
    '; + } else { + var twiImg = ''; } - if (cards.title) { - analyze="URL"+lang.lang_cards_check+":
    Title:" + escapeHTML(cards.title) + "
    " + - escapeHTML(cards.description) + "
    "; - } - if (cards.html) { - analyze=cards.html+'picture_in_picture_alt'; - } - + analyze = ''; + } + if (cards.title) { + analyze = "URL" + lang.lang_cards_check + ":
    Title:" + escapeHTML(cards.title) + "
    " + + escapeHTML(cards.description) + "
    "; + } + if (cards.html) { + analyze = cards.html + 'picture_in_picture_alt'; + } + } //Ticker - var tickerdom=""; - if(ticker){ - var tickerdata=localStorage.getItem("ticker") - if(tickerdata){ - var tickerdata=JSON.parse(tickerdata); - - var thisdomain=toot.account.acct.split("@"); - if(thisdomain.length>1){ - thisdomain=thisdomain[1]; - } - for( var i=0; i '+escapeHTML(value.name)+''; - break; + var tickerdom = ""; + if (ticker) { + var tickerdata = localStorage.getItem("ticker") + if (tickerdata) { + var tickerdata = JSON.parse(tickerdata); + + var thisdomain = toot.account.acct.split("@"); + if (thisdomain.length > 1) { + thisdomain = thisdomain[1]; } - } - } + for (var i = 0; i < tickerdata.length; i++) { + var value = tickerdata[i]; + if (value.domain == thisdomain) { + var tickerdom = '
    ' + escapeHTML(value.name) + '
    '; + break; + } + } + } } templete = templete + '
    ' + + boostback + ' ' + fav_app + + ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[ + key].created_at, 'unix') + '" ' + if_notf + ' onclick="dmStatus()">' + '
    ' + notice + home + '
    ' + '
    ' + ''+noticeavatar+'
    ' + + '">' + noticeavatar + '
    ' + '
    ' + dis_name + ' @' + toot.account.acct + locked + '
    ' + '
    ' + + '(' + lang.lang_parse_clickcopyurl + ')">' + date(toot.created_at, datetype) + '' + '
    ' + - '
    '+tickerdom+'' + tickerdom + '' + spoil + "" + spoiler_show + '' + content + '' + '' + viewer + '' + '
    '+lang.lang_parse_thread+'
    '+ - '
    '+ + ',\'' + tlid + '\',\'dm\')" class="pointer waves-effect">' + lang.lang_parse_thread + '' + + '
    ' + ''; }); return templete; diff --git a/app/js/tl/filter.js b/app/js/tl/filter.js index e1030a08..f012a7a9 100644 --- a/app/js/tl/filter.js +++ b/app/js/tl/filter.js @@ -3,38 +3,38 @@ function mediaToggle(tlid) { var media = localStorage.getItem("media_" + tlid); if (media) { - localStorage.removeItem("media_" + tlid); + localStorage.removeItem("media_" + tlid); $("#sta-media-" + tlid).text("Off"); - $("#sta-media-" + tlid).css("color",'red'); - $("#timeline_"+tlid).removeClass("media-filter") + $("#sta-media-" + tlid).css("color", 'red'); + $("#timeline_" + tlid).removeClass("media-filter") } else { localStorage.setItem("media_" + tlid, "true"); $("#sta-media-" + tlid).text("On"); - $("#sta-media-" + tlid).css("color",'#009688'); - $("#timeline_"+tlid).addClass("media-filter") + $("#sta-media-" + tlid).css("color", '#009688'); + $("#timeline_" + tlid).addClass("media-filter") } } //各TL上方のBT[BTOnly/BTExc/Off] function ebtToggle(tlid) { var ebt = localStorage.getItem("ebt_" + tlid); - if (ebt=="true") { + if (ebt == "true") { localStorage.setItem("ebt_" + tlid, "but"); $("#sta-bt-" + tlid).text("BT Only"); - $("#sta-bt-" + tlid).css("color",'#ff9800'); - $("#timeline_"+tlid).addClass("except-bt-filter") - $("#timeline_"+tlid).removeClass("bt-filter") - }else if (ebt=="but") { - localStorage.removeItem("ebt_" + tlid); + $("#sta-bt-" + tlid).css("color", '#ff9800'); + $("#timeline_" + tlid).addClass("except-bt-filter") + $("#timeline_" + tlid).removeClass("bt-filter") + } else if (ebt == "but") { + localStorage.removeItem("ebt_" + tlid); $("#sta-bt-" + tlid).text("Off"); - $("#sta-bt-" + tlid).css("color",'red'); - $("#timeline_"+tlid).removeClass("bt-filter") - $("#timeline_"+tlid).removeClass("except-bt-filter") + $("#sta-bt-" + tlid).css("color", 'red'); + $("#timeline_" + tlid).removeClass("bt-filter") + $("#timeline_" + tlid).removeClass("except-bt-filter") } else { localStorage.setItem("ebt_" + tlid, "true"); $("#sta-bt-" + tlid).text("BT Ex"); - $("#sta-bt-" + tlid).css("color",'#009688'); - $("#timeline_"+tlid).addClass("bt-filter") - $("#timeline_"+tlid).removeClass("except-bt-filter") + $("#sta-bt-" + tlid).css("color", '#009688'); + $("#timeline_" + tlid).addClass("bt-filter") + $("#timeline_" + tlid).removeClass("except-bt-filter") } } //各TL上方のMedia[On/Off]をチェック @@ -42,46 +42,46 @@ function mediaCheck(tlid) { var media = localStorage.getItem("media_" + tlid); if (media) { $("#sta-media-" + tlid).text("On"); - $("#sta-media-" + tlid).css("color",'#009688'); - $("#timeline_"+tlid).addClass("media-filter") + $("#sta-media-" + tlid).css("color", '#009688'); + $("#timeline_" + tlid).addClass("media-filter") } else { $("#sta-media-" + tlid).text("Off"); - $("#sta-media-" + tlid).css("color",'red'); - $("#timeline_"+tlid).removeClass("media-filter") + $("#sta-media-" + tlid).css("color", 'red'); + $("#timeline_" + tlid).removeClass("media-filter") } } //各TL上方のBT[On/Off]をチェック function ebtCheck(tlid) { var ebt = localStorage.getItem("ebt_" + tlid); - if (ebt=="true") { + if (ebt == "true") { $("#sta-bt-" + tlid).text("BT Ex"); - $("#sta-bt-" + tlid).css("color",'#009688'); - $("#timeline_"+tlid).addClass("bt-filter") - $("#timeline_"+tlid).removeClass("except-bt-filter") - } else if (ebt=="but") { + $("#sta-bt-" + tlid).css("color", '#009688'); + $("#timeline_" + tlid).addClass("bt-filter") + $("#timeline_" + tlid).removeClass("except-bt-filter") + } else if (ebt == "but") { $("#sta-bt-" + tlid).text("BT Only"); - $("#sta-bt-" + tlid).css("color",'#ff9800'); - $("#timeline_"+tlid).addClass("except-bt-filter") - $("#timeline_"+tlid).removeClass("bt-filter") - } else{ + $("#sta-bt-" + tlid).css("color", '#ff9800'); + $("#timeline_" + tlid).addClass("except-bt-filter") + $("#timeline_" + tlid).removeClass("bt-filter") + } else { $("#sta-bt-" + tlid).text("Off"); - $("#sta-bt-" + tlid).css("color",'red'); - $("#timeline_"+tlid).removeClass("bt-filter") - $("#timeline_"+tlid).removeClass("except-bt-filter") + $("#sta-bt-" + tlid).css("color", 'red'); + $("#timeline_" + tlid).removeClass("bt-filter") + $("#timeline_" + tlid).removeClass("except-bt-filter") } } /* 削除追跡*/ function catchToggle(tlid) { var catchck = localStorage.getItem("catch_" + tlid); if (catchck) { - localStorage.removeItem("catch_" + tlid); + localStorage.removeItem("catch_" + tlid); $("#sta-del-" + tlid).text("Off"); - $("#sta-del-" + tlid).css("color",'red'); - parseColumn(); + $("#sta-del-" + tlid).css("color", 'red'); + parseColumn(); } else { localStorage.setItem("catch_" + tlid, "true"); $("#sta-del-" + tlid).text("On"); - $("#sta-del-" + tlid).css("color",'#009688'); + $("#sta-del-" + tlid).css("color", '#009688'); parseColumn(); } } @@ -89,104 +89,101 @@ function catchCheck(tlid) { var catchck = localStorage.getItem("catch_" + tlid); if (catchck) { $("#sta-del-" + tlid).text("On"); - $("#sta-del-" + tlid).css("color",'#009688'); + $("#sta-del-" + tlid).css("color", '#009688'); } else { $("#sta-del-" + tlid).text("Off"); - $("#sta-del-" + tlid).css("color",'red'); + $("#sta-del-" + tlid).css("color", 'red'); } } -function delreset(tlid){ +function delreset(tlid) { $("[tlid=" + tlid + "] .by_delcatch").hide(); $("[tlid=" + tlid + "] .by_delcatch").remove(); } /*ワードフィルター機能*/ -function filterMenu(){ - $("#left-menu div").removeClass("active"); +function filterMenu() { + $("#left-menu div").removeClass("active"); $("#filterMenu").addClass("active"); $(".menu-content").addClass("hide"); - $("#filter-box").removeClass("hide"); + $("#filter-box").removeClass("hide"); } -function filter(){ +function filter() { $("#filtered-words").html(""); $("#filter-edit-id").val("") - var acct_id = $("#filter-acct-sel").val(); - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/filters" - console.log(start) + var acct_id = $("#filter-acct-sel").val(); + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/filters" fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json) { var filters = ""; - Object.keys(json).forEach(function(key) { + Object.keys(json).forEach(function (key) { var filterword = json[key]; var context = filterword.context.join(','); - filters = filters + escapeHTML(filterword.phrase)+'(for '+context+'):'+lang.lang_edit+'/'+lang.lang_del+'
    '; + filters = filters + escapeHTML(filterword.phrase) + '(for ' + context + '):' + lang.lang_edit + '/' + lang.lang_del + '
    '; }); - if(filters==""){ - filters=lang.lang_filter_nodata+"
    "; + if (filters == "") { + filters = lang.lang_filter_nodata + "
    "; } $("#filtered-words").html(filters); - }else{ - $("#filtered-words").html(lang_filter_nodata); - } + } else { + $("#filtered-words").html(lang_filter_nodata); + } }); } -function filterTime(day,hour,min){ +function filterTime(day, hour, min) { $("#days_filter").val(day) $("#hours_filter").val(hour) $("#mins_filter").val(min) } -function makeNewFilter(){ +function makeNewFilter() { var acct_id = $("#filter-acct-sel").val(); - var phr=$("#filter-add-word").val(); - var cont=[]; - if($("#home_filter:checked").val()){ + var phr = $("#filter-add-word").val(); + var cont = []; + if ($("#home_filter:checked").val()) { cont.push("home"); } - if($("#local_filter:checked").val()){ + if ($("#local_filter:checked").val()) { cont.push("public"); } - if($("#notf_filter:checked").val()){ + if ($("#notf_filter:checked").val()) { cont.push("notifications"); } - if($("#conv_filter:checked").val()){ + if ($("#conv_filter:checked").val()) { cont.push("thread"); } - console.log(cont); - if(!cont.length){ - $("#filtered-words").html('Error:'+lang.lang_filter_errordegree); + if (!cont.length) { + $("#filtered-words").html('Error:' + lang.lang_filter_errordegree); } - var exc=$("#except_filter:checked").val(); - var who=$("#wholeword_filter:checked").val(); - if(!who){ - who=false; + var exc = $("#except_filter:checked").val(); + var who = $("#wholeword_filter:checked").val(); + if (!who) { + who = false; } - var time=$("#days_filter").val()*24*60*60+$("#hours_filter").val()*60*60+$("#mins_filter").val()*60; - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if($("#filter-edit-id").val()){ - var start = "https://" + domain + "/api/v1/filters/"+$("#filter-edit-id").val(); - var method="PUT" - }else{ + var time = $("#days_filter").val() * 24 * 60 * 60 + $("#hours_filter").val() * 60 * 60 + $("#mins_filter").val() * 60; + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if ($("#filter-edit-id").val()) { + var start = "https://" + domain + "/api/v1/filters/" + $("#filter-edit-id").val(); + var method = "PUT" + } else { var start = "https://" + domain + "/api/v1/filters" - var method="POST" + var method = "POST" } - + var httpreq = new XMLHttpRequest(); httpreq.open(method, start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); @@ -196,21 +193,21 @@ function makeNewFilter(){ phrase: phr, context: cont, irreversible: exc, - whole_word:who, - expires_in:time + whole_word: who, + expires_in: time })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; filter(); filterUpdate(acct_id) $("#filter-add-word").val(""); - $("#home_filter").prop("checked",false); - $("#local_filter").prop("checked",false); - $("#notf_filter").prop("checked",false); - $("#conv_filter").prop("checked",false); - $("#except_filter").prop("checked",false); - $("#wholeword_filter").prop("checked",false); + $("#home_filter").prop("checked", false); + $("#local_filter").prop("checked", false); + $("#notf_filter").prop("checked", false); + $("#conv_filter").prop("checked", false); + $("#except_filter").prop("checked", false); + $("#wholeword_filter").prop("checked", false); $("#days_filter").val("0"); $("#hours_filter").val("0"); $("#mins_filter").val("0"); @@ -219,72 +216,70 @@ function makeNewFilter(){ } } } -function filterEdit(id,acct_id){ - $("#filter-add-word").val(""); - $("#home_filter").prop("checked",false); - $("#local_filter").prop("checked",false); - $("#notf_filter").prop("checked",false); - $("#conv_filter").prop("checked",false); - $("#except_filter").prop("checked",false); - $("#wholeword_filter").prop("checked",false); - $("#days_filter").val("0"); - $("#hours_filter").val("0"); - $("#mins_filter").val("0"); +function filterEdit(id, acct_id) { + $("#filter-add-word").val(""); + $("#home_filter").prop("checked", false); + $("#local_filter").prop("checked", false); + $("#notf_filter").prop("checked", false); + $("#conv_filter").prop("checked", false); + $("#except_filter").prop("checked", false); + $("#wholeword_filter").prop("checked", false); + $("#days_filter").val("0"); + $("#hours_filter").val("0"); + $("#mins_filter").val("0"); $("#add-filter-btn").text(lang.lang_edit); $("#filter-edit-id").val(id); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/filters/"+id - console.log(start) + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/filters/" + id fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { if (json) { - var now = new Date() ; - now = now.getTime() ; - var now = Math.floor(now / 1000 ) ; + var now = new Date(); + now = now.getTime(); + var now = Math.floor(now / 1000); $("#filter-add-word").val(json.phrase); - Object.keys(json.context).forEach(function(key) { + Object.keys(json.context).forEach(function (key) { var context = json.context[key]; - $("[value="+context+"]").prop("checked",true); + $("[value=" + context + "]").prop("checked", true); }); - if(json.irreversible){ - $("#except_filter").prop("checked",true); + if (json.irreversible) { + $("#except_filter").prop("checked", true); } - if(json.whole_word){ - $("#wholeword_filter").prop("checked",true); + if (json.whole_word) { + $("#wholeword_filter").prop("checked", true); } - var expires=date(json.expires_at, 'unix')-now; - var mins=Math.floor(expires/60)%60; - var hours=Math.floor(expires/3600)%24; - var days=Math.floor(expires/3600/24); + var expires = date(json.expires_at, 'unix') - now; + var mins = Math.floor(expires / 60) % 60; + var hours = Math.floor(expires / 3600) % 24; + var days = Math.floor(expires / 3600 / 24); $("#days_filter").val(days); $("#hours_filter").val(hours); $("#mins_filter").val(mins); } }); } -function filterDel(id,acct_id){ +function filterDel(id, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/filters/"+id; + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/filters/" + id; var httpreq = new XMLHttpRequest(); httpreq.open("DELETE", start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; filter(); @@ -292,98 +287,96 @@ function filterDel(id,acct_id){ } } } -function getFilter(acct_id){ - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)!="misskey"){ - var start = "https://" + domain + "/api/v1/filters" - console.log(start) - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json)); - }); - }else{ - localStorage.setItem("filter_"+ acct_id ,JSON.stringify({})); +function getFilter(acct_id) { + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) != "misskey") { + var start = "https://" + domain + "/api/v1/filters" + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + at + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + localStorage.setItem("filter_" + acct_id, JSON.stringify(json)); + }); + } else { + localStorage.setItem("filter_" + acct_id, JSON.stringify({})); } } -function getFilterType(json,type){ - if(!json){ +function getFilterType(json, type) { + if (!json) { return []; } - if(type=="local"){ - type="public"; - }else if(type=="list"){ - type="home"; - }else if(type=="notf"){ - type="notifi"; + if (type == "local") { + type = "public"; + } else if (type == "list") { + type = "home"; + } else if (type == "notf") { + type = "notifi"; } - var mutedfilters=[]; - Object.keys(json).forEach(function(key) { + var mutedfilters = []; + Object.keys(json).forEach(function (key) { var filterword = json[key]; var phrases = filterword.phrase; - if(filterword.context.join(",").indexOf(type)!== -1){ + if (filterword.context.join(",").indexOf(type) !== -1) { mutedfilters.push(phrases); } }); return mutedfilters; } -function filterUpdate(acct_id){ +function filterUpdate(acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/filters" - console.log(start) + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/filters" fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json)); - filterUpdateInternal(json,"home"); - filterUpdateInternal(json,"local"); - filterUpdateInternal(json,"notf"); - filterUpdateInternal(json,"pub"); + }).then(function (json) { + localStorage.setItem("filter_" + acct_id, JSON.stringify(json)); + filterUpdateInternal(json, "home"); + filterUpdateInternal(json, "local"); + filterUpdateInternal(json, "notf"); + filterUpdateInternal(json, "pub"); }); - - + + } -function filterUpdateInternal(json,type){ - var home=getFilterType(json,type); - var wordmute = localStorage.getItem("word_mute"); - if(wordmute){ - var wordmute = JSON.parse(wordmute); - home = home.concat(wordmute); - } - if(home){ - $("[data-acct="+acct_id+"] [data-type="+type+"] .cvo").each(function(i, elem) { - var id=$(elem).attr("toot-id"); - $("[toot-id="+id+"]").removeClass("hide"); - var text=$(elem).find('.toot').html(); - Object.keys(home).forEach(function(key8) { - var word = home[key8]; - var regExp = new RegExp( word, "g" ); - if($.strip_tags(text).match(regExp)){ - $("[toot-id="+id+"]").addClass("hide"); - } - }); +function filterUpdateInternal(json, type) { + var home = getFilterType(json, type); + var wordmute = localStorage.getItem("word_mute"); + if (wordmute) { + var wordmute = JSON.parse(wordmute); + home = home.concat(wordmute); + } + if (home) { + $("[data-acct=" + acct_id + "] [data-type=" + type + "] .cvo").each(function (i, elem) { + var id = $(elem).attr("toot-id"); + $("[toot-id=" + id + "]").removeClass("hide"); + var text = $(elem).find('.toot').html(); + Object.keys(home).forEach(function (key8) { + var word = home[key8]; + var regExp = new RegExp(word, "g"); + if ($.strip_tags(text).match(regExp)) { + $("[toot-id=" + id + "]").addClass("hide"); + } }); - } + }); + } } /* リセット
    */ //通知フィルター -function exclude(key){ - var excludetxt=""; - if($('#exc-reply-'+key+':checked').val()){ - excludetxt="?exclude_types[]=mention" - var reply=true - }else{ - var reply=false; +function exclude(key) { + var excludetxt = localStorage.getItem("exclude-" + key); + if ($('#exc-reply-' + key + ':checked').val()) { + excludetxt = "?exclude_types[]=mention" } - if($('#exc-fav-'+key+':checked').val()){ - if(reply){ - excludetxt=excludetxt+"&exclude_types[]=favourite" - }else{ - excludetxt="?exclude_types[]=favourite" + if ($('#exc-fav-' + key + ':checked').val()) { + if (!excludetxt || excludetxt !="") { + excludetxt = excludetxt + "&exclude_types[]=favourite" + } else { + excludetxt = "?exclude_types[]=favourite" } - var fav=true - }else{ - var fav=false; } - if($('#exc-bt-'+key+':checked').val()){ - if(reply || fav){ - excludetxt=excludetxt+"&exclude_types[]=reblog" - }else{ - excludetxt="?exclude_types[]=reblog" + if ($('#exc-bt-' + key + ':checked').val()) { + if (!excludetxt || excludetxt !="") { + excludetxt = excludetxt + "&exclude_types[]=reblog" + } else { + excludetxt = "?exclude_types[]=reblog" } - var bt=true - }else{ - var bt=false; } - if($('#exc-follow-'+key+':checked').val()){ - if(reply || bt || fav){ - excludetxt=excludetxt+"&exclude_types[]=follow" - }else{ - excludetxt="?exclude_types[]=follow" + if ($('#exc-follow-' + key + ':checked').val()) { + if (!excludetxt || excludetxt !="") { + excludetxt = excludetxt + "&exclude_types[]=follow" + } else { + excludetxt = "?exclude_types[]=follow" } - var follow=true; - }else{ - var follow=false; } - if($('#exc-poll-'+key+':checked').val()){ - if(reply || bt || fav || follow){ - excludetxt=excludetxt+"&exclude_types[]=poll" - }else{ - excludetxt="?exclude_types[]=poll" + if ($('#exc-poll-' + key + ':checked').val()) { + if (!excludetxt || excludetxt !="") { + excludetxt = excludetxt + "&exclude_types[]=poll" + } else { + excludetxt = "?exclude_types[]=poll" } - }else{ + } else { } - localStorage.setItem("exclude-"+key,excludetxt) + localStorage.setItem("exclude-" + key, excludetxt) parseColumn(); } -function excludeCk(key,target){ - var exc=localStorage.getItem("exclude-"+key); - if(!exc){ +function excludeCk(key, target) { + var exc = localStorage.getItem("exclude-" + key); + if (!exc) { return ""; } - if(~exc.indexOf(target)){ + if (~exc.indexOf(target)) { return "checked" - }else{ + } else { return ""; } +} +function checkNotfFilter(tlid){ + var excludetxt = localStorage.getItem("exclude-" + tlid); + if(!excludetxt || excludetxt != ""){ + return true; + }else{ + return false; + } +} +function resetNotfFilter(tlid){ + localStorage.setItem("exclude-" + tlid, "") + parseColumn(); +} +function notfFilter(id,tlid){ + var excludetxt = localStorage.getItem("exclude-" + tlid); + if (!excludetxt || excludetxt !="") { + excludetxt = excludetxt + "&account_id="+id + } else { + excludetxt = "?account_id="+id + } + localStorage.setItem("exclude-" + tlid, excludetxt) + parseColumn(); } \ No newline at end of file diff --git a/app/js/tl/list.js b/app/js/tl/list.js index 109dee45..e2d4bf5e 100644 --- a/app/js/tl/list.js +++ b/app/js/tl/list.js @@ -1,293 +1,285 @@ -function listMenu(){ - $("#left-menu div").removeClass("active"); +function listMenu() { + $("#left-menu div").removeClass("active"); $("#listMenu").addClass("active"); $(".menu-content").addClass("hide"); - $("#list-box").removeClass("hide"); + $("#list-box").removeClass("hide"); $('ul.tabs').tabs('select_tab', 'src-sta'); $("#src-contents").html(""); } -function list(){ - $("#lists-user").html(""); - var acct_id = $("#list-acct-sel").val(); - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ +function list() { + $("#lists-user").html(""); + var acct_id = $("#list-acct-sel").val(); + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/users/lists/list" fetch(start, { method: 'POST', body: JSON.stringify({ - i:at + i: at }), - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json) { var lists = ""; - Object.keys(json).forEach(function(key) { + Object.keys(json).forEach(function (key) { var list = json[key]; - lists = lists + escapeHTML(list.title)+':'+lang.lang_list_show+'
    '; + lists = lists + escapeHTML(list.title) + ':' + lang.lang_list_show + '
    '; }); $("#lists").html(lists); - }else{ + } else { $("#lists").html(lang.lang_list_nodata); } }); - }else{ + } else { var start = "https://" + domain + "/api/v1/lists" - console.log(start) fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json) { var lists = ""; - Object.keys(json).forEach(function(key) { + Object.keys(json).forEach(function (key) { var list = json[key]; - lists = lists + escapeHTML(list.title)+':'+lang.lang_list_show+'/'+lang.lang_list_users+'
    '; + lists = lists + escapeHTML(list.title) + ':' + lang.lang_list_show + '/' + lang.lang_list_users + '
    '; }); $("#lists").html(lists); - }else{ + } else { $("#lists").html(lang.lang_list_nodata); } }); } } -function makeNewList(){ - var acct_id = $("#list-acct-sel").val(); - var text=$("#list-add").val(); - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)!="misskey"){ - var start = "https://" + domain + "/api/v1/lists" - console.log(start) - var httpreq = new XMLHttpRequest(); - httpreq.open('POST', start, true); - httpreq.setRequestHeader('Content-Type', 'application/json'); - httpreq.setRequestHeader('Authorization', 'Bearer ' + at); - httpreq.responseType = "json"; - httpreq.send(JSON.stringify({ - title: text - })); - httpreq.onreadystatechange = function() { - if (httpreq.readyState === 4) { - var json = httpreq.response; - list(); - $("#list-add").val("") +function makeNewList() { + var acct_id = $("#list-acct-sel").val(); + var text = $("#list-add").val(); + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) != "misskey") { + var start = "https://" + domain + "/api/v1/lists" + var httpreq = new XMLHttpRequest(); + httpreq.open('POST', start, true); + httpreq.setRequestHeader('Content-Type', 'application/json'); + httpreq.setRequestHeader('Authorization', 'Bearer ' + at); + httpreq.responseType = "json"; + httpreq.send(JSON.stringify({ + title: text + })); + httpreq.onreadystatechange = function () { + if (httpreq.readyState === 4) { + var json = httpreq.response; + list(); + $("#list-add").val("") + } } - } -}else{ - var start = "https://" + domain + "/api/users/lists/create" - console.log(start) - var httpreq = new XMLHttpRequest(); - httpreq.open('POST', start, true); - httpreq.setRequestHeader('Content-Type', 'application/json'); - httpreq.responseType = "json"; - httpreq.send(JSON.stringify({ - i:at, - title: text - })); - httpreq.onreadystatechange = function() { - if (httpreq.readyState === 4) { - var json = httpreq.response; - list(); - $("#list-add").val("") + } else { + var start = "https://" + domain + "/api/users/lists/create" + var httpreq = new XMLHttpRequest(); + httpreq.open('POST', start, true); + httpreq.setRequestHeader('Content-Type', 'application/json'); + httpreq.responseType = "json"; + httpreq.send(JSON.stringify({ + i: at, + title: text + })); + httpreq.onreadystatechange = function () { + if (httpreq.readyState === 4) { + var json = httpreq.response; + list(); + $("#list-add").val("") + } } } } +function listShow(id, title, acct_id) { + localStorage.setItem("list_" + id + "_" + acct_id, title); + tl('list', id, acct_id, 'add'); } -function listShow(id,title,acct_id){ - localStorage.setItem("list_"+id+"_"+acct_id,title); - tl('list',id,acct_id,'add'); -} -function listUser(id,acct_id){ - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts" - console.log(start) +function listUser(id, acct_id) { + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts" fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json) { var lists = ""; - var templete = userparse(json,'',acct_id); - if(!json[0]){ - templete=lang.lang_list_nouser; - } + var templete = userparse(json, '', acct_id); + if (!json[0]) { + templete = lang.lang_list_nouser; + } $("#lists-user").html(templete); - }else{ - $("#lists-user").html(lang.lang_list_nouser); - } + } else { + $("#lists-user").html(lang.lang_list_nouser); + } }); } -function hisList(user,acct_id){ - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)!="misskey"){ - var start = "https://" + domain + "/api/v1/lists" - console.log(start) - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - if (json) { - var lists = lang.lang_list_add+"
    "; - Object.keys(json).forEach(function(key) { - var list = json[key]; - lists = lists + ''+escapeHTML(list.title)+'
    '; - }); - $("#his-lists-a").html(lists); - }else{ - $("#his-lists-a").html(lang.lang_list_nodata); - } - }); - var start = "https://" + domain + "/api/v1/accounts/"+user+"/lists" - console.log(start) - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - if (json) { - var lists = lang.lang_list_remove+"
    "; - Object.keys(json).forEach(function(key) { - var list = json[key]; - lists = lists + ''+escapeHTML(list.title)+'
    '; - }); - $("#his-lists-b").html(lists); - }else{ - $("#his-lists-b").html(lang.lang_list_nodata); - } - }); -}else{ - var start = "https://" + domain + "/api/users/lists/list" +function hisList(user, acct_id) { + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) != "misskey") { + var start = "https://" + domain + "/api/v1/lists" + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + at + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (json) { + var lists = lang.lang_list_add + "
    "; + Object.keys(json).forEach(function (key) { + var list = json[key]; + lists = lists + '' + escapeHTML(list.title) + '
    '; + }); + $("#his-lists-a").html(lists); + } else { + $("#his-lists-a").html(lang.lang_list_nodata); + } + }); + var start = "https://" + domain + "/api/v1/accounts/" + user + "/lists" + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + at + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (json) { + var lists = lang.lang_list_remove + "
    "; + Object.keys(json).forEach(function (key) { + var list = json[key]; + lists = lists + '' + escapeHTML(list.title) + '
    '; + }); + $("#his-lists-b").html(lists); + } else { + $("#his-lists-b").html(lang.lang_list_nodata); + } + }); + } else { + var start = "https://" + domain + "/api/users/lists/list" fetch(start, { method: 'POST', body: JSON.stringify({ - i:at + i: at }), - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json) { var lists = ""; - Object.keys(json).forEach(function(key) { + Object.keys(json).forEach(function (key) { var list = json[key]; - lists = lists + list.title+':'+lang.lang_list_show+'/'+lang.lang_list_add+lang.lang_list_add_misskey+'
    '; + lists = lists + list.title + ':' + lang.lang_list_show + '/' + lang.lang_list_add + lang.lang_list_add_misskey + '
    '; }); $("#his-lists-a").html(lists); - }else{ + } else { $("#his-lists-a").html(lang.lang_list_nodata); } }); $("#his-lists-b").html(""); + } } -} -function listAdd(id,user,acct_id){ - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ +function listAdd(id, user, acct_id) { + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/users/lists/push" - var i={ - i:at, - listId:id, - userId:user + var i = { + i: at, + listId: id, + userId: user } - }else{ - var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts" - var i={ + } else { + var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts" + var i = { account_ids: [user] } } - console.log(start) var httpreq = new XMLHttpRequest(); httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(JSON.stringify(i)); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - hisList(user,acct_id) + hisList(user, acct_id) } } } -function listRemove(id,user,acct_id){ - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ +function listRemove(id, user, acct_id) { + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { var start = "https://" + domain + "/api/users/lists/push" - var method='POST' - var i={ - i:at, - listId:id, - userId:user + var method = 'POST' + var i = { + i: at, + listId: id, + userId: user } - }else{ - var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts" - var method='DELETE' - var i={ + } else { + var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts" + var method = 'DELETE' + var i = { account_ids: [user] } } - console.log(start) var httpreq = new XMLHttpRequest(); httpreq.open(method, start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(JSON.stringify(i)); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - hisList(user,acct_id) + hisList(user, acct_id) } } } \ No newline at end of file diff --git a/app/js/tl/misskeyparse.js b/app/js/tl/misskeyparse.js index 3a8c7040..9fb01783 100644 --- a/app/js/tl/misskeyparse.js +++ b/app/js/tl/misskeyparse.js @@ -749,10 +749,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { var fullhide = ""; } else { var like = 0; var love = 0; var laugh = 0; var hmm = 0; var surprise = 0; var congrats = 0; var angry = 0; var confused = 0; var pudding = 0; - var likehide = "hide"; var lovehide = "hide"; var laughhide = "hide"; var hmmhide = "hide"; var suphide = "hide"; var conghide = "hide"; var anghide = "hide"; var confhide = "hide"; var riphide="hide" + var likehide = "hide"; var lovehide = "hide"; var laughhide = "hide"; var hmmhide = "hide"; var suphide = "hide"; var conghide = "hide"; var anghide = "hide"; var confhide = "hide"; var riphide = "hide" var fullhide = "hide"; } - if (!addReact && likehide == "hide" && lovehide == "hide" && laughhide == "hide" && hmmhide == "hide" && suphide == "hide" && conghide == "hide" && anghide == "hide" && confhide == "hide" && riphide=="hide") { + if (!addReact && likehide == "hide" && lovehide == "hide" && laughhide == "hide" && hmmhide == "hide" && suphide == "hide" && conghide == "hide" && anghide == "hide" && confhide == "hide" && riphide == "hide") { var fullhide = "hide"; } if (toot.myReaction) { @@ -857,11 +857,11 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { //オブジェクトパーサー(ユーザーデータ) function misskeyUserparse(obj, auth, acct_id, tlid, popup) { - console.log(obj) + console.log(["Parse them ", obj]) if (popup > 0 || popup == -1) { } else { - if(obj.users){ + if (obj.users) { var obj = obj.users; } } @@ -869,10 +869,10 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) { var datetype = localStorage.getItem("datetype"); Object.keys(obj).forEach(function (key) { var toot = obj[key]; - if(toot.followee){ - toot=toot.followee - }else if(toot.follower){ - toot=toot.follower + if (toot.followee) { + toot = toot.followee + } else if (toot.follower) { + toot = toot.follower } var locked = ""; if (auth) { @@ -930,15 +930,15 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) { } else { var dis_name = toot.username; } - if(toot.followersCount){ - var ferct=toot.followersCount - }else{ - var ferct="unknown" + if (toot.followersCount) { + var ferct = toot.followersCount + } else { + var ferct = "unknown" } - if(toot.followingCount){ - var fingct=toot.followingCount - }else{ - var fingct="unknown" + if (toot.followingCount) { + var fingct = toot.followingCount + } else { + var fingct = "unknown" } templete = templete + '
    ' + @@ -973,101 +973,98 @@ function goGoogle(id) { shell.openExternal(url); } -var misskeyws=[] -var misskeywsstate=[] +var misskeyws = [] +var misskeywsstate = [] function connectMisskey(acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "wss://" + domain + - "/streaming?i="+at; + "/streaming?i=" + at; var wsid = misskeyws.length; localStorage.setItem("misskey_wss_" + acct_id, wsid); misskeyws[wsid] = new WebSocket(start); misskeyws[wsid].onopen = function (mess) { - console.log(tlid + ":Connect Streaming API:"+domain); - console.log(mess); - misskeywsstate[wsid]=true + console.table({ "tlid": tlid, "type": "Connect Streaming API", "domain": domain, "message": [mess] }) + misskeywsstate[wsid] = true //$("#notice_icon_" + tlid).removeClass("red-text"); - var send='{"type":"connect","body":{"channel":"main","id":"notf:'+acct_id+'"}}' + var send = '{"type":"connect","body":{"channel":"main","id":"notf:' + acct_id + '"}}' misskeyws[wsid].send(send) } misskeyws[wsid].onmessage = function (mess) { - console.log(acct_id + ":Receive Streaming API:"); - var data=JSON.parse(mess.data) - var obj=data.body.body - - if (data.body.id.indexOf("notf:")!== -1) { + console.log([domain + ":Receive Streaming API:", data]); + var data = JSON.parse(mess.data) + var obj = data.body.body + + if (data.body.id.indexOf("notf:") !== -1) { var obj = JSON.parse(mess.data).body; console.log(obj); var popup = localStorage.getItem("popup"); if (!popup) { popup = 0; } - if(JSON.parse(mess.data).body.type!="follow"){ - + if (JSON.parse(mess.data).body.type != "follow") { + templete = misskeyParse([obj.body], 'notf', acct_id, 'notf', popup); - }else{ + } else { templete = misskeyUserparse([obj.body], 'notf', acct_id, 'notf', popup); } - if(JSON.parse(mess.data).body.type=="reaction"){ - console.log("refresh") - reactRefresh(acct_id,obj.body.note.id) + if (JSON.parse(mess.data).body.type == "reaction") { + console.log("reaction refresh") + reactRefresh(acct_id, obj.body.note.id) } - if(!$("div[data-notfIndv=" + acct_id +"_"+obj.body.id+"]").length){ - $("div[data-notf=" + acct_id +"]").prepend(templete); - $("div[data-const=notf_"+acct_id+"]").prepend(templete); + if (!$("div[data-notfIndv=" + acct_id + "_" + obj.body.id + "]").length) { + $("div[data-notf=" + acct_id + "]").prepend(templete); + $("div[data-const=notf_" + acct_id + "]").prepend(templete); } jQuery("time.timeago").timeago(); - }else if (data.body.type == "note") { - var tlid=data.body.id*1 - var multi = localStorage.getItem("column"); - var col = JSON.parse(multi)[tlid]; - if(localStorage.getItem("voice_" + tlid)){ - var voice=true; - }else{ - var voice=false; - } - if (voice) { - say(obj.text) - } - var templete = misskeyParse([obj], col.type, acct_id, tlid, "", mute); - misskeyws[wsid].send(JSON.stringify({ - type: 'sn', - body: { - id: obj.id - } - })) - var pool = localStorage.getItem("pool_" + tlid); - if (pool) { - pool = templete + pool; - } else { - pool = templete - } - localStorage.setItem("pool_" + tlid, pool); - scrollck(); - jQuery("time.timeago").timeago(); - }else if (data.type == "noteUpdated") { - if(data.body.type=="reacted"){ - console.log(data.body.id) - reactRefresh(acct_id,data.body.id) - }else if(data.body.type=="deleted"){ - $("#pub_"+data.body.id).hide(); - $("#pub_"+data.body.id).remove(); - } - + } else if (data.body.type == "note") { + var tlid = data.body.id * 1 + var multi = localStorage.getItem("column"); + var col = JSON.parse(multi)[tlid]; + if (localStorage.getItem("voice_" + tlid)) { + var voice = true; + } else { + var voice = false; } + if (voice) { + say(obj.text) + } + var templete = misskeyParse([obj], col.type, acct_id, tlid, "", mute); + misskeyws[wsid].send(JSON.stringify({ + type: 'sn', + body: { + id: obj.id + } + })) + var pool = localStorage.getItem("pool_" + tlid); + if (pool) { + pool = templete + pool; + } else { + pool = templete + } + localStorage.setItem("pool_" + tlid, pool); + scrollck(); + jQuery("time.timeago").timeago(); + } else if (data.type == "noteUpdated") { + if (data.body.type == "reacted") { + reactRefresh(acct_id, data.body.id) + } else if (data.body.type == "deleted") { + $("#pub_" + data.body.id).hide(); + $("#pub_" + data.body.id).remove(); + } + + } } misskeyws[wsid].onerror = function (error) { - console.error("Error closing"); + console.error("Error closing " + tlid); console.error(error); - misskeywsstate[wsid]=false + misskeywsstate[wsid] = false connectMisskey(acct_id) return false; }; misskeyws[wsid].onclose = function () { - console.log("Closing"); - console.log(tlid); - misskeywsstate[wsid]=false + console.warn("Closing " + tlid); + misskeywsstate[wsid] = false connectMisskey(acct_id) return false; }; diff --git a/app/js/tl/mix.js b/app/js/tl/mix.js index 7b2ea0e0..77bf0fad 100644 --- a/app/js/tl/mix.js +++ b/app/js/tl/mix.js @@ -1,131 +1,127 @@ //Integrated TL -function mixtl(acct_id, tlid, type,delc,voice) { - console.log(delc); +function mixtl(acct_id, tlid, type, delc, voice) { localStorage.removeItem("morelock") localStorage.setItem("now", type); todo("Integrated TL Loading...(Local)"); - //まずLocal - var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/timelines/public?local=true"; + //まずLocal + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/timelines/public?local=true"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(jsonL) { - var start = "https://" + domain + "/api/v1/timelines/home"; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(jsonH) { - var homearr=[]; - var timeline = jsonL.concat(jsonH); - timeline.sort(function(a,b){ - if(date(a.created_at,"unix")>=date(b.created_at,"unix")) return -1; - if(date(a.created_at,"unix")= date(b.created_at, "unix")) return -1; + if (date(a.created_at, "unix") < date(b.created_at, "unix")) return 1; + return 0; }); - if(type=="integrated"){ + if (type == "integrated") { timeline.splice(20); } - var templete=""; - Object.keys(timeline).forEach(function(key) { - var pkey=key*1+1; - if(pkey10){ - reconnector(tlid,type,acct_id,data) - }else{ - localStorage.setItem("delete",del*1+1) + if (del > 10) { + reconnector(tlid, type, acct_id, data) + } else { + localStorage.setItem("delete", del * 1 + 1) } - if(delc=="true"){ + if (delc == "true") { $("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized"); $("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch"); - }else{ + } else { $("[toot-id=" + JSON.parse(mess.data).payload + "]").hide(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); } } else if (type == "update") { localStorage.removeItem("delete"); - if(TLtype=="integrated"){ + if (TLtype == "integrated") { var templete = parse([obj], '', acct_id, tlid); - }else if(TLtype=="plus"){ - if(obj.account.acct==obj.account.username){ - var templete = parse([obj], '', acct_id, tlid,"",mute, "mix"); - }else{ - var templete=""; + } else if (TLtype == "plus") { + if (obj.account.acct == obj.account.username) { + var templete = parse([obj], '', acct_id, tlid, "", mute, "mix"); + } else { + var templete = ""; } } - if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){ - if(voice){ + if ($("#timeline_" + tlid + " [toot-id=" + obj.id + "]").length < 1) { + if (voice) { say(obj.content) - } - var templete = parse([obj], type, acct_id, tlid,"",mute,"mix"); + } + var templete = parse([obj], type, acct_id, tlid, "", mute, "mix"); var pool = localStorage.getItem("pool_" + tlid); if (pool) { pool = templete + pool; @@ -186,149 +180,148 @@ function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) { pool = templete } localStorage.setItem("pool_" + tlid, pool); - + scrollck(); - + additional(acct_id, tlid); jQuery("time.timeago").timeago(); - }else{ + } else { todo("二重取得発生中"); } } } - websocketLocal[wslid].onerror = function(error) { + websocketLocal[wslid].onerror = function (error) { console.error('WebSocketLocal Error') console.error(error); - if(mode=="error"){ + if (mode == "error") { $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Error ' + error); - }else{ - var errorct=localStorage.getItem("wserror_" + tlid)*1+1; - localStorage.setItem("wserror_" + tlid,errorct); - if(errorct<3){ - reconnector(tlid,TLtype,acct_id,"","error"); + } else { + var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; + localStorage.setItem("wserror_" + tlid, errorct); + if (errorct < 3) { + reconnector(tlid, TLtype, acct_id, "", "error"); } } }; - websocketLocal[wslid].onclose = function() { - console.log('WebSocketLocal Closing:' + tlid); - if(mode=="error"){ + websocketLocal[wslid].onclose = function () { + console.warn('WebSocketLocal Closing:' + tlid); + if (mode == "error") { $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Closed'); - }else{ - var errorct=localStorage.getItem("wserror_" + tlid)*1+1; - localStorage.setItem("wserror_" + tlid,errorct); - if(errorct<3){ - reconnector(tlid,TLtype,acct_id,"","error"); + } else { + var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; + localStorage.setItem("wserror_" + tlid, errorct); + if (errorct < 3) { + reconnector(tlid, TLtype, acct_id, "", "error"); } } }; - websocketHome[wshid].onerror = function(error) { - console.error('WebSocketHome Error') - console.error(error); - if(mode=="error"){ + websocketHome[wshid].onerror = function (error) { + console.error(['WebSocketHome Error', error]) + if (mode == "error") { $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Error ' + error); - }else{ - var errorct=localStorage.getItem("wserror_" + tlid)*1+1; - localStorage.setItem("wserror_" + tlid,errorct); - if(errorct<3){ - reconnector(tlid,TLtype,acct_id,"","error"); + } else { + var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; + localStorage.setItem("wserror_" + tlid, errorct); + if (errorct < 3) { + reconnector(tlid, TLtype, acct_id, "", "error"); } } }; - websocketHome[wshid].onclose = function() { - console.log('WebSocketHome Closing:' + tlid); - if(mode=="error"){ + websocketHome[wshid].onclose = function () { + console.warn('WebSocketHome Closing:' + tlid); + if (mode == "error") { $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Closed'); - }else{ - var errorct=localStorage.getItem("wserror_" + tlid)*1+1; - localStorage.setItem("wserror_" + tlid,errorct); - if(errorct<3){ - reconnector(tlid,TLtype,acct_id,"","error"); + } else { + var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; + localStorage.setItem("wserror_" + tlid, errorct); + if (errorct < 3) { + reconnector(tlid, TLtype, acct_id, "", "error"); } } - + }; } //ある程度のスクロールで発火 -function mixmore(tlid,type) { +function mixmore(tlid, type) { var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); var acct_id = obj[tlid].domain; - moreloading=true; + moreloading = true; todo("Integrated TL MoreLoading...(Local)"); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id"); - var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id="+sid; + var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id=" + sid; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(jsonL) { - var start = "https://" + domain + "/api/v1/timelines/home?max_id="+sid; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(jsonH) { - var homearr=[]; - var timeline = jsonL.concat(jsonH); - timeline.sort(function(a,b){ - if(date(a.created_at,"unix")>date(b.created_at,"unix")) return -1; - if(date(a.created_at,"unix") date(b.created_at, "unix")) return -1; + if (date(a.created_at, "unix") < date(b.created_at, "unix")) return 1; + return 0; + }); + timeline.splice(20); + var templete = ""; + Object.keys(timeline).forEach(function (key) { + var pkey = key * 1 + 1; + if (pkey < 20) { + if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) { + if (localStorage.getItem("filter_" + acct_id) != "undefined") { + var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix"); + } else { + var mute = []; } - if(type=="integrated"){ - templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute,"mix"); - }else if(type=="plus"){ - if(timeline[key].account.acct==timeline[key].account.username){ - templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute,"mix"); + if (type == "integrated") { + templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix"); + } else if (type == "plus") { + if (timeline[key].account.acct == timeline[key].account.username) { + templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix"); } } - } - } + } + } - }); - - $("#timeline_" + tlid).append(templete); + }); + + $("#timeline_" + tlid).append(templete); additional(acct_id, tlid); jQuery("time.timeago").timeago(); - moreloading=false; + moreloading = false; todc(); - }); + }); }); - + } diff --git a/app/js/tl/notification.js b/app/js/tl/notification.js index 0808ac90..397862df 100644 --- a/app/js/tl/notification.js +++ b/app/js/tl/notification.js @@ -1,144 +1,144 @@ //通知 //取得+Streaming接続 -function notf(acct_id, tlid, sys){ +function notf(acct_id, tlid, sys) { if (sys == "direct") { notfColumn(acct_id, tlid, sys) } else { notfCommon(acct_id, tlid, sys) } } -function notfColumn(acct_id, tlid, sys){ +function notfColumn(acct_id, tlid, sys) { todo("Notifications Loading..."); - var native=localStorage.getItem("nativenotf"); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(!native){ - native="yes"; + var native = localStorage.getItem("nativenotf"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (!native) { + native = "yes"; } var domain = localStorage.getItem("domain_" + acct_id); var httpreq = new XMLHttpRequest(); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var misskey=true; + if (localStorage.getItem("mode_" + domain) == "misskey") { + var misskey = true; var start = "https://" + domain + "/api/i/notifications"; httpreq.open("POST", start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); - var body=JSON.stringify({ - i:at + var body = JSON.stringify({ + i: at }); - }else{ - var misskey=false; - if(localStorage.getItem("exclude-"+tlid)){ - var exc=localStorage.getItem("exclude-"+tlid); - }else{ - var exc=""; + } else { + var misskey = false; + if (localStorage.getItem("exclude-" + tlid)) { + var exc = localStorage.getItem("exclude-" + tlid); + } else { + var exc = ""; } - var start = "https://" + domain + "/api/v1/notifications"+exc; + var start = "https://" + domain + "/api/v1/notifications" + exc; httpreq.open("GET", start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); - var body=""; + var body = ""; } - + httpreq.responseType = "json"; httpreq.send(body); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; var max_id = httpreq.getResponseHeader("link"); - if(max_id){ - max_id=max_id.match(/[?&]{1}max_id=([0-9]+)/)[1] + if (max_id) { + max_id = max_id.match(/[?&]{1}max_id=([0-9]+)/)[1] } - if(json[0]){ - var templete=""; - var lastnotf=localStorage.getItem("lastnotf_" + acct_id); - localStorage.setItem("lastnotf_" + acct_id,json[0].id); - Object.keys(json).forEach(function(key) { + if (json[0]) { + var templete = ""; + var lastnotf = localStorage.getItem("lastnotf_" + acct_id); + localStorage.setItem("lastnotf_" + acct_id, json[0].id); + Object.keys(json).forEach(function (key) { var obj = json[key]; - if(lastnotf==obj.id && key>0 && native=="yes"){ - var ct=key; - if(key>14){ - ct="15+"; + if (lastnotf == obj.id && key > 0 && native == "yes") { + var ct = key; + if (key > 14) { + ct = "15+"; } var electron = require("electron"); var ipc = electron.ipcRenderer; var os = electron.remote.process.platform; - var options = { - body: ct+lang.lang_notf_new, - icon: localStorage.getItem("prof_"+acct_id) - }; - if(os=="darwin"){ - var n = new Notification('TheDesk:'+domain, options); - }else{ - ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]); - } - - } - if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ - var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif"); - }else{ - var mute=[]; - } - if(obj.type!="follow"){ - if(misskey){ - templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute); - }else{ - templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute); + var options = { + body: ct + lang.lang_notf_new, + icon: localStorage.getItem("prof_" + acct_id) + }; + if (os == "darwin") { + var n = new Notification('TheDesk:' + domain, options); + } else { + ipc.send('native-notf', ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]); } - }else{ - if(misskey){ - templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute); - }else{ - templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1); + + } + if (localStorage.getItem("filter_" + acct_id) != "undefined") { + var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif"); + } else { + var mute = []; + } + if (obj.type != "follow") { + if (misskey) { + templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute); + } else { + templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute); } - + } else { + if (misskey) { + templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute); + } else { + templete = templete + userparse([obj.account], 'notf', acct_id, tlid, -1); + } + } }); - templete=templete+'
    '; + templete = templete + '
    '; $("#timeline_" + tlid).html(templete); $("#landing_" + tlid).hide(); jQuery("time.timeago").timeago(); - } - $("#notf-box").addClass("fetched"); - todc(); + } + $("#notf-box").addClass("fetched"); + todc(); } } - if(!misskey){ - if(localStorage.getItem("streaming_" + acct_id)){ - var wss=localStorage.getItem("streaming_" + acct_id) - }else{ - var wss="wss://"+domain + if (!misskey) { + if (localStorage.getItem("streaming_" + acct_id)) { + var wss = localStorage.getItem("streaming_" + acct_id) + } else { + var wss = "wss://" + domain } var start = wss + "/api/v1/streaming/?stream=user&access_token=" + - at; - }else{ + at; + } else { var start = "wss://" + domain + "/?i=" + - at; + at; } } function notfCommon(acct_id, tlid, sys) { todo("Notifications Loading..."); - var native=localStorage.getItem("nativenotf"); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(!native){ - native="yes"; + var native = localStorage.getItem("nativenotf"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (!native) { + native = "yes"; } var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var misskey=true; + if (localStorage.getItem("mode_" + domain) == "misskey") { + var misskey = true; var start = "https://" + domain + "/api/i/notifications"; - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify({ - i:at + body: JSON.stringify({ + i: at }) } - }else{ - var misskey=false; + } else { + var misskey = false; var start = "https://" + domain + "/api/v1/notifications"; - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -146,237 +146,231 @@ function notfCommon(acct_id, tlid, sys) { }, } } - fetch(start, i).then(function(response) { - console.log(response.headers.get('link')); + fetch(start, i).then(function (response) { + console.log("header to get param:" + response.headers.get('link')); return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(json[0]){ - var templete=""; - var lastnotf=localStorage.getItem("lastnotf_" + acct_id); - localStorage.setItem("lastnotf_" + acct_id,json[0].id); - Object.keys(json).forEach(function(key) { - var obj = json[key]; - if(lastnotf==obj.id && key>0 && native=="yes"){ - var ct=key; - if(key>14){ - ct="15+"; - } - var electron = require("electron"); - var ipc = electron.ipcRenderer; - var os = electron.remote.process.platform; - var options = { - body: ct+lang.lang_notf_new, - icon: localStorage.getItem("prof_"+acct_id) - }; - if(os=="darwin"){ - var n = new Notification('TheDesk:'+domain, options); - }else{ - ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]); + }).then(function (json) { + if (json[0]) { + var templete = ""; + var lastnotf = localStorage.getItem("lastnotf_" + acct_id); + localStorage.setItem("lastnotf_" + acct_id, json[0].id); + Object.keys(json).forEach(function (key) { + var obj = json[key]; + if (lastnotf == obj.id && key > 0 && native == "yes") { + var ct = key; + if (key > 14) { + ct = "15+"; } - - } - if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ - var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif"); - }else{ - var mute=[]; - } - if(obj.type!="follow"){ - if(misskey){ - templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute); - }else{ - templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute); + var electron = require("electron"); + var ipc = electron.ipcRenderer; + var os = electron.remote.process.platform; + var options = { + body: ct + lang.lang_notf_new, + icon: localStorage.getItem("prof_" + acct_id) + }; + if (os == "darwin") { + var n = new Notification('TheDesk:' + domain, options); + } else { + ipc.send('native-notf', ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]); + } + } - }else{ - if(misskey){ - templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute); - }else{ - templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1); + if (localStorage.getItem("filter_" + acct_id) != "undefined") { + var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif"); + } else { + var mute = []; } - - } - }); - $("div[data-notf=" + acct_id +"]").html(templete); - $("#landing_" + tlid).hide(); - jQuery("time.timeago").timeago(); + if (obj.type != "follow") { + if (misskey) { + templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute); + } else { + templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute); + } + } else { + if (misskey) { + templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute); + } else { + templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1); + } + + } + }); + $("div[data-notf=" + acct_id + "]").html(templete); + $("#landing_" + tlid).hide(); + jQuery("time.timeago").timeago(); } $("#notf-box").addClass("fetched"); todc(); - notfWS(misskey,acct_id,tlid,domain,at) + notfWS(misskey, acct_id, tlid, domain, at) }); - + } -function notfWS(misskey,acct_id,tlid,domain,at){ - if(!misskey){ - if(localStorage.getItem("streaming_" + acct_id)){ - var wss=localStorage.getItem("streaming_" + acct_id) - }else{ - var wss="wss://"+domain +function notfWS(misskey, acct_id, tlid, domain, at) { + if (!misskey) { + if (localStorage.getItem("streaming_" + acct_id)) { + var wss = localStorage.getItem("streaming_" + acct_id) + } else { + var wss = "wss://" + domain } var start = wss + "/api/v1/streaming/?stream=user&access_token=" + - at; + at; - console.log(start); - var wsid = websocketNotf.length; - websocketNotf[acct_id] = new WebSocket(start); - console.log(websocketNotf); - websocketNotf[acct_id].onopen = function(mess) { - console.log("Connect Streaming API(Notf):"); - console.log(mess); - $("i[data-notf=" + acct_id +"]").removeClass("red-text"); + var wsid = websocketNotf.length; + websocketNotf[acct_id] = new WebSocket(start); + websocketNotf[acct_id].onopen = function (mess) { + console.table({ "acct_id": acct_id, "type": "Connect Streaming API(Notf)", "domain": domain, "message": [mess] }) + $("i[data-notf=" + acct_id + "]").removeClass("red-text"); - } - websocketNotf[acct_id].onmessage = function(mess) { - console.log("Receive Streaming API(Notf):"+acct_id); - var popup = localStorage.getItem("popup"); + } + websocketNotf[acct_id].onmessage = function (mess) { + console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]); + var popup = localStorage.getItem("popup"); if (!popup) { popup = 0; } - console.log(domain) - var obj = JSON.parse(JSON.parse(mess.data).payload); - console.log(obj); - var type = JSON.parse(mess.data).event; - if (type == "notification") { - var templete=""; - localStorage.setItem("lastnotf_" + acct_id,obj.id); - if(obj.type!="follow"){ - templete = parse([obj], 'notf', acct_id, 'notf', popup); - }else{ - templete = userparse([obj], 'notf', acct_id, 'notf', popup); + var obj = JSON.parse(JSON.parse(mess.data).payload); + var type = JSON.parse(mess.data).event; + if (type == "notification") { + var templete = ""; + localStorage.setItem("lastnotf_" + acct_id, obj.id); + if (obj.type != "follow") { + templete = parse([obj], 'notf', acct_id, 'notf', popup); + } else { + templete = userparse([obj], 'notf', acct_id, 'notf', popup); + } + if (!$("div[data-notfIndv=" + acct_id + "_" + obj.id + "]").length) { + $("div[data-notf=" + acct_id + "]").prepend(templete); + $("div[data-const=notf_" + acct_id + "]").prepend(templete); + } + jQuery("time.timeago").timeago(); + } else if (type == "delete") { + $("[toot-id=" + obj + "]").hide(); + $("[toot-id=" + obj + "]").remove(); } - if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){ - $("div[data-notf=" + acct_id +"]").prepend(templete); - $("div[data-const=notf_"+acct_id+"]").prepend(templete); - } - jQuery("time.timeago").timeago(); - } else if (type == "delete") { - $("[toot-id=" + obj + "]").hide(); - $("[toot-id=" + obj + "]").remove(); } + websocketNotf[acct_id].onerror = function (error) { + console.error('WebSocket Error ' + error); + notfWS(misskey, acct_id, tlid, domain, at) + }; } - websocketNotf[acct_id].onerror = function(error) { - console.error('WebSocket Error ' + error); - notfWS(misskey,acct_id,tlid,domain,at) - }; -} } //一定のスクロールで発火 function notfmore(tlid) { - console.log(moreloading); - console.log("kicked"); + console.log({ "status": "kicked", "status": moreloading }); var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); var acct_id = obj[tlid].domain; if (!type) { var type = obj[tlid].type; - }else{ + } else { var data; } var sid = $("#timeline_" + tlid + " .notif-marker").last().attr("data-maxid"); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var domain = localStorage.getItem("domain_" + acct_id); if (sid && !moreloading) { - moreloading=true; - var httpreq = new XMLHttpRequest(); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var misskey=true; - var start = "https://" + domain + "/api/i/notifications"; - httpreq.open(POST, start, true); - httpreq.setRequestHeader('Content-Type', 'application/json'); - var body=JSON.stringify({ - i:at, - untilID:sid - }); - }else{ - var misskey=false; - if(localStorage.getItem("exclude-"+tlid)){ - var exc=localStorage.getItem("exclude-"+tlid)+"&max_id="+sid; - }else{ - var exc="?max_id="+sid; + moreloading = true; + var httpreq = new XMLHttpRequest(); + if (localStorage.getItem("mode_" + domain) == "misskey") { + var misskey = true; + var start = "https://" + domain + "/api/i/notifications"; + httpreq.open(POST, start, true); + httpreq.setRequestHeader('Content-Type', 'application/json'); + var body = JSON.stringify({ + i: at, + untilID: sid + }); + } else { + var misskey = false; + if (localStorage.getItem("exclude-" + tlid)) { + var exc = localStorage.getItem("exclude-" + tlid) + "&max_id=" + sid; + } else { + var exc = "?max_id=" + sid; + } + var start = "https://" + domain + "/api/v1/notifications" + exc; + httpreq.open("GET", start, true); + httpreq.setRequestHeader('Content-Type', 'application/json'); + httpreq.setRequestHeader('Authorization', 'Bearer ' + at); + var body = ""; } - var start = "https://" + domain + "/api/v1/notifications"+exc; - httpreq.open("GET", start, true); - httpreq.setRequestHeader('Content-Type', 'application/json'); - httpreq.setRequestHeader('Authorization', 'Bearer ' + at); - var body=""; - } - - httpreq.responseType = "json"; - httpreq.send(body); - httpreq.onreadystatechange = function() { - if (httpreq.readyState === 4) { - var json = httpreq.response; - console.log(json); - var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1]; - if(json[0]){ - var templete=""; - var lastnotf=localStorage.getItem("lastnotf_" + acct_id); - localStorage.setItem("lastnotf_" + acct_id,json[0].id); - Object.keys(json).forEach(function(key) { - var obj = json[key]; - if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ - var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif"); - }else{ - var mute=[]; - } - if(obj.type!="follow"){ - if(misskey){ - templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute); - }else{ - templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute); + + httpreq.responseType = "json"; + httpreq.send(body); + httpreq.onreadystatechange = function () { + if (httpreq.readyState === 4) { + var json = httpreq.response; + console.log(["More notifications on " + tlid, json]); + var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1]; + if (json[0]) { + var templete = ""; + var lastnotf = localStorage.getItem("lastnotf_" + acct_id); + localStorage.setItem("lastnotf_" + acct_id, json[0].id); + Object.keys(json).forEach(function (key) { + var obj = json[key]; + if (localStorage.getItem("filter_" + acct_id) != "undefined") { + var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif"); + } else { + var mute = []; } - }else{ - if(misskey){ - templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute); - }else{ - templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1); + if (obj.type != "follow") { + if (misskey) { + templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute); + } else { + templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute); + } + } else { + if (misskey) { + templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute); + } else { + templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1); + } + } - - } - }); - moreloading=false; - templete=templete+'
    '; - $("#timeline_" + tlid).append(templete); - $("#landing_" + tlid).hide(); - jQuery("time.timeago").timeago(); + }); + moreloading = false; + templete = templete + '
    '; + $("#timeline_" + tlid).append(templete); + $("#landing_" + tlid).hide(); + jQuery("time.timeago").timeago(); } $("#notf-box").addClass("fetched"); todc(); + } } } } -} //通知トグルボタン function notfToggle(acct, tlid) { - if($("#notf-box_" + tlid).hasClass("column-hide")){ - $("#notf-box_" + tlid).css("display","block") + if ($("#notf-box_" + tlid).hasClass("column-hide")) { + $("#notf-box_" + tlid).css("display", "block") $("#notf-box_" + tlid).animate({ 'height': '400px' - },{ - 'duration': 300, - 'complete': function(){ - $("#notf-box_" + tlid).css("overflow-y","scroll") - $("#notf-box_" + tlid).removeClass("column-hide") - } - }); - }else{ - $("#notf-box_" + tlid).css("overflow-y","hidden") + }, { + 'duration': 300, + 'complete': function () { + $("#notf-box_" + tlid).css("overflow-y", "scroll") + $("#notf-box_" + tlid).removeClass("column-hide") + } + }); + } else { + $("#notf-box_" + tlid).css("overflow-y", "hidden") $("#notf-box_" + tlid).animate({ 'height': '0' - },{ - 'duration': 300, - 'complete': function(){ - $("#notf-box_" + tlid).addClass("column-hide") - $("#notf-box_" + tlid).css("display","none") - } - }); + }, { + 'duration': 300, + 'complete': function () { + $("#notf-box_" + tlid).addClass("column-hide") + $("#notf-box_" + tlid).css("display", "none") + } + }); } notfCanceler(acct) } -function notfCanceler(acct){ +function notfCanceler(acct) { $(".notf-reply_" + acct).text(0); localStorage.removeItem("notf-reply_" + acct) $(".notf-reply_" + acct).addClass("hide"); @@ -391,15 +385,13 @@ function notfCanceler(acct){ $(".notf-follow_" + acct).addClass("hide"); $(".notf-icon_" + acct).removeClass("red-text"); } -function allNotfRead(){ - console.log(localStorage.getItem("notf-fav_2")); +function allNotfRead() { var multi = localStorage.getItem("multi"); if (multi) { var obj = JSON.parse(multi); - Object.keys(obj).forEach(function(key) { - console.log(key); - notfCanceler(key) - }); -} + Object.keys(obj).forEach(function (key) { + notfCanceler(key) + }); + } } allNotfRead() \ No newline at end of file diff --git a/app/js/tl/parse.js b/app/js/tl/parse.js index 5e6f10af..af46e54e 100644 --- a/app/js/tl/parse.js +++ b/app/js/tl/parse.js @@ -1,31 +1,31 @@ //オブジェクトパーサー(トゥート) function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { var templete = ''; - if(obj[0]){ - if(tlid===1){ - console.log("testalive:"+"lastunix_"+ tlid+":"+date(obj[0].created_at, 'unix')) + if (obj[0]) { + if (tlid === 1) { + } - localStorage.setItem("lastunix_"+ tlid,date(obj[0].created_at, 'unix')); + localStorage.setItem("lastunix_" + tlid, date(obj[0].created_at, 'unix')); } - - var actb='re,rt,fav,qt,del,pin,red'; - if(actb){ + + var actb = 're,rt,fav,qt,del,pin,red'; + if (actb) { var actb = actb.split(','); - var disp={}; - for(var k=0;k'; + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; var regExp = new RegExp(":" + shortcode + ":", "g"); dis_name = dis_name.replace(regExp, emoji_url); - + }); } - var noticeavatar=""; + var noticeavatar = ""; if (mix == "notf") { if (gif == "yes") { noticeavatar = toot.account.avatar; } else { noticeavatar = toot.account.avatar_static; } - noticeavatar='' + - ''; + noticeavatar = '' + + ''; if (toot.type == "mention") { var what = lang.lang_parse_mentioned; var icon = "fa-share teal-text"; - noticeavatar=""; + noticeavatar = ""; } else if (toot.type == "reblog") { var what = lang.lang_parse_bted; var icon = "fa-retweet light-blue-text"; - if(!locale && localStorage.getItem("bt_" + acct_id)){ + if (!locale && localStorage.getItem("bt_" + acct_id)) { what = localStorage.getItem("bt_" + acct_id); } } else if (toot.type == "favourite") { var what = lang.lang_parse_faved; var icon = "fa-star yellow-text"; - if(!locale && localStorage.getItem("fav_" + acct_id)){ + if (!locale && localStorage.getItem("fav_" + acct_id)) { what = localStorage.getItem("fav_" + acct_id); } } else if (toot.type == "poll") { var what = lang.lang_parse_polled; var icon = "fa-tasks purple-text"; } - var noticetext = '' + date(toot.created_at, - datetype) + - '
    ' + date(toot.created_at, + datetype) + + '' + dis_name + "(@" + toot.account.acct + ")"; var notice = noticetext; var memory = localStorage.getItem("notice-mem"); if (popup >= 0 && obj.length < 5 && noticetext != memory) { - if(localStorage.getItem("hasNotfC_" + acct_id)!="true"){ + if (localStorage.getItem("hasNotfC_" + acct_id) != "true") { if (toot.type == "mention") { - var replyct=localStorage.getItem("notf-reply_" + acct_id) - $(".notf-reply_" + acct_id).text(replyct*1-(-1)); - localStorage.setItem("notf-reply_" + acct_id,replyct*1-(-1)) + var replyct = localStorage.getItem("notf-reply_" + acct_id) + $(".notf-reply_" + acct_id).text(replyct * 1 - (-1)); + localStorage.setItem("notf-reply_" + acct_id, replyct * 1 - (-1)) $(".notf-reply_" + acct_id).removeClass("hide") - var sound=localStorage.getItem("replySound"); - if(sound=="default"){ - var file="../../source/notif3.wav" + var sound = localStorage.getItem("replySound"); + if (sound == "default") { + var file = "../../source/notif3.wav" } - }else if (toot.type == "reblog") { - var btct=localStorage.getItem("notf-bt_" + acct_id) - $(".notf-bt_" + acct_id).text(btct*1-(-1)); - localStorage.setItem("notf-bt_" + acct_id,btct*1-(-1)) + } else if (toot.type == "reblog") { + var btct = localStorage.getItem("notf-bt_" + acct_id) + $(".notf-bt_" + acct_id).text(btct * 1 - (-1)); + localStorage.setItem("notf-bt_" + acct_id, btct * 1 - (-1)) $(".notf-bt_" + acct_id).removeClass("hide") - var sound=localStorage.getItem("btSound"); - if(sound=="default"){ - var file="../../source/notif2.wav" + var sound = localStorage.getItem("btSound"); + if (sound == "default") { + var file = "../../source/notif2.wav" } - }else if (toot.type == "favourite") { - var favct=localStorage.getItem("notf-fav_" + acct_id) - $(".notf-fav_" + acct_id).text(favct*1-(-1)); - localStorage.setItem("notf-fav_" + acct_id,favct*1-(-1)) + } else if (toot.type == "favourite") { + var favct = localStorage.getItem("notf-fav_" + acct_id) + $(".notf-fav_" + acct_id).text(favct * 1 - (-1)); + localStorage.setItem("notf-fav_" + acct_id, favct * 1 - (-1)) $(".notf-fav_" + acct_id).removeClass("hide") - var sound=localStorage.getItem("favSound"); - if(sound=="default"){ - var file="../../source/notif.wav" + var sound = localStorage.getItem("favSound"); + if (sound == "default") { + var file = "../../source/notif.wav" } } } - + var domain = localStorage.getItem("domain_" + acct_id); - if(popup>0){ - Materialize.toast("["+domain+"]"+escapeHTML(toot.account.display_name)+what, popup * 1000); + if (popup > 0) { + Materialize.toast("[" + domain + "]" + escapeHTML(toot.account.display_name) + what, popup * 1000); } //通知音 - if(sound=="c1"){ - var file=localStorage.getItem("custom1"); - }else if(sound=="c2"){ - var file=localStorage.getItem("custom2"); - }else if(sound=="c3"){ - var file=localStorage.getItem("custom3"); - }else if(sound=="c4"){ - var file=localStorage.getItem("custom4"); + if (sound == "c1") { + var file = localStorage.getItem("custom1"); + } else if (sound == "c2") { + var file = localStorage.getItem("custom2"); + } else if (sound == "c3") { + var file = localStorage.getItem("custom3"); + } else if (sound == "c4") { + var file = localStorage.getItem("custom4"); } - if(file){ + if (file) { request = new XMLHttpRequest(); - request.open("GET", file, true); - request.responseType = "arraybuffer"; - request.onload = playSound; - request.send(); + request.open("GET", file, true); + request.responseType = "arraybuffer"; + request.onload = playSound; + request.send(); } - if(native=="yes"){ + if (native == "yes") { var electron = require("electron"); var ipc = electron.ipcRenderer; var os = electron.remote.process.platform; var options = { - body: toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tags(toot.status.content), + body: toot.account.display_name + "(" + toot.account.acct + ")" + what + "\n\n" + $.strip_tags(toot.status.content), icon: toot.account.avatar - }; - if(os=="darwin"){ - var n = new Notification('TheDesk:'+domain, options); - }else{ + }; + if (os == "darwin") { + var n = new Notification('TheDesk:' + domain, options); + } else { ipc.send('native-notf', [ - 'TheDesk:'+domain, - toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tags(toot.status.content), + 'TheDesk:' + domain, + toot.account.display_name + "(" + toot.account.acct + ")" + what + "\n\n" + $.strip_tags(toot.status.content), toot.account.avatar, "toot", acct_id, @@ -318,91 +319,91 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { ]); } } - if(localStorage.getItem("hasNotfC_" + acct_id)!="true"){ + if (localStorage.getItem("hasNotfC_" + acct_id) != "true") { $(".notf-icon_" + acct_id).addClass("red-text"); } localStorage.setItem("notice-mem", noticetext); noticetext = ""; } - var if_notf='data-notfIndv="'+acct_id+"_"+toot.id+'"'; + var if_notf = 'data-notfIndv="' + acct_id + "_" + toot.id + '"'; var toot = toot.status; - var dis_name=escapeHTML(toot.account.display_name); - if(toot.account.emojis){ + var dis_name = escapeHTML(toot.account.display_name); + if (toot.account.emojis) { var actemojick = toot.account.emojis[0]; - }else{ - var actemojick=false; + } else { + var actemojick = false; } - //絵文字があれば - if (actemojick) { - Object.keys(toot.account.emojis).forEach(function(key5) { - var emoji = toot.account.emojis[key5]; - var shortcode = emoji.shortcode; - var emoji_url = ' :'+shortcode+': '; - var regExp = new RegExp(":" + shortcode + ":", "g"); - dis_name = dis_name.replace(regExp, emoji_url); - }); - } - }else{ - var if_notf=""; + //絵文字があれば + if (actemojick) { + Object.keys(toot.account.emojis).forEach(function (key5) { + var emoji = toot.account.emojis[key5]; + var shortcode = emoji.shortcode; + var emoji_url = ' :' + shortcode + ': '; + var regExp = new RegExp(":" + shortcode + ":", "g"); + dis_name = dis_name.replace(regExp, emoji_url); + }); + } + } else { + var if_notf = ""; if (toot.reblog) { if (gif == "yes") { noticeavatar = toot.account.avatar; } else { noticeavatar = toot.account.avatar_static; } - noticeavatar='' + - ''; + noticeavatar = '' + + ''; var rebtxt = lang.lang_parse_btedsimple; var rticon = "fa-retweet light-blue-text"; - if(localStorage.getItem("domain_" + acct_id)=="imastodon.net" && !locale){ + if (localStorage.getItem("domain_" + acct_id) == "imastodon.net" && !locale) { rebtxt = ":「わかるわ」"; - }else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){ + } else if (localStorage.getItem("domain_" + acct_id) == "mstdn.osaka" && !locale) { rebtxt = "がしばいた"; } - var notice = ''+ dis_name + "(@" + toot.account.acct + + var notice = '' + dis_name + "(@" + toot.account.acct + ")
    "; - var boostback = "shared"; - var uniqueid=toot.id; + var boostback = "shared"; + var uniqueid = toot.id; var toot = toot.reblog; - var dis_name=escapeHTML(toot.account.display_name); - if(toot.account.emojis){ + var dis_name = escapeHTML(toot.account.display_name); + if (toot.account.emojis) { var actemojick = toot.account.emojis[0]; - }else{ - var uniqueid=toot.id; - var actemojick=false; + } else { + var uniqueid = toot.id; + var actemojick = false; + } + //絵文字があれば + if (actemojick) { + Object.keys(toot.account.emojis).forEach(function (key5) { + var emoji = toot.account.emojis[key5]; + var shortcode = emoji.shortcode; + var emoji_url = ' :' + shortcode + ': '; + var regExp = new RegExp(":" + shortcode + ":", "g"); + dis_name = dis_name.replace(regExp, emoji_url); + }); } - //絵文字があれば - if (actemojick) { - Object.keys(toot.account.emojis).forEach(function(key5) { - var emoji = toot.account.emojis[key5]; - var shortcode = emoji.shortcode; - var emoji_url = ' :'+shortcode+': '; - var regExp = new RegExp(":" + shortcode + ":", "g"); - dis_name = dis_name.replace(regExp, emoji_url); - }); - } } else { - var uniqueid=toot.id; + var uniqueid = toot.id; var notice = ""; var boostback = "unshared"; //ユーザー強調 - if(toot.account.username!=toot.account.acct){ - var fullname=toot.account.acct; - }else{ + if (toot.account.username != toot.account.acct) { + var fullname = toot.account.acct; + } else { var domain = localStorage.getItem("domain_" + acct_id); - var fullname=toot.account.acct+"@"+domain; + var fullname = toot.account.acct + "@" + domain; } - if(useremp){ - Object.keys(useremp).forEach(function(key10) { - var user = useremp[key10]; - if(user==fullname){ - boostback = "emphasized"; - } + if (useremp) { + Object.keys(useremp).forEach(function (key10) { + var user = useremp[key10]; + if (user == fullname) { + boostback = "emphasized"; + } }); } } @@ -422,25 +423,25 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { } if (!toot.application) { var via = ''; - viashow="hide"; + viashow = "hide"; } else { var via = escapeHTML(toot.application.name); //強調チェック - Object.keys(emp).forEach(function(key6) { + Object.keys(emp).forEach(function (key6) { var cli = emp[key6]; - if(cli == via){ + if (cli == via) { boostback = "emphasized"; } }); //ミュートチェック - Object.keys(mute).forEach(function(key7) { + Object.keys(mute).forEach(function (key7) { var cli = mute[key7]; - if(cli == via){ + if (cli == via) { boostback = "hide"; } }); } - if(mix=="pinned"){ + if (mix == "pinned") { boostback = "emphasized"; } if (toot.spoiler_text && cw) { @@ -449,19 +450,19 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { var spoiler = "cw cw_hide_" + toot.id; var api_spoil = "gray"; var spoiler_show = ''+lang.lang_parse_cwshow+'
    '; + '\')" class="nex parsed">' + lang.lang_parse_cwshow + '
    '; } else { - var ct1 = toot.content.split('

    ').length + toot.content.split('
    ').length -2; - var ct2 = toot.content.split('

    ').length + toot.content.split('
    ').length -2; - if(ct1>ct2){ var ct= ct1; }else{ var ct= ct2; } + var ct1 = toot.content.split('

    ').length + toot.content.split('
    ').length - 2; + var ct2 = toot.content.split('

    ').length + toot.content.split('
    ').length - 2; + if (ct1 > ct2) { var ct = ct1; } else { var ct = ct2; } if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) { - var content = ''+lang.lang_parse_fulltext+'
    ' + toot.content + var content = '' + lang.lang_parse_fulltext + '
    ' + toot.content var spoil = '' + $.mb_substr($.strip_tags( - toot.content), 0, 100) + - ''+lang.lang_parse_autofold+''; + toot.content), 0, 100) + + '' + lang.lang_parse_autofold + ''; var spoiler = "cw cw_hide_" + toot.id; var spoiler_show = ''+lang.lang_parse_more+'
    '; + '\')" class="nex parsed">' + lang.lang_parse_more + '
    '; } else { var content = toot.content; var spoil = escapeHTML(toot.spoiler_text); @@ -474,7 +475,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { ); if (urls) { var analyze = ''+lang.lang_parse_url+'
    '; + ',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '
    '; } else { var analyze = ''; } @@ -482,51 +483,51 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { var hasmedia = ""; var youtube = ""; //Poll - var poll=""; - if(toot.poll){ - var choices=toot.poll.options; - if(toot.poll.voted){ - var myvote=lang.lang_parse_voted; - var result_hide=""; - }else{ - var myvote=''+lang.lang_parse_vote+'
    '; - if(choices[0].votes_count===0 || choices[0].votes_count>0){ - myvote=myvote+''+lang.lang_parse_unvoted+""; + var poll = ""; + if (toot.poll) { + var choices = toot.poll.options; + if (toot.poll.voted) { + var myvote = lang.lang_parse_voted; + var result_hide = ""; + } else { + var myvote = '' + lang.lang_parse_vote + '
    '; + if (choices[0].votes_count === 0 || choices[0].votes_count > 0) { + myvote = myvote + '' + lang.lang_parse_unvoted + ""; } - var result_hide="hide"; + var result_hide = "hide"; } - if(toot.poll.expired){ - var ended=lang.lang_parse_endedvote; - }else{ - var ended=date(toot.poll.expires_at, datetype); + if (toot.poll.expired) { + var ended = lang.lang_parse_endedvote; + } else { + var ended = date(toot.poll.expires_at, datetype); } - Object.keys(choices).forEach(function(keyc) { + Object.keys(choices).forEach(function (keyc) { var choice = choices[keyc]; - if(!toot.poll.voted && !toot.poll.expired){ - var votesel='voteSelMastodon(\''+acct_id+'\',\''+toot.poll.id+'\','+keyc+','+toot.poll.multiple+')'; - var voteclass="pointer waves-effect waves-light"; - }else{ - var votesel=""; - var voteclass=""; + if (!toot.poll.voted && !toot.poll.expired) { + var votesel = 'voteSelMastodon(\'' + acct_id + '\',\'' + toot.poll.id + '\',' + keyc + ',' + toot.poll.multiple + ')'; + var voteclass = "pointer waves-effect waves-light"; + } else { + var votesel = ""; + var voteclass = ""; } - poll=poll+'
    '+escapeHTML(choice.title)+'('+choice.votes_count+')
    '; + poll = poll + '
    ' + escapeHTML(choice.title) + '(' + choice.votes_count + ')
    '; }); - poll='
    '+poll+myvote+'' + - ended+ '
    '; + poll = '
    ' + poll + myvote + '' + + ended + '
    '; } - if(toot.emojis){ + if (toot.emojis) { var emojick = toot.emojis[0]; - }else{ - var emojick=false; + } else { + var emojick = false; } //絵文字があれば if (emojick) { - Object.keys(toot.emojis).forEach(function(key5) { + Object.keys(toot.emojis).forEach(function (key5) { var emoji = toot.emojis[key5]; var shortcode = emoji.shortcode; var emoji_url = ' :'+shortcode+': '; + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; var regExp = new RegExp(":" + shortcode + ":", "g"); content = content.replace(regExp, emoji_url); spoil = spoil.replace(regExp, emoji_url); @@ -534,18 +535,18 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { }); } //ニコフレ絵文字 - if(toot.profile_emojis){ + if (toot.profile_emojis) { var nicoemojick = toot.profile_emojis[0]; - }else{ - var nicoemojick=false; + } else { + var nicoemojick = false; } //絵文字があれば(nico) if (nicoemojick) { - Object.keys(toot.profile_emojis).forEach(function(keynico) { + Object.keys(toot.profile_emojis).forEach(function (keynico) { var emoji = toot.profile_emojis[keynico]; var shortcode = emoji.shortcode; var emoji_url = ' :'+shortcode+': '; + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; var regExp = new RegExp(":" + shortcode + ":", "g"); content = content.replace(regExp, emoji_url); spoil = spoil.replace(regExp, emoji_url); @@ -553,54 +554,68 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { }); } //デフォ絵文字 - content=twemoji.parse(content); - if(dis_name){ - dis_name=twemoji.parse(dis_name); + content = twemoji.parse(content); + if (dis_name) { + dis_name = twemoji.parse(dis_name); } - if(spoil){ - spoil=twemoji.parse(spoil); + if (spoil) { + spoil = twemoji.parse(spoil); } - if(noticetext){ - noticetext=twemoji.parse(noticetext); + if (noticetext) { + noticetext = twemoji.parse(noticetext); } - if(notice){ - notice=twemoji.parse(notice); + if (notice) { + notice = twemoji.parse(notice); } - if(poll){ - poll=twemoji.parse(poll); + if (poll) { + poll = twemoji.parse(poll); } var mediack = toot.media_attachments[0]; //メディアがあれば - var media_ids=""; + var media_ids = ""; if (mediack) { hasmedia = "hasmedia"; var cwdt = 100 / toot.media_attachments.length; - Object.keys(toot.media_attachments).forEach(function(key2) { + Object.keys(toot.media_attachments).forEach(function (key2) { var media = toot.media_attachments[key2]; var purl = media.preview_url; - media_ids=media_ids+media.id+","; + media_ids = media_ids + media.id + ","; var url = media.url; - var nsfwmes="" + var nsfwmes = "" if (toot.sensitive && nsfw) { var sense = "sensitive" - var blur=media.blurhash - if(blur){ - nsfwmes='
    NSFW media
    ' - purl=parseBlur(blur) - var sense="" + var blur = media.blurhash + if (blur) { + nsfwmes = '
    ' + lang.lang_parse_nsfw + '
    ' + purl = parseBlur(blur) + var sense = "" } } else { var sense = "" - var blur=null + var blur = null } - viewer = viewer + ''+nsfwmes+''; - + if (media.pleroma) { + if (media.pleroma.mime_type.indexOf("video") !== -1) { + viewer = viewer + ''; + } + } else { + if (media.type == "unknown") { + viewer = viewer + '[' + lang.lang_parse_unknown + '] ' + } else { + viewer = viewer + '' + nsfwmes + ''; + } + } + }); - media_ids = media_ids.slice(0, -1) ; + media_ids = media_ids.slice(0, -1); } else { viewer = ""; hasmedia = "nomedia"; @@ -610,75 +625,75 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { //メンションであれば if (menck) { mentions = ""; - var to_mention=[]; - Object.keys(toot.mentions).forEach(function(key3) { + var to_mention = []; + Object.keys(toot.mentions).forEach(function (key3) { var mention = toot.mentions[key3]; mentions = mentions + '@' + mention.acct + ' '; - //自分は除外 - //自インスタンスかどうかを確認し、IDの一致 - if(mention.acct==mention.username && mention.id==localStorage.getItem("user-id_" + acct_id)){ + //自分は除外 + //自インスタンスかどうかを確認し、IDの一致 + if (mention.acct == mention.username && mention.id == localStorage.getItem("user-id_" + acct_id)) { //自分 - }else{ + } else { //そのトゥの人NG - if(toot.account.acct!=mention.acct){ + if (toot.account.acct != mention.acct) { to_mention.push(mention.acct); } } - + }); to_mention.push(toot.account.acct); mentions = '
    ' + mentions + '
    '; - }else{ - var to_mention=[toot.account.acct]; + } else { + var to_mention = [toot.account.acct]; } var tagck = toot.tags[0]; var tags = ""; //タグであれば if (tagck) { - Object.keys(toot.tags).forEach(function(key4) { + Object.keys(toot.tags).forEach(function (key4) { var tag = toot.tags[key4]; tags = tags + '#' + tag.name + ':TL Toot '+ - 'Pin '; + ',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag.name) + '">TL Toot ' + + 'Pin '; }); tags = '
    ' + tags + '
    '; } //リプ数 - if(toot.replies_count || toot.replies_count===0){ - var replyct=toot.replies_count; - if(replyct_view=="hidden" && replyct>1){ - replyct="1+"; + if (toot.replies_count || toot.replies_count === 0) { + var replyct = toot.replies_count; + if (replyct_view == "hidden" && replyct > 1) { + replyct = "1+"; } - }else{ - var replyct=""; + } else { + var replyct = ""; } //公開範囲を取得 var vis = ""; var visen = toot.visibility; if (visen == "public") { var vis = - 'public'; + 'public'; var can_rt = ""; } else if (visen == "unlisted") { var vis = - 'lock_open'; + 'lock_open'; var can_rt = ""; } else if (visen == "private") { var vis = - 'lock'; + 'lock'; var can_rt = "hide"; } else if (visen == "direct") { var vis = - 'mail'; + 'mail'; var can_rt = "hide"; } if (toot.account.acct == localStorage.getItem("user_" + acct_id)) { var if_mine = ""; - var mine_via="type-b"; + var mine_via = "type-b"; } else { var if_mine = "hide"; - var mine_via=""; + var mine_via = ""; } if (toot.favourited) { var if_fav = " yellow-text"; @@ -708,104 +723,104 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { var avatar = toot.account.avatar_static; } //ワードミュート - if(wordmute){ - Object.keys(wordmute).forEach(function(key8) { + if (wordmute) { + Object.keys(wordmute).forEach(function (key8) { var worde = wordmute[key8]; - if(worde){ - if(worde.tag){ - var word=worde.tag; - }else{ - var word=worde + if (worde) { + if (worde.tag) { + var word = worde.tag; + } else { + var word = worde } - var regExp = new RegExp( word, "g" ) ; - if($.strip_tags(content).match(regExp)){ + var regExp = new RegExp(word, "g"); + if ($.strip_tags(content).match(regExp)) { boostback = "hide by_filter"; } } }); } //ワード強調 - if(wordemp){ - Object.keys(wordemp).forEach(function(key9) { + if (wordemp) { + Object.keys(wordemp).forEach(function (key9) { var word = wordemp[key9]; - if(word){ - var word=word.tag; - var regExp = new RegExp( word, "g" ) ; - content=content.replace(regExp,''+word+""); + if (word) { + var word = word.tag; + var regExp = new RegExp(word, "g"); + content = content.replace(regExp, '' + word + ""); } }); } //日本語じゃない - if(toot.language!=lang.language && toot.language){ - var trans=''; - }else{ - var trans=""; + if (toot.language != lang.language && toot.language) { + var trans = ''; + } else { + var trans = ""; } //Cards if (!card && toot.card) { - var cards=toot.card; - if (cards.provider_name=="Twitter"){ - if(cards.image){ - var twiImg='
    '; - }else{ - var twiImg=''; - } - analyze=''; + var cards = toot.card; + if (cards.provider_name == "Twitter") { + if (cards.image) { + var twiImg = '
    '; + } else { + var twiImg = ''; } - if (cards.title) { - analyze="URL"+lang.lang_cards_check+":
    Title:" + escapeHTML(cards.title) + "
    " + - escapeHTML(cards.description) + "
    "; - } - if (cards.html) { - analyze=cards.html+'picture_in_picture_alt'; - } - + analyze = ''; + } + if (cards.title) { + analyze = "URL" + lang.lang_cards_check + ":
    Title:" + escapeHTML(cards.title) + "
    " + + escapeHTML(cards.description) + "
    "; + } + if (cards.html) { + analyze = cards.html + 'picture_in_picture_alt'; + } + } //Ticker - var tickerdom=""; - if(ticker){ - var tickerdata=localStorage.getItem("ticker") - if(tickerdata){ - var tickerdata=JSON.parse(tickerdata); - - var thisdomain=toot.account.acct.split("@"); - if(thisdomain.length>1){ - thisdomain=thisdomain[1]; - } - for( var i=0; i '+escapeHTML(value.name)+'
    '; - break; + var tickerdom = ""; + if (ticker) { + var tickerdata = localStorage.getItem("ticker") + if (tickerdata) { + var tickerdata = JSON.parse(tickerdata); + + var thisdomain = toot.account.acct.split("@"); + if (thisdomain.length > 1) { + thisdomain = thisdomain[1]; } - } - } + for (var i = 0; i < tickerdata.length; i++) { + var value = tickerdata[i]; + if (value.domain == thisdomain) { + var tickerdom = '
    ' + escapeHTML(value.name) + '
    '; + break; + } + } + } } //Quote - if(toot.quote){ - poll=poll+'
    '+escapeHTML(toot.quote.account.display_name)+'
    '+toot.quote.content+'
    ' + if (toot.quote) { + poll = poll + '
    ' + escapeHTML(toot.quote.account.display_name) + '
    ' + toot.quote.content + '
    ' } templete = templete + '
    ' + + ' ' + hasmedia + ' ' + animecss + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[ + key].created_at, 'unix') + '" ' + if_notf + ' onmouseover="mov(\'' + toot.id + '\',\'' + tlid + '\',\'mv\')" onclick="mov(\'' + toot.id + '\',\'' + tlid + '\',\'cl\')" onmouseout="resetmv(\'mv\')">' + '
    ' + notice + home + '
    ' + '
    ' + ''+noticeavatar+'
    ' + + '">' + noticeavatar + '
    ' + '
    ' + dis_name + ' @' + toot.account.acct + locked + '
    ' + '
    ' + + '(' + lang.lang_parse_clickcopyurl + ')">' + date(toot.created_at, datetype) + '' + '
    ' + - '
    '+tickerdom+'' + tickerdom + '' + spoil + "" + spoiler_show + '' + content + '' + poll + @@ -813,44 +828,44 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { '
    ' + analyze + '' + '' + mentions + tags + '
    ' + - '
    '+ - '
    ' + - '
    '+vis+'
    '+ - '' + - '' + - '
    ' + + '' + trans + + 'via ' + via + - ''+ - '
    ' + - '' + + '' + + '
    ' + ''; }); @@ -865,67 +880,67 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { function userparse(obj, auth, acct_id, tlid, popup) { //独自ロケール var locale = localStorage.getItem("locale"); - if(locale=="yes"){ - var locale=false; + if (locale == "yes") { + var locale = false; } var templete = ''; var datetype = localStorage.getItem("datetype"); - Object.keys(obj).forEach(function(key) { + Object.keys(obj).forEach(function (key) { var toot = obj[key]; - console.log(toot) - if(!toot.username){ - var raw=toot; - toot=toot.account; - var notf=true; - }else{ - var notf=false; + console.log(["Parsing", toot]) + if (!toot.username) { + var raw = toot; + toot = toot.account; + var notf = true; + } else { + var notf = false; } if (toot.locked) { var locked = ' '; } else { var locked = ""; } - if (auth) { + if (auth == "request") { var authhtml = 'person_add person_add_disabled'; } else { var authhtml = ""; } - var ftxt=lang.lang_parse_followed; - if(!locale && localStorage.getItem("followlocale_" + acct_id)){ + var ftxt = lang.lang_parse_followed; + if (!locale && localStorage.getItem("followlocale_" + acct_id)) { ftxt = localStorage.getItem("followlocale_" + acct_id); } - if(popup > 0 || popup==-1 || notf){ - var notftext=ftxt+'
    '; - }else{ - var notftext=""; + if (popup > 0 || popup == -1 || notf) { + var notftext = ftxt + '
    '; + } else { + var notftext = ""; } var memory = localStorage.getItem("notice-mem"); - if (popup >= 0 && obj.length < 5 && notftext != memory) { - Materialize.toast(escapeHTML(toot.display_name)+":"+ftxt, popup * 1000); - $(".notf-icon_" + tlid).addClass("red-text"); - localStorage.setItem("notice-mem", notftext); - notftext = ""; - var native=localStorage.getItem("nativenotf"); - if(!native){ - native="yes"; + if (popup >= 0 && obj.length < 5 && notftext != memory) { + Materialize.toast(escapeHTML(toot.display_name) + ":" + ftxt, popup * 1000); + $(".notf-icon_" + tlid).addClass("red-text"); + localStorage.setItem("notice-mem", notftext); + notftext = ""; + var native = localStorage.getItem("nativenotf"); + if (!native) { + native = "yes"; } - if(native=="yes"){ + if (native == "yes") { var electron = require("electron"); var ipc = electron.ipcRenderer; var os = electron.remote.process.platform; var options = { - body: toot.display_name+"(" + toot.acct +")"+ftxt, + body: toot.display_name + "(" + toot.acct + ")" + ftxt, icon: toot.avatar - }; - var domain = localStorage.getItem("domain_" + acct_id); - if(os=="darwin"){ - var n = new Notification('TheDesk:'+domain, options); - }else{ + }; + var domain = localStorage.getItem("domain_" + acct_id); + if (os == "darwin") { + var n = new Notification('TheDesk:' + domain, options); + } else { ipc.send('native-notf', [ - 'TheDesk:'+domain, - toot.display_name+"(" + toot.acct +")"+ftxt, + 'TheDesk:' + domain, + toot.display_name + "(" + toot.acct + ")" + ftxt, toot.avatar, "userdata", acct_id, @@ -933,56 +948,56 @@ function userparse(obj, auth, acct_id, tlid, popup) { ]); } } - } - if(toot.display_name){ - var dis_name=escapeHTML(toot.display_name); - }else{ - var dis_name=toot.username; - } - //ネイティブ通知 - - if(toot.emojis){ - var actemojick = toot.emojis[0]; - }else{ - var actemojick=false; } - //絵文字があれば - if (actemojick) { - Object.keys(toot.emojis).forEach(function(key5) { - var emoji = toot.emojis[key5]; - var shortcode = emoji.shortcode; - var emoji_url = ' :'+shortcode+': '; - var regExp = new RegExp(":" + shortcode + ":", "g"); - dis_name = dis_name.replace(regExp, emoji_url); - }); - } - if(dis_name){ - dis_name=twemoji.parse(dis_name); - } - if(toot.avatar){ - var avatar=toot.avatar; - }else{ - var avatar="../../img/missing.svg"; - } - + if (toot.display_name) { + var dis_name = escapeHTML(toot.display_name); + } else { + var dis_name = toot.username; + } + //ネイティブ通知 + + if (toot.emojis) { + var actemojick = toot.emojis[0]; + } else { + var actemojick = false; + } + //絵文字があれば + if (actemojick) { + Object.keys(toot.emojis).forEach(function (key5) { + var emoji = toot.emojis[key5]; + var shortcode = emoji.shortcode; + var emoji_url = ' :' + shortcode + ': '; + var regExp = new RegExp(":" + shortcode + ":", "g"); + dis_name = dis_name.replace(regExp, emoji_url); + }); + } + if (dis_name) { + dis_name = twemoji.parse(dis_name); + } + if (toot.avatar) { + var avatar = toot.avatar; + } else { + var avatar = "../../img/missing.svg"; + } + templete = templete + '
    ' + notftext + '
    ' + + .acct + '">
    ' + '
    ' + dis_name + '' + ' @' + - toot.acct + locked +'' + + toot.acct + locked + '' + '
    ' + '
    ' + '
    Follows:' + toot.following_count + '
    Followers:' + toot.followers_count + - '
    ' + authhtml+ + '
    ' + authhtml + '' + '' + ''; @@ -992,61 +1007,61 @@ function userparse(obj, auth, acct_id, tlid, popup) { } //クライアントダイアログ function client(name) { - if(name!="Unknown"){ - //聞く - var electron = require("electron"); - var remote=electron.remote; - var dialog=remote.dialog; - const options = { - type: 'info', - title: lang.lang_parse_clientop, - message: name+lang.lang_parse_clienttxt, - buttons: [lang.lang_parse_clientno,lang.lang_parse_clientemp, lang.lang_parse_clientmute] - } - dialog.showMessageBox(options, function(arg) { - if(arg===1){ - var cli = localStorage.getItem("client_emp"); - var obj = JSON.parse(cli); - if(!obj){ - var obj=[]; - obj.push(name); - Materialize.toast(escapeHTML(name)+lang.lang_status_emphas, 2000); - }else{ - var can; - Object.keys(obj).forEach(function(key) { - var cliT = obj[key]; - if(cliT!=name && !can){ - can=false; - }else{ - can=true; - obj.splice(key, 1); - Materialize.toast(escapeHTML(name)+lang.lang_status_unemphas, 2000); + if (name != "Unknown") { + //聞く + var electron = require("electron"); + var remote = electron.remote; + var dialog = remote.dialog; + const options = { + type: 'info', + title: lang.lang_parse_clientop, + message: name + lang.lang_parse_clienttxt, + buttons: [lang.lang_parse_clientno, lang.lang_parse_clientemp, lang.lang_parse_clientmute] + } + dialog.showMessageBox(options, function (arg) { + if (arg === 1) { + var cli = localStorage.getItem("client_emp"); + var obj = JSON.parse(cli); + if (!obj) { + var obj = []; + obj.push(name); + Materialize.toast(escapeHTML(name) + lang.lang_status_emphas, 2000); + } else { + var can; + Object.keys(obj).forEach(function (key) { + var cliT = obj[key]; + if (cliT != name && !can) { + can = false; + } else { + can = true; + obj.splice(key, 1); + Materialize.toast(escapeHTML(name) + lang.lang_status_unemphas, 2000); + } + }); + if (!can) { + obj.push(name); + Materialize.toast(escapeHTML(name) + lang.lang_status_emphas, 2000); + } else { + + } + } + var json = JSON.stringify(obj); + localStorage.setItem("client_emp", json); + } else if (arg === 2) { + var cli = localStorage.getItem("client_mute"); + var obj = JSON.parse(cli); + if (!obj) { + obj = []; } - }); - if(!can){ obj.push(name); - Materialize.toast(escapeHTML(name)+lang.lang_status_emphas, 2000); - }else{ - + var json = JSON.stringify(obj); + localStorage.setItem("client_mute", json); + Materialize.toast(escapeHTML(name) + lang.lang_parse_mute, 2000); + } else { + return; } - } - var json = JSON.stringify(obj); - localStorage.setItem("client_emp", json); - }else if(arg===2){ - var cli = localStorage.getItem("client_mute"); - var obj = JSON.parse(cli); - if(!obj){ - obj=[]; - } - obj.push(name); - var json = JSON.stringify(obj); - localStorage.setItem("client_mute", json); - Materialize.toast(escapeHTML(name)+lang.lang_parse_mute, 2000); - }else{ - return; - } - parseColumn(); - }) - -} + parseColumn(); + }) + + } } \ No newline at end of file diff --git a/app/js/tl/poll.js b/app/js/tl/poll.js index 8803a10c..0340c853 100644 --- a/app/js/tl/poll.js +++ b/app/js/tl/poll.js @@ -1,17 +1,17 @@ //アンケートのトグル function pollToggle() { - if ($("#poll").hasClass("hide")) { + if ($("#poll").hasClass("hide")) { $("#right-side").show() - $("#poll").removeClass("hide") - } else { + $("#poll").removeClass("hide") + } else { $("#right-side").hide() $("#emoji").addClass("hide") - $("#poll").addClass("hide") - } + $("#poll").addClass("hide") + } } -function pollProviderCk(){ +function pollProviderCk() { $(".poll-provider").addClass("hide"); - $("#"+$("#poll-sel").val()).removeClass("hide"); + $("#" + $("#poll-sel").val()).removeClass("hide"); } /* function pollAddtime(num){ @@ -21,99 +21,98 @@ function pollAddtime(num){ pollCalc(); } */ -function pollCalc(){ - var days=$("#days_poll").val(); - var hrs=$("#hours_poll").val(); - var mins=$("#mins_poll").val(); - console.log(days*86400+hrs*3600+mins*60) - return days*86400+hrs*3600+mins*60; +function pollCalc() { + var days = $("#days_poll").val(); + var hrs = $("#hours_poll").val(); + var mins = $("#mins_poll").val(); + console.log("Poll calc:" + days * 86400 + hrs * 3600 + mins * 60) + return days * 86400 + hrs * 3600 + mins * 60; } //Vote -function voteSelMastodon(acct_id,id,to,mul){ - console.log('.vote_'+acct_id+'_'+id+'_'+to); - if($('.vote_'+acct_id+'_'+id+'_'+to).hasClass("sel")){ - $('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","transparent") - $('.vote_'+acct_id+'_'+id+'_'+to).removeClass("sel"); - }else{ - if(!mul){ - $('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) { - if(i==to){ - $(this).css("background-color","var(--emphasized)"); +function voteSelMastodon(acct_id, id, to, mul) { + if ($('.vote_' + acct_id + '_' + id + '_' + to).hasClass("sel")) { + $('.vote_' + acct_id + '_' + id + '_' + to).css("background-color", "transparent") + $('.vote_' + acct_id + '_' + id + '_' + to).removeClass("sel"); + } else { + if (!mul) { + $('.vote_' + acct_id + '_' + id + ' div').each(function (i, elem) { + if (i == to) { + $(this).css("background-color", "var(--emphasized)"); $(this).addClass("sel"); - }else{ - $(this).css("background-color","transparent") + } else { + $(this).css("background-color", "transparent") $(this).removeClass("sel"); } }); - }else{ - $('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","var(--emphasized)") - $('.vote_'+acct_id+'_'+id+'_'+to).addClass("sel"); + } else { + $('.vote_' + acct_id + '_' + id + '_' + to).css("background-color", "var(--emphasized)") + $('.vote_' + acct_id + '_' + id + '_' + to).addClass("sel"); } } - + } -function voteMastodon(acct_id,id){ - var choice=[]; - $('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) { - if($(this).hasClass("sel")){ - choice.push(i+""); +function voteMastodon(acct_id, id) { + var choice = []; + $('.vote_' + acct_id + '_' + id + ' div').each(function (i, elem) { + if ($(this).hasClass("sel")) { + choice.push(i + ""); } }); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/polls/"+id+"/votes"; - if(localStorage.getItem("mode_" + domain)=="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/polls/" + id + "/votes"; + if (localStorage.getItem("mode_" + domain) == "misskey") { return false; } - var httpreq = new XMLHttpRequest(); - httpreq.open('POST', start, true); + var httpreq = new XMLHttpRequest(); + httpreq.open('POST', start, true); httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; - httpreq.send(JSON.stringify({choices:choice})); - httpreq.onreadystatechange = function() { - voteMastodonrefresh(acct_id,id) - } + httpreq.send(JSON.stringify({ choices: choice })); + httpreq.onreadystatechange = function () { + voteMastodonrefresh(acct_id, id) + } } -function showResult(acct_id,id){ - $('.vote_'+acct_id+'_'+id+'_result').toggleClass("hide") +function showResult(acct_id, id) { + $('.vote_' + acct_id + '_' + id + '_result').toggleClass("hide") } -function voteMastodonrefresh(acct_id,id){ +function voteMastodonrefresh(acct_id, id) { var datetype = localStorage.getItem("datetype"); if (!datetype) { - datetype = "absolute"; - } + datetype = "absolute"; + } var httpreqd = new XMLHttpRequest(); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/polls/"+id; - httpreqd.open('GET', start, true); - httpreqd.setRequestHeader('Content-Type', 'application/json'); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/polls/" + id; + httpreqd.open('GET', start, true); + httpreqd.setRequestHeader('Content-Type', 'application/json'); httpreqd.responseType = 'json'; - httpreqd.send(JSON.stringify({i:at,noteId:id})); - httpreqd.onreadystatechange = function() { - if (httpreqd.readyState == 4) { + httpreqd.send(JSON.stringify({ i: at, noteId: id })); + httpreqd.onreadystatechange = function () { + if (httpreqd.readyState == 4) { var json = httpreqd.response; - console.log(json); - if(!json){ + console.log(["Refresh vote", json]); + if (!json) { return false; } - var poll=""; - var choices=json.options; - var myvote=lang.lang_parse_voted; - var result_hide=""; - Object.keys(choices).forEach(function(keyc) { - var choice = choices[keyc]; - if(!json.voted){ - votesel='voteSelMastodon(\''+acct_id+'\',\''+json.id+'\','+keyc+','+json.multiple+')'; - } - poll=poll+'
    '+escapeHTML(choice.title)+'('+choice.votes_count+')
    '; - }); - poll=poll+myvote+'' + - date(json.expires_at, datetype) + ''; - $('.vote_'+acct_id+'_'+json.id).html(poll) - } - } + var poll = ""; + var choices = json.options; + var myvote = lang.lang_parse_voted; + var result_hide = ""; + Object.keys(choices).forEach(function (keyc) { + var choice = choices[keyc]; + if (!json.voted) { + votesel = 'voteSelMastodon(\'' + acct_id + '\',\'' + json.id + '\',' + keyc + ',' + json.multiple + ')'; + } + poll = poll + '
    ' + escapeHTML(choice.title) + '(' + choice.votes_count + ')
    '; + }); + poll = poll + myvote + '' + + date(json.expires_at, datetype) + ''; + $('.vote_' + acct_id + '_' + json.id).html(poll) + } + } } \ No newline at end of file diff --git a/app/js/tl/speech.js b/app/js/tl/speech.js index 87f9df11..a1f86c9e 100644 --- a/app/js/tl/speech.js +++ b/app/js/tl/speech.js @@ -1,39 +1,38 @@ -$voise = null; - $voiseName = lang.lang_speech; - $voices = speechSynthesis.getVoices(); - $synthes = new SpeechSynthesisUtterance(); - $voise = $.grep($voices, function(n, i){return n.name == $voiseName})[0]; - $synthes.voice = $voise; // 音声の設定 - localStorage.removeItem("voicebank"); - speechSynthesis.cancel() - if(!localStorage.getItem("voice_vol")){ - localStorage.setItem("voice_vol",1) - } - $synthes.rate=localStorage.getItem("voice_speed"); - $synthes.pitch=localStorage.getItem("voice_pitch"); - $synthes.volume=localStorage.getItem("voice_vol"); -function say(msgr){ - msg=voiceParse(msgr); - var voice=localStorage.getItem("voicebank"); - var obj = JSON.parse(voice); - if(!obj){ - var json = JSON.stringify([msg]); - localStorage.setItem("voicebank", json); - }else{ - obj.push([msg]); - var json = JSON.stringify(obj); - localStorage.setItem("voicebank", json); - } - +$voise = null; +$voiseName = lang.lang_speech; +$voices = speechSynthesis.getVoices(); +$synthes = new SpeechSynthesisUtterance(); +$voise = $.grep($voices, function (n, i) { return n.name == $voiseName })[0]; +$synthes.voice = $voise; // 音声の設定 +localStorage.removeItem("voicebank"); +speechSynthesis.cancel() +if (!localStorage.getItem("voice_vol")) { + localStorage.setItem("voice_vol", 1) } -$repeat = setInterval(function() { - if(!speechSynthesis.speaking){ - var voice=localStorage.getItem("voicebank"); - if(voice){ +$synthes.rate = localStorage.getItem("voice_speed"); +$synthes.pitch = localStorage.getItem("voice_pitch"); +$synthes.volume = localStorage.getItem("voice_vol"); +function say(msgr) { + msg = voiceParse(msgr); + var voice = localStorage.getItem("voicebank"); + var obj = JSON.parse(voice); + if (!obj) { + var json = JSON.stringify([msg]); + localStorage.setItem("voicebank", json); + } else { + obj.push([msg]); + var json = JSON.stringify(obj); + localStorage.setItem("voicebank", json); + } + +} +$repeat = setInterval(function () { + if (!speechSynthesis.speaking) { + var voice = localStorage.getItem("voicebank"); + if (voice) { var obj = JSON.parse(voice); - if(obj[0]){ - $synthes.text = obj[0]; - console.log($synthes); + if (obj[0]) { + $synthes.text = obj[0]; speechSynthesis.speak($synthes); obj.splice(0, 1); var json = JSON.stringify(obj); @@ -42,68 +41,68 @@ $repeat = setInterval(function() { } } }, 300); -function voiceParse(msg){ +function voiceParse(msg) { msg = $.strip_tags(msg); msg = msg.replace(/#/g, ""); msg = msg.replace(/'/g, ""); msg = msg.replace(/"/g, ""); msg = msg.replace(/https?:\/\/[a-zA-Z0-9./-@_=?%&-]+/g, ""); - return msg; + return msg; } function voiceToggle(tlid) { - var voiceck = localStorage.getItem("voice_" + tlid); - if (voiceck) { + var voiceck = localStorage.getItem("voice_" + tlid); + if (voiceck) { localStorage.removeItem("voice_" + tlid); speechSynthesis.cancel() - $("#sta-voice-" + tlid).text("Off"); - $("#sta-voice-" + tlid).css("color",'red'); + $("#sta-voice-" + tlid).text("Off"); + $("#sta-voice-" + tlid).css("color", 'red'); parseColumn(); - } else { - localStorage.setItem("voice_" + tlid, "true"); - $("#sta-voice-" + tlid).text("On"); - $("#sta-voice-" + tlid).css("color",'#009688'); - parseColumn(); - } + } else { + localStorage.setItem("voice_" + tlid, "true"); + $("#sta-voice-" + tlid).text("On"); + $("#sta-voice-" + tlid).css("color", '#009688'); + parseColumn(); + } } function voiceCheck(tlid) { var voiceck = localStorage.getItem("voice_" + tlid); - if (voiceck) { - $("#sta-voice-" + tlid).text("On"); - $("#sta-voice-" + tlid).css("color",'#009688'); - } else { - $("#sta-voice-" + tlid).text("Off"); - $("#sta-voice-" + tlid).css("color",'red'); - } + if (voiceck) { + $("#sta-voice-" + tlid).text("On"); + $("#sta-voice-" + tlid).css("color", '#009688'); + } else { + $("#sta-voice-" + tlid).text("Off"); + $("#sta-voice-" + tlid).css("color", 'red'); + } } -function voicePlay(){ - if(speechSynthesis.speaking){ +function voicePlay() { + if (speechSynthesis.speaking) { speechSynthesis.cancel() - }else{ - $synthes.text = $("#voicetxt").val(); - $synthes.rate = $("#voicespeed").val()/10; - $synthes.pitch = $("#voicepitch").val()/50; - $synthes.volume = $("#voicevol").val()/100; + } else { + $synthes.text = $("#voicetxt").val(); + $synthes.rate = $("#voicespeed").val() / 10; + $synthes.pitch = $("#voicepitch").val() / 50; + $synthes.volume = $("#voicevol").val() / 100; speechSynthesis.speak($synthes); } } -function voiceSettings(){ - localStorage.setItem("voice_speed", $("#voicespeed").val()/10); - localStorage.setItem("voice_pitch", $("#voicepitch").val()/50); - localStorage.setItem("voice_vol", $("#voicevol").val()/100); +function voiceSettings() { + localStorage.setItem("voice_speed", $("#voicespeed").val() / 10); + localStorage.setItem("voice_pitch", $("#voicepitch").val() / 50); + localStorage.setItem("voice_vol", $("#voicevol").val() / 100); Materialize.toast(lang.lang_speech_refresh, 3000); } -function voiceSettingLoad(){ - var speed=localStorage.getItem("voice_speed"); - var pitch=localStorage.getItem("voice_pitch"); - var vol=localStorage.getItem("voice_vol"); - if(speed){ - $("#voicespeed").val(speed*10); +function voiceSettingLoad() { + var speed = localStorage.getItem("voice_speed"); + var pitch = localStorage.getItem("voice_pitch"); + var vol = localStorage.getItem("voice_vol"); + if (speed) { + $("#voicespeed").val(speed * 10); } - if(pitch){ - $("#voicepitch").val(pitch*50); + if (pitch) { + $("#voicepitch").val(pitch * 50); } - if(vol){ - $("#voicevol").val(vol*100); + if (vol) { + $("#voicevol").val(vol * 100); } } \ No newline at end of file diff --git a/app/js/tl/src.js b/app/js/tl/src.js index f788afe7..e3b980cc 100644 --- a/app/js/tl/src.js +++ b/app/js/tl/src.js @@ -4,7 +4,7 @@ function searchMenu() { $("#left-menu div").removeClass("active"); $("#searchMenu").addClass("active"); $(".menu-content").addClass("hide"); - $("#src-box").removeClass("hide"); + $("#src-box").removeClass("hide"); $('ul.tabs').tabs('select_tab', 'src-sta'); $("#src-contents").html(""); } @@ -14,187 +14,178 @@ function src(mode) { $("#src-contents").html(""); var q = $("#src").val(); var acct_id = $("#src-acct-sel").val(); - if(acct_id=="tootsearch"){ + if (acct_id == "tootsearch") { tsAdd(q) return false; } localStorage.setItem("last-use", acct_id); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var m = q.match(/^#(.+)$/); - if(m){q=m[1];} + if (m) { q = m[1]; } if (user == "--now") { var user = $('#his-data').attr("user-id"); } - if(!mode){ + if (!mode) { var start = "https://" + domain + "/api/v2/search?q=" + q - }else{ + } else { var start = "https://" + domain + "/api/v1/search?q=" + q } - console.log(start) + console.log("Try to search at " + start) fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { src("v1") return false; - }).then(function(json) { - console.log(json); + }).then(function (json) { + console.log(["Search", json]); //ハッシュタグ if (json.hashtags[0]) { var tags = ""; - Object.keys(json.hashtags).forEach(function(key4) { + Object.keys(json.hashtags).forEach(function (key4) { var tag = json.hashtags[key4]; - if(mode){ + if (mode) { tags = tags + '#' + escapeHTML(tag) + '
    '; - }else{ - tags=tags+graphDraw(tag); + '\',\'add\')" class="pointer">#' + escapeHTML(tag) + '
    '; + } else { + tags = tags + graphDraw(tag); } - + }); $("#src-contents").append("Tags
    " + tags); } //トゥート if (json.statuses[0]) { - var templete = parse(json.statuses,'',acct_id); + var templete = parse(json.statuses, '', acct_id); $("#src-contents").append("Mentions
    " + templete); } //アカウント if (json.accounts[0]) { - var templete = userparse(json.accounts,'',acct_id); + var templete = userparse(json.accounts, '', acct_id); $("#src-contents").append("Accounts
    " + templete); } jQuery("time.timeago").timeago(); }); } -function tsAdd(q){ - var add = { - domain: acct_id, - type: "tootsearch", - data: q - }; - var multi = localStorage.getItem("column"); - var obj = JSON.parse(multi); - localStorage.setItem("card_" + obj.length,"true"); - obj.push(add); - console.log(obj); - var json = JSON.stringify(obj); - localStorage.setItem("column", json); - parseColumn(); +function tsAdd(q) { + var add = { + domain: acct_id, + type: "tootsearch", + data: q + }; + var multi = localStorage.getItem("column"); + var obj = JSON.parse(multi); + localStorage.setItem("card_" + obj.length, "true"); + obj.push(add); + var json = JSON.stringify(obj); + localStorage.setItem("column", json); + parseColumn(); } -function tootsearch(tlid,q){ +function tootsearch(tlid, q) { var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q - console.log(start) - $("#notice_" + tlid).text("tootsearch("+q+")"); + console.log("Toot srrach at " + start) + $("#notice_" + tlid).text("tootsearch(" + q + ")"); $("#notice_icon_" + tlid).text("search"); fetch(start, { method: 'GET', headers: { 'content-type': 'application/json' }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(raw) { - var templete=""; - var json=raw.hits.hits; - console.log(json); - var max_id = raw["hits"].length; - for(var i=0;i'; - } - $("#timeline_" + tlid).html(templete); - - jQuery("time.timeago").timeago(); - }); -} -function moreTs(tlid,q){ - var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid"); - moreloading=true; - var start = "https://tootsearch.chotto.moe/api/v1/search?from="+sid+"&sort=created_at%3Adesc&q=" + q - console.log(start) - $("#notice_" + tlid).text("tootsearch("+q+")"); - $("#notice_icon_" + tlid).text("search"); - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json' - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(raw) { - var templete=""; - var json=raw.hits.hits; - console.log(json); - var max_id = raw["hits"].length; - for(var i=0;i'; - } - $("#timeline_" + tlid).append(templete); - - jQuery("time.timeago").timeago(); - }); -} -function graphDraw(tag){ - var tags=""; - var his=tag.history; - console.log(his); - var max=Math.max.apply(null, [his[0].uses,his[1].uses,his[2].uses,his[3].uses,his[4].uses,his[5].uses,his[6].uses]); - var six=50-(his[6].uses/max*50); - var five=50-(his[5].uses/max*50); - var four=50-(his[4].uses/max*50); - var three=50-(his[3].uses/max*50); - var two=50-(his[2].uses/max*50); - var one=50-(his[1].uses/max*50); - var zero=50-(his[0].uses/max*50); - if(max===0){ - tags = '

    '+ - ''+his[0].uses+'toots #' + escapeHTML(tag.name) + ' '+his[0].accounts+lang.lang_src_people; - }else{ - tags = '

    '+ - ''+ - ''+his[0].uses+'toots #' + escapeHTML(tag.name) + ' '+his[0].accounts+lang.lang_src_people; + var lastid = toot.uri; } - + if (!templete) { + templete = lang.lang_details_nodata; + } else { + templete = templete + '
    '; + } + $("#timeline_" + tlid).html(templete); + + jQuery("time.timeago").timeago(); + }); +} +function moreTs(tlid, q) { + var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid"); + moreloading = true; + var start = "https://tootsearch.chotto.moe/api/v1/search?from=" + sid + "&sort=created_at%3Adesc&q=" + q + $("#notice_" + tlid).text("tootsearch(" + q + ")"); + $("#notice_icon_" + tlid).text("search"); + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json' + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (raw) { + var templete = ""; + var json = raw.hits.hits; + var max_id = raw["hits"].length; + for (var i = 0; i < json.length; i++) { + var toot = json[i]["_source"]; + if (lastid != toot.uri) { + if (toot && toot.account) { + templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch") + } + } + var lastid = toot.uri; + } + if (!templete) { + templete = lang.lang_details_nodata; + } else { + templete = templete + '
    '; + } + $("#timeline_" + tlid).append(templete); + + jQuery("time.timeago").timeago(); + }); +} +function graphDraw(tag) { + var tags = ""; + var his = tag.history; + var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]); + var six = 50 - (his[6].uses / max * 50); + var five = 50 - (his[5].uses / max * 50); + var four = 50 - (his[4].uses / max * 50); + var three = 50 - (his[3].uses / max * 50); + var two = 50 - (his[2].uses / max * 50); + var one = 50 - (his[1].uses / max * 50); + var zero = 50 - (his[0].uses / max * 50); + if (max === 0) { + tags = '

    ' + + '' + his[0].uses + 'toots #' + escapeHTML(tag.name) + ' ' + his[0].accounts + lang.lang_src_people; + } else { + tags = '

    ' + + '' + + '' + his[0].uses + 'toots #' + escapeHTML(tag.name) + ' ' + his[0].accounts + lang.lang_src_people; + } + return tags; } /* diff --git a/app/js/tl/tag.js b/app/js/tl/tag.js index 0c7eda77..d5f8240c 100644 --- a/app/js/tl/tag.js +++ b/app/js/tl/tag.js @@ -1,35 +1,35 @@ //タグ表示 -if(location.search){ - var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode=m[1]; - var codex=m[2]; - if(mode=="tag"){ - var acct_id=localStorage.getItem("main"); - tl('tag',decodeURI(codex),acct_id,'add'); - } +if (location.search) { + var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); + var mode = m[1]; + var codex = m[2]; + if (mode == "tag") { + var acct_id = localStorage.getItem("main"); + tl('tag', decodeURI(codex), acct_id, 'add'); + } } //よく使うタグ -function tagShow(tag){ - $("[data-tag="+decodeURI(tag)+"]").toggleClass("hide"); +function tagShow(tag) { + $("[data-tag=" + decodeURI(tag) + "]").toggleClass("hide"); } //タグ追加 -function tagPin(tag){ +function tagPin(tag) { var tags = localStorage.getItem("tag"); - if(!tags){ - var obj=[]; - }else{ + if (!tags) { + var obj = []; + } else { var obj = JSON.parse(tags); } var can; - Object.keys(obj).forEach(function(key) { + Object.keys(obj).forEach(function (key) { var tagT = obj[key]; - if(tagT==tag){ - can=true; - }else{ - can=false; + if (tagT == tag) { + can = true; + } else { + can = false; } }); - if(!can){ + if (!can) { obj.push(tag); } var json = JSON.stringify(obj); @@ -45,87 +45,86 @@ function tagRemove(key) { localStorage.setItem("tag", json); favTag(); } -function favTag(){ +function favTag() { $("#taglist").html(""); var tagarr = localStorage.getItem("tag"); - if(!tagarr){ - var obj=[]; - }else{ + if (!tagarr) { + var obj = []; + } else { var obj = JSON.parse(tagarr); } - var tags=""; - var nowPT=localStorage.getItem("stable") - Object.keys(obj).forEach(function(key) { + var tags = ""; + var nowPT = localStorage.getItem("stable") + Object.keys(obj).forEach(function (key) { var tag = obj[key]; - if(nowPT!=tag){ - console.log(nowPT+"/"+tag); - var ptt=lang.lang_tags_realtime; - var nowon=""; - }else{ - var ptt=lang.lang_tags_unrealtime; - var nowon="("+lang.lang_tags_realtime+")"; + if (nowPT != tag) { + console.log("stable tags:" + nowPT + "/" + tag); + var ptt = lang.lang_tags_realtime; + var nowon = ""; + } else { + var ptt = lang.lang_tags_unrealtime; + var nowon = "(" + lang.lang_tags_realtime + ")"; } - tag=escapeHTML(tag); - tags = tags + '#' + tag + ''+nowon+' TL Toot '+ - ''+ptt+' '+lang.lang_del+' '; + tag = escapeHTML(tag); + tags = tags + '#' + tag + '' + nowon + ' TL Toot ' + + '' + ptt + ' ' + lang.lang_del + ' '; }); - if(obj.length>0){ + if (obj.length > 0) { $("#taglist").append("My Tags:" + tags); - }else{ + } else { $("#taglist").append(""); } } -function trendTag(){ +function trendTag() { $(".trendtag").remove(); - var domain="imastodon.net" - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var domain = "imastodon.net" + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/trend_tags" - console.log(start) - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - 'Authorization': 'Bearer ' + at - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - if (json) { - var tags=""; - json=json.score; - Object.keys(json).forEach(function(tag) { - tag=escapeHTML(tag); + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + at + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (json) { + var tags = ""; + json = json.score; + Object.keys(json).forEach(function (tag) { + tag = escapeHTML(tag); tags = tags + '#' + tag + ' TL Toot '; - }); - $("#taglist").append('
    アイマストドントレンドタグrefresh:' + tags+'
    '); - trendintervalset() - }else{ + }); + $("#taglist").append('
    アイマストドントレンドタグrefresh:' + tags + '
    '); + trendintervalset() + } else { $("#taglist").html(""); } }); - + } -function trendintervalset(){ +function trendintervalset() { setTimeout(trendTag, 6000000); } -function tagTL(a,b,c,d){ +function tagTL(a, b, c, d) { var acct_id = $("#post-acct-sel").val(); - tl(a,b,acct_id,d); + tl(a, b, acct_id, d); } -function autoToot(tag){ - tag=escapeHTML(tag) - var nowPT=localStorage.getItem("stable") - if(nowPT==tag){ +function autoToot(tag) { + tag = escapeHTML(tag) + var nowPT = localStorage.getItem("stable") + if (nowPT == tag) { localStorage.removeItem("stable"); - Materialize.toast(lang.lang_tags_unrealtime,3000); - }else{ - localStorage.setItem("stable",tag); - Materialize.toast(lang.lang_tags_tagwarn.replace("{{tag}}" ,tag).replace("{{tag}}" ,tag),3000); - brInsert('#' + tag+" ") + Materialize.toast(lang.lang_tags_unrealtime, 3000); + } else { + localStorage.setItem("stable", tag); + Materialize.toast(lang.lang_tags_tagwarn.replace("{{tag}}", tag).replace("{{tag}}", tag), 3000); + brInsert('#' + tag + " ") } favTag(); } \ No newline at end of file diff --git a/app/js/tl/tl.js b/app/js/tl/tl.js index 043c2979..534fadec 100644 --- a/app/js/tl/tl.js +++ b/app/js/tl/tl.js @@ -7,7 +7,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) { var domain = localStorage.getItem("domain_" + acct_id); //タグとかの場合はカラム追加して描画 if (tlid == "add") { - console.log("add"); + console.log("add new column"); var newtab = $(".box").length; var add = { domain: acct_id, @@ -18,7 +18,6 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) { var obj = JSON.parse(multi); localStorage.setItem("card_" + obj.length, "true"); obj.push(add); - console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("column", json); parseColumn(); @@ -125,14 +124,14 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) { }; } - console.log(start); + console.log(["Try to get timeline of " + tlid, start]) fetch(start, i).then(function (response) { return response.json(); }).catch(function (error) { todo(error); console.error(error); }).then(function (json) { - console.log(json) + console.log(["Result of getting timeline of " + tlid, json]) $("#landing_" + tlid).hide(); if (localStorage.getItem("filter_" + acct_id) != "undefined") { var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), type); @@ -213,18 +212,15 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) { var start = wss + "/api/v1/streaming/?stream=direct&access_token=" + at; } - console.log(start); var wsid = websocket.length; localStorage.setItem("wss_" + tlid, wsid); websocket[wsid] = new WebSocket(start); websocket[wsid].onopen = function (mess) { - console.log(tlid + ":Connect Streaming API:" + type); - console.log(mess); + console.table({ "tlid": tlid, "type": "Connect Streaming API" + type, "domain": domain, "message": [mess] }) $("#notice_icon_" + tlid).removeClass("red-text"); } websocket[wsid].onmessage = function (mess) { - console.log(tlid + ":Receive Streaming API:"); - console.log(JSON.parse(mess.data)); + console.log([tlid + ":Receive Streaming API:", JSON.parse(mess.data)]); if (misskey) { if (JSON.parse(mess.data).type == "note") { var obj = JSON.parse(mess.data).body; @@ -267,7 +263,6 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) { } else if (typeA == "update" || typeA == "conversation") { localStorage.removeItem("delete"); var obj = JSON.parse(JSON.parse(mess.data).payload); - console.log(obj); if ($("#timeline_" + tlid + " [toot-id=" + obj.id + "]").length < 1) { if (voice) { say(obj.content) @@ -315,8 +310,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) { return false; }; websocket[wsid].onclose = function () { - console.log("Closing"); - console.log(tlid); + console.warn("Closing " + tlid); if (mode == "error") { $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Closed'); @@ -431,7 +425,6 @@ function moreload(type, tlid) { todo(error); console.error(error); }).then(function (json) { - console.log(json); if (misskey) { var templete = misskeyParse(json, '', acct_id, tlid, "", mute); } else { @@ -447,7 +440,7 @@ function moreload(type, tlid) { } //TL差分取得 function tlDiff(type, data, acct_id, tlid, delc, voice, mode) { - console.log("sabun") + console.log("Get diff of TL" + tlid) var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); var acct_id = obj[tlid].domain; @@ -540,7 +533,7 @@ function tlDiff(type, data, acct_id, tlid, delc, voice, mode) { todo(error); console.error(error); }).then(function (json) { - console.log(json); + console.log(["Result diff of TL" + tlid, json]); if (misskey) { var templete = misskeyParse(json, '', acct_id, tlid, "", mute); } else { @@ -564,12 +557,12 @@ function tlCloser() { Object.keys(websocket).forEach(function (tlid) { if (websocketOld[tlid]) { websocketOld[tlid].close(); - console.log("Close Streaming API: Old" + tlid); + console.log("%c Close Streaming API: Old" + tlid, "color:blue"); } if (websocket[0]) { console.log(websocket[0]); websocket[tlid].close(); - console.log("Close Streaming API:" + tlid); + console.log("%c Close Streaming API:" + tlid, "color:blue"); } }); @@ -577,7 +570,7 @@ function tlCloser() { Object.keys(websocketHome).forEach(function (tlid) { if (websocketHome[tlid]) { websocketHome[tlid].close(); - console.log("Close Streaming API:MixHome" + tlid); + console.log("%c Close Streaming API:Integrated Home" + tlid, "color:blue"); } }); @@ -585,7 +578,7 @@ function tlCloser() { Object.keys(websocketLocal).forEach(function (tlid) { if (websocketLocal[tlid]) { websocketLocal[tlid].close(); - console.log("Close Streaming API:MixLocal" + tlid); + console.log("%c Close Streaming API:Integrated Local" + tlid, "color:blue"); } }); @@ -593,17 +586,17 @@ function tlCloser() { Object.keys(websocketNotf).forEach(function (tlid) { if (websocketNotf[tlid]) { websocketNotf[tlid].close(); - console.log("Close Streaming API:Notf" + tlid); + console.log("%c Close Streaming API:Notf" + tlid, "color:blue"); } }); Object.keys(misskeyws).forEach(function (tlid) { if (misskeyws[tlid]) { misskeyws[tlid].close(); - console.log("Close Streaming API:Misskey" + tlid); + console.log("%c Close Streaming API:Misskey" + tlid, "color:blue"); } }); - misskeyws={} + misskeyws = {} } //TLのタイトル @@ -789,7 +782,7 @@ function strAliveInt() { setTimeout(strAlive, 10000); } function reconnector(tlid, type, acct_id, data, mode) { - console.log("Reconnector:" + mode) + console.log("%c Reconnector:" + mode + "(timeline" + tlid + ")", "color:pink") if (type == "mix" || type == "integrated" || type == "plus") { if (localStorage.getItem("voice_" + tlid)) { var voice = true; diff --git a/app/js/ui/img.js b/app/js/ui/img.js index 8589b2c8..cefd0cda 100644 --- a/app/js/ui/img.js +++ b/app/js/ui/img.js @@ -6,25 +6,25 @@ function imgv(id, key, acct_id) { $('#imgmodal').attr('src', '../../img/loading.svg'); var murl = $("#" + id + "-image-" + key).attr("data-url"); var type = $("#" + id + "-image-" + key).attr("data-type"); - $("#imagemodal").attr("data-id",id); - $("#imagemodal").attr("data-acct",acct_id); - $(document).ready(function() { + $("#imagemodal").attr("data-id", id); + $("#imagemodal").attr("data-acct", acct_id); + $(document).ready(function () { if (type == "image") { $('#imagemodal').modal('open'); - xhr = new XMLHttpRequest; + xhr = new XMLHttpRequest; xhr.open('GET', murl, true); xhr.addEventListener('progress', function (event) { - if (event.lengthComputable) { - var total=event.total; - var now=event.loaded; - var per=now/total*100; - $("#imgprog").text(Math.floor(per)); - } + if (event.lengthComputable) { + var total = event.total; + var now = event.loaded; + var per = now / total * 100; + $("#imgprog").text(Math.floor(per)); + } }, false); xhr.addEventListener('loadend', function (event) { - var total=event.total; - var now=event.loaded; - var per=now/total*100; + var total = event.total; + var now = event.loaded; + var per = now / total * 100; $("#imgprog").text(Math.floor(per)); }, false); xhr.send(); @@ -40,38 +40,37 @@ function imgv(id, key, acct_id) { } var element = new Image(); var width; - element.onload = function() { + element.onload = function () { var width = element.naturalWidth; var height = element.naturalHeight; var windowH = $(window).height(); var windowW = $(window).width(); - $("#imagemodal").css("bottom","0") - $("#imagemodal img").css("width","auto") - if(heightwindowW*0.8){ - $("#imagemodal").css("width","80vw") - $("#imagemodal img").css("width","100%") - var heightS=windowW*0.8/width*height; - $("#imagemodal").css("height",heightS+60+"px") - }else{ - $("#imagemodal").css("width",width+"px") + $("#imagemodal").css("bottom", "0") + $("#imagemodal img").css("width", "auto") + if (height < windowH) { + $("#imagemodal").css("height", height + 60 + "px") + $("#imagemodal img").css("height", "100%") + if (width > windowW * 0.8) { + $("#imagemodal").css("width", "80vw") + $("#imagemodal img").css("width", "100%") + var heightS = windowW * 0.8 / width * height; + $("#imagemodal").css("height", heightS + 60 + "px") + } else { + $("#imagemodal").css("width", width + "px") } - }else{ - console.log("long") - $("#imagemodal img").css("width","auto") - var widthS=windowH/height*width; - if(widthSwindowW*0.8){ - $("#imagemodal").css("width","80vw") - $("#imagemodal img").css("width","100%") - var heightS=windowW*0.8/width*height; - $("#imagemodal").css("height",heightS+60+"px") - }else{ - $("#imagemodal").css("width",width+"px") - } - }else{ - console.log("long") - $("#imagemodal img").css("width","auto") - var widthS=windowH/height*width; - if(widthS windowW * 0.8) { + $("#imagemodal").css("width", "80vw") + $("#imagemodal img").css("width", "100%") + var heightS = windowW * 0.8 / width * height; + $("#imagemodal").css("height", heightS + 60 + "px") + } else { + $("#imagemodal").css("width", width + "px") + } + } else { + $("#imagemodal img").css("width", "auto") + var widthS = windowH / height * width; + if (widthS < windowW) { + $("#imagemodal").css("width", widthS + "px") + } else { + $("#imagemodal").css("width", "100vw") + } + + $("#imagemodal").css("height", "100vh") + $("#imagemodal img").css("height", "calc(100vh - 60px)") + } + } + if ($("#" + id + "-image-" + (key * 1 + 1)).length === 0) { + $("#image-next").prop("disabled", true); + } else { + $("#image-next").prop("disabled", false); + } + if ($("#" + id + "-image-" + (key * 1 - 1)).length === 0) { + $("#image-prev").prop("disabled", true); + } else { + $("#image-prev").prop("disabled", false); + } + element.src = murl; + + }); } } //ズームボタン(z:倍率) function zoom(z) { var wdth = $('#imagewrap img').width(); var wdth = wdth * z; - $('#imagewrap img').css("width", wdth+"px"); + $('#imagewrap img').css("width", wdth + "px"); var hgt = $('#imagewrap img').height(); var hgt = hgt * z; - $('#imagewrap img').css("height", hgt+"px"); + $('#imagewrap img').css("height", hgt + "px"); } //スマホ対応ドラッグ移動システム -(function() { - $.fn.dragScroll = function() { +(function () { + $.fn.dragScroll = function () { var target = this; - $(this).mousedown(function(event) { + $(this).mousedown(function (event) { $(this) .data('down', true) .data('x', event.clientX) @@ -204,7 +201,7 @@ function zoom(z) { 'cursor': 'move' }); // ウィンドウから外れてもイベント実行 - $(document).mousemove(function(event) { + $(document).mousemove(function (event) { if ($(target).data('down') == true) { // スクロール target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - @@ -213,10 +210,10 @@ function zoom(z) { event.clientY); return false; // 文字列選択を抑止 } - }).mouseup(function(event) { + }).mouseup(function (event) { $(target).data('down', false); }); - $(this).on('touchstart', function(event) { + $(this).on('touchstart', function (event) { $(this) .data('down', true) .data('x', getX(event)) @@ -228,18 +225,17 @@ function zoom(z) { 'overflow': 'hidden', // スクロールバー非表示 'cursor': 'move' }); //指が触れたか検知 - $(this).on('touchmove', function(event) { + $(this).on('touchmove', function (event) { if ($(target).data('down') === true) { // スクロール - console.log($(target).data('x')); target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - getX(event)); target.scrollTop($(target).data('scrollTop') + $(target).data('y') - getY(event)); return false; // 文字列選択を抑止 - } else {} + } else { } }); //指が動いたか検知 - $(this).on('touchend', function(event) { + $(this).on('touchend', function (event) { $(target).data('down', false); }); @@ -256,7 +252,7 @@ function getY(event) { } //マウスホイールで拡大 var element = document.getElementById("imagemodal"); -element.onmousewheel = function(e) { +element.onmousewheel = function (e) { var delta = e.wheelDelta; if (delta > 0) { zoom(1.1) @@ -266,31 +262,31 @@ element.onmousewheel = function(e) { } //当該トゥート -function detFromImg(){ - var id=$("#imagemodal").attr("data-id"); - var acct_id=$("#imagemodal").attr("data-acct"); +function detFromImg() { + var id = $("#imagemodal").attr("data-id"); + var acct_id = $("#imagemodal").attr("data-acct"); $('#imagemodal').modal('close'); - details(id,acct_id); + details(id, acct_id); } //画像保存 -function dlImg(){ - var url=$("#imgmodal").attr("src"); +function dlImg() { + var url = $("#imgmodal").attr("src"); var electron = require("electron"); var ipc = electron.ipcRenderer; - if(localStorage.getItem("savefolder")){ - var save=localStorage.getItem("savefolder"); - }else{ - var save=""; + if (localStorage.getItem("savefolder")) { + var save = localStorage.getItem("savefolder"); + } else { + var save = ""; } - ipc.send('general-dl', [url,save,false]); + ipc.send('general-dl', [url, save, false]); ipc.on('general-dl-prog', function (event, arg) { - console.log(arg); + console.log("Progress: " + arg); }) ipc.on('general-dl-message', function (event, arg) { - var argC=arg.replace(/\\/g,"\\\\")+"\\\\."; - Materialize.toast(lang.lang_img_DLDone+arg+'', 5000); + var argC = arg.replace(/\\/g, "\\\\") + "\\\\."; + Materialize.toast(lang.lang_img_DLDone + arg + '', 5000); }) } -function openFinder(dir){ +function openFinder(dir) { ipc.send('open-finder', dir); } \ No newline at end of file diff --git a/app/js/ui/layout.js b/app/js/ui/layout.js index 7338e7db..922b429e 100644 --- a/app/js/ui/layout.js +++ b/app/js/ui/layout.js @@ -11,56 +11,56 @@ function addColumnMenu() { $("#left-menu div").removeClass("active"); $("#addColumnMenu").addClass("active"); $(".menu-content").addClass("hide"); - $("#add-box").removeClass("hide"); + $("#add-box").removeClass("hide"); addselCk() } -$('.type').click(function() { +$('.type').click(function () { $(".type").removeClass("active"); $(this).addClass("active"); $("#type-sel").val($(this).attr("data-type")) }) //最初、カラム変更時に発火 function parseColumn(dontclose) { - console.log("parse"); + console.log("%c Parse column", "color:red;font-size:125%"); var size = localStorage.getItem("size"); if (size) { $("#timeline-container").css("font-size", size + "px"); $(".toot-reset").css("font-size", size + "px"); $(".cont-series").css("font-size", size + "px"); } - if(localStorage.getItem("menu-done")){ + if (localStorage.getItem("menu-done")) { $("#fukidashi").addClass("hide") } - if(!dontclose){ + if (!dontclose) { tlCloser(); } var multi = localStorage.getItem("multi"); if (multi) { var obj = JSON.parse(multi); - + var templete; - Object.keys(obj).forEach(function(key) { + Object.keys(obj).forEach(function (key) { var acct = obj[key]; localStorage.setItem("name_" + key, acct.name); localStorage.setItem("user_" + key, acct.user); localStorage.setItem("user-id_" + key, acct.id); localStorage.setItem("prof_" + key, acct.prof); localStorage.setItem("domain_" + key, acct.domain); - localStorage.setItem("acct_"+ key + "_at", acct.at); + localStorage.setItem("acct_" + key + "_at", acct.at); notf(key, 0); ckdb(key); //フィルターデータ読もう getFilter(key); var domain = localStorage.getItem("domain_" + key); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + if (localStorage.getItem("mode_" + domain) == "misskey") { localStorage.removeItem("misskey_wss_" + key) connectMisskey(key) } }); } - var acctlist=obj; - console.log(obj); + var acctlist = obj; + console.table(obj); /*var xed=localStorage.getItem("xed"); if(xed){ xpand(); @@ -79,224 +79,227 @@ function parseColumn(dontclose) { if ($("#timeline-container").length) { $("#timeline-container").html(""); } - var basekey=0; - for(var key=0;key '+ - ' '+ - ' '+ - ' '+ - ' '+ - '
    '; - }else if(acct.type=="home"){ - var exclude='Off'+lang.lang_layout_excludingbt+'
    '; - }else{ - var exclude=""; - } - if(!acct.left_fold){ - basekey=key; - var basehtml = '
    '; - $("#timeline-container").append(basehtml); - var left_hold='view_agenda'+lang.lang_layout_leftFold+'

    '; - }else{ - var left_hold='view_column'+lang.lang_layout_leftUnfold+'

    '; - } - if(key===0){ - left_hold=''; - } - if(localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct.domain))=="misskey"){ - var isMisRed="" - exclude="" - var if_misskey_hide="hide" - }else{ - var isMisRed="red-text" - var if_misskey_hide="" - } - var html='
    '+ - '
    '+exclude+left_hold+'perm_mediaOn'+lang.lang_layout_mediafil +'
    linkOn'+lang.lang_layout_linkana +'
    hearingOn'+lang.lang_layout_tts +'TL
    low_priority'+lang.lang_layout_reconnect+'
    '+lang.lang_layout_headercolor +'
    '+lang.lang_layout_nodata +'
    ' - $('#timeline_box_' + basekey + '_parentBox').append(html); - localStorage.removeItem("pool_" + key); - if (acct.data) { - var data = acct.data; + unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.data); } else { - var data = ""; - } - if(localStorage.getItem("catch_" + key)){ - var delc="true"; - }else{ - var delc="false"; - } + var width = localStorage.getItem("width"); + if (width) { + var css = " min-width:" + width + "px;" + } + var anime = localStorage.getItem("animation"); + if (anime == "yes" || !anime) { + var animecss = "box-anime"; + } else { + var animecss = ""; + } + if (acct.type == "notf") { + var exclude = lang.lang_excluded + ':
    ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + if(checkNotfFilter(key)){ + exclude=exclude+'' + } + exclude=exclude+"
    "; + } else if (acct.type == "home") { + var exclude = 'Off' + lang.lang_layout_excludingbt + '
    '; + } else { + var exclude = ""; + } + if (!acct.left_fold) { + basekey = key; + var basehtml = '
    '; + $("#timeline-container").append(basehtml); + var left_hold = 'view_agenda' + lang.lang_layout_leftFold + '
    '; + } else { + var left_hold = 'view_column' + lang.lang_layout_leftUnfold + '
    '; + } + if (key === 0) { + left_hold = ''; + } + if (localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct.domain)) == "misskey") { + var isMisRed = "" + exclude = "" + var if_misskey_hide = "hide" + } else { + var isMisRed = "red-text" + var if_misskey_hide = "" + } + var html = '
    ' + + '
    ' + exclude + left_hold + 'perm_mediaOn' + lang.lang_layout_mediafil + '
    linkOn' + lang.lang_layout_linkana + '
    hearingOn' + lang.lang_layout_tts + 'TL
    low_priority' + lang.lang_layout_reconnect + '
    ' + lang.lang_layout_headercolor + '
    ' + lang.lang_layout_nodata + '
    ' + $('#timeline_box_' + basekey + '_parentBox').append(html); + localStorage.removeItem("pool_" + key); + if (acct.data) { + var data = acct.data; + } else { + var data = ""; + } + if (localStorage.getItem("catch_" + key)) { + var delc = "true"; + } else { + var delc = "false"; + } - if(localStorage.getItem("voice_" + key)){ - var voice=true; - }else{ - var voice=false; - } - tl(acct.type, data, acct.domain, key, delc,voice,""); - cardCheck(key); - ebtCheck(key); - mediaCheck(key); - catchCheck(key); - voiceCheck(key); + if (localStorage.getItem("voice_" + key)) { + var voice = true; + } else { + var voice = false; + } + tl(acct.type, data, acct.domain, key, delc, voice, ""); + cardCheck(key); + ebtCheck(key); + mediaCheck(key); + catchCheck(key); + voiceCheck(key); } } var box = localStorage.getItem("box"); if (box == "absolute") { setTimeout(show, 1000); } - if(localStorage.getItem("reverse")){ + if (localStorage.getItem("reverse")) { $("#bottom").removeClass("reverse"); $(".leftside").removeClass("reverse"); } - if(localStorage.getItem("sec") && localStorage.getItem("sec")!="nothing"){ + if (localStorage.getItem("sec") && localStorage.getItem("sec") != "nothing") { secvis(localStorage.getItem("sec")); } favTag(); var cw = localStorage.getItem("always-cw"); if (cw == "yes") { - if(!$("#cw").hasClass("cw-avail")){ + if (!$("#cw").hasClass("cw-avail")) { $("#cw-text").show(); $("#cw").addClass("yellow-text"); $("#cw").addClass("cw-avail"); - var cwt=localStorage.getItem("cw-text"); - if(cwt){ + var cwt = localStorage.getItem("cw-text"); + if (cwt) { $("#cw-text").val(cwt); } } } } -function checkStr(type, data, acct_id, key, delc,voice){ - if($('#notice_icon_' + key).hasClass("red-text") && type!="notf" && type!="mix"){ - console.log("sabun-get") +function checkStr(type, data, acct_id, key, delc, voice) { + if ($('#notice_icon_' + key).hasClass("red-text") && type != "notf" && type != "mix") { goTop(key); - tlDiff(type, data, acct_id, key, delc,voice,""); - }else{ + tlDiff(type, data, acct_id, key, delc, voice, ""); + } else { goTop(key); } } //セカンダリートゥートボタン -function secvis(set){ - if(set=="public"){ +function secvis(set) { + if (set == "public") { $("#toot-sec-icon").text("public"); $("#toot-sec-btn").addClass("purple"); - }else if(set=="unlisted"){ + } else if (set == "unlisted") { $("#toot-sec-icon").text("lock_open"); $("#toot-sec-btn").addClass("blue"); - }else if(set=="private"){ + } else if (set == "private") { $("#toot-sec-icon").text("lock"); $("#toot-sec-btn").addClass("orange"); - }else if(set=="direct"){ + } else if (set == "direct") { $("#toot-sec-icon").text("mail"); $("#toot-sec-btn").addClass("red"); - }else if(set=="limited"){ + } else if (set == "limited") { $("#toot-sec-icon").text("group"); $("#toot-sec-btn").addClass("teal"); - }else if(set=="local"){ + } else if (set == "local") { $("#toot-sec-icon").text("visibility"); $("#toot-sec-btn").addClass("light-blue"); } @@ -305,14 +308,16 @@ function secvis(set){ //カラム追加 function addColumn() { var acct = $("#add-acct-sel").val(); - localStorage.setItem("last-use", acct); + if(acct != "webview" && acct != "noauth"){ + localStorage.setItem("last-use", acct); + } var type = $("#type-sel").val(); - if(acct=="noauth"){ - acct=$("#noauth-url").val(); - type="noauth" - }else if(acct=="webview"){ - acct=""; - type="webview" + if (acct == "noauth") { + acct = $("#noauth-url").val(); + type = "noauth" + } else if (acct == "webview") { + acct = ""; + type = "webview" } var add = { domain: acct, @@ -320,38 +325,38 @@ function addColumn() { }; var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); - if(!obj){ - var leng=0; + if (!obj) { + var leng = 0; var json = JSON.stringify([add]); localStorage.setItem("column", json); - }else{ - var leng=obj.length; + } else { + var leng = obj.length; obj.push(add); var json = JSON.stringify(obj); localStorage.setItem("column", json); } - + parseColumn(); } -function addselCk(){ +function addselCk() { var acct = $("#add-acct-sel").val(); - var domain=localStorage.getItem("domain_" + acct); - if(acct=="webview"){ + var domain = localStorage.getItem("domain_" + acct); + if (acct == "webview") { $("#auth").addClass("hide"); $("#noauth").addClass("hide"); $("#webview-add").removeClass("hide"); - }else if(acct=="noauth"){ + } else if (acct == "noauth") { $("#auth").addClass("hide"); $("#noauth").removeClass("hide"); $("#webview-add").addClass("hide"); - }else{ + } else { $("#auth").removeClass("hide"); $("#noauth").addClass("hide"); $("#webview-add").addClass("hide"); } - if(domain=="knzk.me" || domain=="mstdn.y-zu.org"){ - $("#type-sel").append(''); - }else{ + if (domain == "knzk.me" || domain == "mstdn.y-zu.org") { + $("#type-sel").append(''); + } else { $("#direct-add").remove(); } } @@ -366,12 +371,11 @@ function removeColumn(tlid) { var ipc = electron.ipcRenderer; ipc.send('column-del', ""); ipc.on('column-del-reply', function (event, arg) { - console.log(arg); - if(arg===1){ + if (arg === 1) { localStorage.removeItem("card_" + tlid); obj.splice(tlid, 1); - for(var i=0;iDefault
    '+ - '
    Red
    '+ - '
    Pink
    '+ - '
    Purple
    '+ - '
    Deep-purple
    '+ - '
    Indigo
    '+ - '
    Blue
    '+ - '
    Light-blue
    '+ - '
    Cyan
    '+ - '
    Teal
    '+ - '
    Green
    '+ - '
    Light-green
    '+ - '
    Lime
    '+ - '
    Yellow
    '+ - '
    Amber
    '+ - '
    Orange
    '+ - '
    Deep-orange
    '+ - '
    Brown
    '+ - '
    Grey
    '+ - '
    Blue-grey
    '+ - '
    Black
    '+ - '
    White
    '; - $("#picker_"+key).html(temp); +function colorpicker(key) { + temp = + '
    Default
    ' + + '
    Red
    ' + + '
    Pink
    ' + + '
    Purple
    ' + + '
    Deep-purple
    ' + + '
    Indigo
    ' + + '
    Blue
    ' + + '
    Light-blue
    ' + + '
    Cyan
    ' + + '
    Teal
    ' + + '
    Green
    ' + + '
    Light-green
    ' + + '
    Lime
    ' + + '
    Yellow
    ' + + '
    Amber
    ' + + '
    Orange
    ' + + '
    Deep-orange
    ' + + '
    Brown
    ' + + '
    Grey
    ' + + '
    Blue-grey
    ' + + '
    Black
    ' + + '
    White
    '; + $("#picker_" + key).html(temp); } -function coloradd(key,bg,txt){ +function coloradd(key, bg, txt) { var col = localStorage.getItem("column"); var o = JSON.parse(col); - var obj=o[key]; - obj.background=bg; - obj.text=txt; - o[key]=obj; + var obj = o[key]; + obj.background = bg; + obj.text = txt; + o[key] = obj; var json = JSON.stringify(o); localStorage.setItem("column", json); - if(txt=="def"){ - $("#menu_"+key).css("background-color",""); - $("#menu_"+key).css("color",""); - }else{ - $("#menu_"+key).css('background-color','#'+bg); - if(txt=="black"){ - var bghex="000000"; - var ichex="9e9e9e" - }else if(txt=="white"){ - var bghex="ffffff"; - var ichex="eeeeee" - } - $("#menu_"+key+" .nex").css('color','#'+ichex); - $("#menu_"+key).css('color','#'+bghex); + if (txt == "def") { + $("#menu_" + key).css("background-color", ""); + $("#menu_" + key).css("color", ""); + } else { + $("#menu_" + key).css('background-color', '#' + bg); + if (txt == "black") { + var bghex = "000000"; + var ichex = "9e9e9e" + } else if (txt == "white") { + var bghex = "ffffff"; + var ichex = "eeeeee" + } + $("#menu_" + key + " .nex").css('color', '#' + ichex); + $("#menu_" + key).css('color', '#' + bghex); } } //禁断のTwitter -function webviewParse(url,key,insert,icnsert,css){ +function webviewParse(url, key, insert, icnsert, css) { var html = '
    '+ - '
    '+lang.lang_layout_headercolor +'
    '; - + '" style="' + css + '">' + + '
    ' + lang.lang_layout_headercolor + '
    '; + return html; } -function unstreamingTL(type,key,basekey,insert,icnsert,left_fold,css,animecss,q){ - if(!left_fold){ - var basehtml = '
    '; +function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, animecss, q) { + if (!left_fold) { + var basehtml = '
    '; $("#timeline-container").append(basehtml); - var left_hold='view_agenda'+lang.lang_layout_leftFold+'

    '; - }else{ - var left_hold='view_column'+lang.lang_layout_leftUnfold+'

    '; + var left_hold = 'view_agenda' + lang.lang_layout_leftFold + '

    '; + } else { + var left_hold = 'view_column' + lang.lang_layout_leftUnfold + '

    '; } - var html='
    '+ - '
    '+left_hold+'perm_mediaOn'+lang.lang_layout_mediafil +'
    '+lang.lang_layout_headercolor +'
    '+lang.lang_layout_nodata +'
    ' + var html = '
    ' + + '
    ' + left_hold + 'perm_mediaOn' + lang.lang_layout_mediafil + '
    ' + lang.lang_layout_headercolor + '
    ' + lang.lang_layout_nodata + '
    ' $('#timeline_box_' + basekey + '_parentBox').append(html); - tootsearch(key,q); + tootsearch(key, q); cardCheck(key); ebtCheck(key); mediaCheck(key); @@ -509,18 +513,18 @@ function unstreamingTL(type,key,basekey,insert,icnsert,left_fold,css,animecss,q) voiceCheck(key); return true; } -function leftFoldSet(key){ +function leftFoldSet(key) { var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); - obj[key].left_fold=true; + obj[key].left_fold = true; var json = JSON.stringify(obj); localStorage.setItem("column", json); parseColumn(); } -function leftFoldRemove(key){ +function leftFoldRemove(key) { var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); - obj[key].left_fold=false; + obj[key].left_fold = false; var json = JSON.stringify(obj); localStorage.setItem("column", json); parseColumn(); diff --git a/app/js/ui/menu.js b/app/js/ui/menu.js index 0c46ae93..17dbb91a 100644 --- a/app/js/ui/menu.js +++ b/app/js/ui/menu.js @@ -1,55 +1,56 @@ -function menu(){ - localStorage.setItem("menu-done",true); - $("#fukidashi").addClass("hide") - if(!$("#menu").hasClass("appear")){ - $("#menu").addClass("appear") - var left=localStorage.getItem("menu-left"); - if(left>$('body').width()-$('#menu').width()){ - left=$('body').width()-$('#menu').width(); - }else if(left<0){ - left=0; - } - var top=localStorage.getItem("menu-top"); - if(top>$('body').height()-$('#menu').height()){ - top=$('body').height()-$('#menu').height(); - }else if(top<0){ - top=0; - } - $('#menu').css("left",left+"px") - $('#menu').css("top",top+"px") - $('#menu').fadeIn(); - $("#menu-bar").html("TheDesk "+localStorage.getItem("ver")); - $(".menu-content").addClass("hide"); - $("#add-box").removeClass("hide"); - $("#left-menu div").removeClass("active"); - $("#addColumnMenu").addClass("active"); - }else{ - $('#menu').fadeOut() - $("#menu").removeClass("appear") +function menu() { + localStorage.setItem("menu-done", true); + $("#fukidashi").addClass("hide") + if (!$("#menu").hasClass("appear")) { + $("#menu").addClass("appear") + var left = localStorage.getItem("menu-left"); + if (left > $('body').width() - $('#menu').width()) { + left = $('body').width() - $('#menu').width(); + } else if (left < 0) { + left = 0; } - + var top = localStorage.getItem("menu-top"); + if (top > $('body').height() - $('#menu').height()) { + top = $('body').height() - $('#menu').height(); + } else if (top < 0) { + top = 0; + } + $('#menu').css("left", left + "px") + $('#menu').css("top", top + "px") + $('#menu').fadeIn(); + $("#menu-bar").html("TheDesk " + localStorage.getItem("ver")); + $(".menu-content").addClass("hide"); + $("#add-box").removeClass("hide"); + $("#left-menu div").removeClass("active"); + $("#addColumnMenu").addClass("active"); + } else { + $('#menu').fadeOut() + $("#menu").removeClass("appear") + } + } -$(function() { - $( "#menu" ).draggable({handle: "#menu-bar", - stop: function() { - var left=$('#menu').offset().left; - if(left>$('body').width()-$('#menu').width()){ - left=$('body').width()-$('#menu').width(); - }else if(left<0){ - left=0; +$(function () { + $("#menu").draggable({ + handle: "#menu-bar", + stop: function () { + var left = $('#menu').offset().left; + if (left > $('body').width() - $('#menu').width()) { + left = $('body').width() - $('#menu').width(); + } else if (left < 0) { + left = 0; } - var top=$('#menu').offset().top; - if(top>$('body').height()-$('#menu').height()){ - top=$('body').height()-$('#menu').height(); - }else if(top<0){ - top=0; + var top = $('#menu').offset().top; + if (top > $('body').height() - $('#menu').height()) { + top = $('body').height() - $('#menu').height(); + } else if (top < 0) { + top = 0; } - localStorage.setItem("menu-left",left); - localStorage.setItem("menu-top",top); - } - }); + localStorage.setItem("menu-left", left); + localStorage.setItem("menu-top", top); + } }); -function help(){ - const {shell} = require('electron'); - shell.openExternal("https://docs.thedesk.top"); +}); +function help() { + const { shell } = require('electron'); + shell.openExternal("https://docs.thedesk.top"); } \ No newline at end of file diff --git a/app/js/ui/pip.js b/app/js/ui/pip.js index 39cd7505..44bc43c1 100644 --- a/app/js/ui/pip.js +++ b/app/js/ui/pip.js @@ -1,30 +1,30 @@ -function pip(id){ +function pip(id) { $("#pip-content").html($("[toot-id=" + id + "] .additional").html()); $("#pip").removeClass("hide"); } -function endPip(){ +function endPip() { $("#pip-content").html(""); $("#pip").addClass("hide"); } -function pipHoriz(){ - if($("#pip").hasClass("pip-left")){ +function pipHoriz() { + if ($("#pip").hasClass("pip-left")) { $("#pip").removeClass("pip-left"); $(".pip-horiz").text("chevron_left"); $("#pip").addClass("pip-right"); - }else{ + } else { $("#pip").addClass("pip-left"); $("#pip").removeClass("pip-right"); $(".pip-horiz").text("chevron_right"); } } -function pipVert(){ - if($("#pip").hasClass("pip-top")){ +function pipVert() { + if ($("#pip").hasClass("pip-top")) { $("#pip").removeClass("pip-top"); $("#pip").addClass("pip-bottom"); $(".pip-vert").text("expand_less"); - }else{ + } else { $("#pip").addClass("pip-top"); $("#pip").removeClass("pip-bottom"); $(".pip-vert").text("expand_more"); diff --git a/app/js/ui/post-box.js b/app/js/ui/post-box.js index 7c57328e..4d80f459 100644 --- a/app/js/ui/post-box.js +++ b/app/js/ui/post-box.js @@ -13,9 +13,9 @@ function hide() { //最小化 function mini() { $("body").toggleClass("mini-post"); - if($("body").hasClass("mini-post")){ + if ($("body").hasClass("mini-post")) { $(".mini-btn").text("expand_less"); - }else{ + } else { $(".mini-btn").text("expand_more"); } } @@ -23,51 +23,52 @@ function mini() { function show() { $("#post-box").addClass("appear") $("#textarea").focus(); - console.log("show"+localStorage.getItem("postbox-left")); - var left=localStorage.getItem("postbox-left"); - if(left>$('body').width()-$('#post-box').width()){ - left=$('body').width()-$('#post-box').width(); - }else if(left<0){ - left=0; + console.log("show" + localStorage.getItem("postbox-left")); + var left = localStorage.getItem("postbox-left"); + if (left > $('body').width() - $('#post-box').width()) { + left = $('body').width() - $('#post-box').width(); + } else if (left < 0) { + left = 0; } - var top=localStorage.getItem("postbox-top"); - if(top>$('body').height()-$('#post-box').height()){ - top=$('body').height()-$('#post-box').height(); - }else if(top<0){ - top=0; + var top = localStorage.getItem("postbox-top"); + if (top > $('body').height() - $('#post-box').height()) { + top = $('body').height() - $('#post-box').height(); + } else if (top < 0) { + top = 0; } - $('#post-box').css("left",left+"px") - $('#post-box').css("top",top+"px") + $('#post-box').css("left", left + "px") + $('#post-box').css("top", top + "px") $('#post-box').fadeIn(); } -$(function() { - $( "#post-box" ).draggable({handle: "#post-bar", - stop: function() { - var left=$('#post-box').offset().left; - if(left>$('body').width()-$('#post-box').width()){ - left=$('body').width()-$('#post-box').width(); - }else if(left<0){ - left=0; - } - var top=$('#post-box').offset().top; - if(top>$('body').height()-$('#post-box').height()){ - top=$('body').height()-$('#post-box').height(); - }else if(top<0){ - top=0; - } - localStorage.setItem("postbox-left",left); - localStorage.setItem("postbox-top",top); - } - }); +$(function () { + $("#post-box").draggable({ + handle: "#post-bar", + stop: function () { + var left = $('#post-box').offset().left; + if (left > $('body').width() - $('#post-box').width()) { + left = $('body').width() - $('#post-box').width(); + } else if (left < 0) { + left = 0; + } + var top = $('#post-box').offset().top; + if (top > $('body').height() - $('#post-box').height()) { + top = $('body').height() - $('#post-box').height(); + } else if (top < 0) { + top = 0; + } + localStorage.setItem("postbox-left", left); + localStorage.setItem("postbox-top", top); + } + }); }); //コード受信 -if(location.search){ +if (location.search) { var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode=m[1]; - var codex=m[2]; - if(mode=="share"){ + var mode = m[1]; + var codex = m[2]; + if (mode == "share") { console.log(codex); $('textarea').focus(); $("#textarea").val(decodeURI(codex)); @@ -76,27 +77,27 @@ if(location.search){ $(".mini-btn").text("expand_less"); } } -$('#posttgl').click(function(e) { - if(!$('#post-box').hasClass("appear")){ +$('#posttgl').click(function (e) { + if (!$('#post-box').hasClass("appear")) { show(); - }else{ + } else { hide(); } }); -$("#timeline-container,#group").click(function(e) { +$("#timeline-container,#group").click(function (e) { - if(localStorage.getItem("box")!="absolute"){ - if($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")){ + if (localStorage.getItem("box") != "absolute") { + if ($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")) { hide(); } } localStorage.removeItem("nohide") }); -$('#textarea,#cw-text').focusout(function(e) { - localStorage.setItem("nohide",true) - var countup = function(){ +$('#textarea,#cw-text').focusout(function (e) { + localStorage.setItem("nohide", true) + var countup = function () { localStorage.removeItem("nohide") - } + } //setTimeout(remove, 100); }); \ No newline at end of file diff --git a/app/js/ui/radio.js b/app/js/ui/radio.js index 3e27f149..cff54bba 100644 --- a/app/js/ui/radio.js +++ b/app/js/ui/radio.js @@ -1,39 +1,39 @@ var r = document.getElementById("radio"); -function Rtoggle(){ - if($("#radio").hasClass("play")){ +function Rtoggle() { + if ($("#radio").hasClass("play")) { Rstop(); - }else{ + } else { $("#radio-view").toggleClass("hide"); $("#radio-view").toggleClass("show"); $("#radio-input").addClass("hide"); } } -function Rplay(url,name){ - $("#radio").attr('src',url); +function Rplay(url, name) { + $("#radio").attr('src', url); r.load(); r.play(); $("#radio").addClass("play"); $("#radio-btn").addClass("teal-text"); - $("#radio-sta").html("
    Now Playing:"+name); + $("#radio-sta").html("
    Now Playing:" + name); } -function Rstop(){ - $("#radio").attr("src",""); +function Rstop() { + $("#radio").attr("src", ""); r.pause(); $("#radio").removeClass("play"); $("#radio-btn").removeClass("teal-text"); $("#radio-sta").html(""); } -function Ryourself(){ +function Ryourself() { $("#radio-input").removeClass("hide"); $("#radio-view").addClass("hide"); } -function Rselect(){ +function Rselect() { $("#radio-input").addClass("hide"); $("#radio-view").removeClass("hide"); } -function Rinput(){ - var url=$("#radio-url").val(); - Rplay(url,url) +function Rinput() { + var url = $("#radio-url").val(); + Rplay(url, url) } /* diff --git a/app/js/ui/scroll.js b/app/js/ui/scroll.js index 17fe05b2..04f5cba6 100644 --- a/app/js/ui/scroll.js +++ b/app/js/ui/scroll.js @@ -1,13 +1,13 @@ //スクロールで続きを読む function scrollevent() { - $(".tl-box").scroll(function() { + $(".tl-box").scroll(function () { scrollck(); }); } scrollevent(); function scrollck() { - $(".tl-box").each(function(i, elem) { + $(".tl-box").each(function (i, elem) { var tlid = $(this).attr('tlid'); //一番上ならためていた新しいトゥートを表示 if ($(this).scrollTop() === 0) { @@ -18,9 +18,9 @@ function scrollck() { localStorage.removeItem("pool_" + tlid); } //自動リフレッシュ - if( $("#timeline_" + tlid+" .cvo").length > 30 ){ - for(var i=30;i<$("#timeline_" + tlid +" .cvo").length;i++){ - $("#timeline_" + tlid +" .cvo").eq(i).remove(); + if ($("#timeline_" + tlid + " .cvo").length > 30) { + for (var i = 30; i < $("#timeline_" + tlid + " .cvo").length; i++) { + $("#timeline_" + tlid + " .cvo").eq(i).remove(); } } } @@ -28,23 +28,22 @@ function scrollck() { var scrt = $(this).find(".tl").height() - $(window).height(); var scr = $(this).scrollTop(); if (scr > scrt) { - console.log("kicked"); + console.log("kicked more loading:" + tlid); moreload('', tlid); } }); } -function goTop(id){ - if ($("#timeline_box_"+id+"_box .tl-box").scrollTop() > 500){ - $("#timeline_box_"+id+"_box .tl-box").scrollTop(500) +function goTop(id) { + if ($("#timeline_box_" + id + "_box .tl-box").scrollTop() > 500) { + $("#timeline_box_" + id + "_box .tl-box").scrollTop(500) } - $("#timeline_box_"+id+"_box .tl-box").animate({scrollTop:0}); + $("#timeline_box_" + id + "_box .tl-box").animate({ scrollTop: 0 }); } -function goColumn(key){ +function goColumn(key) { $("#sort-box").addClass("hide"); $("#sort-box").removeClass("show"); - if($('[tlid='+key+']').length){ - console.log($('[tlid='+key+']').offset().left); - $("#timeline-container").animate({scrollLeft:$("#timeline-container").scrollLeft()+$('[tlid='+key+']').offset().left}); + if ($('[tlid=' + key + ']').length) { + $("#timeline-container").animate({ scrollLeft: $("#timeline-container").scrollLeft() + $('[tlid=' + key + ']').offset().left }); } } \ No newline at end of file diff --git a/app/js/ui/settings.js b/app/js/ui/settings.js index 7ee30782..78e6cd29 100644 --- a/app/js/ui/settings.js +++ b/app/js/ui/settings.js @@ -1,17 +1,17 @@ //設定(setting.html)で読む var envView = new Vue({ el: '#envView', - data: {config:envConstruction}, + data: { config: envConstruction }, methods: { - complete: function (i,val) { - var ls=envView.config[i].storage; + complete: function (i, val) { + var ls = envView.config[i].storage; Materialize.toast("Complete", 3000); - if(!val){ - var id=envView.config[i].id; - var val=$("#"+id).val() + if (!val) { + var id = envView.config[i].id; + var val = $("#" + id).val() } - localStorage.setItem(ls,val) - if(ls=="ha"){ + localStorage.setItem(ls, val) + if (ls == "ha") { hardwareAcceleration(val) } return true @@ -20,32 +20,32 @@ var envView = new Vue({ }); var tlView = new Vue({ el: '#tlView', - data: {config:tlConstruction}, + data: { config: tlConstruction }, methods: { - complete: function (i,val) { - var ls=tlView.config[i].storage; - if(!val){ - var id=tlView.config[i].id; - var val=$("#"+id).val() + complete: function (i, val) { + var ls = tlView.config[i].storage; + if (!val) { + var id = tlView.config[i].id; + var val = $("#" + id).val() } Materialize.toast("Complete", 3000); - localStorage.setItem(ls,val) + localStorage.setItem(ls, val) return true } } }); var postView = new Vue({ el: '#postView', - data: {config:postConstruction,kirishima:localStorage.getItem('kirishima')}, + data: { config: postConstruction, kirishima: localStorage.getItem('kirishima') }, methods: { - complete: function (i,val) { - var ls=postView.config[i].storage; + complete: function (i, val) { + var ls = postView.config[i].storage; Materialize.toast("Complete", 3000); - if(!val){ - var id=postView.config[i].id; - var val=$("#"+id).val() + if (!val) { + var id = postView.config[i].id; + var val = $("#" + id).val() } - localStorage.setItem(ls,val) + localStorage.setItem(ls, val) return true } } @@ -53,32 +53,32 @@ var postView = new Vue({ //設定ボタン押した。 function settings() { var cd = $("[name=theme]:checked").val(); - var ct = $("[for="+cd+"]").html(); - if(cd=="custom" && !$("#custom-sel-sel").val()){ + var ct = $("[for=" + cd + "]").html(); + if (cd == "custom" && !$("#custom-sel-sel").val()) { var theme = localStorage.getItem("theme"); if (!theme) { var theme = "white"; } $("#" + theme).prop("checked", true); - }else{ + } else { if (cd != localStorage.getItem("theme")) { - Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000); + Materialize.toast(lang.lang_setting_theme.replace("{{set}}", ct), 3000); } //テーマはこの場で設定 themes(cd); localStorage.setItem("theme", cd); } var fontd = $("#font").val(); - if(fontd){ + if (fontd) { if (fontd != localStorage.getItem("font")) { - Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,fontd), 3000); + Materialize.toast(lang.lang_setting_font.replace("{{set}}", fontd), 3000); } localStorage.setItem("font", fontd); themes(); - }else{ - if(localStorage.getItem("font")){ + } else { + if (localStorage.getItem("font")) { localStorage.removeItem("font"); - Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,lang.lang_setting_default), 3000); + Materialize.toast(lang.lang_setting_font.replace("{{set}}", lang.lang_setting_default), 3000); themes(); } } @@ -86,31 +86,31 @@ function settings() { //読み込み時の設定ロード function load() { - var max=envView.config.length; - for(var i=0;i' + list + - '.' + - escapeHTML(cli) + '
    '; - $("#mute-cli").append(templete); - }); + var templete; + Object.keys(obj).forEach(function (key) { + var cli = obj[key]; + var list = key * 1 + 1; + templete = '
    ' + list + + '.' + + escapeHTML(cli) + '
    '; + $("#mute-cli").append(templete); + }); + } } -} -function cliMuteDel(key){ +function cliMuteDel(key) { var cli = localStorage.getItem("client_mute"); var obj = JSON.parse(cli); obj.splice(key, 1); @@ -162,114 +162,113 @@ function cliMuteDel(key){ climute(); } -function wordmute(){ +function wordmute() { var word = localStorage.getItem("word_mute"); var obj = JSON.parse(word); $('#wordmute').material_chip({ data: obj, - }); + }); } -function wordmuteSave(){ - var word=$('#wordmute').material_chip('data'); +function wordmuteSave() { + var word = $('#wordmute').material_chip('data'); var json = JSON.stringify(word); localStorage.setItem("word_mute", json); } -function wordemp(){ +function wordemp() { var word = localStorage.getItem("word_emp"); var obj = JSON.parse(word); $('#wordemp').material_chip({ data: obj, }); } -function wordempSave(){ - var word=$('#wordemp').material_chip('data'); +function wordempSave() { + var word = $('#wordemp').material_chip('data'); var json = JSON.stringify(word); localStorage.setItem("word_emp", json); } -function notftest(){ - var electron = require("electron"); - var ipc = electron.ipcRenderer; - var os = electron.remote.process.platform; - var options = { - body: lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')', - icon: localStorage.getItem("prof_0") - }; - if(os=="darwin"){ - var n = new Notification('TheDesk'+lang.lang_setting_notftest, options); - }else{ - ipc.send('native-notf', ['TheDesk'+lang.lang_setting_notftest,lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',localStorage.getItem('prof_0'),"",""]); - } - -} -function oks(no){ - var txt=$("#oks-"+no).val(); - localStorage.setItem("oks-"+no, txt); - Materialize.toast(lang.lang_setting_ksref, 3000); -} -function oksload(){ - if(localStorage.getItem("oks-1")){$("#oks-1").val(localStorage.getItem("oks-1"))} - if(localStorage.getItem("oks-2")){$("#oks-2").val(localStorage.getItem("oks-2"))} - if(localStorage.getItem("oks-3")){$("#oks-3").val(localStorage.getItem("oks-3"))} -} -function changelang(lang){ +function notftest() { var electron = require("electron"); var ipc = electron.ipcRenderer; - ipc.send('lang',lang); + var os = electron.remote.process.platform; + var options = { + body: lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')', + icon: localStorage.getItem("prof_0") + }; + if (os == "darwin") { + var n = new Notification('TheDesk' + lang.lang_setting_notftest, options); + } else { + ipc.send('native-notf', ['TheDesk' + lang.lang_setting_notftest, lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')', localStorage.getItem('prof_0'), "", ""]); + } + +} +function oks(no) { + var txt = $("#oks-" + no).val(); + localStorage.setItem("oks-" + no, txt); + Materialize.toast(lang.lang_setting_ksref, 3000); +} +function oksload() { + if (localStorage.getItem("oks-1")) { $("#oks-1").val(localStorage.getItem("oks-1")) } + if (localStorage.getItem("oks-2")) { $("#oks-2").val(localStorage.getItem("oks-2")) } + if (localStorage.getItem("oks-3")) { $("#oks-3").val(localStorage.getItem("oks-3")) } +} +function changelang(lang) { + var electron = require("electron"); + var ipc = electron.ipcRenderer; + ipc.send('lang', lang); ipc.on('langres', function (event, arg) { - location.href="../"+lang+"/setting.html" + location.href = "../" + lang + "/setting.html" }); } -function exportSettings(){ - if(!confirm(lang.lang_setting_exportwarn)){ +function exportSettings() { + if (!confirm(lang.lang_setting_exportwarn)) { return false; } var electron = require("electron"); - var remote=electron.remote; - var dialog=remote.dialog; + var remote = electron.remote; + var dialog = remote.dialog; var ipc = electron.ipcRenderer; dialog.showSaveDialog(null, { title: 'Export', properties: ['openFile', 'createDirectory'], defaultPath: "export.thedeskconfigv2" }, (savedFiles) => { - console.log(savedFiles); - if(!savedFiles){ + if (!savedFiles) { return false; } - var exp={}; + var exp = {}; //Accounts var multi = localStorage.getItem("multi"); var acct = JSON.parse(multi); - exp.accts=acct; + exp.accts = acct; //Columns var multi = localStorage.getItem("column"); var column = JSON.parse(multi); - exp.columns=column; + exp.columns = column; //Themes - var config={}; - config.theme=localStorage.getItem("theme"); + var config = {}; + config.theme = localStorage.getItem("theme"); //Other configs - var max=envView.config.length; - for(var i=0;i { - console.log(fileNames); - if(!fileNames){ + if (!fileNames) { return false; } ipc.send('import', fileNames[0]); ipc.on('config', function (event, arg) { var obj = JSON.parse(arg); - if(obj){ + if (obj) { localStorage.clear(); - localStorage.setItem("multi",JSON.stringify(obj.accts)); - for(var key=0;key { - localStorage.setItem("savefolder",fileNames[0]); + localStorage.setItem("savefolder", fileNames[0]); }); } -function font(){ +function font() { var electron = require("electron"); var ipc = electron.ipcRenderer; ipc.send('fonts', []); ipc.on('font-list', function (event, arg) { $("#fonts").removeClass("hide"); - for( var i=0; i'+font.family+"
    ") + for (var i = 0; i < arg.length; i++) { + var font = arg[i]; + $("#fonts").append('
    ' + font.family + "
    ") } }); } -function insertFont(name){ +function insertFont(name) { $("#font").val(name); } -$(".color-picker").each(function(i, elem) { - pickerDefine(i,"fff"); +$(".color-picker").each(function (i, elem) { + pickerDefine(i, "fff"); }); -function pickerDefine(i,color){ +function pickerDefine(i, color) { var pickr = new Pickr({ - el: '#color-picker'+i, + el: '#color-picker' + i, default: color, showAlways: true, appendToBody: true, @@ -464,70 +460,50 @@ function pickerDefine(i,color){ } }, strings: { - save: 'Save', // Default for save button - clear: 'Clear' // Default for clear button + save: 'Save', // Default for save button + clear: 'Clear' // Default for clear button } - }); - pickr.on('change', (...args) => { - var rgb='rgb('+args[0].toRGBA()[0]+','+args[0].toRGBA()[1]+','+args[0].toRGBA()[2]+')'; - $("#color-picker"+i+"_value").val(rgb) - }); + }); + pickr.on('change', (...args) => { + var rgb = 'rgb(' + args[0].toRGBA()[0] + ',' + args[0].toRGBA()[1] + ',' + args[0].toRGBA()[2] + ')'; + $("#color-picker" + i + "_value").val(rgb) + }); } -function customComp(){ - var nameC=$("#custom_name").val(); - if(!nameC){return false;} - var descC=$("#custom_desc").val(); - var primaryC=$("#color-picker0_value").val(); - if(!primaryC){primaryC="rgb(255,255,255)"} - var secondaryC=$("#color-picker1_value").val(); - if(!secondaryC){secondaryC="rgb(255,255,255)"} - var textC=$("#color-picker2_value").val(); - if(!textC){textC="rgb(255,255,255)"} - var accentC=$("#color-picker3_value").val(); - if(!accentC){accentC="rgb(255,255,255)"} +function customComp() { + var nameC = $("#custom_name").val(); + if (!nameC) { return false; } + var descC = $("#custom_desc").val(); + var primaryC = $("#color-picker0_value").val(); + if (!primaryC) { primaryC = "rgb(255,255,255)" } + var secondaryC = $("#color-picker1_value").val(); + if (!secondaryC) { secondaryC = "rgb(255,255,255)" } + var textC = $("#color-picker2_value").val(); + if (!textC) { textC = "rgb(255,255,255)" } + var accentC = $("#color-picker3_value").val(); + if (!accentC) { accentC = "rgb(255,255,255)" } var multi = localStorage.getItem("multi"); - var my=JSON.parse(multi)[0].name; - var id=$("#custom-edit-sel").val(); - if(id=="add_new"){ - id=makeCID(); + var my = JSON.parse(multi)[0].name; + var id = $("#custom-edit-sel").val(); + if (id == "add_new") { + id = makeCID(); } - var json={ + var json = { "name": nameC, "author": my, "desc": descC, "base": $("[name=direction]:checked").val(), "vars": { - "primary": primaryC, - "secondary": secondaryC, - "text": textC + "primary": primaryC, + "secondary": secondaryC, + "text": textC }, "props": { "TheDeskAccent": accentC }, "id": id - } - $("#custom_json").val(JSON.stringify(json)); - themes(); - $("#custom_name").val(""); - $("#custom_desc").val(""); - $("#dark").prop("checked", true); - $("#custom_json").val(""); - $("#color-picker0-wrap").html('
    ') - $("#color-picker1-wrap").html('
    ') - $("#color-picker2-wrap").html('
    ') - $("#color-picker3-wrap").html('
    ') - $("#color-picker0_value").val(""); - $("#color-picker1_value").val(""); - $("#color-picker2_value").val(""); - $("#color-picker3_value").val(""); - pickerDefine(0,"fff"); - pickerDefine(1,"fff"); - pickerDefine(2,"fff"); - pickerDefine(3,"fff"); - ipc.send('theme-json-create', JSON.stringify(json)); -} -function deleteIt(){ - var id=$("#custom-sel-sel").val(); + } + $("#custom_json").val(JSON.stringify(json)); + themes(); $("#custom_name").val(""); $("#custom_desc").val(""); $("#dark").prop("checked", true); @@ -540,41 +516,60 @@ function deleteIt(){ $("#color-picker1_value").val(""); $("#color-picker2_value").val(""); $("#color-picker3_value").val(""); - pickerDefine(0,"fff"); - pickerDefine(1,"fff"); - pickerDefine(2,"fff"); - pickerDefine(3,"fff"); + pickerDefine(0, "fff"); + pickerDefine(1, "fff"); + pickerDefine(2, "fff"); + pickerDefine(3, "fff"); + ipc.send('theme-json-create', JSON.stringify(json)); +} +function deleteIt() { + var id = $("#custom-sel-sel").val(); + $("#custom_name").val(""); + $("#custom_desc").val(""); + $("#dark").prop("checked", true); + $("#custom_json").val(""); + $("#color-picker0-wrap").html('
    ') + $("#color-picker1-wrap").html('
    ') + $("#color-picker2-wrap").html('
    ') + $("#color-picker3-wrap").html('
    ') + $("#color-picker0_value").val(""); + $("#color-picker1_value").val(""); + $("#color-picker2_value").val(""); + $("#color-picker3_value").val(""); + pickerDefine(0, "fff"); + pickerDefine(1, "fff"); + pickerDefine(2, "fff"); + pickerDefine(3, "fff"); ipc.on('theme-json-delete-complete', function (event, args) { ctLoad() }); ipc.send('theme-json-delete', id); } -function ctLoad(){ +function ctLoad() { ipc.send('theme-json-list', ""); ipc.on('theme-json-list-response', function (event, args) { - console.log(args); - var templete=""; - Object.keys(args).forEach(function(key) { + var templete = ""; + Object.keys(args).forEach(function (key) { var theme = args[key]; - var themeid=theme.id - templete = templete+''; + var themeid = theme.id + templete = templete + ''; }); - if(args[0]){ - localStorage.setItem("customtheme-id",args[0].id) + if (args[0]) { + localStorage.setItem("customtheme-id", args[0].id) } $("#custom-sel-sel").html(templete); - templete=''+templete; + templete = '' + templete; $("#custom-edit-sel").html(templete); $('select').material_select('update'); }); } -function customSel(){ - var id=$("#custom-sel-sel").val(); - localStorage.setItem("customtheme-id",id) +function customSel() { + var id = $("#custom-sel-sel").val(); + localStorage.setItem("customtheme-id", id) } -function custom(){ - var id=$("#custom-edit-sel").val(); - if(id=="add_new"){ +function custom() { + var id = $("#custom-edit-sel").val(); + if (id == "add_new") { $("#custom_name").val(""); $("#custom_desc").val(""); $("#dark").prop("checked", true); @@ -587,53 +582,51 @@ function custom(){ $("#color-picker1_value").val(""); $("#color-picker2_value").val(""); $("#color-picker3_value").val(""); - pickerDefine(0,"fff"); - pickerDefine(1,"fff"); - pickerDefine(2,"fff"); - pickerDefine(3,"fff"); + pickerDefine(0, "fff"); + pickerDefine(1, "fff"); + pickerDefine(2, "fff"); + pickerDefine(3, "fff"); $("#delTheme").addClass("disabled") - }else{ + } else { $("#delTheme").removeClass("disabled") ipc.send('theme-json-request', id); ipc.on('theme-json-response', function (event, args) { - console.log(args); $("#custom_name").val(args.name); $("#custom_desc").val(args.desc); - $("#"+args.base).prop("checked", true); + $("#" + args.base).prop("checked", true); $("#color-picker0-wrap").html('
    ') - pickerDefine(0,rgbToHex(args.vars.primary)) + pickerDefine(0, rgbToHex(args.vars.primary)) $("#color-picker0_value").val(args.vars.primary); $("#color-picker1-wrap").html('
    ') - pickerDefine(1,rgbToHex(args.vars.secondary)) + pickerDefine(1, rgbToHex(args.vars.secondary)) $("#color-picker1_value").val(args.vars.secondary); $("#color-picker2-wrap").html('
    ') $("#color-picker2_value").val(args.vars.text); - pickerDefine(2,rgbToHex(args.vars.text)) - if(args.props){ - if(args.props.TheDeskAccent){ - var accent=args.props.TheDeskAccent; - }else{ - var accent=args.vars.secondary; + pickerDefine(2, rgbToHex(args.vars.text)) + if (args.props) { + if (args.props.TheDeskAccent) { + var accent = args.props.TheDeskAccent; + } else { + var accent = args.vars.secondary; } - }else{ - var accent=args.vars.secondary; + } else { + var accent = args.vars.secondary; } $("#color-picker3-wrap").html('
    ') - pickerDefine(3,rgbToHex(accent)) + pickerDefine(3, rgbToHex(accent)) $("#custom_json").val(JSON.stringify(args)); }); } } -function customImp(){ - var json=$("#custom_import").val(); - if(JSON5.parse(json)){ +function customImp() { + var json = $("#custom_import").val(); + if (JSON5.parse(json)) { ipc.send('theme-json-create', json); - }else{ + } else { alert("Error") } } -function hardwareAcceleration(had){ - console.log("ha"); +function hardwareAcceleration(had) { ipc.send('ha', had); } @@ -641,32 +634,32 @@ ipc.on('theme-json-create-complete', function (event, args) { $("#custom_import").val(""); ctLoad() }); -function customSound(key){ +function customSound(key) { var electron = require("electron"); - var remote=electron.remote; - var dialog=remote.dialog; + var remote = electron.remote; + var dialog = remote.dialog; dialog.showOpenDialog(null, { title: 'Custom sound', properties: ['openFile'], filters: [ - {name: 'Audio', extensions: ['mp3','aac','wav','flac','m4a']}, - {name: 'All', extensions: ['*']}, + { name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] }, + { name: 'All', extensions: ['*'] }, ] }, (fileNames) => { - localStorage.setItem("custom"+key,fileNames[0]); + localStorage.setItem("custom" + key, fileNames[0]); $("#c1-file").text(fileNames[0]) }); } -window.onload = function() { +window.onload = function () { //最初に読む -load(); -climute(); -wordmute(); -wordemp(); -checkSpotify(); -voiceSettingLoad(); -oksload(); -npprovider(); -ctLoad() - }; + load(); + climute(); + wordmute(); + wordemp(); + checkSpotify(); + voiceSettingLoad(); + oksload(); + npprovider(); + ctLoad() +}; diff --git a/app/js/ui/sort.js b/app/js/ui/sort.js index 0d350657..b79d5c8d 100644 --- a/app/js/ui/sort.js +++ b/app/js/ui/sort.js @@ -1,43 +1,43 @@ //ソートデータ読み込み -function sortload(){ +function sortload() { var col = localStorage.getItem("column"); - if (col) { - var obj = JSON.parse(col); + if (col) { + var obj = JSON.parse(col); + } + Object.keys(obj).forEach(function (key) { + var acct = obj[key]; + var flag = "false"; + if (localStorage.getItem("card_" + key) == "true") { + flag = "true" } - Object.keys(obj).forEach(function(key) { - var acct = obj[key]; - var flag="false"; - if(localStorage.getItem("card_" + key)=="true"){ - flag="true" - } - var insert=""; + var insert = ""; - if(acct.background){ - if(acct.text=="def"){ - - }else{ - if(acct.text=="black"){ - var txhex="000000"; - }else if(acct.text=="white"){ - var txhex="ffffff"; - } - insert=' style="background-color:#'+acct.background+'; color: #'+txhex+'" '; + if (acct.background) { + if (acct.text == "def") { + + } else { + if (acct.text == "black") { + var txhex = "000000"; + } else if (acct.text == "white") { + var txhex = "ffffff"; + } + insert = ' style="background-color:#' + acct.background + '; color: #' + txhex + '" '; } } - var user=localStorage.getItem("user_" + acct.domain); - var domain=localStorage.getItem("domain_" + acct.domain); - if(!user || !domain){ - var acctdata=""; - }else{ - var acctdata=user+"@"+domain; - } - - var html='
  • '+icon(acct.type)+'
    '+cap(acct.type, escapeHTML(acct.data),acct.domain)+'
    '+acctdata+'
  • '; - $("#sort").append(html); - }); - drag(); + var user = localStorage.getItem("user_" + acct.domain); + var domain = localStorage.getItem("domain_" + acct.domain); + if (!user || !domain) { + var acctdata = ""; + } else { + var acctdata = user + "@" + domain; + } + + var html = '
  • ' + icon(acct.type) + '
    ' + cap(acct.type, escapeHTML(acct.data), acct.domain) + '
    ' + acctdata + '
  • '; + $("#sort").append(html); + }); + drag(); } //TLのタイトル @@ -56,47 +56,47 @@ function Scap(type, data) { return "Notification" } else if (type == "mix") { return "Integrated" - }else if (type == "webview") { + } else if (type == "webview") { return "Twitter" - }else if (type == "tootsearch") { + } else if (type == "tootsearch") { return "tootsearch(" + data + ")" - }else{ - console.log(type); + } else { + console.error("unknown timeline type: " + type); } } //jquery-ui依存 -function drag(){ +function drag() { $('#sort').sortable(); $('#sort').disableSelection(); } //ソート指定 -function sort(){ - var arr=[]; - var flags=[]; - $(".drag-content").each(function(i, elem) { - var id=$(this).attr("data-id"); - var flag=$(this).attr("data-flag"); +function sort() { + var arr = []; + var flags = []; + $(".drag-content").each(function (i, elem) { + var id = $(this).attr("data-id"); + var flag = $(this).attr("data-flag"); arr.push(id) flags.push(flag); }); var col = localStorage.getItem("column"); var obj = JSON.parse(col); - var newobj=[]; - for(i=0;i 0) { return false; } - ipc.send('itunes', ""); - ipc.once('itunes-np', function (event, arg) { + ipc.send('itunes', ""); + ipc.once('itunes-np', function (event, arg) { if (arg.cmd) { - console.error(arg); - return; + console.error(arg); + return; } - console.log(arg); - var content=localStorage.getItem("np-temp"); - if(!content || content=="" || content=="null"){ - var content="#NowPlaying {song} / {album} / {artist}\n{url}"; + console.table(arg); + var content = localStorage.getItem("np-temp"); + if (!content || content == "" || content == "null") { + var content = "#NowPlaying {song} / {album} / {artist}\n{url}"; } - var flag=localStorage.getItem("artwork"); - var remote=electron.remote; - var platform=remote.process.platform; - if(platform=="win32"){ - if(flag && arg.path){ - media(arg.path,"image/png","new"); + var flag = localStorage.getItem("artwork"); + var remote = electron.remote; + var platform = remote.process.platform; + if (platform == "win32") { + if (flag && arg.path) { + media(arg.path, "image/png", "new"); } - }else if(platform=="darwin"){ - if(flag && arg.existsArtwork){ - media(arg.artworks[0].data,"image/png","new"); + } else if (platform == "darwin") { + if (flag && arg.existsArtwork) { + media(arg.artworks[0].data, "image/png", "new"); } } var regExp = new RegExp("{song}", "g"); @@ -161,61 +161,61 @@ function nowplaying(mode){ var regExp = new RegExp("{composer}", "g"); content = content.replace(regExp, arg.composer); var regExp = new RegExp("{hz}", "g"); - content = content.replace(regExp, arg.sampleRate/1000+"kHz"); + content = content.replace(regExp, arg.sampleRate / 1000 + "kHz"); var regExp = new RegExp("{lyricist}", "g"); content = content.replace(regExp, ""); var regExp = new RegExp("{bpm}", "g"); content = content.replace(regExp, ""); var regExp = new RegExp("{bitRate}", "g"); - content = content.replace(regExp, arg.bitRate+"kbps"); + content = content.replace(regExp, arg.bitRate + "kbps"); var regExp = new RegExp("{genre}", "g"); content = content.replace(regExp, arg.genre); $("#textarea").val(content); - }) + }) } - + } -function spotifySave(){ - var temp=$("#np-temp").val(); +function spotifySave() { + var temp = $("#np-temp").val(); localStorage.setItem("np-temp", temp); Materialize.toast(lang.lang_spotify_np, 3000); } -function npprovider(){ +function npprovider() { var provd = $("[name=npp]:checked").val(); - if(!provd){ + if (!provd) { if (localStorage.getItem("np_provider")) { - $("[value="+localStorage.getItem("np_provider")+"]").prop("checked", true); - }else{ + $("[value=" + localStorage.getItem("np_provider") + "]").prop("checked", true); + } else { $("[value=AIMP]").prop("checked", true); localStorage.setItem("np_provider", "AIMP"); } - }else{ + } else { if (provd != localStorage.getItem("np_provider")) { - Materialize.toast(lang.lang_setting_npprovide.replace("{{set}}" ,provd), 3000); + Materialize.toast(lang.lang_setting_npprovide.replace("{{set}}", provd), 3000); } localStorage.setItem("np_provider", provd); var electron = require("electron"); var ipc = electron.ipcRenderer; - ipc.send('itunes', ["set",provd]); + ipc.send('itunes', ["set", provd]); } } -if(location.search){ +if (location.search) { var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode=m[1]; - var codex=m[2]; - if(mode=="spotify"){ - var coder=codex.split(":"); + var mode = m[1]; + var codex = m[2]; + if (mode == "spotify") { + var coder = codex.split(":"); localStorage.setItem("spotify", coder[0]); localStorage.setItem("spotify-refresh", coder[1]); - }else{ - + } else { + } - + } -$("#npbtn").click(function() { +$("#npbtn").click(function () { nowplaying('spotify'); }); -$("#npbtn").bind('contextmenu', function() { +$("#npbtn").bind('contextmenu', function () { nowplaying('itunes'); return false; }); \ No newline at end of file diff --git a/app/js/ui/theme.js b/app/js/ui/theme.js index ca5b65d0..0d550e56 100644 --- a/app/js/ui/theme.js +++ b/app/js/ui/theme.js @@ -2,9 +2,9 @@ function themes(theme) { if (!theme) { var theme = localStorage.getItem("theme"); - if(!theme){ - var theme="black"; - localStorage.setItem("theme","black"); + if (!theme) { + var theme = "black"; + localStorage.setItem("theme", "black"); } } $("html").removeClass("indigotheme"); @@ -12,15 +12,15 @@ function themes(theme) { $("html").removeClass("browntheme"); $("html").removeClass("blacktheme"); $("html").removeClass("customtheme"); - $("html").addClass(theme+"theme"); + $("html").addClass(theme + "theme"); var font = localStorage.getItem("font"); - if(font){ - $("html").css("font-family",font); - }else{ - $("html").css("font-family",""); + if (font) { + $("html").css("font-family", font); + } else { + $("html").css("font-family", ""); } - if(theme=="custom"){ - if(localStorage.getItem("customtheme-id")){ + if (theme == "custom") { + if (localStorage.getItem("customtheme-id")) { ipc.send('theme-css-request', localStorage.getItem("customtheme-id")); } } diff --git a/app/js/ui/tips.js b/app/js/ui/tips.js index e7871c7e..35dbbd2d 100644 --- a/app/js/ui/tips.js +++ b/app/js/ui/tips.js @@ -1,203 +1,200 @@ //左下のメッセージ -var todcTrigger=null; -function todo(mes){ +var todcTrigger = null; +function todo(mes) { clearInterval(todcTrigger); $('#message').text(mes); $('#message').fadeIn(); - todcTrigger=setTimeout(todc, 4000); + todcTrigger = setTimeout(todc, 4000); } -function todc(){ +function todc() { $('#message').fadeOut(); } //reverse -function bottomReverse(){ +function bottomReverse() { $("#bottom").toggleClass("reverse"); $(".leftside").toggleClass("reverse"); - if($("#bottom").hasClass("reverse")){ + if ($("#bottom").hasClass("reverse")) { localStorage.removeItem("reverse") - }else{ - localStorage.setItem("reverse","true") + } else { + localStorage.setItem("reverse", "true") } } -function tips(mode){ +function tips(mode) { var electron = require("electron"); var ipc = electron.ipcRenderer; ipc.send('endmem', ""); clearInterval(clockint); clearInterval(spotStart); - if(mode=="ver"){ + if (mode == "ver") { tipsToggle() - $("#tips-text").html('TheDesk '+localStorage.getItem("ver")+'[supervisor_account1+]') - localStorage.setItem("tips","ver") - }else if(mode=="clock"){ + $("#tips-text").html('TheDesk ' + localStorage.getItem("ver") + '[supervisor_account1+]') + localStorage.setItem("tips", "ver") + } else if (mode == "clock") { tipsToggle() - localStorage.setItem("tips","clock") + localStorage.setItem("tips", "clock") clock() - }else if(mode=="memory"){ + } else if (mode == "memory") { tipsToggle() - localStorage.setItem("tips","memory") + localStorage.setItem("tips", "memory") startmem(); - }else if(mode=="trend"){ + } else if (mode == "trend") { tipsToggle() - localStorage.setItem("tips","trend") + localStorage.setItem("tips", "trend") trendTagonTip() - }else if(mode=="spotify"){ + } else if (mode == "spotify") { tipsToggle() - localStorage.setItem("tips","spotify") - var json=nowplaying("spotifytips") + localStorage.setItem("tips", "spotify") + var json = nowplaying("spotifytips") spotifytips(json) } } //メモリ -function startmem(){ +function startmem() { var electron = require("electron"); var ipc = electron.ipcRenderer; ipc.send('startmem', ""); ipc.on('memory', function (event, arg) { - var use=arg[0]; - var cpu=arg[1]; - var total=arg[2] - $("#tips-text").html(escapeHTML(cpu)+"
    Memory:"+Math.floor(use/1024/1024/102.4)/10+"/"+Math.floor(total/1024/1024/102.4)/10+"GB("+Math.floor(use/total*100)+"%)") + var use = arg[0]; + var cpu = arg[1]; + var total = arg[2] + $("#tips-text").html(escapeHTML(cpu) + "
    Memory:" + Math.floor(use / 1024 / 1024 / 102.4) / 10 + "/" + Math.floor(total / 1024 / 1024 / 102.4) / 10 + "GB(" + Math.floor(use / total * 100) + "%)") }) } //トレンドタグ -function trendTagonTip(){ - $(".trendtag").remove(); - var domain="imastodon.net" - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/trend_tags" - console.log(start) +function trendTagonTip() { + $(".trendtag").remove(); + var domain = "imastodon.net" + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/trend_tags" fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { if (json) { - var tags=""; - json=json.score; - Object.keys(json).forEach(function(tag) { - tags = tags + '#' + escapeHTML(tag) + ' TL Toot
    '; - }); - $("#tips-text").html('
    トレンドタグrefresh:
    ' + tags+'
    '); - trendTagonTipInterval() - }else{ - $("#tips-text").html(""); - } - }); - + var tags = ""; + json = json.score; + Object.keys(json).forEach(function (tag) { + tags = tags + '#' + escapeHTML(tag) + ' TL Toot
    '; + }); + $("#tips-text").html('
    トレンドタグrefresh:
    ' + tags + '
    '); + trendTagonTipInterval() + } else { + $("#tips-text").html(""); + } + }); + } //Spotify -function spotifytips(){ - var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh"); - var at = localStorage.getItem("spotify"); - if(at){ - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json' - } - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - console.log(json); - var ms=json.progress_ms; - var last=1000-ms%1000; - var item=json.item; - var img=item.album.images[0].url; - var artisttxt=""; - for(i=0;i0){ - artisttxt=artisttxt+","+item.artists[i].name; - }else{ - artisttxt=item.artists[0].name; +function spotifytips() { + var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh"); + var at = localStorage.getItem("spotify"); + if (at) { + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json' + } + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + var ms = json.progress_ms; + var last = 1000 - ms % 1000; + var item = json.item; + var img = item.album.images[0].url; + var artisttxt = ""; + for (i = 0; i < item.artists.length; i++) { + if (i > 0) { + artisttxt = artisttxt + "," + item.artists[i].name; + } else { + artisttxt = item.artists[0].name; } } - artisttxt=escapeHTML(artisttxt); + artisttxt = escapeHTML(artisttxt); sleep(last); - var tms=item.duration_ms; - var per=ms/item.duration_ms*100; - ms=ms/1000; - tms=tms/1000; - var s=Math.round(ms)%60; - if(s<10){ - s="0"+s; + var tms = item.duration_ms; + var per = ms / item.duration_ms * 100; + ms = ms / 1000; + tms = tms / 1000; + var s = Math.round(ms) % 60; + if (s < 10) { + s = "0" + s; } - var m=(Math.round(ms)-Math.round(ms)%60)/60; - var ts=Math.round(tms)%60; - if(ts<10){ - ts="0"+ts; + var m = (Math.round(ms) - Math.round(ms) % 60) / 60; + var ts = Math.round(tms) % 60; + if (ts < 10) { + ts = "0" + ts; } - var tm=(Math.round(tms)-Math.round(tms)%60)/60; - $("#tips-text").html('
    refresh'+escapeHTML(item.name)+''+artisttxt+''+m+':'+s+'/'+tm+":"+ts+'
    '); - spotint=setInterval(spotStart, 1000); - }); - }else{ - alert(lang.lang_spotify_acct); - } -} -function spotStart(){ - var total=$(".spotify-prog").attr("data-total"); - var s=$(".spotify-prog").attr("data-s"); - var news=s*1+1; - var per=news*100000/total; - var ns=news%60; - var nm=(news-ns)/60; - if(ns<10){ - ns="0"+ns; + var tm = (Math.round(tms) - Math.round(tms) % 60) / 60; + $("#tips-text").html('
    refresh' + escapeHTML(item.name) + '' + artisttxt + '' + m + ':' + s + '/' + tm + ":" + ts + '
    '); + spotint = setInterval(spotStart, 1000); + }); + } else { + alert(lang.lang_spotify_acct); } - if(per>=100){ +} +function spotStart() { + var total = $(".spotify-prog").attr("data-total"); + var s = $(".spotify-prog").attr("data-s"); + var news = s * 1 + 1; + var per = news * 100000 / total; + var ns = news % 60; + var nm = (news - ns) / 60; + if (ns < 10) { + ns = "0" + ns; + } + if (per >= 100) { clearInterval(spotStart); spotifytips() - }else{ + } else { $("#spot-m").text(nm); $("#spot-s").text(ns); - } - $(".spotify-prog").attr("data-s",news); - $(".spotify-prog").css("width",per+"%"); + } + $(".spotify-prog").attr("data-s", news); + $(".spotify-prog").css("width", per + "%"); } -function trendTagonTipInterval(){ - setTimeout(trendTagonTip, 6000000); +function trendTagonTipInterval() { + setTimeout(trendTagonTip, 6000000); } //時計 var clockint; -function clock(){ - var now=new Date(); - var last=1000-now.getTime()%1000; +function clock() { + var now = new Date(); + var last = 1000 - now.getTime() % 1000; sleep(last); - clockint=setInterval(clockStart, 1000); + clockint = setInterval(clockStart, 1000); } -function clockStart(){ +function clockStart() { var nowTime = new Date(); // 現在日時を得る var nowHour = nowTime.getHours(); // 時を抜き出す - if(nowHour<10){nowHour="0"+nowHour } - var nowMin = nowTime.getMinutes(); // 分を抜き出す - if(nowMin<10){nowMin="0"+nowMin } - var nowSec = nowTime.getSeconds(); // 秒を抜き出す - if(nowSec<10){nowSec="0"+nowSec } - var msg = nowTime.getFullYear()+"/"+(nowTime.getMonth()+1)+"/"+nowTime.getDate()+''+nowHour + ":" + nowMin + ":" + nowSec+""; + if (nowHour < 10) { nowHour = "0" + nowHour } + var nowMin = nowTime.getMinutes(); // 分を抜き出す + if (nowMin < 10) { nowMin = "0" + nowMin } + var nowSec = nowTime.getSeconds(); // 秒を抜き出す + if (nowSec < 10) { nowSec = "0" + nowSec } + var msg = nowTime.getFullYear() + "/" + (nowTime.getMonth() + 1) + "/" + nowTime.getDate() + '' + nowHour + ":" + nowMin + ":" + nowSec + ""; $("#tips-text").html(msg); } function sleep(waitMsec) { var startMsec = new Date(); while (new Date() - startMsec < waitMsec); } -function tipsToggle(){ +function tipsToggle() { $("#tips").toggleClass("hide"); $("#tips-menu").toggleClass("hide"); } -if(localStorage.getItem("tips")){ +if (localStorage.getItem("tips")) { tips(localStorage.getItem("tips")); } - \ No newline at end of file diff --git a/app/js/userdata/his-data.js b/app/js/userdata/his-data.js index 3d936075..d7226cc7 100644 --- a/app/js/userdata/his-data.js +++ b/app/js/userdata/his-data.js @@ -5,11 +5,11 @@ function utl(user, more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (user == "--now") { var user = $('#his-data').attr("user-id"); } - if(localStorage.getItem("mode_" + domain)!="misskey"){ + if (localStorage.getItem("mode_" + domain) != "misskey") { if (more) { var sid = $("#his-tl .cvo").last().attr("toot-id"); var plus = "?max_id=" + sid; @@ -18,49 +18,49 @@ function utl(user, more, acct_id) { } var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses" + plus; - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at } } - }else{ - var req={i:at} + } else { + var req = { i: at } if (more) { var sid = $("#his-tl .cvo").last().attr("toot-id"); - req.maxId=sid; + req.maxId = sid; } - req.userId=user; + req.userId = user; var start = "https://" + domain + "/api/users/notes" - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify(req) + body: JSON.stringify(req) } } - fetch(start, i).then(function(response) { + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(localStorage.getItem("mode_" + domain)=="misskey"){ + }).then(function (json) { + if (localStorage.getItem("mode_" + domain) == "misskey") { var templete = misskeyParse(json, '', acct_id, 'user'); - }else{ + } else { var templete = parse(json, '', acct_id, 'user'); } - if(!json[0]){ - templete=lang.lang_details_nodata+"
    "; + if (!json[0]) { + templete = lang.lang_details_nodata + "
    "; } if (more) { $("#his-tl-contents").append(templete); } else { - if(localStorage.getItem("mode_" + domain)!="misskey"){ - pinutl(templete,user, acct_id) - }else{ + if (localStorage.getItem("mode_" + domain) != "misskey") { + pinutl(templete, user, acct_id) + } else { $("#his-tl-contents").html(templete); } } @@ -68,16 +68,16 @@ function utl(user, more, acct_id) { }); } //ピン留めTL -function pinutl(before,user, acct_id) { +function pinutl(before, user, acct_id) { if (!acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (user == "--now") { var user = $('#his-data').attr("user-id"); } - var plus = "?pinned=1"; + var plus = "?pinned=1"; var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses" + plus fetch(start, { @@ -86,17 +86,17 @@ function pinutl(before,user, acct_id) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - var templete = parse(json, 'pinned', acct_id,'user'); - if(!json[0]){ - templete=""; + }).then(function (json) { + var templete = parse(json, 'pinned', acct_id, 'user'); + if (!json[0]) { + templete = ""; } - $("#his-tl-contents").html(templete+before); + $("#his-tl-contents").html(templete + before); jQuery("time.timeago").timeago(); }); } @@ -107,26 +107,26 @@ function flw(user, more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (user == "--now") { var user = $('#his-data').attr("user-id"); } - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var req={i:at} + if (localStorage.getItem("mode_" + domain) == "misskey") { + var req = { i: at } if (more) { var sid = $("#his-follow-list .cvo").last().attr("user-id"); - req.maxId=sid; + req.maxId = sid; } - req.userId=user; + req.userId = user; var start = "https://" + domain + "/api/users/following" - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify(req) + body: JSON.stringify(req) } - }else{ + } else { if (more) { var sid = $("#his-follow-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -135,7 +135,7 @@ function flw(user, more, acct_id) { } var start = "https://" + domain + "/api/v1/accounts/" + user + "/following" + plus - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -143,19 +143,19 @@ function flw(user, more, acct_id) { } } } - fetch(start,i).then(function(response) { + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var templete = misskeyUserparse(json,'',acct_id); - }else{ - var templete = userparse(json,'',acct_id); + }).then(function (json) { + if (localStorage.getItem("mode_" + domain) == "misskey") { + var templete = misskeyUserparse(json, '', acct_id); + } else { + var templete = userparse(json, '', acct_id); } - if(templete==""){ - templete=lang.lang_details_nodata+"
    "; + if (templete == "") { + templete = lang.lang_details_nodata + "
    "; } if (more) { $("#his-follow-list-contents").append(templete); @@ -173,26 +173,26 @@ function fer(user, more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (user == "--now") { var user = $('#his-data').attr("user-id"); } - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var req={i:at} + if (localStorage.getItem("mode_" + domain) == "misskey") { + var req = { i: at } if (more) { var sid = $("#his-follower-list .cvo").last().attr("user-id"); - req.maxId=sid; + req.maxId = sid; } - req.userId=user; + req.userId = user; var start = "https://" + domain + "/api/users/followers" - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify(req) + body: JSON.stringify(req) } - }else{ + } else { if (more) { var sid = $("#his-follower-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -201,7 +201,7 @@ function fer(user, more, acct_id) { } var start = "https://" + domain + "/api/v1/accounts/" + user + "/followers" + plus - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -209,19 +209,19 @@ function fer(user, more, acct_id) { } } } - fetch(start, i).then(function(response) { + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var templete = misskeyUserparse(json,'',acct_id); - }else{ - var templete = userparse(json,'',acct_id); + }).then(function (json) { + if (localStorage.getItem("mode_" + domain) == "misskey") { + var templete = misskeyUserparse(json, '', acct_id); + } else { + var templete = userparse(json, '', acct_id); } - if(templete==""){ - templete=lang.lang_details_nodata+"
    "; + if (templete == "") { + templete = lang.lang_details_nodata + "
    "; } if (more) { $("#his-follower-list-contents").append(templete); @@ -239,8 +239,8 @@ function showFav(more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)!="misskey"){ + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) != "misskey") { if (more) { var sid = $("#his-fav-list .cvo").last().attr("toot-id"); var plus = "?max_id=" + sid; @@ -248,42 +248,42 @@ function showFav(more, acct_id) { var plus = ""; } var start = "https://" + domain + "/api/v1/favourites" + plus - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at } } - }else{ - var req={i:at} + } else { + var req = { i: at } if (more) { var sid = $("#his-fav-list .cvo").last().attr("toot-id"); - req.maxId=sid; + req.maxId = sid; } var start = "https://" + domain + "/api/i/favorites" - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify(req) - } + body: JSON.stringify(req) + } } - - fetch(start, i).then(function(response) { + + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(localStorage.getItem("mode_" + domain)!="misskey"){ - var templete = parse(json, '', acct_id,'user'); - }else{ - var templete = misskeyParse(json, '', acct_id,'user'); + }).then(function (json) { + if (localStorage.getItem("mode_" + domain) != "misskey") { + var templete = parse(json, '', acct_id, 'user'); + } else { + var templete = misskeyParse(json, '', acct_id, 'user'); } - if(!json[0]){ - templete=lang.lang_details_nodata+"
    "; + if (!json[0]) { + templete = lang.lang_details_nodata + "
    "; } if (more) { $("#his-fav-list-contents").append(templete); @@ -300,22 +300,22 @@ function showMut(more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var req={i:at} + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { + var req = { i: at } if (more) { var sid = $("#his-muting-list .cvo").last().attr("user-id"); - req.maxId=sid; + req.maxId = sid; } var start = "https://" + domain + "/api/mute/list" - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify(req) + body: JSON.stringify(req) } - }else{ + } else { if (more) { var sid = $("#his-muting-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -323,7 +323,7 @@ function showMut(more, acct_id) { var plus = ""; } var start = "https://" + domain + "/api/v1/mutes" + plus - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -331,17 +331,17 @@ function showMut(more, acct_id) { } } } - - fetch(start,i).then(function(response) { + + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(!json[0]){ - templete=lang.lang_details_nodata+"
    "; + }).then(function (json) { + if (!json[0]) { + templete = lang.lang_details_nodata + "
    "; } - var templete = userparse(json,'',acct_id); + var templete = userparse(json, '', acct_id); if (more) { $("#his-muting-list-contents").append(templete); } else { @@ -357,11 +357,11 @@ function showBlo(more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - $("#his-blocking-list-contents").html(lang.lang_hisdata_notonmisskey+"
    "); + if (localStorage.getItem("mode_" + domain) == "misskey") { + $("#his-blocking-list-contents").html(lang.lang_hisdata_notonmisskey + "
    "); return false; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (more) { var sid = $("#his-blocking-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -375,16 +375,16 @@ function showBlo(more, acct_id) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(!json[0]){ - templete=lang.lang_details_nodata+"
    "; + }).then(function (json) { + if (!json[0]) { + templete = lang.lang_details_nodata + "
    "; } - var templete = userparse(json,'',acct_id); + var templete = userparse(json, '', acct_id); if (more) { $("#his-blocking-list-contents").append(templete); } else { @@ -396,27 +396,27 @@ function showBlo(more, acct_id) { //フォロリクリスト function showReq(more, acct_id) { - + if (!acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - var req={i:at} + var at = localStorage.getItem("acct_" + acct_id + "_at"); + if (localStorage.getItem("mode_" + domain) == "misskey") { + var req = { i: at } if (more) { var sid = $("#his-request-list .cvo").last().attr("user-id"); - req.maxId=sid; + req.maxId = sid; } var start = "https://" + domain + "/following/requests/list" - var i={ + var i = { method: 'POST', headers: { 'content-type': 'application/json', }, - body:JSON.stringify(req) + body: JSON.stringify(req) } - }else{ + } else { if (more) { var sid = $("#his-request-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -424,7 +424,7 @@ function showReq(more, acct_id) { var plus = ""; } var start = "https://" + domain + "/api/v1/follow_requests" + plus - var i={ + var i = { method: 'GET', headers: { 'content-type': 'application/json', @@ -432,21 +432,21 @@ function showReq(more, acct_id) { } } } - fetch(start,i).then(function(response) { + fetch(start, i).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - - if(localStorage.getItem("mode_" + domain)!="misskey"){ - var templete = userparse(json, true,acct_id); - }else{ - var templete = misskeyUserparse(json, true,acct_id); + }).then(function (json) { + + if (localStorage.getItem("mode_" + domain) != "misskey") { + var templete = userparse(json, "request", acct_id); + } else { + var templete = misskeyUserparse(json, true, acct_id); } - - if(!json[0]){ - templete=lang.lang_details_nodata+"
    "; + + if (!json[0]) { + templete = lang.lang_details_nodata + "
    "; } if (more) { $("#his-request-list-contents").append(templete); @@ -463,11 +463,11 @@ function showDom(more, acct_id) { var acct_id = $('#his-data').attr("use-acct"); } var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ - $("#his-domain-list-contents").html(lang.lang_hisdata_notonmisskey+"
    "); + if (localStorage.getItem("mode_" + domain) == "misskey") { + $("#his-domain-list-contents").html(lang.lang_hisdata_notonmisskey + "
    "); return false; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (more) { var sid = $("#his-domain-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -482,17 +482,17 @@ function showDom(more, acct_id) { 'Authorization': 'Bearer ' + at }, //body: JSON.stringify({}) - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { var templete = ""; - if(!json[0]){ - templete=lang.lang_details_nodata+"
    "; + if (!json[0]) { + templete = lang.lang_details_nodata + "
    "; } - Object.keys(json).forEach(function(key) { + Object.keys(json).forEach(function (key) { var domain = json[key]; templete = templete + domain + '"); + if (localStorage.getItem("mode_" + domain) == "misskey") { + $("#his-follow-recom-contents").html(lang.lang_hisdata_notonmisskey + "
    "); return false; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); if (more) { var sid = $("#his-follow-recom-list .cvo").last().attr("user-id"); var plus = "?max_id=" + sid; @@ -532,20 +532,19 @@ function showFrl(more, acct_id) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { - $("#his-follow-recom-contents").html(lang.lang_details_nodata+"("+lang.lang_hisdata_frcreq+")
    "); + }).catch(function (error) { + $("#his-follow-recom-contents").html(lang.lang_details_nodata + "(" + lang.lang_hisdata_frcreq + ")
    "); console.error(error); - }).then(function(json) { - console.log(json); - if(!json[0]){ - console.log("No data"); - templete=lang.lang_details_nodata+"("+lang.lang_hisdata_frcwarn+")
    "; - }else{ - var templete = userparse(json,'',acct_id); + }).then(function (json) { + if (!json[0]) { + console.warn("No suggestions(recommend) data"); + templete = lang.lang_details_nodata + "(" + lang.lang_hisdata_frcwarn + ")
    "; + } else { + var templete = userparse(json, '', acct_id); } - + if (more) { $("#his-follow-recom-contents").append(templete); } else { @@ -562,37 +561,37 @@ function udAdd(start) { 'Accept': 'application/json' }, //body: JSON.stringify({}) - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - var fields=json.attachment; - for(var i=0;i'+escapeHTML(fields[i].signatureAlgorithm)+':'+escapeHTML(fields[i].name)+''; - }else{ - var html=''+escapeHTML(fields[i].signatureAlgorithm)+':'+escapeHTML(fields[i].name)+''; + }).then(function (json) { + var fields = json.attachment; + for (var i = 0; i < fields.length; i++) { + if (fields[i].type == "IdentityProof") { + if (fields[i].signatureAlgorithm == "keybase") { + var html = '' + escapeHTML(fields[i].signatureAlgorithm) + ':' + escapeHTML(fields[i].name) + ''; + } else { + var html = '' + escapeHTML(fields[i].signatureAlgorithm) + ':' + escapeHTML(fields[i].name) + ''; } $("#his-proof-prof").append(html) } } }); - fetch("https://notestock.osa-p.net/api/v1/isstock.json?id="+start.replace("@","users/"), { + fetch("https://notestock.osa-p.net/api/v1/isstock.json?id=" + start.replace("@", "users/"), { method: 'GET', headers: { 'Accept': 'application/json' }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - if(json.user.public_view){ - var html='Notestock'; + }).then(function (json) { + if (json.user.public_view) { + var html = 'Notestock'; $("#his-proof-prof").append(html) } }); @@ -602,45 +601,43 @@ function udAdd(start) { //ユーザーマッチングリスト function showMat() { - + $("#his-matching-list-contents").html(lang.lang_hisdata_taketime); - var full=$("#his-acct").attr("fullname"); - var acct_id=$("#his-data").attr("use-acct"); - full=full.split("@"); - var start = "https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-filtered-api.cgi?"+full[1]+"+" + full[0]; - console.log(start); + var full = $("#his-acct").attr("fullname"); + var acct_id = $("#his-data").attr("use-acct"); + full = full.split("@"); + var start = "https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-filtered-api.cgi?" + full[1] + "+" + full[0]; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json' }, //body: JSON.stringify({}) - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); - var templete=""; - Object.keys(json).forEach(function(key) { + }).then(function (json) { + var templete = ""; + Object.keys(json).forEach(function (key) { var user = json[key]; templete = templete + - '
    ' + - '
    ' + - '' + - '
    ' + - escapeHTML(user.screen_name) + '
    ' + - '
    @' + - user.user + '@'+user.host+'
    ' + - '
    ' + - '
    ' + - '
    ' + - ''; + '
    ' + + '
    ' + + '' + + '
    ' + + escapeHTML(user.screen_name) + '
    ' + + '
    @' + + user.user + '@' + user.host + '
    ' + + '
    ' + + '
    ' + + '
    ' + + ''; }); - $("#his-matching-list").css("height",$("#his-float-data").height()-$("#his-basic-prof").height()-$("#his-des").height()-$("#his-plus-action").height()+"px"); + $("#his-matching-list").css("height", $("#his-float-data").height() - $("#his-basic-prof").height() - $("#his-des").height() - $("#his-plus-action").height() + "px"); $("#his-matching-list-contents").html(templete); }); } diff --git a/app/js/userdata/prof-edit.js b/app/js/userdata/prof-edit.js index 3b6d7bdf..17d0e1e1 100644 --- a/app/js/userdata/prof-edit.js +++ b/app/js/userdata/prof-edit.js @@ -4,7 +4,7 @@ function profedit() { var acct_id = $('#his-data').attr("use-acct"); todo("Updating..."); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/update_credentials"; var name = $("#his-name-val").val(); var des = $("#his-des-val").val(); @@ -17,7 +17,7 @@ function profedit() { display_name: name, note: des, })); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { $('#his-data').modal('close'); todc(); @@ -30,18 +30,18 @@ function imgChange(imgfile, target) { var acct_id = $('#his-data').attr("use-acct"); todo("アップロードしています") if (!imgfile.files.length) { - console.log("No Img"); + console.warn("No Image to upload"); return; } var file = imgfile.files[0]; var fr = new FileReader(); - fr.onload = function(evt) { + fr.onload = function (evt) { var b64 = this.result; var blob = toBlob(b64, 'image/png'); var fd = new FormData(); fd.append(target, blob); var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/update_credentials"; var httpreq = new XMLHttpRequest(); httpreq.open('PATCH', start, true); @@ -49,10 +49,9 @@ function imgChange(imgfile, target) { httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.responseType = "json"; httpreq.send(fd); - httpreq.onreadystatechange = function() { + httpreq.onreadystatechange = function () { if (httpreq.readyState === 4) { var json = httpreq.response; - console.log(json); $('#his-data').modal('close'); todc(); localStorage.removeItem("image"); diff --git a/app/js/userdata/showOnTL.js b/app/js/userdata/showOnTL.js index f639d41e..70981c4c 100644 --- a/app/js/userdata/showOnTL.js +++ b/app/js/userdata/showOnTL.js @@ -1,48 +1,47 @@ //ユーザーデータ表示 localStorage.removeItem("history"); //コード受信 -if(location.search){ +if (location.search) { var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); - var mode=m[1]; - var codex=m[2]; - if(mode=="user"){ - udgEx(codex,'main'); + var mode = m[1]; + var codex = m[2]; + if (mode == "user") { + udgEx(codex, 'main'); } } -function udgEx(user,acct_id){ - if(user=="selector"){ +function udgEx(user, acct_id) { + if (user == "selector") { user = $("#his-acct").attr('fullname'); } - if(acct_id=="selector"){ + if (acct_id == "selector") { acct_id = $("#user-acct-sel").val(); } - if(acct_id=="main"){ + if (acct_id == "main") { acct_id = localStorage.getItem("main"); } - console.log(user); + console.log("Get user data of " + user); var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); - var start = "https://" + domain + "/api/v1/search?resolve=true&q="+user + if (localStorage.getItem("mode_" + domain) == "misskey") { return false; } + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/search?resolve=true&q=" + user fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at } - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); - if(json.accounts){ - var id=json.accounts[0].id; - udg(id,acct_id); - }else{ - var url="https://"+user.split('@')[1]+"/@"+user.split('@')[0]; - const {shell} = require('electron'); + }).then(function (json) { + if (json.accounts) { + var id = json.accounts[0].id; + udg(id, acct_id); + } else { + var url = "https://" + user.split('@')[1] + "/@" + user.split('@')[0]; + const { shell } = require('electron'); shell.openExternal(url); } }); @@ -51,161 +50,157 @@ function udgEx(user,acct_id){ function udg(user, acct_id) { reset(); if (!user) { - user = localStorage.getItem("user-id_"+acct_id); - console.log(user); + user = localStorage.getItem("user-id_" + acct_id); } todo("User Data Loading..."); var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)=="misskey"){ + if (localStorage.getItem("mode_" + domain) == "misskey") { misskeyUdg(user, acct_id) return; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/" + user; - console.log(start); fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { //一つ前のユーザーデータ - if (!localStorage.getItem("history")){ - $("#his-history-btn").prop("disabled",true); - }else{ - $("#his-history-btn").prop("disabled",false); + if (!localStorage.getItem("history")) { + $("#his-history-btn").prop("disabled", true); + } else { + $("#his-history-btn").prop("disabled", false); $('#his-data').attr("history", localStorage.getItem("history")); } //moved設定時 if (json.moved) { Materialize.toast( - lang.lang_showontl_movetxt+'', 4000) + lang.lang_showontl_movetxt + '', 4000) } - $('#his-data').modal('open'); - $('#his-data').attr("user-id", user); - $('#his-data').attr("use-acct", acct_id); - if(json.username!=json.acct){ - //Remote - $('#his-data').attr("remote", "true"); - var fullname=json.acct; - }else{ - $('#his-data').attr("remote", "false"); - var fullname=json.acct+"@"+domain; - } - utl(json.id, '', acct_id); - flw(json.id, '', acct_id); - fer(json.id, '', acct_id); - var dis_name=escapeHTML(json.display_name); - dis_name=twemoji.parse(dis_name); + $('#his-data').modal('open'); + $('#his-data').attr("user-id", user); + $('#his-data').attr("use-acct", acct_id); + if (json.username != json.acct) { + //Remote + $('#his-data').attr("remote", "true"); + var fullname = json.acct; + } else { + $('#his-data').attr("remote", "false"); + var fullname = json.acct + "@" + domain; + } + utl(json.id, '', acct_id); + flw(json.id, '', acct_id); + fer(json.id, '', acct_id); + var dis_name = escapeHTML(json.display_name); + dis_name = twemoji.parse(dis_name); - var note=json.note; - if(json.emojis){ - var actemojick = json.emojis[0]; - }else{ - var actemojick=false; - } - //絵文字があれば - if (actemojick) { - Object.keys(json.emojis).forEach(function(key5) { - var emoji = json.emojis[key5]; - var shortcode = emoji.shortcode; - var emoji_url = ''; - var regExp = new RegExp(":" + shortcode + ":", "g"); - dis_name = dis_name.replace(regExp, emoji_url); - note = note.replace(regExp, emoji_url); - }); - } - //noteの解析 - //var tags = '#$1'; - //var mens = '@$1'; - //note=note.replace(/#(\S+)/gi, tags) - console.log(note) - //note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens) - $("#his-name").html(dis_name); - $("#his-acct").text(json.acct); - $("#his-acct").attr("fullname",fullname); - $("#his-prof").attr("src", json.avatar); - $('#his-data').css('background-image', 'url(' + json.header + ')'); - $("#his-sta").text(json.statuses_count); - $("#his-follow").text(json.following_count); - var flerc=json.followers_count; - if(flerc<0){ - flerc="-"; - } - $("#his-follower").text(flerc); - $("#his-since").text(crat(json.created_at)); - $("#his-openin").attr("data-href", json.url); - if(json.fields){ - if(json.fields.length>0){ - note=note+'' - for(var i=0;i'; + var note = json.note; + if (json.emojis) { + var actemojick = json.emojis[0]; + } else { + var actemojick = false; + } + //絵文字があれば + if (actemojick) { + Object.keys(json.emojis).forEach(function (key5) { + var emoji = json.emojis[key5]; + var shortcode = emoji.shortcode; + var emoji_url = ''; + var regExp = new RegExp(":" + shortcode + ":", "g"); + dis_name = dis_name.replace(regExp, emoji_url); + note = note.replace(regExp, emoji_url); + }); + } + //noteの解析 + //var tags = '#$1'; + //var mens = '@$1'; + //note=note.replace(/#(\S+)/gi, tags) + //note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens) + $("#his-name").html(dis_name); + $("#his-acct").text(json.acct); + $("#his-acct").attr("fullname", fullname); + $("#his-prof").attr("src", json.avatar); + $('#his-data').css('background-image', 'url(' + json.header + ')'); + $("#his-sta").text(json.statuses_count); + $("#his-follow").text(json.following_count); + var flerc = json.followers_count; + if (flerc < 0) { + flerc = "-"; + } + $("#his-follower").text(flerc); + $("#his-since").text(crat(json.created_at)); + $("#his-openin").attr("data-href", json.url); + if (json.fields) { + if (json.fields.length > 0) { + note = note + '
    '+twemoji.parse(escapeHTML(fname))+''+twemoji.parse(fval)+'
    ' + for (var i = 0; i < json.fields.length; i++) { + var fname = json.fields[i].name; + var fval = json.fields[i].value; + if (json.fields[i].verified_at) { + var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at); + var color = "rgba(121,189,154,.25);" + } else { + var when = ""; + var color = "inherit" } - note=note+'
    ' - $("#his-des").html(twemoji.parse(note)); - }else{ - $("#his-des").html(twemoji.parse(note)); + note = note + '' + twemoji.parse(escapeHTML(fname)) + '' + twemoji.parse(fval) + ''; } - }else{ + note = note + '' + $("#his-des").html(twemoji.parse(note)); + } else { $("#his-des").html(twemoji.parse(note)); } - if(json.bot){ - $("#his-bot").html(lang.lang_showontl_botacct); - } - $("#his-des").attr("data-acct",acct_id); - $('#his-data').css('background-size', 'cover'); - $("#his-data .tab-content").css("height",$("#his-float-timeline").height()-70+"px") - localStorage.setItem("history" , user); - //自分の時 - if (json.acct == localStorage.getItem("user_"+acct_id)) { - showFav('', acct_id); - showBlo('', acct_id); - showMut('', acct_id); - showDom('', acct_id); - showReq('', acct_id); - showFrl('', acct_id); - $("#his-name-val").val(json.display_name); - if(json.fields.length>0){ - if(json.fields[0]){$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));} - if(json.fields[1]){$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));} - if(json.fields[2]){$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));} - if(json.fields[3]){$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));} - } - var des = json.note; - des = des.replace(/
    /g, "\n") - des = $.strip_tags(des); - $("#his-des-val").val(des); - $("#his-follow-btn").hide(); - $("#his-block-btn").hide(); - $("#his-mute-btn").hide(); - $("#his-notf-btn").hide(); - $("#his-domain-btn").hide(); - $("#his-emp-btn").hide(); - $(".only-my-data").show(); - $(".only-his-data").hide(); - } else { - relations(user, acct_id); - $(".only-my-data").hide(); - $(".only-his-data").show(); + } else { + $("#his-des").html(twemoji.parse(note)); + } + if (json.bot) { + $("#his-bot").html(lang.lang_showontl_botacct); + } + $("#his-des").attr("data-acct", acct_id); + $('#his-data').css('background-size', 'cover'); + $("#his-data .tab-content").css("height", $("#his-float-timeline").height() - 70 + "px") + localStorage.setItem("history", user); + //自分の時 + if (json.acct == localStorage.getItem("user_" + acct_id)) { + showFav('', acct_id); + showBlo('', acct_id); + showMut('', acct_id); + showDom('', acct_id); + showReq('', acct_id); + showFrl('', acct_id); + $("#his-name-val").val(json.display_name); + if (json.fields.length > 0) { + if (json.fields[0]) { $("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value)); } + if (json.fields[1]) { $("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value)); } + if (json.fields[2]) { $("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value)); } + if (json.fields[3]) { $("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value)); } } + var des = json.note; + des = des.replace(/
    /g, "\n") + des = $.strip_tags(des); + $("#his-des-val").val(des); + $("#his-follow-btn").hide(); + $("#his-block-btn").hide(); + $("#his-mute-btn").hide(); + $("#his-notf-btn").hide(); + $("#his-domain-btn").hide(); + $("#his-emp-btn").hide(); + $(".only-my-data").show(); + $(".only-his-data").hide(); + } else { + relations(user, acct_id); + $(".only-my-data").hide(); + $(".only-his-data").show(); + } todc(); //外部データ取得(死かもしれないので) udAdd(json.url); @@ -214,133 +209,129 @@ function udg(user, acct_id) { function misskeyUdg(user, acct_id) { reset(); if (!user) { - user = localStorage.getItem("user-id_"+acct_id); - console.log(user); + user = localStorage.getItem("user-id_" + acct_id); } todo("User Data Loading..."); var domain = localStorage.getItem("domain_" + acct_id); - if(localStorage.getItem("mode_" + domain)!="misskey"){ + if (localStorage.getItem("mode_" + domain) != "misskey") { udg(user, acct_id) return; } - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/users/show"; - console.log(user); fetch(start, { method: 'POST', headers: { 'content-type': 'application/json', }, body: JSON.stringify({ - i:at, - userId:user + i: at, + userId: user }) - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { - console.log(json); + }).then(function (json) { //一つ前のユーザーデータ - if (!localStorage.getItem("history")){ - $("#his-history-btn").prop("disabled",true); - }else{ - $("#his-history-btn").prop("disabled",false); + if (!localStorage.getItem("history")) { + $("#his-history-btn").prop("disabled", true); + } else { + $("#his-history-btn").prop("disabled", false); $('#his-data').attr("history", localStorage.getItem("history")); } - $('#his-data').modal('open'); - $('#his-data').attr("user-id", user); - $('#his-data').attr("use-acct", acct_id); - if(json.host){ - //Remote - $('#his-data').attr("remote", "false"); - var fullname=json.username+"@"+json.host; - }else{ - $('#his-data').attr("remote", "false"); - var fullname=json.acct+"@"+domain; - } - utl(json.id, '', acct_id); - flw(json.id, '', acct_id); - fer(json.id, '', acct_id); - if(json.name){ - var dis_name=escapeHTML(json.name); - dis_name=twemoji.parse(dis_name); - }else{ - var dis_name=json.name - } - $("#his-name").html(dis_name); - $("#his-acct").text(json.username); - $("#his-acct").attr("fullname",fullname); - $("#his-prof").attr("src", json.avatarUrl); - $('#his-data').css('background-image', 'url(' + json.bannerUrl + ')'); - $("#his-sta").text(json.notesCount); - $("#his-follow").text(json.followingCount); - $("#his-follower").text(json.followersCount); - $("#his-since").text(crat(json.createdAt)); - var note=escapeHTML(json.description); - $("#his-des").html(twemoji.parse(note)); - if(json.isCat){ - $("#his-bot").html("Cat"+twemoji.parse("😺")); - } - $('#his-data').css('background-size', 'cover'); - localStorage.setItem("history" , user); - //自分の時 - if (json.username == localStorage.getItem("user_"+acct_id) && !json.host) { - //showFav('', acct_id); - //showMut('', acct_id); - //showReq('', acct_id); - showFrl('', acct_id); - $("#his-name-val").val(json.name); - var des = json.note; - des = nl2br(des) - des = $.strip_tags(des); - $("#his-des-val").val(des); - $("#his-follow-btn").hide(); - $("#his-block-btn").hide(); - $("#his-mute-btn").hide(); - $("#his-notf-btn").hide(); - $("#his-domain-btn").hide(); - $("#his-emp-btn").hide(); - $(".only-my-data").show(); - $(".only-his-data").hide(); + $('#his-data').modal('open'); + $('#his-data').attr("user-id", user); + $('#his-data').attr("use-acct", acct_id); + if (json.host) { + //Remote + $('#his-data').attr("remote", "false"); + var fullname = json.username + "@" + json.host; + } else { + $('#his-data').attr("remote", "false"); + var fullname = json.acct + "@" + domain; + } + utl(json.id, '', acct_id); + flw(json.id, '', acct_id); + fer(json.id, '', acct_id); + if (json.name) { + var dis_name = escapeHTML(json.name); + dis_name = twemoji.parse(dis_name); + } else { + var dis_name = json.name + } + $("#his-name").html(dis_name); + $("#his-acct").text(json.username); + $("#his-acct").attr("fullname", fullname); + $("#his-prof").attr("src", json.avatarUrl); + $('#his-data').css('background-image', 'url(' + json.bannerUrl + ')'); + $("#his-sta").text(json.notesCount); + $("#his-follow").text(json.followingCount); + $("#his-follower").text(json.followersCount); + $("#his-since").text(crat(json.createdAt)); + var note = escapeHTML(json.description); + $("#his-des").html(twemoji.parse(note)); + if (json.isCat) { + $("#his-bot").html("Cat" + twemoji.parse("😺")); + } + $('#his-data').css('background-size', 'cover'); + localStorage.setItem("history", user); + //自分の時 + if (json.username == localStorage.getItem("user_" + acct_id) && !json.host) { + //showFav('', acct_id); + //showMut('', acct_id); + //showReq('', acct_id); + showFrl('', acct_id); + $("#his-name-val").val(json.name); + var des = json.note; + des = nl2br(des) + des = $.strip_tags(des); + $("#his-des-val").val(des); + $("#his-follow-btn").hide(); + $("#his-block-btn").hide(); + $("#his-mute-btn").hide(); + $("#his-notf-btn").hide(); + $("#his-domain-btn").hide(); + $("#his-emp-btn").hide(); + $(".only-my-data").show(); + $(".only-his-data").hide(); + } else { + if (json.isFollowing) { + //自分がフォローしている + $("#his-data").addClass("following"); + $("#his-follow-btn").text(lang.lang_status_unfollow); + hisList(user, acct_id); } else { - if (json.isFollowing) { - //自分がフォローしている - $("#his-data").addClass("following"); - $("#his-follow-btn").text(lang.lang_status_unfollow); - hisList(user,acct_id); - }else{ - $("#his-follow-btn").text(lang.lang_status_follow); - } - if (json.isFollowed) { - //フォローされてる - $("#his-relation").text(lang.lang_showontl_followed); - } - $("#his-block-btn").hide(); - if (json.isMuted) { - $("#his-data").addClass("muting"); - $("#his-mute-btn").text(lang.lang_status_unmute); - }else{ - $("#his-mute-btn").text(lang.lang_status_mute); - } - $(".only-my-data").hide(); - $(".only-his-data").show(); + $("#his-follow-btn").text(lang.lang_status_follow); } + if (json.isFollowed) { + //フォローされてる + $("#his-relation").text(lang.lang_showontl_followed); + } + $("#his-block-btn").hide(); + if (json.isMuted) { + $("#his-data").addClass("muting"); + $("#his-mute-btn").text(lang.lang_status_unmute); + } else { + $("#his-mute-btn").text(lang.lang_status_mute); + } + $(".only-my-data").hide(); + $(".only-his-data").show(); + } todc(); }); } //一つ前のユーザーデータ表示 -function historyShow(){ - var acct_id=$('#his-data').attr("use-acct"); - var user=$('#his-data').attr("history"); +function historyShow() { + var acct_id = $('#his-data').attr("use-acct"); + var user = $('#his-data').attr("history"); udg(user, acct_id, "true") } //選択アカウントのプロフ -function profShow(){ +function profShow() { var acct_id = $("#post-acct-sel").val(); - var user = localStorage.getItem("user-id_"+acct_id); - console.log("user-id_"+acct_id+":"+user); + var user = localStorage.getItem("user-id_" + acct_id); udg(user, acct_id) hide(); } @@ -348,7 +339,7 @@ function profShow(){ //FF関係取得 function relations(user, acct_id) { var domain = localStorage.getItem("domain_" + acct_id); - var at = localStorage.getItem("acct_"+ acct_id + "_at"); + var at = localStorage.getItem("acct_" + acct_id + "_at"); var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user; fetch(start, { method: 'GET', @@ -356,20 +347,20 @@ function relations(user, acct_id) { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, - }).then(function(response) { + }).then(function (response) { return response.json(); - }).catch(function(error) { + }).catch(function (error) { todo(error); console.error(error); - }).then(function(json) { + }).then(function (json) { var json = json[0]; console.log(json); if (json.following) { //自分がフォローしている $("#his-data").addClass("following"); $("#his-follow-btn").text(lang.lang_status_unfollow); - hisList(user,acct_id); - }else{ + hisList(user, acct_id); + } else { $("#his-follow-btn").text(lang.lang_status_follow); } if (json.followed_by) { @@ -379,37 +370,37 @@ function relations(user, acct_id) { if (json.blocking) { $("#his-data").addClass("blocking"); $("#his-block-btn").text(lang.lang_status_unblock); - }else{ + } else { $("#his-block-btn").text(lang.lang_status_block); } if (json.muting) { $("#his-data").addClass("muting"); $("#his-mute-btn").text(lang.lang_status_unmute); - }else{ + } else { $("#his-mute-btn").text(lang.lang_status_mute); } if (json.muting_notifications) { $("#his-data").addClass("mutingNotf"); - $("#his-notf-btn").text(lang.lang_showontl_notf+lang.lang_status_unmute); - }else{ - $("#his-notf-btn").text(lang.lang_showontl_notf+lang.lang_status_mute); + $("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_unmute); + } else { + $("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute); } if (json.domain_blocking) { $("#his-data").addClass("blockingDom"); - $("#his-domain-btn").text(lang.lang_showontl_domain+lang.lang_status_unblock); - }else{ - $("#his-domain-btn").text(lang.lang_showontl_domain+lang.lang_status_block); + $("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_unblock); + } else { + $("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block); } //Endorsed - if(json.endorsed){ + if (json.endorsed) { $("#his-end-btn").addClass("endorsed"); $("#his-end-btn").text(lang.lang_status_unendorse) - }else{ + } else { $("#his-end-btn").removeClass("endorsed"); $("#his-end-btn").text(lang.lang_status_endorse) } //Blocked - if(json.blocked_by){ + if (json.blocked_by) { $("#his-float-timeline").hide(); $("#his-float-blocked").show(); $("#his-follow-btn").hide() @@ -417,9 +408,9 @@ function relations(user, acct_id) { }); } -function profbrws(){ - const {shell} = require('electron'); - var url=$("#his-openin").attr("data-href") +function profbrws() { + const { shell } = require('electron'); + var url = $("#his-openin").attr("data-href") shell.openExternal(url); } //オールリセット @@ -429,7 +420,7 @@ function hisclose() { $('#his-data').attr("history", ""); localStorage.removeItem("history"); } -function reset(){ +function reset() { $(".tab-content:eq(0)").show(); $(".tab-content:gt(0)").hide(); $(".active-back").removeClass("active-back"); @@ -460,8 +451,8 @@ function reset(){ $("#his-follow-btn").text(lang.lang_status_follow); $("#his-mute-btn").text(lang.lang_status_mute); $("#his-block-btn").text(lang.lang_status_block); - $("#his-notf-btn").text(lang.lang_showontl_notf+lang.lang_status_mute); - $("#his-domain-btn").text(lang.lang_showontl_domain+lang.lang_status_block); + $("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute); + $("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block); $("#his-relation").text(""); $(".cont-series").html(""); $("#domainblock").val(""); @@ -479,10 +470,10 @@ function reset(){ $("#his-float-blocked").hide(); $("#his-proof-prof").html("") } -$('#my-data-nav .custom-tab').on('click',function(){ - var target=$(this).find("a").attr("go"); +$('#my-data-nav .custom-tab').on('click', function () { + var target = $(this).find("a").attr("go"); $("#my-data-nav .custom-tab").removeClass("active-back"); $(this).addClass("active-back"); $(target).show(); - $(".tab-content:not("+target+")").hide(); + $(".tab-content:not(" + target + ")").hide(); }); \ No newline at end of file diff --git a/app/main.js b/app/main.js index 03544790..42ab82ad 100644 --- a/app/main.js +++ b/app/main.js @@ -1,6 +1,6 @@ -var dir='file://' + __dirname; -var base=dir + '/view/'; +var dir = 'file://' + __dirname; +var base = dir + '/view/'; // Electronのモジュール const electron = require("electron"); const fs = require("fs"); @@ -10,7 +10,7 @@ const dl = require('./main/dl.js'); const img = require('./main/img.js'); const np = require('./main/np.js'); const systemFunc = require('./main/system.js'); -const Menu=electron.Menu +const Menu = electron.Menu const join = require('path').join; // アプリケーションをコントロールするモジュール const app = electron.app; @@ -20,13 +20,13 @@ const BrowserWindow = electron.BrowserWindow; let mainWindow; var info_path = join(app.getPath("userData"), "window-size.json"); var max_info_path = join(app.getPath("userData"), "max-window-size.json"); -var lang_path=join(app.getPath("userData"), "language"); -var ha_path=join(app.getPath("userData"), "hardwareAcceleration"); -try{ +var lang_path = join(app.getPath("userData"), "language"); +var ha_path = join(app.getPath("userData"), "hardwareAcceleration"); +try { fs.readFileSync(ha_path, 'utf8'); app.disableHardwareAcceleration() console.log("disabled: HA"); -}catch{ +} catch{ console.log("enabled: HA"); } var window_size; @@ -50,7 +50,7 @@ try { }; // デフォルトバリュー } -function isFile(file){ +function isFile(file) { try { fs.statSync(file); return true @@ -59,114 +59,114 @@ function isFile(file){ } } // 全てのウィンドウが閉じたら終了 -app.on('window-all-closed', function() { +app.on('window-all-closed', function () { if (process.platform != 'darwin') { - electron.session.defaultSession.clearCache(() => {}) + electron.session.defaultSession.clearCache(() => { }) app.quit(); } }); // macOSでウィンドウを閉じた後に再度開けるようにする -app.on('activate', function() { +app.on('activate', function () { if (mainWindow == null) { createWindow(); } }); function createWindow() { - if(isFile(lang_path)) { + if (isFile(lang_path)) { console.log("exist"); var lang = fs.readFileSync(lang_path, 'utf8'); } else { - var langs=app.getLocale(); + var langs = app.getLocale(); console.log(langs); - if(~langs.indexOf("ja")){ - lang="ja"; - }else{ - lang="en"; + if (~langs.indexOf("ja")) { + lang = "ja"; + } else { + lang = "en"; } fs.mkdir(app.getPath("userData"), function (err) { - fs.writeFileSync(lang_path,lang); + fs.writeFileSync(lang_path, lang); }); } console.log(app.getLocale()); - console.log("launch:"+lang); + console.log("launch:" + lang); // メイン画面の表示。ウィンドウの幅、高さを指定できる - var platform=process.platform; - var bit=process.arch; - if(platform=="linux"){ - var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,icon: __dirname + '/desk.png'} - }else if(platform=="win32"){ - var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,simpleFullscreen:true} - }else if(platform=="darwin"){ - var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,simpleFullscreen:true} + var platform = process.platform; + var bit = process.arch; + if (platform == "linux") { + var arg = { webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, icon: __dirname + '/desk.png' } + } else if (platform == "win32") { + var arg = {webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true } + } else if (platform == "darwin") { + var arg = { webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true } } mainWindow = new BrowserWindow(arg); - electron.session.defaultSession.clearCache(() => {}) - if(process.argv){ - if(process.argv[1]){ + electron.session.defaultSession.clearCache(() => { }) + if (process.argv) { + if (process.argv[1]) { var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/); - if(m){ - var mode=m[1]; - var code=m[2]; - var plus='?mode='+mode+'&code='+code; - }else{ - var plus=""; + if (m) { + var mode = m[1]; + var code = m[2]; + var plus = '?mode=' + mode + '&code=' + code; + } else { + var plus = ""; } - }else{ - var plus=""; + } else { + var plus = ""; } - }else{ - var plus=""; + } else { + var plus = ""; } - mainWindow.loadURL(base+lang+'/index.html'+plus); - if(!window_size.x && !window_size.y){ + mainWindow.loadURL(base + lang + '/index.html' + plus); + if (!window_size.x && !window_size.y) { mainWindow.center(); } - if(window_size.max){ + if (window_size.max) { mainWindow.maximize(); } // ウィンドウが閉じられたらアプリも終了 - mainWindow.on('closed', function() { + mainWindow.on('closed', function () { electron.ipcMain.removeAllListeners(); mainWindow = null; }); - mainWindow.on('close', function() { - if( - max_window_size.width==mainWindow.getBounds().width && - max_window_size.height==mainWindow.getBounds().height && - max_window_size.x==mainWindow.getBounds().x && - max_window_size.y==mainWindow.getBounds().y - ){ - var size={width:mainWindow.getBounds().width,height:mainWindow.getBounds().height,x:mainWindow.getBounds().x,y:mainWindow.getBounds().y,max:true} - }else{ - var size={width:mainWindow.getBounds().width,height:mainWindow.getBounds().height,x:mainWindow.getBounds().x,y:mainWindow.getBounds().y} + mainWindow.on('close', function () { + if ( + max_window_size.width == mainWindow.getBounds().width && + max_window_size.height == mainWindow.getBounds().height && + max_window_size.x == mainWindow.getBounds().x && + max_window_size.y == mainWindow.getBounds().y + ) { + var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y, max: true } + } else { + var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y } } fs.writeFileSync(info_path, JSON.stringify(size)); }); - mainWindow.on('maximize', function() { + mainWindow.on('maximize', function () { fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds())); }); - - var platform=process.platform; - var bit=process.arch; - if(platform=="darwin"){ - Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false,dir))); + + var platform = process.platform; + var bit = process.arch; + if (platform == "darwin") { + Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, false, dir))); } //CSS css.css(mainWindow); //アップデータとダウンロード - dl.dl(mainWindow,lang_path,base); + dl.dl(mainWindow, lang_path, base); //画像選択と画像処理 - img.img(mainWindow,dir); + img.img(mainWindow, dir); //NowPlaying np.TheDeskNowPlaying(mainWindow); //その他system - systemFunc.system(mainWindow,dir,lang); + systemFunc.system(mainWindow, dir, lang); } // Electronの初期化完了後に実行 app.on('ready', createWindow); -var onError = function(err,response){ - console.error(err,response); +var onError = function (err, response) { + console.error(err, response); }; app.setAsDefaultProtocolClient('thedesk') diff --git a/app/main/css.js b/app/main/css.js index a36e91b1..c9e446dd 100644 --- a/app/main/css.js +++ b/app/main/css.js @@ -8,11 +8,11 @@ function css(mainWindow) { const join = require('path').join; var customcss = join(app.getPath("userData"), "custom.css"); - ipc.on('custom-css-create', function(e, arg) { + ipc.on('custom-css-create', function (e, arg) { fs.writeFileSync(customcss, arg); mainWindow.webContents.send('custom-css-create-complete', ""); }) - ipc.on('custom-css-request', function(e, arg) { + ipc.on('custom-css-request', function (e, arg) { try { var css = fs.readFileSync(customcss, 'utf8'); } catch (e) { @@ -20,7 +20,7 @@ function css(mainWindow) { } mainWindow.webContents.send('custom-css-response', css); }) - ipc.on('theme-json-create', function(e, arg) { + ipc.on('theme-json-create', function (e, arg) { var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] + ".thedesktheme"); fs.writeFileSync(themecss, JSON.stringify(JSON5.parse(arg))); @@ -30,19 +30,19 @@ function css(mainWindow) { mainWindow.webContents.send('theme-json-create-complete', "error"); } }) - ipc.on('theme-json-delete', function(e, arg) { + ipc.on('theme-json-delete', function (e, arg) { var themecss = join(app.getPath("userData"), arg + ".thedesktheme"); console.log(themecss); - fs.unlink(themecss, function(err) { + fs.unlink(themecss, function (err) { mainWindow.webContents.send('theme-json-delete-complete', ""); }); }) - ipc.on('theme-json-request', function(e, arg) { + ipc.on('theme-json-request', function (e, arg) { var themecss = join(app.getPath("userData"), arg + ".thedesktheme"); var json = JSON.parse(fs.readFileSync(themecss, 'utf8')); mainWindow.webContents.send('theme-json-response', json); }) - ipc.on('theme-css-request', function(e, arg) { + ipc.on('theme-css-request', function (e, arg) { var themecss = join(app.getPath("userData"), arg + ".thedesktheme"); try { var json = JSON.parse(fs.readFileSync(themecss, 'utf8')); @@ -82,10 +82,10 @@ function css(mainWindow) { } }) - ipc.on('theme-json-list', function(e, arg) { - fs.readdir(app.getPath("userData"), function(err, files) { + ipc.on('theme-json-list', function (e, arg) { + fs.readdir(app.getPath("userData"), function (err, files) { if (err) throw err; - var fileList = files.filter(function(file) { + var fileList = files.filter(function (file) { var tfile = join(app.getPath("userData"), file); return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み }) diff --git a/app/main/dl.js b/app/main/dl.js index e5d1436c..b2ce8d79 100644 --- a/app/main/dl.js +++ b/app/main/dl.js @@ -1,38 +1,41 @@ -function dl(mainWindow,lang_path,base) { - const electron = require("electron"); - const shell=electron.shell; +function dl(mainWindow, lang_path, base) { + const electron = require("electron"); + const shell = electron.shell; const fs = require("fs"); - const {download} = require('electron-dl'); - const BrowserWindow = electron.BrowserWindow; - const dialog = electron.dialog; + const { download } = require('electron-dl'); + const BrowserWindow = electron.BrowserWindow; + const dialog = electron.dialog; var updatewin = null; - var ipc = electron.ipcMain; - const app = electron.app; - const join = require('path').join; - ipc.on('update', function(e, x, y) { - - var platform = process.platform; - var bit = process.arch; - if (platform != "others") { - updatewin = new BrowserWindow({ - width: 600, - height: 400, - "transparent": false, // ウィンドウの背景を透過 - "frame": false, // 枠の無いウィンドウ - "resizable": false, - "modal": true - }); - var lang = fs.readFileSync(lang_path, 'utf8'); - updatewin.loadURL(base + lang + '/update.html'); + var ipc = electron.ipcMain; + const app = electron.app; + const join = require('path').join; + ipc.on('update', function (e, x, y) { - return "true" - } else { - return false; - } - }) - //アプデDL + var platform = process.platform; + var bit = process.arch; + if (platform != "others") { + updatewin = new BrowserWindow({ + webPreferences: { + nodeIntegration:true + }, + width: 600, + height: 400, + "transparent": false, // ウィンドウの背景を透過 + "frame": false, // 枠の無いウィンドウ + "resizable": false, + "modal": true + }); + var lang = fs.readFileSync(lang_path, 'utf8'); + updatewin.loadURL(base + lang + '/update.html'); + + return "true" + } else { + return false; + } + }) + //アプデDL ipc.on('download-btn', (e, args) => { - + var platform = process.platform; var bit = process.arch; dialog.showSaveDialog(null, { @@ -66,18 +69,18 @@ function dl(mainWindow,lang_path,base) { } function dl(url, file, dir) { - + updatewin.webContents.send('mess', "ダウンロードを開始します。"); const opts = { directory: dir, openFolderWhenDone: true, - onProgress: function(e) { + onProgress: function (e) { updatewin.webContents.send('prog', e); }, saveAs: false }; - download(BrowserWindow.getFocusedWindow(), - url, opts) + download(updatewin, + url, opts) .then(dl => { updatewin.webContents.send('mess', "ダウンロードが完了しました。"); app.quit(); @@ -86,7 +89,7 @@ function dl(mainWindow,lang_path,base) { .catch(console.error); } ipc.on('general-dl', (e, args) => { - + var name = ""; var platform = process.platform; var bit = process.arch; @@ -103,21 +106,21 @@ function dl(mainWindow,lang_path,base) { directory: dir, filename: name, openFolderWhenDone: false, - onProgress: function(e) { + onProgress: function (e) { mainWindow.webContents.send('general-dl-prog', e); }, saveAs: false }; download(BrowserWindow.getFocusedWindow(), - args[0], opts) + args[0], opts) .then(dl => { mainWindow.webContents.send('general-dl-message', dir); }) .catch(console.error); - }); - ipc.on('open-finder', (e, folder) => { - + }); + ipc.on('open-finder', (e, folder) => { + shell.showItemInFolder(folder) - }); + }); } exports.dl = dl; diff --git a/app/main/img.js b/app/main/img.js index eb473c6f..46eae534 100644 --- a/app/main/img.js +++ b/app/main/img.js @@ -1,4 +1,4 @@ -function img(mainWindow,dir){ +function img(mainWindow, dir) { const electron = require("electron"); const dialog = electron.dialog; const fs = require("fs"); @@ -6,66 +6,69 @@ function img(mainWindow,dir){ var ipc = electron.ipcMain; const BrowserWindow = electron.BrowserWindow; ipc.on('file-select', (e, args) => { - + dialog.showOpenDialog(null, { properties: ['openFile', 'multiSelections'], title: '添付ファイルを選択', defaultPath: '.', filters: [ - {name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']}, - {name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']}, - {name: '動画', extensions: ['mp4','webm']}, - {name: '全てのファイル', extensions: ['*']} + { name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'] }, + { name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] }, + { name: '動画', extensions: ['mp4', 'webm'] }, + { name: '全てのファイル', extensions: ['*'] } ] }, (fileNames) => { - if(!fileNames){ + if (!fileNames) { return false; } - for(var i=0;i { - - if(!arg){ - const options = { - type: 'info', - title: 'Adobeフォトエディタ', - message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。", - buttons: ['拒否', '許可','永続的に許可'] - } - dialog.showMessageBox(options, function(index) { - if(index===2){ - mainWindow.webContents.send('adobeagree', "true"); - } - if(index>0){ - adobeWindow(); - } - }) - }else{ - adobeWindow(); + + if (!arg) { + const options = { + type: 'info', + title: 'Adobeフォトエディタ', + message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。", + buttons: ['拒否', '許可', '永続的に許可'] + } + dialog.showMessageBox(options, function (index) { + if (index === 2) { + mainWindow.webContents.send('adobeagree', "true"); + } + if (index > 0) { + adobeWindow(); + } + }) + } else { + adobeWindow(); } - }); - function adobeWindow(){ - var window = new BrowserWindow({ - width: 1000, - height: 750 - }); - window.loadURL(dir + '/adobe.html'); - } - ipc.on('bmp-image', (e, args) => { - - var m = args[0].match(/(.+)\\(.+)\.(.+)$/); - Jimp.read(args[0], function (err, lenna) { - if (err) throw err; - lenna.getBase64(Jimp.MIME_PNG, function (err, src) { - mainWindow.webContents.send('bmp-img-comp', [src,args[1]]); - }); - }); - -}); + }); + function adobeWindow() { + var window = new BrowserWindow({ + webPreferences: { + nodeIntegration:true + }, + width: 1000, + height: 750 + }); + window.loadURL(dir + '/adobe.html'); + } + ipc.on('bmp-image', (e, args) => { + + var m = args[0].match(/(.+)\\(.+)\.(.+)$/); + Jimp.read(args[0], function (err, lenna) { + if (err) throw err; + lenna.getBase64(Jimp.MIME_PNG, function (err, src) { + mainWindow.webContents.send('bmp-img-comp', [src, args[1]]); + }); + }); + + }); } exports.img = img; \ No newline at end of file diff --git a/app/main/language.js b/app/main/language.js index 94c3279f..a549610b 100644 --- a/app/main/language.js +++ b/app/main/language.js @@ -1,85 +1,93 @@ // Create the Application's main menu -function templete(lang,mainWindow,packaged,dir){ +function templete(lang, mainWindow, packaged, dir) { const electron = require("electron"); const app = electron.app; const BrowserWindow = electron.BrowserWindow; - const dict={ - "application":{ - "ja":"アプリケーション", - "en":"Application" + const dict = { + "application": { + "ja": "アプリケーション", + "en": "Application" }, - "about":{ - "ja":"TheDeskについて", - "en":"About TheDesk" + "about": { + "ja": "TheDeskについて", + "en": "About TheDesk" }, - "quit":{ - "ja":"終了", - "en":"Quit" + "quit": { + "ja": "終了", + "en": "Quit" }, - "edit":{ - "ja":"編集", - "en":"Edit" + "edit": { + "ja": "編集", + "en": "Edit" }, - "undo":{ - "ja":"元に戻す", - "en":"Undo" + "undo": { + "ja": "元に戻す", + "en": "Undo" }, - "redo":{ - "ja":"やり直す", - "en":"Redo" + "redo": { + "ja": "やり直す", + "en": "Redo" }, - "cut":{ - "ja":"切り取り", - "en":"Cut" + "cut": { + "ja": "切り取り", + "en": "Cut" }, - "copy":{ - "ja":"コピー", - "en":"Copy" + "copy": { + "ja": "コピー", + "en": "Copy" }, - "paste":{ - "ja":"貼り付け", - "en":"Paste" + "paste": { + "ja": "貼り付け", + "en": "Paste" }, - "selall":{ - "ja":"すべて選択", - "en":"Select All" + "selall": { + "ja": "すべて選択", + "en": "Select All" }, - "view":{ - "ja":"表示", - "en":"View" + "view": { + "ja": "表示", + "en": "View" }, - "reload":{ - "ja":"再読み込み", - "en":"Reload" + "reload": { + "ja": "再読み込み", + "en": "Reload" }, - "window":{ - "ja":"ウィンドウ", - "en":"Window" + "window": { + "ja": "ウィンドウ", + "en": "Window" }, - "minimun":{ - "ja":"最小化", - "en":"Minimarize" + "minimun": { + "ja": "最小化", + "en": "Minimarize" }, - "close":{ - "ja":"閉じる", - "en":"Close" + "close": { + "ja": "閉じる", + "en": "Close" } } const menu = [{ label: dict.application[lang], submenu: [ - { label: dict.about[lang], click: function() { - var ver=app.getVersion() - var window = new BrowserWindow({width: 300, height: 460, - "transparent": false, // ウィンドウの背景を透過 - "frame": false, // 枠の無いウィンドウ - "resizable": false }); - window.loadURL(dir + '/about.html?ver='+ver); - } }, + { + label: dict.about[lang], click: function () { + var ver = app.getVersion() + var window = new BrowserWindow({ + webPreferences: { + nodeIntegration:true + }, + width: 300, height: 460, + "transparent": false, // ウィンドウの背景を透過 + "frame": false, // 枠の無いウィンドウ + "resizable": false + }); + window.loadURL(dir + '/about.html?ver=' + ver); + } + }, { type: "separator" }, - { label: dict.quit[lang], accelerator: "Command+Q", click: function() { app.quit(); }} - - ]}, { + { label: dict.quit[lang], accelerator: "Command+Q", click: function () { app.quit(); } } + + ] + }, { label: dict.edit[lang], submenu: [ { label: dict.undo[lang], accelerator: "CmdOrCtrl+Z", selector: "undo:" }, @@ -89,57 +97,58 @@ function templete(lang,mainWindow,packaged,dir){ { label: dict.copy[lang], accelerator: "CmdOrCtrl+C", selector: "copy:" }, { label: dict.paste[lang], accelerator: "CmdOrCtrl+V", selector: "paste:" }, { label: dict.selall[lang], accelerator: "CmdOrCtrl+A", selector: "selectAll:" } - ]},{ + ] + }, { label: dict.view[lang], submenu: [ { label: 'Toggle Developer Tools', accelerator: 'Alt+Command+I', - click: function() { if(!packaged){mainWindow.toggleDevTools();} } - }, - { - label: dict.reload[lang], - accelerator: 'CmdOrCtrl+R', - click: function() { mainWindow.webContents.send('reload', " "); } - } + click: function () { if (!packaged) { mainWindow.toggleDevTools(); } } + }, + { + label: dict.reload[lang], + accelerator: 'CmdOrCtrl+R', + click: function () { mainWindow.webContents.send('reload', " "); } + } ] - }, - { + }, + { label: dict.window[lang], role: 'window', submenu: [ - { + { label: dict.minimun[lang], accelerator: 'CmdOrCtrl+M', role: 'minimize' - }, - { + }, + { label: dict.close[lang], accelerator: 'CmdOrCtrl+W', role: 'close' - }, - ] - } + }, + ] + } ]; return menu; } -function delsel(lang){ - const dict={ - "delete":{ - "ja":"カラム削除", - "en":"Delete this column" +function delsel(lang) { + const dict = { + "delete": { + "ja": "カラム削除", + "en": "Delete this column" }, - "mess":{ - "ja":"カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)", - "en":"Delete this column(URL analyzes of all windows will be disabled.)" + "mess": { + "ja": "カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)", + "en": "Delete this column(URL analyzes of all windows will be disabled.)" }, - "yes":{ - "ja":"はい", - "en":"Yes" + "yes": { + "ja": "はい", + "en": "Yes" }, - "no":{ - "ja":"いいえ", - "en":"No" + "no": { + "ja": "いいえ", + "en": "No" } } const options = { @@ -147,8 +156,8 @@ function delsel(lang){ title: dict.delete[lang], message: dict.mess[lang], buttons: [dict.no[lang], dict.yes[lang]] - } - return options; + } + return options; } exports.template = templete; diff --git a/app/main/np.js b/app/main/np.js index 43668da6..758d9f01 100644 --- a/app/main/np.js +++ b/app/main/np.js @@ -1,4 +1,4 @@ -function np(mainWindow){ +function np(mainWindow) { const electron = require("electron"); const join = require('path').join; const app = electron.app; @@ -7,65 +7,65 @@ function np(mainWindow){ ipc.on('itunes', async (e, args) => { //Verified on Windows console.log("Access"); - if(args[0]=="set"){ - var {NowPlaying,PlayerName} = require("nowplaying-node"); - var nppath=join(app.getPath("userData"), "nowplaying"); + if (args[0] == "set") { + var { NowPlaying, PlayerName } = require("nowplaying-node"); + var nppath = join(app.getPath("userData"), "nowplaying"); var npProvider; try { npProvider = args[1]; } catch (e) { - npProvider="AIMP"; + npProvider = "AIMP"; } var myAIMP = new NowPlaying({ fetchCover: true, player: PlayerName[npProvider], }); fs.writeFileSync(nppath, npProvider); - }else{ - var platform=process.platform; - var bit=process.arch; - if(platform=="darwin"){ - try { - const nowplaying = require("itunes-nowplaying-mac"); - const value = await nowplaying.getRawData(); - mainWindow.webContents.send('itunes-np', value); - } catch (error) { - // エラーを返す - console.error(error); - mainWindow.webContents.send('itunes-np', error); - } - }else{ - var {NowPlaying,PlayerName} = require("nowplaying-node"); - var nppath=join(app.getPath("userData"), "nowplaying"); + } else { + var platform = process.platform; + var bit = process.arch; + if (platform == "darwin") { + try { + const nowplaying = require("itunes-nowplaying-mac"); + const value = await nowplaying.getRawData(); + mainWindow.webContents.send('itunes-np', value); + } catch (error) { + // エラーを返す + console.error(error); + mainWindow.webContents.send('itunes-np', error); + } + } else { + var { NowPlaying, PlayerName } = require("nowplaying-node"); + var nppath = join(app.getPath("userData"), "nowplaying"); var npProvider; try { npProvider = fs.readFileSync(nppath, 'utf8'); } catch (e) { - npProvider="AIMP"; + npProvider = "AIMP"; } var myAIMP = new NowPlaying({ fetchCover: true, player: PlayerName[npProvider], }); myAIMP.update(); - var path=myAIMP.getCoverPath(); - if(path){ + var path = myAIMP.getCoverPath(); + if (path) { var bin = fs.readFileSync(path, 'base64'); - }else{ - var bin=false; + } else { + var bin = false; } - - var value={ - win:true, - name:myAIMP.getTitle(), - artist:myAIMP.getArtist(), - album:myAIMP.getAlbum(), - path:bin + + var value = { + win: true, + name: myAIMP.getTitle(), + artist: myAIMP.getArtist(), + album: myAIMP.getAlbum(), + path: bin } mainWindow.webContents.send('itunes-np', value); } - } - + } + }); } exports.TheDeskNowPlaying = np; \ No newline at end of file diff --git a/app/main/system.js b/app/main/system.js index db6387ee..edd8e97c 100644 --- a/app/main/system.js +++ b/app/main/system.js @@ -1,6 +1,6 @@ function system(mainWindow, dir, lang) { - const electron = require("electron"); - const app = electron.app; + const electron = require("electron"); + const app = electron.app; const join = require('path').join; var Jimp = require("jimp"); const fs = require("fs"); @@ -11,15 +11,15 @@ function system(mainWindow, dir, lang) { const BrowserWindow = electron.BrowserWindow; const dialog = electron.dialog; const os = require('os') - const language=require("../main/language.js"); - ipc.on('native-notf', function(e, args) { - + const language = require("../main/language.js"); + ipc.on('native-notf', function (e, args) { + var platform = process.platform; var bit = process.arch; if (platform == "win32") { const notifier = require('node-notifier') var tmp_imge = tmp_img; - Jimp.read(args[2], function(err, lenna) { + Jimp.read(args[2], function (err, lenna) { if (!err && lenna) { lenna.write(tmp_img); var tmp_imge = tmp_img; @@ -27,51 +27,54 @@ function system(mainWindow, dir, lang) { var tmp_imge = ""; } notifier.notify({ - appID: "top.thedesk", - message: args[1], - title: args[0], - icon: tmp_imge, - sound: false, - wait: true, - }, - function(err, response) { + appID: "top.thedesk", + message: args[1], + title: args[0], + icon: tmp_imge, + sound: false, + wait: true, + }, + function (err, response) { console.log(err, response) }); }); } }); //言語 - ipc.on('lang', function(e, arg) { - - console.log("set:" + arg); - fs.writeFileSync(lang_path, arg); - mainWindow.webContents.send('langres', ""); - }) - //ハードウェアアクセラレーションの無効化 - ipc.on('ha', function(e, arg) { - + ipc.on('lang', function (e, arg) { + + console.log("set:" + arg); + fs.writeFileSync(lang_path, arg); + mainWindow.webContents.send('langres', ""); + }) + //ハードウェアアクセラレーションの無効化 + ipc.on('ha', function (e, arg) { + if (arg == "true") { fs.writeFileSync(ha_path, arg); } else { - fs.unlink(ha_path, function(err) {}); + fs.unlink(ha_path, function (err) { }); } app.relaunch() app.exit() }) ipc.on('quit', (e, args) => { - + app.quit(); }); ipc.on('about', (e, args) => { - + about(); }); function about() { - + var ver = app.getVersion() var window = new BrowserWindow({ + webPreferences: { + nodeIntegration:true + }, width: 300, height: 480, "transparent": false, // ウィンドウの背景を透過 @@ -82,15 +85,15 @@ function system(mainWindow, dir, lang) { return "true" } ipc.on('column-del', (e, args) => { - + console.log(lang); var options = language.delsel(lang) - dialog.showMessageBox(options, function(index) { + dialog.showMessageBox(options, function (index) { mainWindow.webContents.send('column-del-reply', index); }) }); - ipc.on('nano', function(e, x, y) { - + ipc.on('nano', function (e, x, y) { + var nano_info_path = join(app.getPath("userData"), "nano-window-position.json"); var window_pos; @@ -100,6 +103,9 @@ function system(mainWindow, dir, lang) { window_pos = [0, 0]; // デフォルトバリュー } var nanowindow = new BrowserWindow({ + webPreferences: { + nodeIntegration:true + }, width: 350, height: 200, "transparent": false, // ウィンドウの背景を透過 @@ -110,7 +116,7 @@ function system(mainWindow, dir, lang) { nanowindow.setAlwaysOnTop(true); nanowindow.setPosition(window_pos[0], window_pos[1]); - nanowindow.on('close', function() { + nanowindow.on('close', function () { fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition())); }); return true; @@ -149,7 +155,7 @@ function system(mainWindow, dir, lang) { num_b = -1; } - data = data.sort(function(a, b) { + data = data.sort(function (a, b) { var x = a[key]; var y = b[key]; if (x > y) return num_a; @@ -173,7 +179,7 @@ function system(mainWindow, dir, lang) { ipc.on('fonts', (e, arg) => { const fm = require('font-manager'); var fonts = fm.getAvailableFontsSync(); - object_array_sort(fonts, 'family', 'asc', function(fonts_sorted) { + object_array_sort(fonts, 'family', 'asc', function (fonts_sorted) { mainWindow.webContents.send('font-list', fonts_sorted); }); }); diff --git a/app/nano.html b/app/nano.html index 930193eb..c8162430 100644 --- a/app/nano.html +++ b/app/nano.html @@ -1,214 +1,242 @@ + - - - - -TheDesk Nano - + + + + + TheDesk Nano + + - - - -
    -
    - -
    -
    - + + + +
    +
    + +
    +
    + - - - - - - - - - - + + + + + + + + + \ No newline at end of file + templete = ''; + $("#post-acct-sel").append(templete); + }); + function mov() { + return false; + } + function resetmv() { + return false; + } + function post() { + var acct_id = $("#post-acct-sel").val(); + var domain = localStorage.getItem("domain_" + acct_id); + var at = localStorage.getItem("acct_" + acct_id + "_at"); + var start = "https://" + domain + "/api/v1/statuses"; + var str = $("#textarea").val(); + var toot = { + status: str + } + var vis = loadVis(acct_id) + toot.visibility = vis; + var httpreq = new XMLHttpRequest(); + httpreq.open('POST', start, true); + httpreq.setRequestHeader('Content-Type', 'application/json'); + httpreq.setRequestHeader('Authorization', 'Bearer ' + at); + httpreq.responseType = "json"; + httpreq.send(JSON.stringify(toot)); + httpreq.onreadystatechange = function () { + if (httpreq.readyState === 4) { + $("#textarea").val(""); + } + } + } + function loadVis(acct_id) { + var vist = localStorage.getItem("vis"); + console.log(vist); + if (!vist) { + return "public"; + } else { + if (vist == "memory") { + var memory = localStorage.getItem("vis-memory-" + acct_id); + if (!memory) { + memory = "public"; + } + return memory; + } else if (vist == "server") { + var multi = localStorage.getItem("multi"); + var obj = JSON.parse(multi); + var memory = obj[acct_id]["vis"]; + if (!memory) { + memory = "public"; + } + return memory; + } else { + return vist; + } + } + } + \ No newline at end of file diff --git a/app/package-lock.json b/app/package-lock.json index 71619dbd..4b2d2926 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "thedesk", - "version": "18.3.1", + "version": "18.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -10,15 +10,304 @@ "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==", "dev": true }, + "@babel/polyfill": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" + } + }, + "@jimp/bmp": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.4.tgz", + "integrity": "sha512-dhKM7Cjw4XoOefx3/we2+vWyTP6hQPpM7mEsziGjtsrK2f/e3/+hhHbEsQNgO9BOA1FPJRXAOiYHts9IlMH1mg==", + "requires": { + "@jimp/utils": "^0.6.4", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + } + }, + "@jimp/core": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.4.tgz", + "integrity": "sha512-nyiAXI8/uU54fGO53KrRB8pdn1s+IODZ+rj0jG2owsNJlTlagFrsZAy8IVTUCOiiXjh9TbwFo7D5XMrmi4KUww==", + "requires": { + "@jimp/utils": "^0.6.4", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.4.tgz", + "integrity": "sha512-sdBHrBoVr1+PFx4dlUAgXvvu4dG0esQobhg7qhpSLRje1ScavIgE2iXdJKpycgzrqwAOL8vW4/E5w2/rONlaoQ==", + "requires": { + "@jimp/core": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/gif": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.4.tgz", + "integrity": "sha512-14mLoyG0UrYJsGNRoXBFvSJdFtBD0BSBwQ1zCNeW+HpQqdl+Kh5E1Pz4nqT2KNylJe1jypyR51Q2yndgcfGVyg==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.4.tgz", + "integrity": "sha512-NrFla9fZC/Bhw1Aa9vJ6cBOqpB5ylEPb9jD+yZ0fzcAw5HwILguS//oXv9EWLApIY1XsOMFFe0XWpY653rv8hw==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + } + }, + "@jimp/plugin-blit": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.4.tgz", + "integrity": "sha512-suVznd4XozkQIuECX0u8kMl+cAQpZN3WcbWXUcJaVxRi+VBvHIetG1Qs5qGLzuEg9627+kE7ppv0UgZ5mkE6lg==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-blur": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.4.tgz", + "integrity": "sha512-M2fDMYUUtEKVNnCJZk5J0KSMzzISobmWfnG88RdHXJCkOn98kdawQFwTsYOfJJfCM8jWfhIxwZLFhC/2lkTN2w==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-color": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.4.tgz", + "integrity": "sha512-6Nfr2l9KSb6zH2fij8G6fQOw85TTkyRaBlqMvDmsQp/I1IlaDbXzA2C2Eh9jkQYZQDPu61B1MkmlEhJp/TUx6Q==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.4.tgz", + "integrity": "sha512-qI1MxU1noS6NbEPu/bDDeP405aMviuIsfpOz8J3En8IwIwrJV22qt6QIHmF+eyng8CYgivwIPjEPzFzLR566Nw==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-cover": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.4.tgz", + "integrity": "sha512-z6eafPonj3LJY8cTEfRkXmOfCDi1+f0tbYaNvmiu+OrWJ3Ojw2hMt+BVVvJ8pKe1dWIFkCjxOjyjZWj1gEkaLw==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-crop": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.4.tgz", + "integrity": "sha512-w9TR+pn+GeWbznscGe2HRkPxInge0whAF3TLPWhPwBVjZChTT8dSDXsUpUlxQqvI4SfzuKp8z3/0SBqYDCzxxA==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-displace": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.4.tgz", + "integrity": "sha512-MEvtBXOAio/3iGJkKBrTtFs3Q38ez2Wy/wTD0Ruas+L8fjJR7l4mDgV+zjRr57CqB5mpY+L48VEoa2/gNXh9cg==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-dither": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.4.tgz", + "integrity": "sha512-w+AGLcIMUeJZ4CI0FvFomahgKLcW+ICsLidUNOqyLzceluPAfug4X7vDhQ41pNkzKg0M1+Q1j0aWV8bdyF+LhA==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-flip": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.4.tgz", + "integrity": "sha512-ukINMegMUM9KYjyDCiyYKYdSsbhNRLHDwOJN0xVRalmOKqNaZmjNbiMbaVxKlYt6sHW76RhSMOekw9f6GQB9tQ==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.4.tgz", + "integrity": "sha512-C1P6ohzIddpNb7CX5X+ygbp+ow8Fpt64ZLoIgdjYPs/42HxKluvY62fVfMhY6m5zUGKIMbg0uYeAtz/9LRJPyw==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-invert": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.4.tgz", + "integrity": "sha512-sleGz1jXaNEsP/5Ayqw8oez/6KesWcyCqovIuK4Z4kDmMc2ncuhsXIJQXDWtIF4tTQVzNEgrxUDNA4bi9xpCUA==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-mask": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.4.tgz", + "integrity": "sha512-3D4FbRxnpO9nzwa6cF8AImgO1aVReYbfRRO4I4bku4/iZ+kuU3fBLV+SRhB4c7di3ejG5u+rGsIfaNc94iYYvw==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-normalize": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.4.tgz", + "integrity": "sha512-nOFMwOaVkOKArHkD/T6/1HKAPj3jlW6l0JduVDn1A5eIPCtlnyhlE9zdjgi5Q9IBR/gRjwW6tTzBKuJenS51kg==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-print": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.4.tgz", + "integrity": "sha512-3z5DLVCKg0NfZhHATEaYH/4XanIboPP1pOUoxIUeF++qOnGiGgH2giFJlRprHmx2l3E3DukR1v8pt54PGvfrFw==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.4.tgz", + "integrity": "sha512-fk2+KheUNClrOWj6aDNWj1r4byVQb6Qxy4aT1UHX5GXPHDA+nhlej7ghaYdzeWZYodeM3lpasYtByu1XE2qScQ==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-rotate": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.4.tgz", + "integrity": "sha512-44VgV5D4xQIYInJAVevdW9J3SOhGKyz0OEr2ciA8Q3ktonKx0O5Q1g2kbruiqxFSkK/u2CKPLeKXZzYCFrmJGQ==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-scale": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.4.tgz", + "integrity": "sha512-RAQRaDiCHmEz+A8QS5d/Z38EnlNsQizz3Mu3NsjA8uFtJsv1yMKWXZSQuzniofZw8tlMV6oI3VdM0eQVE07/5w==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7" + } + }, + "@jimp/plugins": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.4.tgz", + "integrity": "sha512-NpO/87CKnF4Q9r8gMl6w+jPKOM/C089qExkViD9cPvcFZEnyVOu7ucGzcMmTcabWOU62iQTOkRViPYr6XaK0LQ==", + "requires": { + "@jimp/plugin-blit": "^0.6.4", + "@jimp/plugin-blur": "^0.6.4", + "@jimp/plugin-color": "^0.6.4", + "@jimp/plugin-contain": "^0.6.4", + "@jimp/plugin-cover": "^0.6.4", + "@jimp/plugin-crop": "^0.6.4", + "@jimp/plugin-displace": "^0.6.4", + "@jimp/plugin-dither": "^0.6.4", + "@jimp/plugin-flip": "^0.6.4", + "@jimp/plugin-gaussian": "^0.6.4", + "@jimp/plugin-invert": "^0.6.4", + "@jimp/plugin-mask": "^0.6.4", + "@jimp/plugin-normalize": "^0.6.4", + "@jimp/plugin-print": "^0.6.4", + "@jimp/plugin-resize": "^0.6.4", + "@jimp/plugin-rotate": "^0.6.4", + "@jimp/plugin-scale": "^0.6.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.4.tgz", + "integrity": "sha512-qv3oo6ll3XWVIToBwVC1wQX0MFKwpxbe2o+1ld9B4ZDavqvAHzalzcmTd/iyooI85CVDAcC3RRDo66oiizGZCQ==", + "requires": { + "@jimp/utils": "^0.6.4", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.4.tgz", + "integrity": "sha512-8/vD4qleexmhPdppiu6fSstj/n/kGNTn8iIlf1emiqOuMN2PL9q5GOPDWU0xWdGNyJMMIDXJPgUFUkKfqXdg7w==", + "requires": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.4.tgz", + "integrity": "sha512-/EMbipQDg5U6DnBAgcSiydlMBRYoKhnaK7MJRImeTzhDJ6xfgNOF7lYq66o0kmaezKdG/cIwZ1CLecn2y3D8SQ==", + "requires": { + "@jimp/bmp": "^0.6.4", + "@jimp/gif": "^0.6.4", + "@jimp/jpeg": "^0.6.4", + "@jimp/png": "^0.6.4", + "@jimp/tiff": "^0.6.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.4.tgz", + "integrity": "sha512-EFQurCyEnZLSM2Q1BYDTUmsOJPSOYEQd18Fvq8bGo8hnBHoGLWLWWyNi2l4cYhtpKmIXyhvQqa6/WaEpKPzvqA==", + "requires": { + "core-js": "^2.5.7" + } + }, "@types/node": { - "version": "10.12.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.29.tgz", - "integrity": "sha512-J/tnbnj8HcsBgCe2apZbdUpQ7hs4d7oZNTYA5bekWdP0sr2NGsOpI/HRdDroEi209tEvTcTtxhD0FfED3DhEcw==" + "version": "10.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.7.tgz", + "integrity": "sha512-on4MmIDgHXiuJDELPk1NFaKVUxxCFr37tm8E9yN6rAiF5Pzp/9bBfBHkoexqRiY+hk/Z04EJU9kKEb59YqJ82A==" }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true }, "ajv": { "version": "6.10.0", @@ -44,45 +333,12 @@ "dev": true, "requires": { "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { "version": "3.2.1", @@ -93,63 +349,53 @@ "color-convert": "^1.9.0" } }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "app-builder-bin": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.4.tgz", - "integrity": "sha512-wC9HYqiC1XqpunT/9y2VuF90KbarnIHL90Tv8BD3TITTgbVIdRTXAsvWvmaR/ImvAX0+l5Z3jZtXjdJ7Pw3bLQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.6.tgz", + "integrity": "sha512-G0Ee6xkbxV+fvM/7xXWIgSDjWAD4E/d/aNbxerq/TVsCyBIau/0VPmrEqBMyZv0NbTwLDW5aF/yHG+0ZEY77kA==", "dev": true }, "app-builder-lib": { - "version": "20.39.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.39.0.tgz", - "integrity": "sha512-lkxGyBrQwueYb3ViqHt5WjyzVVBQqXMXc7TF+JqkuuUWp5DF7SXAYZYd+rsR3gmCbdNxw4SPIEmWmm+I9LK2gw==", + "version": "20.40.2", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.40.2.tgz", + "integrity": "sha512-SAbfua8+L3pFbQp3QFpKV0PzHJPJqepROeX/FPrfdL02zxlw+BVOe6KfC3+UV6XUombWvVPG+SwG956vfIx/Cw==", "dev": true, "requires": { "7zip-bin": "~4.1.0", - "app-builder-bin": "2.6.4", + "app-builder-bin": "2.6.6", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.7", - "builder-util": "9.7.0", - "builder-util-runtime": "8.2.0", + "builder-util": "9.7.1", + "builder-util-runtime": "8.2.1", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", "ejs": "^2.6.1", "electron-osx-sign": "0.4.11", - "electron-publish": "20.39.0", + "electron-publish": "20.40.0", "fs-extra-p": "^7.0.1", "hosted-git-info": "^2.7.1", "is-ci": "^2.0.0", "isbinaryfile": "^4.0.0", - "js-yaml": "^3.12.1", + "js-yaml": "^3.13.0", "lazy-val": "^1.0.4", "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", "plist": "^3.0.1", "read-config-file": "3.2.2", "sanitize-filename": "^1.6.1", - "semver": "^5.6.0", + "semver": "^6.0.0", "temp-file": "^3.3.2" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", "dev": true } } @@ -157,12 +403,14 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -225,8 +473,7 @@ "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -236,20 +483,6 @@ "tweetnacl": "^0.14.3" } }, - "bignumber.js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", - "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=" - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, "bluebird": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", @@ -257,18 +490,18 @@ "dev": true }, "bluebird-lst": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.7.tgz", - "integrity": "sha512-5ix04IbXVIZ6nSRM4aZnwQfk40Td0D57WAl8LfhnICF6XwT4efCZYh0veOHvfDmgpbqE4ju5L5XEAMIcAe13Kw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.8.tgz", + "integrity": "sha512-InUDOaBaIjIobOa3O4YRAbFgff907uTJZXW0m0rhk3zhVZ4GvsmdCLEAKC1CTWTtUWCM8iWTTfFX9N/xQR/etw==", "dev": true, "requires": { - "bluebird": "^3.5.3" + "bluebird": "^3.5.4" } }, "bmp-js": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz", - "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" }, "boxen": { "version": "1.3.0", @@ -283,39 +516,6 @@ "string-width": "^2.0.0", "term-size": "^1.2.0", "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "brace-expansion": { @@ -327,6 +527,15 @@ "concat-map": "0.0.1" } }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, "buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -361,69 +570,35 @@ "dev": true }, "builder-util": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.7.0.tgz", - "integrity": "sha512-QA2RxbaSKvaFVNGcYsjmlkTn03tcdPxgIxHCOgw38G7NK91QWc76RBY9+T1sU8BLVEZJ4qNRWx+pd5rG9tTi+Q==", + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.7.1.tgz", + "integrity": "sha512-txpzYIeuHFjrOQWPTJDvhJYisIVGJdSG9ppccE+y7agT0YNhBlVHGnd8+HgFTajYE34xzB5zf1/zxiiDqSKSpA==", "dev": true, "requires": { "7zip-bin": "~4.1.0", - "app-builder-bin": "2.6.4", + "app-builder-bin": "2.6.6", "bluebird-lst": "^1.0.7", - "builder-util-runtime": "^8.2.0", + "builder-util-runtime": "^8.2.1", "chalk": "^2.4.2", "debug": "^4.1.1", "fs-extra-p": "^7.0.1", "is-ci": "^2.0.0", - "js-yaml": "^3.12.1", - "source-map-support": "^0.5.10", - "stat-mode": "^0.2.2", + "js-yaml": "^3.13.0", + "source-map-support": "^0.5.11", + "stat-mode": "^0.3.0", "temp-file": "^3.3.2" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } } }, "builder-util-runtime": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.0.tgz", - "integrity": "sha512-2Q3YrxANTrDs2NjSG5mbNGLPuUhPnSNYF9w5i4jWfHcNfQ3TgRrGXq4UfnkCiZVX8Axp4eAOSscaLLScKp/XLg==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.1.tgz", + "integrity": "sha512-2TkeTcI9bDlK5azRZSJJNxhAgW1DK+JY3jHK0UWPxgJcan4GZSVDNNO3sXntNxrp+JAdPHMF14rzNd/G53lvqw==", "dev": true, "requires": { "bluebird-lst": "^1.0.7", "debug": "^4.1.1", "fs-extra-p": "^7.0.1", "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } } }, "camelcase": { @@ -496,71 +671,45 @@ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.1.0.tgz", - "integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==", - "dev": true - }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -581,12 +730,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true - }, "combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", @@ -635,7 +778,13 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-js": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.7.tgz", + "integrity": "sha512-ydmsQxDVH7lDpYoirXft8S83ddKKfdsrsmWhtyj7xafXVLbLhKOyfD7kAi2ueFfeP7m9rNavjW59O3hLLzzC5A==" }, "core-util-is": { "version": "1.0.2", @@ -686,11 +835,12 @@ } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -705,13 +855,19 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "clone": "^1.0.2" + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } } }, "delayed-stream": { @@ -722,26 +878,21 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true }, "dmg-builder": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.6.0.tgz", - "integrity": "sha512-voodd3qdpdRiaciFZTfrFq/e82UPmUqSJq6R3Wc2Ql6XqXYLQcKo1h9rSZiivwls8PqE4Mk1IHTIOwmvJaq+MA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.6.1.tgz", + "integrity": "sha512-aIbpQG3es+gHTFtsBQE4fmSYVM60yewxJZsN6FhkAmAmNaoO45bEQNJZsRX0YE49+imiSC92mJmFAEP6iKE0Tg==", "dev": true, "requires": { - "app-builder-lib": "~20.39.0", + "app-builder-lib": "~20.40.0", "bluebird-lst": "^1.0.7", - "builder-util": "~9.7.0", + "builder-util": "~9.7.1", "fs-extra-p": "^7.0.1", "iconv-lite": "^0.4.24", - "js-yaml": "^3.12.1", + "js-yaml": "^3.13.0", "parse-color": "^1.0.0", "sanitize-filename": "^1.6.1" } @@ -794,9 +945,9 @@ "dev": true }, "electron": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/electron/-/electron-4.1.4.tgz", - "integrity": "sha512-MelOjntJvd33izEjR6H4N/Uii7y535z/b2BuYXJGLNSHL6o1IlyhUQmfiT87kWABayERgeuYERgvsyf956OOFw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-5.0.1.tgz", + "integrity": "sha512-8KksyhAPcpXVeO8ViVGxfZAuf8yEVBCtV0h/lMBD8VFbCQ9icej1K5csCFAGirbZbqOz5IdsBZX9Gpb9n4RCag==", "dev": true, "requires": { "@types/node": "^10.12.18", @@ -805,30 +956,30 @@ } }, "electron-builder": { - "version": "20.39.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.39.0.tgz", - "integrity": "sha512-50SNZ/G+iE9MpTwxzeHt1Cqg8jZKeFLuJ9wubR4e/8VIzAe0ERUmwAQw+77UrlwXZD/PKKoYblc0Sr08Vm4exg==", + "version": "20.40.2", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.40.2.tgz", + "integrity": "sha512-hnnBzyLXna+WpmT4MIoWVdRli43q09yqKOgzPJj0KrOoJZ7TIoY1aYSPvSg8VL5rSuTgdAWGL4rYd9zcq3YXMQ==", "dev": true, "requires": { - "app-builder-lib": "20.39.0", + "app-builder-lib": "20.40.2", "bluebird-lst": "^1.0.7", - "builder-util": "9.7.0", - "builder-util-runtime": "8.2.0", + "builder-util": "9.7.1", + "builder-util-runtime": "8.2.1", "chalk": "^2.4.2", - "dmg-builder": "6.6.0", + "dmg-builder": "6.6.1", "fs-extra-p": "^7.0.1", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", "read-config-file": "3.2.2", "sanitize-filename": "^1.6.1", "update-notifier": "^2.5.0", - "yargs": "^13.2.1" + "yargs": "^13.2.2" } }, "electron-dl": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.11.0.tgz", - "integrity": "sha512-iL9qHzzWOuL9bus+UT+P72SwrDQcFTV6QHqcbhwgqjCC9/K5jhdRzG0dIMB3TzYlk6rmApanPqh9DvWykwIH1Q==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.14.0.tgz", + "integrity": "sha512-4okyei42a1mLsvLK7hLrIfd20EQzB18nIlLTwBV992aMSmTGLUEFRTmO1MfSslGNrzD8nuPuy1l/VxO8so4lig==", "requires": { "ext-name": "^5.0.0", "pupa": "^1.0.0", @@ -870,23 +1021,6 @@ "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" - }, - "dependencies": { - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } } }, "minimist": { @@ -895,11 +1029,31 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "sumchecker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } } } }, @@ -917,6 +1071,15 @@ "plist": "^3.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "isbinaryfile": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", @@ -931,191 +1094,38 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, "electron-publish": { - "version": "20.39.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.39.0.tgz", - "integrity": "sha512-PWrGUru994CSmtsA56GnjyLB3EnIS3zyEmrW0hDXtwuctZLGMnrxjK/7WEORYkgTQ/GufD5b/8T05Q2Kr42nqQ==", + "version": "20.40.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.40.0.tgz", + "integrity": "sha512-mkjtsIgftRszuT/8do8TszmddokDnu254OyTeL8nE780o/A8t68oXHZzvlTJ4AQ8uBOYrA87JDO/BFCWjnVArA==", "dev": true, "requires": { "bluebird-lst": "^1.0.7", - "builder-util": "~9.7.0", - "builder-util-runtime": "^8.2.0", + "builder-util": "~9.7.1", + "builder-util-runtime": "^8.2.1", "chalk": "^2.4.2", "fs-extra-p": "^7.0.1", "lazy-val": "^1.0.4", - "mime": "^2.4.0" + "mime": "^2.4.1" }, "dependencies": { "mime": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", - "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", "dev": true } } }, - "electron-rebuild": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.8.4.tgz", - "integrity": "sha512-QBUZg1due+R0bww5rNd4gEcsKczyhxyLrxSFZlKihwHRxaiHrGut532JAUe0fRz+VIU4WNSfNKyZ/ZwSGjaDhA==", - "dev": true, - "requires": { - "colors": "^1.3.3", - "debug": "^4.1.1", - "detect-libc": "^1.0.3", - "fs-extra": "^7.0.1", - "node-abi": "^2.7.0", - "node-gyp": "^3.8.0", - "ora": "^3.0.0", - "spawn-rx": "^3.0.0", - "yargs": "^12.0.5" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - } - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -1146,10 +1156,35 @@ "is-arrayish": "^0.2.1" } }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } }, "escape-string-regexp": { "version": "1.0.5", @@ -1215,6 +1250,23 @@ "debug": "2.6.9", "mkdirp": "0.5.1", "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "extsprintf": { @@ -1242,29 +1294,17 @@ } }, "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } + "locate-path": "^3.0.0" } }, "font-manager": { @@ -1277,11 +1317,11 @@ } }, "for-each": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", - "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "is-function": "~1.0.0" + "is-callable": "^1.1.3" } }, "forever-agent": { @@ -1321,9 +1361,9 @@ } }, "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", "optional": true, "requires": { "minipass": "^2.2.1" @@ -1332,24 +1372,19 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -1359,6 +1394,43 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "get-caller-file": { @@ -1388,9 +1460,10 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1461,16 +1534,30 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true }, "hosted-git-info": { "version": "2.7.1", @@ -1497,6 +1584,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -1522,6 +1614,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -1544,17 +1637,17 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, - "ip-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", - "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=" - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -1564,6 +1657,11 @@ "ci-info": "^2.0.0" } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", @@ -1574,12 +1672,9 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-function": { "version": "1.0.1", @@ -1628,6 +1723,14 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -1640,6 +1743,14 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -1651,6 +1762,11 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1672,33 +1788,27 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "itunes-nowplaying-mac": { + "version": "0.2.3", + "resolved": "git+https://github.com/rinsuki/itunes-nowplaying-mac.git#138ba9851e8fef2cd0015a42637d6203e64fde4e", + "optional": true + }, "jimp": { - "version": "0.2.28", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", - "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.4.tgz", + "integrity": "sha512-WQVMoNhkcq/fgthZOWeMdIguCVPg+t4PDFfSxvbNcrECwl8eq3/Ou2whcFWWjyW45m43yAJEY2UT7acDKl6uSQ==", "requires": { - "bignumber.js": "^2.1.0", - "bmp-js": "0.0.3", - "es6-promise": "^3.0.2", - "exif-parser": "^0.1.9", - "file-type": "^3.1.0", - "jpeg-js": "^0.2.0", - "load-bmfont": "^1.2.3", - "mime": "^1.3.4", - "mkdirp": "0.5.1", - "pixelmatch": "^4.0.0", - "pngjs": "^3.0.0", - "read-chunk": "^1.0.1", - "request": "^2.65.0", - "stream-to-buffer": "^0.1.0", - "tinycolor2": "^1.1.2", - "url-regex": "^3.0.0" + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.6.4", + "@jimp/plugins": "^0.6.4", + "@jimp/types": "^0.6.4", + "core-js": "^2.5.7" } }, "jpeg-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", - "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=" + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.5.tgz", + "integrity": "sha512-hvaExqwmQDS8O9qnZAVDXGWU43Tbu1V0wMZmjROjT11jloSgGICZpscG+P6Nyi1BVAvyu2ARRx8qmEW30sxgdQ==" }, "js-yaml": { "version": "3.13.1", @@ -1790,22 +1900,23 @@ } }, "load-bmfont": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.3.0.tgz", - "integrity": "sha1-u358cQ3mvK/LE8s7jIHgwBMey8k=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", + "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", "requires": { "buffer-equal": "0.0.1", "mime": "^1.3.4", "parse-bmfont-ascii": "^1.0.3", "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.0", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", "xhr": "^2.0.1", "xtend": "^4.0.0" } }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -1826,21 +1937,6 @@ "path-exists": "^3.0.0" } }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -1939,12 +2035,12 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, "mime-types": { "version": "2.1.18", @@ -1992,6 +2088,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2000,12 +2097,14 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "optional": true } } }, @@ -2032,9 +2131,10 @@ "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true }, "nan": { "version": "2.12.1", @@ -2048,15 +2148,6 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-abi": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.8.0.tgz", - "integrity": "sha512-1/aa2clS0pue0HjckL62CsbhWWU35HARvBDXcJtYKbYR7LnIutmpxmXbuDMV9kEviD2lP/wACOgWmmwljghHyQ==", - "dev": true, - "requires": { - "semver": "^5.4.1" - } - }, "node-addon-api": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.3.tgz", @@ -2091,12 +2182,13 @@ } }, "node-notifier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", - "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", + "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", "requires": { "growly": "^1.3.0", - "semver": "^5.4.1", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", "shellwords": "^0.1.1", "which": "^1.3.0" } @@ -2105,6 +2197,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "optional": true, "requires": { "abbrev": "1" } @@ -2144,6 +2237,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -2166,11 +2260,26 @@ "throttleit": "0.0.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -2195,6 +2304,11 @@ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "dev": true }, + "omggif": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", + "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2203,58 +2317,11 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - } - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true }, "os-locale": { "version": "3.1.0", @@ -2309,12 +2376,14 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true }, "osenv": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -2374,6 +2443,11 @@ "semver": "^5.1.0" } }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + }, "parse-bmfont-ascii": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", @@ -2385,9 +2459,9 @@ "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" }, "parse-bmfont-xml": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz", - "integrity": "sha1-1rZqNxr9OcUAfZ8O6yYqTyzOe3w=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", "requires": { "xml-parse-from-string": "^1.0.0", "xml2js": "^0.4.5" @@ -2411,12 +2485,12 @@ } }, "parse-headers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", - "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz", + "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==", "requires": { - "for-each": "^0.3.2", - "trim": "0.0.1" + "for-each": "^0.3.3", + "string.prototype.trim": "^1.1.2" } }, "parse-json": { @@ -2436,7 +2510,8 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true }, "path-is-inside": { "version": "1.0.2", @@ -2478,6 +2553,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -2519,9 +2599,9 @@ } }, "pngjs": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.2.tgz", - "integrity": "sha1-CXw8KnX+siPq3d6mvJ8AUM+DC8M=" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" }, "prepend-http": { "version": "1.0.4", @@ -2615,11 +2695,6 @@ } } }, - "read-chunk": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", - "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=" - }, "read-config-file": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.2.tgz", @@ -2656,11 +2731,32 @@ "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } } }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -2682,6 +2778,11 @@ "strip-indent": "^1.0.1" } }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + }, "registry-auth-token": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", @@ -2770,41 +2871,23 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "dev": true, "requires": { "path-parse": "^1.0.6" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "optional": true, "requires": { "glob": "^7.1.3" } }, - "rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -2880,6 +2963,43 @@ "dev": true, "requires": { "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "sort-keys": { @@ -2914,17 +3034,6 @@ "source-map": "^0.6.0" } }, - "spawn-rx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-3.0.0.tgz", - "integrity": "sha512-dw4Ryg/KMNfkKa5ezAR5aZe9wNwPdKlnHEXtHOjVnyEDSPQyOpIPPRtcIiu7127SmtHhaCjw21yC43HliW0iIg==", - "dev": true, - "requires": { - "debug": "^2.5.1", - "lodash.assign": "^4.2.0", - "rxjs": "^6.3.1" - } - }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -2986,32 +3095,28 @@ } }, "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz", + "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==", "dev": true }, - "stream-to": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", - "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=" - }, - "stream-to-buffer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", - "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "stream-to": "~0.2.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" } }, "string_decoder": { @@ -3023,11 +3128,11 @@ } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, "strip-bom": { @@ -3061,11 +3166,26 @@ "dev": true }, "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.0.tgz", + "integrity": "sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ==", "requires": { - "debug": "^2.2.0" + "debug": "^4.1.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } } }, "supports-color": { @@ -3183,6 +3303,11 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, + "timm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.1.tgz", + "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==" + }, "tinycolor2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", @@ -3197,11 +3322,6 @@ "punycode": "^1.4.1" } }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -3217,12 +3337,6 @@ "utf8-byte-length": "^1.0.1" } }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -3331,20 +3445,20 @@ "prepend-http": "^1.0.1" } }, - "url-regex": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", - "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", - "requires": { - "ip-regex": "^1.0.1" - } - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", "dev": true }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3376,18 +3490,9 @@ } }, "vue": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.9.tgz", - "integrity": "sha512-t1+tvH8hybPM86oNne3ZozCD02zj/VoZIiojOBPJLjwBn7hxYU5e1gBObFpq8ts1NEn1VhPf/hVXBDAJ3X5ljg==" - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" }, "which": { "version": "1.3.1", @@ -3407,6 +3512,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -3418,49 +3524,45 @@ "dev": true, "requires": { "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { @@ -3486,9 +3588,9 @@ "dev": true }, "xhr": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.1.tgz", - "integrity": "sha1-upgsztIFrl7sOHFprJ3HfKSFPTg=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", "requires": { "global": "~4.3.0", "is-function": "^1.0.1", @@ -3504,7 +3606,7 @@ "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { "sax": ">=0.6.0", "xmlbuilder": "~9.0.1" @@ -3539,12 +3641,12 @@ "dev": true }, "yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", "dev": true, "requires": { - "cliui": "^4.0.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", "os-locale": "^3.1.0", @@ -3554,7 +3656,7 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.0.0" + "yargs-parser": "^13.1.0" }, "dependencies": { "ansi-regex": { @@ -3563,21 +3665,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -3601,9 +3688,9 @@ } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/app/package.json b/app/package.json index 9014e41a..9f65f9a8 100644 --- a/app/package.json +++ b/app/package.json @@ -1,17 +1,20 @@ { "name": "thedesk", - "version": "18.4.0", + "version": "18.5.0", "description": "TheDesk is a Mastodon client for PC.", "repository": "https://github.com/cutls/TheDesk", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dist": "build --linux snap", - "build": "electron-builder", - "build:all": "electron-builder --win --linux", - "build:win": "electron-builder --win" + "build": "node build.js" }, - "keywords": ["mastodon","client","electron","thedesk"], + "keywords": [ + "mastodon", + "client", + "electron", + "thedesk" + ], "bugs": { "url": "https://github.com/cutls/TheDesk/issues", "email": "web-pro@cutls.com" @@ -41,70 +44,20 @@ ], "license": "GPL-3.0", "dependencies": { - "electron-dl": "^1.11.0", - "jimp": "^0.2.28", + "electron-dl": "^1.14.0", + "jimp": "^0.6.4", "json5": "^2.1.0", - "node-notifier": "^5.2.1", - "sumchecker": "^2.0.2", - "vue": "^2.6.9" + "node-notifier": "^5.4.0", + "sumchecker": "^3.0.0", + "vue": "^2.6.10" }, "optionalDependencies": { "nowplaying-node": "git+https://github.com/cutls/nowplaying-node", "itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/4/head", "font-manager": "^0.3.0" }, - "build": { - "productName": "TheDesk", - "appId": "top.thedesk", - "asarUnpack": [ - "node_modules/itunes-nowplaying-mac" - ], - "directories": { - "output": "../build" - }, - "win": { - "icon": "build/thedesk.ico", - "target": [ - "nsis", - "portable", - "appx" - ] - }, - "appx": { - "identityName": "53491Cutls.TheDesk", - "applicationId": "Cutls.TheDesk", - "publisherDisplayName": "Cutls", - "publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1", - "languages": [ - "JA-JP", - "EN-US" - ] - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": true, - "artifactName": "TheDesk-setup.${ext}" - }, - "linux": { - "icon": "build/icons", - "target": [ - "zip" - ], - "category": "Network" - }, - "mac": { - "target": [ - "dmg", - "zip" - ] - }, - "electronDownload": { - "version": "4.2.0" - }, - "electronVersion": "4.2.0" - }, "devDependencies": { - "electron": "^4.2.0", - "electron-builder": "^20.39.0" + "electron": "^5.0.1", + "electron-builder": "^20.40.2" } } diff --git a/app/view/en/acct.html b/app/view/en/acct.html index efdbe7df..c1724830 100644 --- a/app/view/en/acct.html +++ b/app/view/en/acct.html @@ -1,83 +1,122 @@ + -Account Manager - TheDesk - - - - - - - - - - - + Account Manager - TheDesk + + + + + + + + + + + + - - - - - - - - -
    - Back
    -
    List of accounts
    -
    -
    -
    -
    -
    Add an account

    -
    -
    -
    - -
    - Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)
    - -
    - -
    -
    + + + + + + + + +
    + Back
    +
    List of accounts
    +
    +
    -
    - Supports -
    -
    -
    - -
  • @@ -409,6 +414,8 @@ class="material-icons left">web@@hp@@ trending_up@@support@@(Pixiv FANBOX) + trending_up@@support@@(Patreon) list@@help@@/Docs(Constructing) 13px(@@absolute@@)', - after:"px" + }, { + id: "size", + storage: "size", + checkbox: false, + doubleText: false, + width: 50, + setValue: 13, + text: { + head: "@@fontsize@@", + desc: '13px(@@absolute@@)', + after: "px" } - },{ - id:"ha", - storage:"ha", - checkbox:true, - setValue:false, - text:{ - head:"@@hardwareAcceleration@@", - desc:"@@hardwareAccelerationWarn@@", - checkbox:[ + }, { + id: "ha", + storage: "ha", + checkbox: true, + setValue: false, + text: { + head: "@@hardwareAcceleration@@", + desc: "@@hardwareAccelerationWarn@@", + checkbox: [ { - text:"@@yes@@", - value:"true" - },{ - text:"@@no@@", - value:"false" + text: "@@yes@@", + value: "true" + }, { + text: "@@no@@", + value: "false" } ] } } ]; -var tlConstruction=[ +var tlConstruction = [ { - id:"time", - storage:"datetype", - checkbox:true, - setValue:"absolute", - text:{ - head:"@@timemode@@", - desc:'@@relativetime@@
    @@absolutetime@@
    @@mixtime@@', - checkbox:[ + id: "time", + storage: "datetype", + checkbox: true, + setValue: "absolute", + text: { + head: "@@timemode@@", + desc: '@@relativetime@@
    @@absolutetime@@
    @@mixtime@@', + checkbox: [ { - text:"@@relativesel@@", - value:"relative" - },{ - text:"@@absolutesel@@", - value:"absolute" - },{ - text:"@@doublesel@@", - value:"double" - },{ - text:"@@mixsel@@", - value:"medium" + text: "@@relativesel@@", + value: "relative" + }, { + text: "@@absolutesel@@", + value: "absolute" + }, { + text: "@@doublesel@@", + value: "double" + }, { + text: "@@mixsel@@", + value: "medium" } ] } - },{ - id:"ul", - storage:"locale", - checkbox:true, - setValue:"yes", - text:{ - head:"@@locale@@", - desc:"@@localewarn@@", - checkbox:yesno + }, { + id: "ul", + storage: "locale", + checkbox: true, + setValue: "yes", + text: { + head: "@@locale@@", + desc: "@@localewarn@@", + checkbox: yesno } - },{ - id:"nsfw", - storage:"nsfw", - checkbox:true, - setValue:"yes", - text:{ - head:"@@nswf@@", - desc:"@@nsfwwarn@@", - checkbox:yesno + }, { + id: "nsfw", + storage: "nsfw", + checkbox: true, + setValue: "yes", + text: { + head: "@@nswf@@", + desc: "@@nsfwwarn@@", + checkbox: yesno } - },{ - id:"cw", - storage:"cw", - checkbox:true, - setValue:"yes", - text:{ - head:"@@cw@@", - desc:"", - checkbox:yesno + }, { + id: "cw", + storage: "cw", + checkbox: true, + setValue: "yes", + text: { + head: "@@cw@@", + desc: "", + checkbox: yesno } - },{ - id:"rp", - storage:"replyct", - checkbox:true, - setValue:"hidden", - text:{ - head:"@@replyct@@", - desc:"", - checkbox:[ + }, { + id: "rp", + storage: "replyct", + checkbox: true, + setValue: "hidden", + text: { + head: "@@replyct@@", + desc: "", + checkbox: [ { - text:"@@replyct_hidden@@", - value:"hidden" - },{ - text:"@@replyct_hidden@@", - value:"all" + text: "@@replyct_hidden@@", + value: "hidden" + }, { + text: "@@replyct_hidden@@", + value: "all" } ] } - },{ - id:"gif", - storage:"gif", - checkbox:true, - setValue:"yes", - text:{ - head:"@@gif@@", - desc:"", - checkbox:yesno + }, { + id: "gif", + storage: "gif", + checkbox: true, + setValue: "yes", + text: { + head: "@@gif@@", + desc: "", + checkbox: yesno } - },{ - id:"tag", - storage:"tag-range", - checkbox:true, - setValue:"local", - text:{ - head:"@@tag@@", - desc:"", - checkbox:[ + }, { + id: "tag", + storage: "tag-range", + checkbox: true, + setValue: "local", + text: { + head: "@@tag@@", + desc: "", + checkbox: [ { - text:"@@tagfed@@", - value:"all" - },{ - text:"@@taglocal@@", - value:"local" + text: "@@tagfed@@", + value: "all" + }, { + text: "@@taglocal@@", + value: "local" } ] } - },{ - id:"via", - storage:"viashow", - checkbox:true, - setValue:"no", - text:{ - head:"@@via@@", - desc:"", - checkbox:yesno + }, { + id: "via", + storage: "viashow", + checkbox: true, + setValue: "no", + text: { + head: "@@via@@", + desc: "", + checkbox: yesno } - },{ - id:"mov", - storage:"mouseover", - checkbox:true, - setValue:"no", - text:{ - head:"@@mouseover@@", - desc:"@@mouseoverwarn@@", - checkbox:[ + }, { + id: "mov", + storage: "mouseover", + checkbox: true, + setValue: "no", + text: { + head: "@@mouseover@@", + desc: "@@mouseoverwarn@@", + checkbox: [ { - text:"@@mv@@", - value:"yes" - },{ - text:"@@mvclick@@", - value:"click" - },{ - text:"@@no@@", - value:"no" + text: "@@mv@@", + value: "yes" + }, { + text: "@@mvclick@@", + value: "click" + }, { + text: "@@no@@", + value: "no" } ] } - },{ - id:"notfm", - storage:"setasread", - checkbox:true, - setValue:"yes", - text:{ - head:"@@notfmarker@@", - desc:"", - checkbox:yesno + }, { + id: "notfm", + storage: "setasread", + checkbox: true, + setValue: "yes", + text: { + head: "@@notfmarker@@", + desc: "", + checkbox: yesno } - },{ - checkbox:false, - doubleText:true, - data:[ + }, { + checkbox: false, + doubleText: true, + data: [ { - id:"sentence", - storage:"sentence", - width:50, - setValue:500, - text:{after:"@@lines@@ @@above@@ @@or@@"} - },{ - id:"letters", - storage:"letters", - width:50, - setValue:7000, - text:{after:"@@letters@@ @@above@@"} + id: "sentence", + storage: "sentence", + width: 50, + setValue: 500, + text: { after: "@@lines@@ @@above@@ @@or@@" } + }, { + id: "letters", + storage: "letters", + width: 50, + setValue: 7000, + text: { after: "@@letters@@ @@above@@" } } ], - text:{ - head:"@@autofold@@", - desc:"@@autofoldwarn@@", + text: { + head: "@@autofold@@", + desc: "@@autofoldwarn@@", } - },{ - id:"img-height", - storage:"img-height", - checkbox:false, - doubleText:false, - width:80, - setValue:200, - text:{ - head:"@@imgheight@@", - desc:'@@imgheightwarn@@', - after:"px" + }, { + id: "img-height", + storage: "img-height", + checkbox: false, + doubleText: false, + width: 80, + setValue: 200, + text: { + head: "@@imgheight@@", + desc: '@@imgheightwarn@@', + after: "px" } - },{ - id:"ticker", - storage:"ticker_ok", - checkbox:true, - setValue:"no", - text:{ - head:"@@ticker@@", - desc:'@@tickerwarn@@', - checkbox:yesno + }, { + id: "ticker", + storage: "ticker_ok", + checkbox: true, + setValue: "no", + text: { + head: "@@ticker@@", + desc: '@@tickerwarn@@', + checkbox: yesno } - },{ - id:"anime", - storage:"animation", - checkbox:true, - setValue:"yes", - text:{ - head:"@@animation@@", - desc:"", - checkbox:yesno + }, { + id: "anime", + storage: "animation", + checkbox: true, + setValue: "yes", + text: { + head: "@@animation@@", + desc: "", + checkbox: yesno } - },{ - id:"replySound", - storage:"replySound", - checkbox:true, - setValue:"none", - text:{ - head:"@@replySound@@", - desc:"", - checkbox:sound + }, { + id: "replySound", + storage: "replySound", + checkbox: true, + setValue: "none", + text: { + head: "@@replySound@@", + desc: "", + checkbox: sound } - },{ - id:"favSound", - storage:"favSound", - checkbox:true, - setValue:"none", - text:{ - head:"@@favSound@@", - desc:"", - checkbox:sound + }, { + id: "favSound", + storage: "favSound", + checkbox: true, + setValue: "none", + text: { + head: "@@favSound@@", + desc: "", + checkbox: sound } - },{ - id:"btSound", - storage:"btSound", - checkbox:true, - setValue:"none", - text:{ - head:"@@btSound@@", - desc:"", - checkbox:sound + }, { + id: "btSound", + storage: "btSound", + checkbox: true, + setValue: "none", + text: { + head: "@@btSound@@", + desc: "", + checkbox: sound } - },{ - id:"followSound", - storage:"followSound", - checkbox:true, - setValue:"none", - text:{ - head:"@@followSound@@", - desc:"", - checkbox:sound + }, { + id: "followSound", + storage: "followSound", + checkbox: true, + setValue: "none", + text: { + head: "@@followSound@@", + desc: "", + checkbox: sound } } ]; -var postConstruction=[ +var postConstruction = [ { - id:"cw-text", - storage:"cw-text", - checkbox:false, - doubleText:false, - width:150, - setValue:"", - text:{ - head:"@@defaultcw@@", - desc:"", - after:"" + id: "cw-text", + storage: "cw-text", + checkbox: false, + doubleText: false, + width: 150, + setValue: "", + text: { + head: "@@defaultcw@@", + desc: "", + after: "" } - },{ - checkbox:false, - doubleText:true, - data:[ + }, { + checkbox: false, + doubleText: true, + data: [ { - id:"cw_sentence", - storage:"cw_sentence", - width:50, - setValue:500, - text:{after:"@@lines@@ @@above@@ @@or@@"} - },{ - id:"cw_letters", - storage:"cw_letters", - width:50, - setValue:7000, - text:{after:"@@letters@@ @@above@@"} + id: "cw_sentence", + storage: "cw_sentence", + width: 50, + setValue: 500, + text: { after: "@@lines@@ @@above@@ @@or@@" } + }, { + id: "cw_letters", + storage: "cw_letters", + width: 50, + setValue: 7000, + text: { after: "@@letters@@ @@above@@" } } ], - text:{ - head:"@@autocw@@", - desc:"@@autocwwarn@@", + text: { + head: "@@autocw@@", + desc: "@@autocwwarn@@", } - },{ - id:"cws", - storage:"always-cw", - checkbox:true, - setValue:"no", - text:{ - head:"@@cws@@", - desc:"", - checkbox:yesno + }, { + id: "cws", + storage: "always-cw", + checkbox: true, + setValue: "no", + text: { + head: "@@cws@@", + desc: "", + checkbox: yesno } - },{ - id:"vis", - storage:"vis", - checkbox:true, - setValue:"public", - text:{ - head:"@@defaultvis@@", - desc:"", - checkbox:[ + }, { + id: "vis", + storage: "vis", + checkbox: true, + setValue: "public", + text: { + head: "@@defaultvis@@", + desc: "", + checkbox: [ { - text:"@@public@@", - value:"public" - },{ - text:"@@unlisted@@", - value:"unlisted" - },{ - text:"@@private@@", - value:"private" - },{ - text:"@@direct@@", - value:"direct" - },{ - text:"@@memory@@", - value:"memory" - },{ - text:"@@useapi@@", - value:"useapi" + text: "@@public@@", + value: "public" + }, { + text: "@@unlisted@@", + value: "unlisted" + }, { + text: "@@private@@", + value: "private" + }, { + text: "@@direct@@", + value: "direct" + }, { + text: "@@memory@@", + value: "memory" + }, { + text: "@@useapi@@", + value: "useapi" } ] } - },{ - id:"img", - storage:"img", - checkbox:true, - setValue:"no-act", - text:{ - head:"@@postimg@@", - desc:"", - checkbox:[ + }, { + id: "img", + storage: "img", + checkbox: true, + setValue: "no-act", + text: { + head: "@@postimg@@", + desc: "", + checkbox: [ { - text:"@@showurl@@", - value:"url" - },{ - text:"@@nourl@@", - value:"no-act" + text: "@@showurl@@", + value: "url" + }, { + text: "@@nourl@@", + value: "no-act" } ] } - },{ - id:"box", - storage:"box", - checkbox:true, - setValue:"yes", - text:{ - head:"@@box@@", - desc:"", - checkbox:[ + }, { + id: "box", + storage: "box", + checkbox: true, + setValue: "yes", + text: { + head: "@@box@@", + desc: "", + checkbox: [ { - text:"@@boxyes@@", - value:"yes" - },{ - text:"@@boxno@@", - value:"no" - },{ - text:"@@boxabs@@", - value:"absolute" + text: "@@boxyes@@", + value: "yes" + }, { + text: "@@boxno@@", + value: "no" + }, { + text: "@@boxabs@@", + value: "absolute" } ] } - },{ - id:"quote", - storage:"quote", - checkbox:true, - setValue:"nothing", - text:{ - head:"@@quote@@", - desc:"", - checkbox:[ + }, { + id: "quote", + storage: "quote", + checkbox: true, + setValue: "nothing", + text: { + head: "@@quote@@", + desc: "", + checkbox: [ { - text:"@@simple@@", - value:"simple" - },{ - text:"@@mention@@", - value:"mention" - },{ - text:"@@full@@", - value:"full" - },{ - text:"@@notqt@@", - value:"nothing" + text: "@@simple@@", + value: "simple" + }, { + text: "@@mention@@", + value: "mention" + }, { + text: "@@full@@", + value: "full" + }, { + text: "@@notqt@@", + value: "nothing" } ] } - },{ - id:"main", - storage:"mainuse", - checkbox:true, - setValue:"remain", - text:{ - head:"@@main@@", - desc:"@@mainwarn@@", - checkbox:[ + }, { + id: "main", + storage: "mainuse", + checkbox: true, + setValue: "remain", + text: { + head: "@@main@@", + desc: "@@mainwarn@@", + checkbox: [ { - text:"@@lastacct@@", - value:"remain" - },{ - text:"@@usemainacct@@", - value:"main" + text: "@@lastacct@@", + value: "remain" + }, { + text: "@@usemainacct@@", + value: "main" } ] } - },{ - id:"sec", - storage:"sec", - checkbox:true, - setValue:"public", - text:{ - head:"@@secondary@@", - desc:"", - checkbox:[ + }, { + id: "sec", + storage: "sec", + checkbox: true, + setValue: "public", + text: { + head: "@@secondary@@", + desc: "", + checkbox: [ { - text:"@@nothing@@", - value:"nothing" - },{ - text:"@@public@@", - value:"public" - },{ - text:"@@unlisted@@", - value:"unlisted" - },{ - text:"@@private@@", - value:"private" - },{ - text:"@@direct@@", - value:"direct" - },{ - text:"@@localonly@@", - value:"local", - kirishima:true, - kirishimaText:"非対応インスタンスでは「未収載」になります。" + text: "@@nothing@@", + value: "nothing" + }, { + text: "@@public@@", + value: "public" + }, { + text: "@@unlisted@@", + value: "unlisted" + }, { + text: "@@private@@", + value: "private" + }, { + text: "@@direct@@", + value: "direct" + }, { + text: "@@localonly@@", + value: "local", + kirishima: true, + kirishimaText: "非対応インスタンスでは「未収載」になります。" } ] } - },{ - id:"zero", - storage:"emoji-zero-width", - checkbox:true, - setValue:"normal", - setValue:"no", - text:{ - head:"@@zeroWidthEmoji@@", - desc:"", - checkbox:yesno + }, { + id: "zero", + storage: "emoji-zero-width", + checkbox: true, + setValue: "normal", + setValue: "no", + text: { + head: "@@zeroWidthEmoji@@", + desc: "", + checkbox: yesno } } ] \ No newline at end of file diff --git a/app/view/make/update.sample.html b/app/view/make/update.sample.html index 499e53ee..2983551d 100644 --- a/app/view/make/update.sample.html +++ b/app/view/make/update.sample.html @@ -1,234 +1,260 @@ + -Update - TheDesk - - - - -@@comment-start@@ - - -@@comment-end@@ + Update - TheDesk + + + + + @@comment-start@@ + + + @@comment-end@@ + - - - - -info -clear - -
    - - - + + + info + clear + +
    +
    +

    TheDesk

    +

    @@updatehere@@

    +
    +
    + + + + +
    + @@problem1@@
    @@problem2@@ +
    +
    +

    @@sureupd@@

    + @@skipupd@@
    + + @@continue@@ +
    +
    +

    @@dlnow@@

    +

    +
    +
    +
    +
    +
    + + + \ No newline at end of file + var start = "https://thedesk.top/ver.json"; + fetch(start, { + method: 'GET', + headers: { 'content-type': 'application/json' }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + console.log(json); + if (platform == "win32") { + $("#ver").text(json.desk); + localStorage.setItem("next-ver", json.desk); + } else if (platform == "linux") { + $("#ver").text(json.desk_linux); + localStorage.setItem("next-ver", json.desk_linux); + } else if (platform == "darwin") { + $("#ver").text(json.desk_mac); + localStorage.setItem("next-ver", json.desk_mac); + } + var lang = "@@lang@@"; + if (lang == "ja") { + $("#det").html(json.detail); + } else { + $("#det").html(json.detail_en); + } + + $("#now").text(localStorage.getItem("ver")); + + }); + } + function nextv() { + localStorage.setItem("new-ver-skip", "true"); + window.close(); + } + function enc(ver) { + var ver = ver.replace(/\s/g, ""); + var ver = ver.replace(/\(/g, "-"); + var ver = ver.replace(/\)/g, ""); + var ver = ver.replace(/\[/g, "_"); + var ver = ver.replace(/\]/g, ""); + return ver; + } + \ No newline at end of file diff --git a/app/view/ps/acct.html b/app/view/ps/acct.html index 71e5dde6..e407e0e9 100644 --- a/app/view/ps/acct.html +++ b/app/view/ps/acct.html @@ -1,83 +1,122 @@ + -Account Manager - TheDesk - - - - - - - - - - + Account Manager - TheDesk + + + + + + + + + + + + + + + - - - - - - - - -
    - crwdns366:0crwdne366:0
    -
    crwdns365:0crwdne365:0
    -
    -
    -
    -
    -
    crwdns367:0crwdne367:0

    -
    -
    -
    - -
    - crwdns368:0crwdne368:0
    - -
    - -
    -
    + + + + + + + + +
    + crwdns366:0crwdne366:0
    +
    crwdns365:0crwdne365:0
    +
    +
    -
    - Supports -
    -
    -
    - -