From 163b2a8f272815ad8aed5bb1cad19e81fcf7a97e Mon Sep 17 00:00:00 2001 From: Natsumi Date: Sat, 30 Jul 2022 23:14:20 +1200 Subject: [PATCH] New flags --- html/images/flag_use.png | Bin 774 -> 0 bytes html/images/flag_usw.png | Bin 6003 -> 0 bytes html/images/flags.png | Bin 0 -> 23517 bytes html/package-lock.json | 16 --- html/package.json | 1 - html/src/app.js | 13 +- html/src/app.scss | 15 --- html/src/flags.scss | 100 ++++++++++++++++ html/src/index.pug | 36 +++--- html/src/vr.js | 13 +- html/src/vr.pug | 1 + html/src/vr.scss | 15 --- html/webpack.config.js | 252 ++++++++++++++++++++------------------- 13 files changed, 256 insertions(+), 206 deletions(-) delete mode 100644 html/images/flag_use.png delete mode 100644 html/images/flag_usw.png create mode 100644 html/images/flags.png create mode 100644 html/src/flags.scss diff --git a/html/images/flag_use.png b/html/images/flag_use.png deleted file mode 100644 index d88929d713c44637d587746de76501a35db6f9fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 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�Xp}5 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.8.x" } }, - "node_modules/famfamfam-flags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/famfamfam-flags/-/famfamfam-flags-1.0.0.tgz", - "integrity": "sha512-l7F0/L1I1eozNN9oLoXgqHzBCFjrhuuDwwZkuo9fOHPrreS61bV3Qft+IMyYAqjibnGjTU9/2WovGccSvNYahQ==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5159,12 +5149,6 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, - "famfamfam-flags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/famfamfam-flags/-/famfamfam-flags-1.0.0.tgz", - "integrity": "sha512-l7F0/L1I1eozNN9oLoXgqHzBCFjrhuuDwwZkuo9fOHPrreS61bV3Qft+IMyYAqjibnGjTU9/2WovGccSvNYahQ==", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", diff --git a/html/package.json b/html/package.json index 371a6b42..5f89cf0d 100644 --- a/html/package.json +++ b/html/package.json @@ -31,7 +31,6 @@ "element-ui": "^2.15.9", "eslint": "^8.20.0", "eslint-config-prettier": "^8.5.0", - "famfamfam-flags": "^1.0.0", "html-webpack-plugin": "^5.5.0", "mini-css-extract-plugin": "^2.6.1", "normalize.css": "^8.0.1", diff --git a/html/src/app.js b/html/src/app.js index beea1622..808eec7c 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -812,7 +812,7 @@ speechSynthesis.getVoices(); template: "" + '' + - '{{ text }}' + + '{{ text }}' + '', props: { location: String, @@ -882,14 +882,9 @@ speechSynthesis.getVoices(); } this.region = ''; if ($app.isRealInstance(instanceId)) { - if (L.region === 'eu') { - this.region = 'europeanunion'; - } else if (L.region === 'jp') { - this.region = 'jp'; - } else if (L.region === 'use') { - this.region = 'flag-icon-use'; - } else { - this.region = 'flag-icon-usw'; + this.region = L.region; + if (!L.region) { + this.region = 'us'; } } this.strict = L.strict; diff --git a/html/src/app.scss b/html/src/app.scss index cdf0234b..3a853f3b 100644 --- a/html/src/app.scss +++ b/html/src/app.scss @@ -12,7 +12,6 @@ @import '~animate.css/animate.min.css'; @import '~noty/lib/noty.css'; @import '~element-ui/lib/theme-chalk/index.css'; -@import '~famfamfam-flags/dist/sprite/famfamfam-flags.min.css'; .color-palettes { background: #409eff; @@ -651,20 +650,6 @@ i.x-user-status.busy { border-radius: 2px; } -.flag-icon-use { - background-image: url('/images/flag_use.png'); - background-size: 16px 11px; - width: 16px; - height: 11px; -} - -.flag-icon-usw { - background-image: url('/images/flag_usw.png'); - background-size: 16px 11px; - width: 16px; - height: 11px; -} - .el-pagination .el-select .el-input .el-input__inner, .el-input--mini .el-input__icon { height: 22px; diff --git a/html/src/flags.scss b/html/src/flags.scss new file mode 100644 index 00000000..664a16c5 --- /dev/null +++ b/html/src/flags.scss @@ -0,0 +1,100 @@ +:root { + --offx: 20px; /* flag size */ + --offy: calc(var(--offx) / 70 * 46); +} +.flags { + background: url('/images/flags.png') no-repeat; + background-size: calc(var(--offx) * 6); + width: var(--offx); + height: var(--offy); + transform: translateY(calc(var(--offx) / 16)); + background-position: calc(var(--offx) * -5) calc(var(--offy) * -4); +} +span[class='flags'] { + background-position: calc(var(--offx) * 1) 0; +} +.flags.us { + background-position: 0 0; +} +.flags.kr { + background-position: calc(var(--offx) * -1) 0; +} +.flags.ru { + background-position: calc(var(--offx) * -2) 0; +} +.flags.es { + background-position: calc(var(--offx) * -3) 0; +} +.flags.pt { + background-position: calc(var(--offx) * -4) 0; +} +.flags.cn { + background-position: calc(var(--offx) * -5) 0; +} +.flags.de { + background-position: 0 calc(var(--offy) * -1); +} +.flags.jp { + background-position: calc(var(--offx) * -1) calc(var(--offy) * -1); +} +.flags.fr { + background-position: calc(var(--offx) * -2) calc(var(--offy) * -1); +} +.flags.se { + background-position: calc(var(--offx) * -3) calc(var(--offy) * -1); +} +.flags.nl { + background-position: calc(var(--offx) * -4) calc(var(--offy) * -1); +} +.flags.pl { + background-position: calc(var(--offx) * -5) calc(var(--offy) * -1); +} +.flags.dk { + background-position: 0 calc(var(--offy) * -2); +} +.flags.no { + background-position: calc(var(--offx) * -1) calc(var(--offy) * -2); +} +.flags.it { + background-position: calc(var(--offx) * -2) calc(var(--offy) * -2); +} +.flags.th { + background-position: calc(var(--offx) * -3) calc(var(--offy) * -2); +} +.flags.fi { + background-position: calc(var(--offx) * -4) calc(var(--offy) * -2); +} +.flags.hu { + background-position: calc(var(--offx) * -5) calc(var(--offy) * -2); +} +.flags.cz { + background-position: 0 calc(var(--offy) * -3); +} +.flags.tr { + background-position: calc(var(--offx) * -1) calc(var(--offy) * -3); +} +.flags.ae { + background-position: calc(var(--offx) * -2) calc(var(--offy) * -3); +} +.flags.ro { + background-position: calc(var(--offx) * -3) calc(var(--offy) * -3); +} +.flags.vn { + background-position: calc(var(--offx) * -4) calc(var(--offy) * -3); +} +.flags.ua { + background-position: calc(var(--offx) * -5) calc(var(--offy) * -3); +} +.flags.gb { + background-position: 0 calc(var(--offy) * -4); +} + +.flags.use { + background-position: calc(var(--offx) * -1) calc(var(--offy) * -4); +} +.flags.eu { + background-position: calc(var(--offx) * -2) calc(var(--offy) * -4); +} +.flags.tw { + background-position: calc(var(--offx) * -3) calc(var(--offy) * -4); +} diff --git a/html/src/index.pug b/html/src/index.pug index d69890e5..cdb3dd71 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -9,6 +9,7 @@ html link(rel="preconnect" href="https://api.vrchat.cloud") link(rel="preconnect" href="https://d348imysud55la.cloudfront.net") link(rel="stylesheet" href="app.css") + link(rel="stylesheet" href="flags.css") body .x-app#x-app(style="display:none") //- login @@ -97,10 +98,8 @@ html br span.x-link(v-if="currentInstanceLocation.instanceName" @click="showLaunchDialog(lastLocation.location)") span \#{{ currentInstanceLocation.instanceName }} {{ currentInstanceLocation.accessType }} - span.famfamfam-flags(v-if="currentInstanceLocation.region === 'eu'" class="europeanunion" style="display:inline-block;margin-left:5px") - span.famfamfam-flags(v-else-if="currentInstanceLocation.region === 'jp'" class="jp" style="display:inline-block;margin-left:5px") - span.flag-icon-use(v-else-if="currentInstanceLocation.region === 'use'" style="display:inline-block;margin-left:5px") - span.flag-icon-usw(v-else style="display:inline-block;margin-left:5px") + span.flags(v-if="currentInstanceLocation.region" :class="currentInstanceLocation.region" style="display:inline-block;margin-left:5px") + span.flags(v-else class="us" style="display:inline-block;margin-left:5px") i.el-icon-lock(v-if="currentInstanceLocation.strict" style="display:inline-block;margin-left:5px") span(v-if="lastLocation.playerList.size > 0" style="margin-left:5px") | {{ lastLocation.playerList.size }} @@ -178,7 +177,7 @@ html el-tooltip(v-for="item in scope.row.ref.$languages" :key="item.key" placement="top") template(#content) span {{ item.value }} ({{ item.key }}) - span.famfamfam-flags(:class="languageClass(item.key)" style="display:inline-block;margin-left:5px") + span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-left:5px") el-table-column(label="Bio Links" width="100" prop="ref.bioLinks") template(v-once #default="scope") el-tooltip(v-if="link" v-for="(link, index) in scope.row.ref.bioLinks" :key="index") @@ -907,7 +906,7 @@ html el-tooltip(v-for="item in scope.row.$languages" :key="item.key" placement="top") template(#content) span {{ item.value }} ({{ item.key }}) - span.famfamfam-flags(:class="languageClass(item.key)" style="display:inline-block;margin-left:5px") + span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-left:5px") el-table-column(label="Bio Links" width="100" prop="bioLinks") template(v-once #default="scope") el-tooltip(v-if="link" v-for="(link, index) in scope.row.bioLinks" :key="index") @@ -1446,7 +1445,7 @@ html el-tooltip(v-for="item in userDialog.ref.$languages" :key="item.key" placement="top") template(#content) span {{ item.value }} ({{ item.key }}) - span.famfamfam-flags(:class="languageClass(item.key)" style="display:inline-block;margin-right:5px") + span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-right:5px") div el-tag.name(type="info" effect="plain" size="mini" :class="userDialog.ref.$trustClass" v-text="userDialog.ref.$trustLevel" style="margin-right:5px;margin-top:5px") el-tag.x-tag-friend(v-if="userDialog.isFriend && userDialog.friend" type="info" effect="plain" size="mini" style="margin-right:5px;margin-top:5px") Friend No.{{userDialog.friend.no}} @@ -1750,10 +1749,8 @@ html div(style="margin:5px 0") span.x-link(@click="showLaunchDialog(room.$location.tag)") span \#{{ room.$location.instanceName }} {{ room.$location.accessType }} - span.famfamfam-flags(v-if="room.$location.region === 'eu'" class="europeanunion" style="display:inline-block;margin-left:5px") - span.famfamfam-flags(v-else-if="room.$location.region === 'jp'" class="jp" style="display:inline-block;margin-left:5px") - span.flag-icon-use(v-else-if="room.$location.region === 'use'" style="display:inline-block;margin-left:5px") - span.flag-icon-usw(v-else style="display:inline-block;margin-left:5px") + span.flags(v-if="room.$location.region" :class="room.$location.region" style="display:inline-block;margin-left:5px") + span.flags(v-else class="us" style="display:inline-block;margin-left:5px") i.el-icon-lock(v-if="room.$location.strict" style="display:inline-block;margin-left:5px") el-tooltip(placement="top" content="Invite yourself" :disabled="hideTooltips") invite-yourself(:location="room.$location.tag" style="margin-left:5px") @@ -2012,12 +2009,12 @@ html div(v-loading="languageDialog.loading") div(style="margin:5px 0") el-tag(v-for="item in API.currentUser.$languages" :key="item.key" size="small" type="info" effect="plain" closable @close="removeUserLanguage(item.key)" style="margin-right:5px") - span.famfamfam-flags(:class="languageClass(item.key)" style="display:inline-block;margin-right:5px") + span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-right:5px") | {{ item.value }} ({{ item.key }}) div(v-if="languageDialog.languageChoice === true") el-select(v-model="languageDialog.languageValue" size="mini") el-option(v-for="item in languageDialog.languages" :key="item.key" :value="item.key" :label="item.value") - span.famfamfam-flags(:class="languageClass(item.key)" style="display:inline-block;margin-right:5px") + span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-right:5px") | {{ item.value }} ({{ item.key }}) el-button(@click="languageDialog.languageChoice=false; addUserLanguage(languageDialog.languageValue)" size="mini") Ok el-button(@click="languageDialog.languageChoice=false" size="mini" style="margin-left:0") Cancel @@ -2882,10 +2879,8 @@ html template(v-once #default="scope") span.x-link(@click="showLaunchDialog(scope.row.location)") span \#{{ scope.row.$location.instanceName }} {{ scope.row.$location.accessType }} - span.famfamfam-flags(v-if="scope.row.$location.region === 'eu'" class="europeanunion" style="display:inline-block;margin-left:5px") - span.famfamfam-flags(v-else-if="scope.row.$location.region === 'jp'" class="jp" style="display:inline-block;margin-left:5px") - span.flag-icon-use(v-else-if="scope.row.$location.region === 'use'" style="display:inline-block;margin-left:5px") - span.flag-icon-usw(v-else style="display:inline-block;margin-left:5px") + span.flags(v-if="scope.row.$location.region" :class="scope.row.$location.region" style="display:inline-block;margin-left:5px") + span.flags(v-else class="us" style="display:inline-block;margin-left:5px") i.el-icon-lock(v-if="scope.row.$location.strict" style="display:inline-block;margin-left:5px") el-table-column(label="Instance Creator" prop="location") template(v-once #default="scope") @@ -3130,6 +3125,13 @@ html ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + div(style="margin-top:15px") + p(style="font-weight:bold") osu!resources + pre(style="font-size:12px;white-space:pre-line"). + https://github.com/ppy/osu-resources + + CC-BY-NC 4.0 + https://github.com/ppy/osu-resources/blob/master/LICENCE.md div(style="margin-top:15px") p(style="font-weight:bold") SharpDX pre(style="font-size:12px;white-space:pre-line"). diff --git a/html/src/vr.js b/html/src/vr.js index 7b8b2acd..02beed48 100644 --- a/html/src/vr.js +++ b/html/src/vr.js @@ -79,7 +79,7 @@ Vue.component('marquee-text', MarqueeText); Vue.component('location', { template: - '{{ text }}', + '{{ text }}', props: { location: String, hint: { @@ -122,14 +122,9 @@ Vue.component('marquee-text', MarqueeText); !L.isOffline && !L.isPrivate ) { - if (L.region === 'eu') { - this.region = 'europeanunion'; - } else if (L.region === 'jp') { - this.region = 'jp'; - } else if (L.region === 'use') { - this.region = 'flag-icon-use'; - } else { - this.region = 'flag-icon-usw'; + this.region = L.region; + if (!L.region) { + this.region = 'us'; } } this.strict = L.strict; diff --git a/html/src/vr.pug b/html/src/vr.pug index 8bad20fb..7109e1c6 100644 --- a/html/src/vr.pug +++ b/html/src/vr.pug @@ -7,6 +7,7 @@ html meta(http-equiv="viewport" content="width=device-width,initial-scale=1,user-scalable=no") title VRCXVR link(rel="stylesheet" href="vr.css") + link(rel="stylesheet" href="flags.css") body .x-app#x-app(class="x-app-type" :class="{ background: appType === '1' && config && config.backgroundEnabled }") template(v-if="appType === '1'") diff --git a/html/src/vr.scss b/html/src/vr.scss index 89e2d7fd..77ed3dbf 100644 --- a/html/src/vr.scss +++ b/html/src/vr.scss @@ -12,7 +12,6 @@ @import '~animate.css/animate.min.css'; @import '~noty/lib/noty.css'; @import '~element-ui/lib/theme-chalk/index.css'; -@import '~famfamfam-flags/dist/sprite/famfamfam-flags.min.css'; /* 마지노선인듯 @@ -397,17 +396,3 @@ i.x-user-status.busy { right: -160px; bottom: 0; } - -.flag-icon-use { - background-image: url('/images/flag_use.png'); - background-size: 16px 11px; - width: 16px; - height: 11px; -} - -.flag-icon-usw { - background-image: url('/images/flag_usw.png'); - background-size: 16px 11px; - width: 16px; - height: 11px; -} diff --git a/html/webpack.config.js b/html/webpack.config.js index 265784bd..6d7d332b 100644 --- a/html/webpack.config.js +++ b/html/webpack.config.js @@ -5,132 +5,136 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TerserPlugin = require('terser-webpack-plugin'); module.exports = { - entry: { - vendor: [ - 'element-ui', - 'noty', - 'vue', - 'vue-data-tables', - 'vue-lazyload', - 'uuid' - ], - app: { - import: ['./src/app.js', './src/app.scss'], - dependOn: 'vendor' + entry: { + vendor: [ + 'element-ui', + 'noty', + 'vue', + 'vue-data-tables', + 'vue-lazyload', + 'uuid' + ], + app: { + import: ['./src/app.js', './src/app.scss'], + dependOn: 'vendor' + }, + 'app.dark': './src/app.dark.scss', + flags: './src/flags.scss', + vr: { + import: ['./src/vr.js', './src/vr.scss'], + dependOn: 'vendor' + } }, - 'app.dark': './src/app.dark.scss', - vr: { - import: ['./src/vr.js', './src/vr.scss'], - dependOn: 'vendor' - } - }, - output: { - filename: '[name].js', - library: { - type: 'window' - } - }, - module: { - rules: [ - { - test: /\.pug$/, - oneOf: [ - { - resourceQuery: /^\?vue/, - use: 'pug-plain-loader' - }, - { - use: ['raw-loader', 'pug-plain-loader'] - } + output: { + filename: '[name].js', + library: { + type: 'window' + } + }, + module: { + rules: [ + { + test: /\.pug$/, + oneOf: [ + { + resourceQuery: /^\?vue/, + use: 'pug-plain-loader' + }, + { + use: ['raw-loader', 'pug-plain-loader'] + } + ] + }, + { + test: /\.s?css$/, + use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'] + }, + { + test: /\.(eot|png|svg|ttf|woff)/, + type: 'asset', + generator: { + filename: 'assets/[name][ext]' + } + } ] - }, - { - test: /\.s?css$/, - use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'] - }, - { - test: /\.(eot|png|svg|ttf|woff)/, - type: 'asset', - generator: { - filename: 'assets/[name][ext]' + }, + resolve: { + extensions: ['.css', '.js', '.scss'], + alias: { + vue: path.join( + __dirname, + './node_modules/vue/dist/vue.common.prod.js' + ) } - } - ] - }, - resolve: { - extensions: ['.css', '.js', '.scss'], - alias: { - vue: path.join(__dirname, './node_modules/vue/dist/vue.common.prod.js') + }, + performance: { + hints: false + }, + devtool: 'inline-source-map', + target: ['web', 'es2020'], + stats: { + preset: 'errors-only', + builtAt: true, + timings: true + }, + plugins: [ + new MiniCssExtractPlugin({ + filename: '[name].css' + }), + new HtmlWebpackPlugin({ + filename: 'index.html', + template: './src/index.pug', + inject: false, + minify: false + }), + new HtmlWebpackPlugin({ + filename: 'vr.html', + template: './src/vr.pug', + inject: false, + minify: false + }), + new CopyPlugin({ + patterns: [ + // assets + { + from: './images/', + to: './images/' + } + // // vscode-codicons + // { + // from: './node_modules/vscode-codicons/dist/codicon.css', + // to: 'vendor/vscode-codicons/' + // }, + // { + // from: './node_modules/vscode-codicons/dist/codicon.ttf', + // to: 'vendor/vscode-codicons/' + // }, + // // fontawesome + // { + // from: './node_modules/@fortawesome/fontawesome-free/webfonts/', + // to: 'vendor/fontawesome/webfonts/' + // }, + // { + // from: './node_modules/@fortawesome/fontawesome-free/css/all.min.css', + // to: 'vendor/fontawesome/css/' + // }, + // // element-plus + // { + // from: './node_modules/element-plus/lib/theme-chalk/fonts/', + // to: 'vendor/element-plus/lib/theme-chalk/fonts/' + // }, + // { + // from: './node_modules/element-plus/lib/theme-chalk/index.css', + // to: 'vendor/element-plus/lib/theme-chalk/' + // } + ] + }) + ], + optimization: { + minimizer: [ + new TerserPlugin({ + extractComments: false + }) + ] } - }, - performance: { - hints: false - }, - devtool: 'inline-source-map', - target: ['web', 'es2020'], - stats: { - preset: 'errors-only', - builtAt: true, - timings: true - }, - plugins: [ - new MiniCssExtractPlugin({ - filename: '[name].css' - }), - new HtmlWebpackPlugin({ - filename: 'index.html', - template: './src/index.pug', - inject: false, - minify: false - }), - new HtmlWebpackPlugin({ - filename: 'vr.html', - template: './src/vr.pug', - inject: false, - minify: false - }), - new CopyPlugin({ - patterns: [ - // assets - { - from: './images/', - to: './images/' - } - // // vscode-codicons - // { - // from: './node_modules/vscode-codicons/dist/codicon.css', - // to: 'vendor/vscode-codicons/' - // }, - // { - // from: './node_modules/vscode-codicons/dist/codicon.ttf', - // to: 'vendor/vscode-codicons/' - // }, - // // fontawesome - // { - // from: './node_modules/@fortawesome/fontawesome-free/webfonts/', - // to: 'vendor/fontawesome/webfonts/' - // }, - // { - // from: './node_modules/@fortawesome/fontawesome-free/css/all.min.css', - // to: 'vendor/fontawesome/css/' - // }, - // // element-plus - // { - // from: './node_modules/element-plus/lib/theme-chalk/fonts/', - // to: 'vendor/element-plus/lib/theme-chalk/fonts/' - // }, - // { - // from: './node_modules/element-plus/lib/theme-chalk/index.css', - // to: 'vendor/element-plus/lib/theme-chalk/' - // } - ] - }) - ], - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: false - }) - ] - } };