UNPKG

2.57 kBPlain TextView Raw
1import { basename } from 'path';
2
3const buster = require.main.require('./src/meta').config['cache-buster'];
4const nconf = require.main.require('nconf');
5const url = nconf.get('url');
6
7export function images(pack: EmojiDefinition) {
8 return `.emoji-${pack.id} {` +
9 'display: inline-block;' +
10 'height: 23px;' +
11 'margin-top: -1px;' +
12 'margin-bottom: -1px;' +
13 '}';
14}
15
16export function sprite(pack: EmojiDefinition): string {
17 const classes = Object.keys(pack.dictionary).map((name) => `.emoji-${pack.id}.emoji--${name} {` +
18 `background-position: ${pack.dictionary[name].backgroundPosition};` +
19 '}');
20
21 const route = `${url}/plugins/nodebb-plugin-emoji/emoji/${pack.id}`;
22 return `.emoji-${pack.id} {
23 background-image: url(${route}/${basename(pack.sprite.file)}?${buster});
24 background-size: ${pack.sprite.backgroundSize};
25 background-repeat: no-repeat;
26 display: inline-block;
27 height: 23px;
28 width: 23px;
29 overflow: hidden;
30 font-size: 23px;
31 line-height: 23px;
32 text-align: center;
33 vertical-align: bottom;
34 color: transparent;
35 margin-top: -1px;
36 margin-bottom: -1px;
37 }
38 .emoji-link .emoji-${pack.id} {
39 transform: scale(1.304347826086957);
40 position: relative;
41 bottom: -3.5px;
42 height: 23px;
43 width: 23px;
44 font-size: 23px;
45 line-height: 23px;
46 }
47 ${classes.join('')}`.split('\n').map((x) => x.trim()).join('');
48}
49
50export function font(pack: EmojiDefinition): string {
51 const route = `${url}/plugins/nodebb-plugin-emoji/emoji/${pack.id}`;
52
53 return `@font-face {
54 font-family: '${pack.font.family}';
55 ${(pack.font.eot ? `src: url(${route}/${basename(pack.font.eot)});` : '')}
56 src: ${[
57 pack.font.eot &&
58 `url(${route}/${basename(pack.font.eot)}?#iefix) format('embedded-opentype')`,
59 pack.font.woff2 &&
60 `url(${route}/${basename(pack.font.woff2)}) format('woff2')`,
61 pack.font.woff &&
62 `url(${route}/${basename(pack.font.woff)}) format('woff')`,
63 pack.font.ttf &&
64 `url(${route}/${basename(pack.font.ttf)}) format('truetype')`,
65 pack.font.svg &&
66 `url(${route}/${basename(pack.font.svg)}) format('svg')`,
67 ].filter(Boolean).join(', ')};
68 }
69 .emoji-${pack.id} {
70 font-family: '${pack.font.family}';
71 font-style: normal;
72 display: inline-block;
73 height: 23px;
74 width: 23px;
75 overflow: hidden;
76 font-size: 23px;
77 line-height: 23px;
78 text-align: center;
79 vertical-align: bottom;
80 margin-top: -1px;
81 margin-bottom: -1px;
82 }`.split('\n').map((x) => x.trim()).join('');
83}
84
\No newline at end of file