|
@@ -9,6 +9,7 @@ import converse from '../../shared/api/public.js';
|
|
import { getOpenPromise } from '@converse/openpromise';
|
|
import { getOpenPromise } from '@converse/openpromise';
|
|
import './utils.js';
|
|
import './utils.js';
|
|
import EmojiPicker from './picker.js';
|
|
import EmojiPicker from './picker.js';
|
|
|
|
+import emojis from './api.js';
|
|
|
|
|
|
converse.emojis = {
|
|
converse.emojis = {
|
|
'initialized': false,
|
|
'initialized': false,
|
|
@@ -59,63 +60,6 @@ converse.plugins.add('converse-emoji', {
|
|
const exports = { EmojiPicker };
|
|
const exports = { EmojiPicker };
|
|
Object.assign(_converse, exports); // XXX: DEPRECATED
|
|
Object.assign(_converse, exports); // XXX: DEPRECATED
|
|
Object.assign(_converse.exports, exports);
|
|
Object.assign(_converse.exports, exports);
|
|
-
|
|
|
|
- // We extend the default converse.js API to add methods specific to MUC groupchats.
|
|
|
|
- Object.assign(api, {
|
|
|
|
- /**
|
|
|
|
- * @namespace api.emojis
|
|
|
|
- * @memberOf api
|
|
|
|
- */
|
|
|
|
- emojis: {
|
|
|
|
- /**
|
|
|
|
- * Initializes Emoji support by downloading the emojis JSON (and any applicable images).
|
|
|
|
- * @method api.emojis.initialize
|
|
|
|
- * @returns {Promise}
|
|
|
|
- */
|
|
|
|
- async initialize () {
|
|
|
|
- if (!converse.emojis.initialized) {
|
|
|
|
- converse.emojis.initialized = true;
|
|
|
|
-
|
|
|
|
- const module = await import(/*webpackChunkName: "emojis" */ './emoji.json');
|
|
|
|
- /**
|
|
|
|
- * *Hook* which allows plugins to modify emojis definition.
|
|
|
|
- *
|
|
|
|
- * Note: This hook is only fired one time, when Converse is initialized.
|
|
|
|
- *
|
|
|
|
- * @event _converse#loadEmojis
|
|
|
|
- * @param context
|
|
|
|
- * An empty context object.
|
|
|
|
- * @param json
|
|
|
|
- * See {@link src/headless/emojis.json} for more information about the content of
|
|
|
|
- * this parameter.
|
|
|
|
- * @example
|
|
|
|
- * api.listen.on('loadEmojis', (context, json) => {
|
|
|
|
- * json.custom??= {};
|
|
|
|
- * json.custom[":my_emoji"] = {
|
|
|
|
- * "sn":":my_emoji:","url":"https://example.com/my_emoji.png","c":"custom"
|
|
|
|
- * };
|
|
|
|
- * delete json.custom[":converse:"];
|
|
|
|
- * return json;
|
|
|
|
- * });
|
|
|
|
- */
|
|
|
|
- const json = await api.hook('loadEmojis', {}, module.default);
|
|
|
|
- converse.emojis.json = json;
|
|
|
|
-
|
|
|
|
- converse.emojis.by_sn = Object.keys(json).reduce(
|
|
|
|
- (result, cat) => Object.assign(result, json[cat]),
|
|
|
|
- {}
|
|
|
|
- );
|
|
|
|
- converse.emojis.list = Object.values(converse.emojis.by_sn);
|
|
|
|
- converse.emojis.list.sort((a, b) => (a.sn < b.sn ? -1 : a.sn > b.sn ? 1 : 0));
|
|
|
|
- converse.emojis.shortnames = converse.emojis.list.map((m) => m.sn);
|
|
|
|
- const getShortNames = () =>
|
|
|
|
- converse.emojis.shortnames.map((s) => s.replace(/[+]/g, '\\$&')).join('|');
|
|
|
|
- converse.emojis.shortnames_regex = new RegExp(getShortNames(), 'gi');
|
|
|
|
- converse.emojis.initialized_promise.resolve();
|
|
|
|
- }
|
|
|
|
- return converse.emojis.initialized_promise;
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- });
|
|
|
|
|
|
+ Object.assign(api, emojis);
|
|
},
|
|
},
|
|
});
|
|
});
|