1 | import { basename } from 'path';
|
2 |
|
3 | const buster = require.main.require('./src/meta').config['cache-buster'];
|
4 | const nconf = require.main.require('nconf');
|
5 | const url = nconf.get('url');
|
6 |
|
7 | export 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 |
|
16 | export 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 |
|
50 | export 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 |