mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-03 23:14:13 +00:00 
			
		
		
		
	絵文字ピッカーの Unicode 12.0 対応など (#5441)
* Twemoji 12.1 * 絵文字ライブラリを持つように * Fix chess_pawn emoji * Add Unicode 12.0 emojis * Add transgender flag/symbol emoji * Add some japanese emoji keywords * format emojilist.json * fix emojilist order * Add missing flags
This commit is contained in:
		
							parent
							
								
									9f5a763c69
								
							
						
					
					
						commit
						60d2558ed6
					
				
					 10 changed files with 1691 additions and 38 deletions
				
			
		| 
						 | 
				
			
			@ -54,6 +54,7 @@ gulp.task('build:copy:fonts', () =>
 | 
			
		|||
gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:copy:fonts', () =>
 | 
			
		||||
	gulp.src([
 | 
			
		||||
		'./src/const.json',
 | 
			
		||||
		'./src/emojilist.json',
 | 
			
		||||
		'./src/server/web/views/**/*',
 | 
			
		||||
		'./src/**/assets/**/*',
 | 
			
		||||
		'!./src/client/app/**/assets/**/*'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,7 +123,6 @@
 | 
			
		|||
		"deep-equal": "1.1.0",
 | 
			
		||||
		"diskusage": "1.1.3",
 | 
			
		||||
		"double-ended-queue": "2.1.0-0",
 | 
			
		||||
		"emojilib": "2.4.0",
 | 
			
		||||
		"eslint": "6.1.0",
 | 
			
		||||
		"eslint-plugin-vue": "5.2.3",
 | 
			
		||||
		"eventemitter3": "4.0.0",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,9 +28,9 @@
 | 
			
		|||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import * as emojilib from 'emojilib';
 | 
			
		||||
import { emojilist } from '../../../../../misc/emojilist';
 | 
			
		||||
import contains from '../../../common/scripts/contains';
 | 
			
		||||
import { twemojiBase } from '../../../../../misc/twemoji-base';
 | 
			
		||||
import { twemojiSvgBase } from '../../../../../misc/twemoji-base';
 | 
			
		||||
import { getStaticImageUrl } from '../../../common/scripts/get-static-image-url';
 | 
			
		||||
 | 
			
		||||
type EmojiDef = {
 | 
			
		||||
| 
						 | 
				
			
			@ -41,9 +41,7 @@ type EmojiDef = {
 | 
			
		|||
	isCustomEmoji?: boolean;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const lib = Object.entries(emojilib.lib).filter((x: any) => {
 | 
			
		||||
	return x[1].category != 'flags';
 | 
			
		||||
});
 | 
			
		||||
const lib = emojilist.filter(x => x.category !== 'flags');
 | 
			
		||||
 | 
			
		||||
const char2file = (char: string) => {
 | 
			
		||||
	let codes = Array.from(char).map(x => x.codePointAt(0).toString(16));
 | 
			
		||||
| 
						 | 
				
			
			@ -52,21 +50,21 @@ const char2file = (char: string) => {
 | 
			
		|||
	return codes.join('-');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const emjdb: EmojiDef[] = lib.map((x: any) => ({
 | 
			
		||||
	emoji: x[1].char,
 | 
			
		||||
	name: x[0],
 | 
			
		||||
const emjdb: EmojiDef[] = lib.map(x => ({
 | 
			
		||||
	emoji: x.char,
 | 
			
		||||
	name: x.name,
 | 
			
		||||
	aliasOf: null,
 | 
			
		||||
	url: `${twemojiBase}/2/svg/${char2file(x[1].char)}.svg`
 | 
			
		||||
	url: `${twemojiSvgBase}/${char2file(x.char)}.svg`
 | 
			
		||||
}));
 | 
			
		||||
 | 
			
		||||
for (const x of lib as any) {
 | 
			
		||||
	if (x[1].keywords) {
 | 
			
		||||
		for (const k of x[1].keywords) {
 | 
			
		||||
for (const x of lib) {
 | 
			
		||||
	if (x.keywords) {
 | 
			
		||||
		for (const k of x.keywords) {
 | 
			
		||||
			emjdb.push({
 | 
			
		||||
				emoji: x[1].char,
 | 
			
		||||
				emoji: x.char,
 | 
			
		||||
				name: k,
 | 
			
		||||
				aliasOf: x[0],
 | 
			
		||||
				url: `${twemojiBase}/2/svg/${char2file(x[1].char)}.svg`
 | 
			
		||||
				aliasOf: x.name,
 | 
			
		||||
				url: `${twemojiSvgBase}/${char2file(x.char)}.svg`
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +83,7 @@ export default Vue.extend({
 | 
			
		|||
			hashtags: [],
 | 
			
		||||
			emojis: [],
 | 
			
		||||
			select: -1,
 | 
			
		||||
			emojilib,
 | 
			
		||||
			emojilist,
 | 
			
		||||
			emojiDb: [] as EmojiDef[]
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@
 | 
			
		|||
			:title="category.text"
 | 
			
		||||
			@click="go(category)"
 | 
			
		||||
			:class="{ active: category.isActive }"
 | 
			
		||||
			:key="category.text"
 | 
			
		||||
		>
 | 
			
		||||
			<fa :icon="category.icon" fixed-width/>
 | 
			
		||||
		</button>
 | 
			
		||||
| 
						 | 
				
			
			@ -12,18 +13,19 @@
 | 
			
		|||
	<div class="emojis">
 | 
			
		||||
		<header><fa :icon="categories.find(x => x.isActive).icon" fixed-width/> {{ categories.find(x => x.isActive).text }}</header>
 | 
			
		||||
		<div v-if="categories.find(x => x.isActive).name">
 | 
			
		||||
			<button v-for="emoji in Object.entries(lib).filter(([k, v]) => v.category === categories.find(x => x.isActive).name)"
 | 
			
		||||
				:title="emoji[0]"
 | 
			
		||||
				@click="chosen(emoji[1].char)"
 | 
			
		||||
				:key="emoji[0]"
 | 
			
		||||
			<button v-for="emoji in emojilist.filter(e => e.category === categories.find(x => x.isActive).name)"
 | 
			
		||||
				:title="emoji.name"
 | 
			
		||||
				@click="chosen(emoji.char)"
 | 
			
		||||
				:key="emoji.name"
 | 
			
		||||
			>
 | 
			
		||||
				<mk-emoji :emoji="emoji[1].char"/>
 | 
			
		||||
				<mk-emoji :emoji="emoji.char"/>
 | 
			
		||||
			</button>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div v-else>
 | 
			
		||||
			<button v-for="emoji in customEmojis"
 | 
			
		||||
				:title="emoji.name"
 | 
			
		||||
				@click="chosen(`:${emoji.name}:`)"
 | 
			
		||||
				:key="emoji.name"
 | 
			
		||||
			>
 | 
			
		||||
				<img :src="emoji.url" :alt="emoji.name"/>
 | 
			
		||||
			</button>
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +37,7 @@
 | 
			
		|||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import i18n from '../../../i18n';
 | 
			
		||||
import { lib } from 'emojilib';
 | 
			
		||||
import { emojilist } from '../../../../../misc/emojilist';
 | 
			
		||||
import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice } from '@fortawesome/free-solid-svg-icons';
 | 
			
		||||
import { faHeart, faFlag } from '@fortawesome/free-regular-svg-icons';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +46,7 @@ export default Vue.extend({
 | 
			
		|||
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			lib,
 | 
			
		||||
			emojilist,
 | 
			
		||||
			customEmojis: [],
 | 
			
		||||
			categories: [{
 | 
			
		||||
				text: this.$t('custom-emoji'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,10 +7,8 @@
 | 
			
		|||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
// スクリプトサイズがデカい
 | 
			
		||||
//import { lib } from 'emojilib';
 | 
			
		||||
import { getStaticImageUrl } from '../../../common/scripts/get-static-image-url';
 | 
			
		||||
import { twemojiBase } from '../../../../../misc/twemoji-base';
 | 
			
		||||
import { twemojiSvgBase } from '../../../../../misc/twemoji-base';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	props: {
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +90,7 @@ export default Vue.extend({
 | 
			
		|||
			if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
 | 
			
		||||
			codes = codes.filter(x => x && x.length);
 | 
			
		||||
 | 
			
		||||
			this.url = `${twemojiBase}/2/svg/${codes.join('-')}.svg`;
 | 
			
		||||
			this.url = `${twemojiSvgBase}/${codes.join('-')}.svg`;
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1655
									
								
								src/emojilist.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1655
									
								
								src/emojilist.json
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										7
									
								
								src/misc/emojilist.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/misc/emojilist.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
// initial converted from https://github.com/muan/emojilib/commit/242fe68be86ed6536843b83f7e32f376468b38fb
 | 
			
		||||
export const emojilist = require('../emojilist.json') as {
 | 
			
		||||
	name: string;
 | 
			
		||||
	keywords: string[];
 | 
			
		||||
	char: string;
 | 
			
		||||
	category: 'people' | 'animals_and_nature' | 'food_and_drink' | 'activity' | 'travel_and_places' | 'objects' | 'symbols' | 'flags';
 | 
			
		||||
}[];
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1 @@
 | 
			
		|||
export const twemojiBase = 'https://cdn.jsdelivr.net/npm/twemoji@12.0.1';
 | 
			
		||||
// https://cdn.jsdelivr.net/npm/twemoji@12.0.1
 | 
			
		||||
// https://cdnjs.cloudflare.com/ajax/libs/twemoji/12.0.1
 | 
			
		||||
// https://twemoji.maxcdn.com
 | 
			
		||||
export const twemojiSvgBase = 'https://twemoji.maxcdn.com/v/latest/svg';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3712,11 +3712,6 @@ emoji-regex@^7.0.1:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
 | 
			
		||||
  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
 | 
			
		||||
 | 
			
		||||
emojilib@2.4.0:
 | 
			
		||||
  version "2.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e"
 | 
			
		||||
  integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==
 | 
			
		||||
 | 
			
		||||
emojis-list@^2.0.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue