5505 lines
156 KiB
JavaScript
5505 lines
156 KiB
JavaScript
/*
|
||
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
|
||
if you want to view the source visit the plugins github repository
|
||
*/
|
||
|
||
'use strict';
|
||
|
||
var obsidian = require('obsidian');
|
||
|
||
var IndexItemStyle;
|
||
(function (IndexItemStyle) {
|
||
IndexItemStyle["List"] = "list";
|
||
IndexItemStyle["Checkbox"] = "checkbox";
|
||
IndexItemStyle["PureLink"] = "pureLink";
|
||
})(IndexItemStyle || (IndexItemStyle = {}));
|
||
|
||
const hasFrontmatter = (content, separator) => {
|
||
return (content.trim().startsWith(separator) && content.split(separator).length > 1);
|
||
};
|
||
|
||
const getFrontmatter = (content, separator) => {
|
||
return hasFrontmatter(content, separator)
|
||
? `${separator}${content.split(separator)[1]}${separator}`
|
||
: '';
|
||
};
|
||
|
||
const updateFrontmatter = (settings, currentContent) => {
|
||
if (!settings.indexTagBoolean)
|
||
return getFrontmatter(currentContent, settings.frontMatterSeparator);
|
||
let currentFrontmatterWithoutSep = `${currentContent.split(settings.frontMatterSeparator)[1]}`;
|
||
if (currentFrontmatterWithoutSep === '')
|
||
return '';
|
||
else {
|
||
let tagLine = currentFrontmatterWithoutSep.split('\n').find(elem => elem.split(':')[0] === settings.indexTagLabel);
|
||
if (!tagLine && settings.indexTagValue && settings.indexTagBoolean) {
|
||
tagLine = 'tags:';
|
||
currentFrontmatterWithoutSep = `${currentFrontmatterWithoutSep}${tagLine}\n`;
|
||
}
|
||
const taglist = tagLine.split(':')[1].trim();
|
||
const indexTags = settings.indexTagSeparator
|
||
? settings.indexTagValue.split(settings.indexTagSeparator)
|
||
: [settings.indexTagValue];
|
||
let updatedTaglist = taglist.replace(/\[|\]/g, '');
|
||
for (const indexTag of indexTags) {
|
||
if (!taglist.includes(indexTag)) {
|
||
updatedTaglist = !settings.indexTagSeparator
|
||
|| (updatedTaglist.split(settings.indexTagSeparator).length >= 1
|
||
&& updatedTaglist.split(settings.indexTagSeparator)[0] !== '')
|
||
? `${updatedTaglist}${settings.indexTagSeparator}${indexTag}`
|
||
: indexTag;
|
||
}
|
||
}
|
||
if (settings.addSquareBrackets)
|
||
updatedTaglist = `[${updatedTaglist}]`;
|
||
const updatedTagLine = `tags: ${updatedTaglist}`;
|
||
const regex = new RegExp(tagLine.replace(/\[/g, '\\[').replace(/\]/g, '\\]'), 'g');
|
||
return settings.indexTagBoolean
|
||
? `${settings.frontMatterSeparator}${currentFrontmatterWithoutSep.replace(regex, updatedTagLine)}${settings.frontMatterSeparator}`
|
||
: `${settings.frontMatterSeparator}${currentFrontmatterWithoutSep}${settings.frontMatterSeparator}`;
|
||
}
|
||
};
|
||
|
||
var SortOrder;
|
||
(function (SortOrder) {
|
||
SortOrder["ASC"] = "asc";
|
||
SortOrder["DESC"] = "desc";
|
||
})(SortOrder || (SortOrder = {}));
|
||
|
||
const ZOOTTELKEEPER_INDEX_LIST_BEGINNING_TEXT = '%% Zoottelkeeper: Beginning of the autogenerated index file list %%';
|
||
const ZOOTTELKEEPER_INDEX_LIST_END_TEXT = '%% Zoottelkeeper: End of the autogenerated index file list %%';
|
||
|
||
const updateIndexContent = (sortOrder, currentContent, indexContent) => {
|
||
const intro = currentContent.split(ZOOTTELKEEPER_INDEX_LIST_BEGINNING_TEXT)[0];
|
||
const outro = currentContent.split(ZOOTTELKEEPER_INDEX_LIST_END_TEXT);
|
||
indexContent = indexContent.sort(function (a, b) {
|
||
return a.localeCompare(b, undefined, { numeric: true });
|
||
});
|
||
if (sortOrder === SortOrder.DESC)
|
||
indexContent.reverse();
|
||
const content = (currentContent === intro || currentContent === outro[0])
|
||
? `${ZOOTTELKEEPER_INDEX_LIST_BEGINNING_TEXT}\n${indexContent.join('\n')}\n${ZOOTTELKEEPER_INDEX_LIST_END_TEXT}\n`
|
||
: `${intro}${ZOOTTELKEEPER_INDEX_LIST_BEGINNING_TEXT}\n${indexContent.join('\n')}\n${ZOOTTELKEEPER_INDEX_LIST_END_TEXT}${outro[1]}`;
|
||
return content;
|
||
};
|
||
|
||
const removeFrontmatter = (content, separator) => {
|
||
return (content.startsWith(separator) && content.split(separator).length > 1)
|
||
? content.split(separator).slice(2).join(separator)
|
||
: content;
|
||
};
|
||
|
||
const isInAllowedFolder = (settings, indexFilePath) => {
|
||
return settings.foldersIncluded === '' || isInSpecificFolder(settings, indexFilePath, 'foldersIncluded');
|
||
};
|
||
const isInDisAllowedFolder = (settings, indexFilePath) => {
|
||
return isInSpecificFolder(settings, indexFilePath, 'foldersExcluded');
|
||
};
|
||
const isInSpecificFolder = (settings, indexFilePath, folderType) => {
|
||
return !!settings[folderType].replace(/,/g, '\n').split('\n').find((folder) => {
|
||
return folder.endsWith('*')
|
||
? indexFilePath.startsWith(folder.slice(0, -1).trim())
|
||
: indexFilePath.split(folder).length > 1 && !indexFilePath.split(folder)[1].includes('/');
|
||
});
|
||
};
|
||
|
||
const DEFAULT_SETTINGS = {
|
||
indexPrefix: '_Index_of_',
|
||
indexItemStyle: IndexItemStyle.PureLink,
|
||
indexTagValue: 'MOC',
|
||
indexTagBoolean: true,
|
||
indexTagSeparator: ', ',
|
||
indexTagLabel: 'tags',
|
||
cleanPathBoolean: true,
|
||
folderEmoji: ':card_index_dividers:',
|
||
fileEmoji: ':page_facing_up:',
|
||
enableEmojis: false,
|
||
foldersExcluded: '',
|
||
foldersIncluded: '',
|
||
sortOrder: SortOrder.ASC,
|
||
addSquareBrackets: true,
|
||
embedSubIndex: false,
|
||
templateFile: '',
|
||
frontMatterSeparator: '---',
|
||
};
|
||
|
||
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||
|
||
function createCommonjsModule(fn) {
|
||
var module = { exports: {} };
|
||
return fn(module, module.exports), module.exports;
|
||
}
|
||
|
||
/** Detect free variable `global` from Node.js. */
|
||
|
||
var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
|
||
|
||
var _freeGlobal = freeGlobal;
|
||
|
||
/** Detect free variable `self`. */
|
||
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
||
|
||
/** Used as a reference to the global object. */
|
||
var root = _freeGlobal || freeSelf || Function('return this')();
|
||
|
||
var _root = root;
|
||
|
||
/** Built-in value references. */
|
||
var Symbol = _root.Symbol;
|
||
|
||
var _Symbol = Symbol;
|
||
|
||
/**
|
||
* Copies the values of `source` to `array`.
|
||
*
|
||
* @private
|
||
* @param {Array} source The array to copy values from.
|
||
* @param {Array} [array=[]] The array to copy values to.
|
||
* @returns {Array} Returns `array`.
|
||
*/
|
||
function copyArray(source, array) {
|
||
var index = -1,
|
||
length = source.length;
|
||
|
||
array || (array = Array(length));
|
||
while (++index < length) {
|
||
array[index] = source[index];
|
||
}
|
||
return array;
|
||
}
|
||
|
||
var _copyArray = copyArray;
|
||
|
||
/** Used for built-in method references. */
|
||
var objectProto = Object.prototype;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||
|
||
/**
|
||
* Used to resolve the
|
||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||
* of values.
|
||
*/
|
||
var nativeObjectToString = objectProto.toString;
|
||
|
||
/** Built-in value references. */
|
||
var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
|
||
|
||
/**
|
||
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to query.
|
||
* @returns {string} Returns the raw `toStringTag`.
|
||
*/
|
||
function getRawTag(value) {
|
||
var isOwn = hasOwnProperty.call(value, symToStringTag),
|
||
tag = value[symToStringTag];
|
||
|
||
try {
|
||
value[symToStringTag] = undefined;
|
||
var unmasked = true;
|
||
} catch (e) {}
|
||
|
||
var result = nativeObjectToString.call(value);
|
||
if (unmasked) {
|
||
if (isOwn) {
|
||
value[symToStringTag] = tag;
|
||
} else {
|
||
delete value[symToStringTag];
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var _getRawTag = getRawTag;
|
||
|
||
/** Used for built-in method references. */
|
||
var objectProto$1 = Object.prototype;
|
||
|
||
/**
|
||
* Used to resolve the
|
||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||
* of values.
|
||
*/
|
||
var nativeObjectToString$1 = objectProto$1.toString;
|
||
|
||
/**
|
||
* Converts `value` to a string using `Object.prototype.toString`.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to convert.
|
||
* @returns {string} Returns the converted string.
|
||
*/
|
||
function objectToString(value) {
|
||
return nativeObjectToString$1.call(value);
|
||
}
|
||
|
||
var _objectToString = objectToString;
|
||
|
||
/** `Object#toString` result references. */
|
||
var nullTag = '[object Null]',
|
||
undefinedTag = '[object Undefined]';
|
||
|
||
/** Built-in value references. */
|
||
var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
|
||
|
||
/**
|
||
* The base implementation of `getTag` without fallbacks for buggy environments.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to query.
|
||
* @returns {string} Returns the `toStringTag`.
|
||
*/
|
||
function baseGetTag(value) {
|
||
if (value == null) {
|
||
return value === undefined ? undefinedTag : nullTag;
|
||
}
|
||
return (symToStringTag$1 && symToStringTag$1 in Object(value))
|
||
? _getRawTag(value)
|
||
: _objectToString(value);
|
||
}
|
||
|
||
var _baseGetTag = baseGetTag;
|
||
|
||
/**
|
||
* Checks if `value` is the
|
||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObject({});
|
||
* // => true
|
||
*
|
||
* _.isObject([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObject(_.noop);
|
||
* // => true
|
||
*
|
||
* _.isObject(null);
|
||
* // => false
|
||
*/
|
||
function isObject(value) {
|
||
var type = typeof value;
|
||
return value != null && (type == 'object' || type == 'function');
|
||
}
|
||
|
||
var isObject_1 = isObject;
|
||
|
||
/** `Object#toString` result references. */
|
||
var asyncTag = '[object AsyncFunction]',
|
||
funcTag = '[object Function]',
|
||
genTag = '[object GeneratorFunction]',
|
||
proxyTag = '[object Proxy]';
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `Function` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||
* @example
|
||
*
|
||
* _.isFunction(_);
|
||
* // => true
|
||
*
|
||
* _.isFunction(/abc/);
|
||
* // => false
|
||
*/
|
||
function isFunction(value) {
|
||
if (!isObject_1(value)) {
|
||
return false;
|
||
}
|
||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||
// in Safari 9 which returns 'object' for typed arrays and other constructors.
|
||
var tag = _baseGetTag(value);
|
||
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
|
||
}
|
||
|
||
var isFunction_1 = isFunction;
|
||
|
||
/** Used to detect overreaching core-js shims. */
|
||
var coreJsData = _root['__core-js_shared__'];
|
||
|
||
var _coreJsData = coreJsData;
|
||
|
||
/** Used to detect methods masquerading as native. */
|
||
var maskSrcKey = (function() {
|
||
var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');
|
||
return uid ? ('Symbol(src)_1.' + uid) : '';
|
||
}());
|
||
|
||
/**
|
||
* Checks if `func` has its source masked.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to check.
|
||
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
|
||
*/
|
||
function isMasked(func) {
|
||
return !!maskSrcKey && (maskSrcKey in func);
|
||
}
|
||
|
||
var _isMasked = isMasked;
|
||
|
||
/** Used for built-in method references. */
|
||
var funcProto = Function.prototype;
|
||
|
||
/** Used to resolve the decompiled source of functions. */
|
||
var funcToString = funcProto.toString;
|
||
|
||
/**
|
||
* Converts `func` to its source code.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to convert.
|
||
* @returns {string} Returns the source code.
|
||
*/
|
||
function toSource(func) {
|
||
if (func != null) {
|
||
try {
|
||
return funcToString.call(func);
|
||
} catch (e) {}
|
||
try {
|
||
return (func + '');
|
||
} catch (e) {}
|
||
}
|
||
return '';
|
||
}
|
||
|
||
var _toSource = toSource;
|
||
|
||
/**
|
||
* Used to match `RegExp`
|
||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
||
*/
|
||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||
|
||
/** Used to detect host constructors (Safari). */
|
||
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||
|
||
/** Used for built-in method references. */
|
||
var funcProto$1 = Function.prototype,
|
||
objectProto$2 = Object.prototype;
|
||
|
||
/** Used to resolve the decompiled source of functions. */
|
||
var funcToString$1 = funcProto$1.toString;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty$1 = objectProto$2.hasOwnProperty;
|
||
|
||
/** Used to detect if a method is native. */
|
||
var reIsNative = RegExp('^' +
|
||
funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\$&')
|
||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
||
);
|
||
|
||
/**
|
||
* The base implementation of `_.isNative` without bad shim checks.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a native function,
|
||
* else `false`.
|
||
*/
|
||
function baseIsNative(value) {
|
||
if (!isObject_1(value) || _isMasked(value)) {
|
||
return false;
|
||
}
|
||
var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;
|
||
return pattern.test(_toSource(value));
|
||
}
|
||
|
||
var _baseIsNative = baseIsNative;
|
||
|
||
/**
|
||
* Gets the value at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} [object] The object to query.
|
||
* @param {string} key The key of the property to get.
|
||
* @returns {*} Returns the property value.
|
||
*/
|
||
function getValue(object, key) {
|
||
return object == null ? undefined : object[key];
|
||
}
|
||
|
||
var _getValue = getValue;
|
||
|
||
/**
|
||
* Gets the native function at `key` of `object`.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @param {string} key The key of the method to get.
|
||
* @returns {*} Returns the function if it's native, else `undefined`.
|
||
*/
|
||
function getNative(object, key) {
|
||
var value = _getValue(object, key);
|
||
return _baseIsNative(value) ? value : undefined;
|
||
}
|
||
|
||
var _getNative = getNative;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var DataView = _getNative(_root, 'DataView');
|
||
|
||
var _DataView = DataView;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var Map = _getNative(_root, 'Map');
|
||
|
||
var _Map = Map;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var Promise = _getNative(_root, 'Promise');
|
||
|
||
var _Promise = Promise;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var Set$1 = _getNative(_root, 'Set');
|
||
|
||
var _Set = Set$1;
|
||
|
||
/* Built-in method references that are verified to be native. */
|
||
var WeakMap = _getNative(_root, 'WeakMap');
|
||
|
||
var _WeakMap = WeakMap;
|
||
|
||
/** `Object#toString` result references. */
|
||
var mapTag = '[object Map]',
|
||
objectTag = '[object Object]',
|
||
promiseTag = '[object Promise]',
|
||
setTag = '[object Set]',
|
||
weakMapTag = '[object WeakMap]';
|
||
|
||
var dataViewTag = '[object DataView]';
|
||
|
||
/** Used to detect maps, sets, and weakmaps. */
|
||
var dataViewCtorString = _toSource(_DataView),
|
||
mapCtorString = _toSource(_Map),
|
||
promiseCtorString = _toSource(_Promise),
|
||
setCtorString = _toSource(_Set),
|
||
weakMapCtorString = _toSource(_WeakMap);
|
||
|
||
/**
|
||
* Gets the `toStringTag` of `value`.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to query.
|
||
* @returns {string} Returns the `toStringTag`.
|
||
*/
|
||
var getTag = _baseGetTag;
|
||
|
||
// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
|
||
if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag) ||
|
||
(_Map && getTag(new _Map) != mapTag) ||
|
||
(_Promise && getTag(_Promise.resolve()) != promiseTag) ||
|
||
(_Set && getTag(new _Set) != setTag) ||
|
||
(_WeakMap && getTag(new _WeakMap) != weakMapTag)) {
|
||
getTag = function(value) {
|
||
var result = _baseGetTag(value),
|
||
Ctor = result == objectTag ? value.constructor : undefined,
|
||
ctorString = Ctor ? _toSource(Ctor) : '';
|
||
|
||
if (ctorString) {
|
||
switch (ctorString) {
|
||
case dataViewCtorString: return dataViewTag;
|
||
case mapCtorString: return mapTag;
|
||
case promiseCtorString: return promiseTag;
|
||
case setCtorString: return setTag;
|
||
case weakMapCtorString: return weakMapTag;
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
}
|
||
|
||
var _getTag = getTag;
|
||
|
||
/** Used as references for various `Number` constants. */
|
||
var MAX_SAFE_INTEGER = 9007199254740991;
|
||
|
||
/**
|
||
* Checks if `value` is a valid array-like length.
|
||
*
|
||
* **Note:** This method is loosely based on
|
||
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
|
||
* @example
|
||
*
|
||
* _.isLength(3);
|
||
* // => true
|
||
*
|
||
* _.isLength(Number.MIN_VALUE);
|
||
* // => false
|
||
*
|
||
* _.isLength(Infinity);
|
||
* // => false
|
||
*
|
||
* _.isLength('3');
|
||
* // => false
|
||
*/
|
||
function isLength(value) {
|
||
return typeof value == 'number' &&
|
||
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
|
||
}
|
||
|
||
var isLength_1 = isLength;
|
||
|
||
/**
|
||
* Checks if `value` is array-like. A value is considered array-like if it's
|
||
* not a function and has a `value.length` that's an integer greater than or
|
||
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
|
||
* @example
|
||
*
|
||
* _.isArrayLike([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isArrayLike(document.body.children);
|
||
* // => true
|
||
*
|
||
* _.isArrayLike('abc');
|
||
* // => true
|
||
*
|
||
* _.isArrayLike(_.noop);
|
||
* // => false
|
||
*/
|
||
function isArrayLike(value) {
|
||
return value != null && isLength_1(value.length) && !isFunction_1(value);
|
||
}
|
||
|
||
var isArrayLike_1 = isArrayLike;
|
||
|
||
/**
|
||
* Checks if `value` is classified as an `Array` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
|
||
* @example
|
||
*
|
||
* _.isArray([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isArray(document.body.children);
|
||
* // => false
|
||
*
|
||
* _.isArray('abc');
|
||
* // => false
|
||
*
|
||
* _.isArray(_.noop);
|
||
* // => false
|
||
*/
|
||
var isArray = Array.isArray;
|
||
|
||
var isArray_1 = isArray;
|
||
|
||
/**
|
||
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
||
* and has a `typeof` result of "object".
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
||
* @example
|
||
*
|
||
* _.isObjectLike({});
|
||
* // => true
|
||
*
|
||
* _.isObjectLike([1, 2, 3]);
|
||
* // => true
|
||
*
|
||
* _.isObjectLike(_.noop);
|
||
* // => false
|
||
*
|
||
* _.isObjectLike(null);
|
||
* // => false
|
||
*/
|
||
function isObjectLike(value) {
|
||
return value != null && typeof value == 'object';
|
||
}
|
||
|
||
var isObjectLike_1 = isObjectLike;
|
||
|
||
/** `Object#toString` result references. */
|
||
var stringTag = '[object String]';
|
||
|
||
/**
|
||
* Checks if `value` is classified as a `String` primitive or object.
|
||
*
|
||
* @static
|
||
* @since 0.1.0
|
||
* @memberOf _
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
|
||
* @example
|
||
*
|
||
* _.isString('abc');
|
||
* // => true
|
||
*
|
||
* _.isString(1);
|
||
* // => false
|
||
*/
|
||
function isString(value) {
|
||
return typeof value == 'string' ||
|
||
(!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
|
||
}
|
||
|
||
var isString_1 = isString;
|
||
|
||
/**
|
||
* Converts `iterator` to an array.
|
||
*
|
||
* @private
|
||
* @param {Object} iterator The iterator to convert.
|
||
* @returns {Array} Returns the converted array.
|
||
*/
|
||
function iteratorToArray(iterator) {
|
||
var data,
|
||
result = [];
|
||
|
||
while (!(data = iterator.next()).done) {
|
||
result.push(data.value);
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var _iteratorToArray = iteratorToArray;
|
||
|
||
/**
|
||
* Converts `map` to its key-value pairs.
|
||
*
|
||
* @private
|
||
* @param {Object} map The map to convert.
|
||
* @returns {Array} Returns the key-value pairs.
|
||
*/
|
||
function mapToArray(map) {
|
||
var index = -1,
|
||
result = Array(map.size);
|
||
|
||
map.forEach(function(value, key) {
|
||
result[++index] = [key, value];
|
||
});
|
||
return result;
|
||
}
|
||
|
||
var _mapToArray = mapToArray;
|
||
|
||
/**
|
||
* Converts `set` to an array of its values.
|
||
*
|
||
* @private
|
||
* @param {Object} set The set to convert.
|
||
* @returns {Array} Returns the values.
|
||
*/
|
||
function setToArray(set) {
|
||
var index = -1,
|
||
result = Array(set.size);
|
||
|
||
set.forEach(function(value) {
|
||
result[++index] = value;
|
||
});
|
||
return result;
|
||
}
|
||
|
||
var _setToArray = setToArray;
|
||
|
||
/**
|
||
* Converts an ASCII `string` to an array.
|
||
*
|
||
* @private
|
||
* @param {string} string The string to convert.
|
||
* @returns {Array} Returns the converted array.
|
||
*/
|
||
function asciiToArray(string) {
|
||
return string.split('');
|
||
}
|
||
|
||
var _asciiToArray = asciiToArray;
|
||
|
||
/** Used to compose unicode character classes. */
|
||
var rsAstralRange = '\\ud800-\\udfff',
|
||
rsComboMarksRange = '\\u0300-\\u036f',
|
||
reComboHalfMarksRange = '\\ufe20-\\ufe2f',
|
||
rsComboSymbolsRange = '\\u20d0-\\u20ff',
|
||
rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
|
||
rsVarRange = '\\ufe0e\\ufe0f';
|
||
|
||
/** Used to compose unicode capture groups. */
|
||
var rsZWJ = '\\u200d';
|
||
|
||
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
|
||
var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
|
||
|
||
/**
|
||
* Checks if `string` contains Unicode symbols.
|
||
*
|
||
* @private
|
||
* @param {string} string The string to inspect.
|
||
* @returns {boolean} Returns `true` if a symbol is found, else `false`.
|
||
*/
|
||
function hasUnicode(string) {
|
||
return reHasUnicode.test(string);
|
||
}
|
||
|
||
var _hasUnicode = hasUnicode;
|
||
|
||
/** Used to compose unicode character classes. */
|
||
var rsAstralRange$1 = '\\ud800-\\udfff',
|
||
rsComboMarksRange$1 = '\\u0300-\\u036f',
|
||
reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f',
|
||
rsComboSymbolsRange$1 = '\\u20d0-\\u20ff',
|
||
rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,
|
||
rsVarRange$1 = '\\ufe0e\\ufe0f';
|
||
|
||
/** Used to compose unicode capture groups. */
|
||
var rsAstral = '[' + rsAstralRange$1 + ']',
|
||
rsCombo = '[' + rsComboRange$1 + ']',
|
||
rsFitz = '\\ud83c[\\udffb-\\udfff]',
|
||
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
|
||
rsNonAstral = '[^' + rsAstralRange$1 + ']',
|
||
rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
|
||
rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
|
||
rsZWJ$1 = '\\u200d';
|
||
|
||
/** Used to compose unicode regexes. */
|
||
var reOptMod = rsModifier + '?',
|
||
rsOptVar = '[' + rsVarRange$1 + ']?',
|
||
rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
|
||
rsSeq = rsOptVar + reOptMod + rsOptJoin,
|
||
rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
|
||
|
||
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
|
||
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
|
||
|
||
/**
|
||
* Converts a Unicode `string` to an array.
|
||
*
|
||
* @private
|
||
* @param {string} string The string to convert.
|
||
* @returns {Array} Returns the converted array.
|
||
*/
|
||
function unicodeToArray(string) {
|
||
return string.match(reUnicode) || [];
|
||
}
|
||
|
||
var _unicodeToArray = unicodeToArray;
|
||
|
||
/**
|
||
* Converts `string` to an array.
|
||
*
|
||
* @private
|
||
* @param {string} string The string to convert.
|
||
* @returns {Array} Returns the converted array.
|
||
*/
|
||
function stringToArray(string) {
|
||
return _hasUnicode(string)
|
||
? _unicodeToArray(string)
|
||
: _asciiToArray(string);
|
||
}
|
||
|
||
var _stringToArray = stringToArray;
|
||
|
||
/**
|
||
* A specialized version of `_.map` for arrays without support for iteratee
|
||
* shorthands.
|
||
*
|
||
* @private
|
||
* @param {Array} [array] The array to iterate over.
|
||
* @param {Function} iteratee The function invoked per iteration.
|
||
* @returns {Array} Returns the new mapped array.
|
||
*/
|
||
function arrayMap(array, iteratee) {
|
||
var index = -1,
|
||
length = array == null ? 0 : array.length,
|
||
result = Array(length);
|
||
|
||
while (++index < length) {
|
||
result[index] = iteratee(array[index], index, array);
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var _arrayMap = arrayMap;
|
||
|
||
/**
|
||
* The base implementation of `_.values` and `_.valuesIn` which creates an
|
||
* array of `object` property values corresponding to the property names
|
||
* of `props`.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @param {Array} props The property names to get values for.
|
||
* @returns {Object} Returns the array of property values.
|
||
*/
|
||
function baseValues(object, props) {
|
||
return _arrayMap(props, function(key) {
|
||
return object[key];
|
||
});
|
||
}
|
||
|
||
var _baseValues = baseValues;
|
||
|
||
/**
|
||
* The base implementation of `_.times` without support for iteratee shorthands
|
||
* or max array length checks.
|
||
*
|
||
* @private
|
||
* @param {number} n The number of times to invoke `iteratee`.
|
||
* @param {Function} iteratee The function invoked per iteration.
|
||
* @returns {Array} Returns the array of results.
|
||
*/
|
||
function baseTimes(n, iteratee) {
|
||
var index = -1,
|
||
result = Array(n);
|
||
|
||
while (++index < n) {
|
||
result[index] = iteratee(index);
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var _baseTimes = baseTimes;
|
||
|
||
/** `Object#toString` result references. */
|
||
var argsTag = '[object Arguments]';
|
||
|
||
/**
|
||
* The base implementation of `_.isArguments`.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
|
||
*/
|
||
function baseIsArguments(value) {
|
||
return isObjectLike_1(value) && _baseGetTag(value) == argsTag;
|
||
}
|
||
|
||
var _baseIsArguments = baseIsArguments;
|
||
|
||
/** Used for built-in method references. */
|
||
var objectProto$3 = Object.prototype;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty$2 = objectProto$3.hasOwnProperty;
|
||
|
||
/** Built-in value references. */
|
||
var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
|
||
|
||
/**
|
||
* Checks if `value` is likely an `arguments` object.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 0.1.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
|
||
* else `false`.
|
||
* @example
|
||
*
|
||
* _.isArguments(function() { return arguments; }());
|
||
* // => true
|
||
*
|
||
* _.isArguments([1, 2, 3]);
|
||
* // => false
|
||
*/
|
||
var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
|
||
return isObjectLike_1(value) && hasOwnProperty$2.call(value, 'callee') &&
|
||
!propertyIsEnumerable.call(value, 'callee');
|
||
};
|
||
|
||
var isArguments_1 = isArguments;
|
||
|
||
/**
|
||
* This method returns `false`.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.13.0
|
||
* @category Util
|
||
* @returns {boolean} Returns `false`.
|
||
* @example
|
||
*
|
||
* _.times(2, _.stubFalse);
|
||
* // => [false, false]
|
||
*/
|
||
function stubFalse() {
|
||
return false;
|
||
}
|
||
|
||
var stubFalse_1 = stubFalse;
|
||
|
||
var isBuffer_1 = createCommonjsModule(function (module, exports) {
|
||
/** Detect free variable `exports`. */
|
||
var freeExports = exports && !exports.nodeType && exports;
|
||
|
||
/** Detect free variable `module`. */
|
||
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
|
||
|
||
/** Detect the popular CommonJS extension `module.exports`. */
|
||
var moduleExports = freeModule && freeModule.exports === freeExports;
|
||
|
||
/** Built-in value references. */
|
||
var Buffer = moduleExports ? _root.Buffer : undefined;
|
||
|
||
/* Built-in method references for those with the same name as other `lodash` methods. */
|
||
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
|
||
|
||
/**
|
||
* Checks if `value` is a buffer.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 4.3.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
|
||
* @example
|
||
*
|
||
* _.isBuffer(new Buffer(2));
|
||
* // => true
|
||
*
|
||
* _.isBuffer(new Uint8Array(2));
|
||
* // => false
|
||
*/
|
||
var isBuffer = nativeIsBuffer || stubFalse_1;
|
||
|
||
module.exports = isBuffer;
|
||
});
|
||
|
||
/** Used as references for various `Number` constants. */
|
||
var MAX_SAFE_INTEGER$1 = 9007199254740991;
|
||
|
||
/** Used to detect unsigned integer values. */
|
||
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
||
|
||
/**
|
||
* Checks if `value` is a valid array-like index.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
|
||
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
|
||
*/
|
||
function isIndex(value, length) {
|
||
var type = typeof value;
|
||
length = length == null ? MAX_SAFE_INTEGER$1 : length;
|
||
|
||
return !!length &&
|
||
(type == 'number' ||
|
||
(type != 'symbol' && reIsUint.test(value))) &&
|
||
(value > -1 && value % 1 == 0 && value < length);
|
||
}
|
||
|
||
var _isIndex = isIndex;
|
||
|
||
/** `Object#toString` result references. */
|
||
var argsTag$1 = '[object Arguments]',
|
||
arrayTag = '[object Array]',
|
||
boolTag = '[object Boolean]',
|
||
dateTag = '[object Date]',
|
||
errorTag = '[object Error]',
|
||
funcTag$1 = '[object Function]',
|
||
mapTag$1 = '[object Map]',
|
||
numberTag = '[object Number]',
|
||
objectTag$1 = '[object Object]',
|
||
regexpTag = '[object RegExp]',
|
||
setTag$1 = '[object Set]',
|
||
stringTag$1 = '[object String]',
|
||
weakMapTag$1 = '[object WeakMap]';
|
||
|
||
var arrayBufferTag = '[object ArrayBuffer]',
|
||
dataViewTag$1 = '[object DataView]',
|
||
float32Tag = '[object Float32Array]',
|
||
float64Tag = '[object Float64Array]',
|
||
int8Tag = '[object Int8Array]',
|
||
int16Tag = '[object Int16Array]',
|
||
int32Tag = '[object Int32Array]',
|
||
uint8Tag = '[object Uint8Array]',
|
||
uint8ClampedTag = '[object Uint8ClampedArray]',
|
||
uint16Tag = '[object Uint16Array]',
|
||
uint32Tag = '[object Uint32Array]';
|
||
|
||
/** Used to identify `toStringTag` values of typed arrays. */
|
||
var typedArrayTags = {};
|
||
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
|
||
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
|
||
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
|
||
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
|
||
typedArrayTags[uint32Tag] = true;
|
||
typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =
|
||
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
|
||
typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag] =
|
||
typedArrayTags[errorTag] = typedArrayTags[funcTag$1] =
|
||
typedArrayTags[mapTag$1] = typedArrayTags[numberTag] =
|
||
typedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =
|
||
typedArrayTags[setTag$1] = typedArrayTags[stringTag$1] =
|
||
typedArrayTags[weakMapTag$1] = false;
|
||
|
||
/**
|
||
* The base implementation of `_.isTypedArray` without Node.js optimizations.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
||
*/
|
||
function baseIsTypedArray(value) {
|
||
return isObjectLike_1(value) &&
|
||
isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];
|
||
}
|
||
|
||
var _baseIsTypedArray = baseIsTypedArray;
|
||
|
||
/**
|
||
* The base implementation of `_.unary` without support for storing metadata.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to cap arguments for.
|
||
* @returns {Function} Returns the new capped function.
|
||
*/
|
||
function baseUnary(func) {
|
||
return function(value) {
|
||
return func(value);
|
||
};
|
||
}
|
||
|
||
var _baseUnary = baseUnary;
|
||
|
||
var _nodeUtil = createCommonjsModule(function (module, exports) {
|
||
/** Detect free variable `exports`. */
|
||
var freeExports = exports && !exports.nodeType && exports;
|
||
|
||
/** Detect free variable `module`. */
|
||
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
|
||
|
||
/** Detect the popular CommonJS extension `module.exports`. */
|
||
var moduleExports = freeModule && freeModule.exports === freeExports;
|
||
|
||
/** Detect free variable `process` from Node.js. */
|
||
var freeProcess = moduleExports && _freeGlobal.process;
|
||
|
||
/** Used to access faster Node.js helpers. */
|
||
var nodeUtil = (function() {
|
||
try {
|
||
// Use `util.types` for Node.js 10+.
|
||
var types = freeModule && freeModule.require && freeModule.require('util').types;
|
||
|
||
if (types) {
|
||
return types;
|
||
}
|
||
|
||
// Legacy `process.binding('util')` for Node.js < 10.
|
||
return freeProcess && freeProcess.binding && freeProcess.binding('util');
|
||
} catch (e) {}
|
||
}());
|
||
|
||
module.exports = nodeUtil;
|
||
});
|
||
|
||
/* Node.js helper references. */
|
||
var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;
|
||
|
||
/**
|
||
* Checks if `value` is classified as a typed array.
|
||
*
|
||
* @static
|
||
* @memberOf _
|
||
* @since 3.0.0
|
||
* @category Lang
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
||
* @example
|
||
*
|
||
* _.isTypedArray(new Uint8Array);
|
||
* // => true
|
||
*
|
||
* _.isTypedArray([]);
|
||
* // => false
|
||
*/
|
||
var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;
|
||
|
||
var isTypedArray_1 = isTypedArray;
|
||
|
||
/** Used for built-in method references. */
|
||
var objectProto$4 = Object.prototype;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
|
||
|
||
/**
|
||
* Creates an array of the enumerable property names of the array-like `value`.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to query.
|
||
* @param {boolean} inherited Specify returning inherited property names.
|
||
* @returns {Array} Returns the array of property names.
|
||
*/
|
||
function arrayLikeKeys(value, inherited) {
|
||
var isArr = isArray_1(value),
|
||
isArg = !isArr && isArguments_1(value),
|
||
isBuff = !isArr && !isArg && isBuffer_1(value),
|
||
isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),
|
||
skipIndexes = isArr || isArg || isBuff || isType,
|
||
result = skipIndexes ? _baseTimes(value.length, String) : [],
|
||
length = result.length;
|
||
|
||
for (var key in value) {
|
||
if ((inherited || hasOwnProperty$3.call(value, key)) &&
|
||
!(skipIndexes && (
|
||
// Safari 9 has enumerable `arguments.length` in strict mode.
|
||
key == 'length' ||
|
||
// Node.js 0.10 has enumerable non-index properties on buffers.
|
||
(isBuff && (key == 'offset' || key == 'parent')) ||
|
||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
|
||
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
|
||
// Skip index properties.
|
||
_isIndex(key, length)
|
||
))) {
|
||
result.push(key);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var _arrayLikeKeys = arrayLikeKeys;
|
||
|
||
/** Used for built-in method references. */
|
||
var objectProto$5 = Object.prototype;
|
||
|
||
/**
|
||
* Checks if `value` is likely a prototype object.
|
||
*
|
||
* @private
|
||
* @param {*} value The value to check.
|
||
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
|
||
*/
|
||
function isPrototype(value) {
|
||
var Ctor = value && value.constructor,
|
||
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5;
|
||
|
||
return value === proto;
|
||
}
|
||
|
||
var _isPrototype = isPrototype;
|
||
|
||
/**
|
||
* Creates a unary function that invokes `func` with its argument transformed.
|
||
*
|
||
* @private
|
||
* @param {Function} func The function to wrap.
|
||
* @param {Function} transform The argument transform.
|
||
* @returns {Function} Returns the new function.
|
||
*/
|
||
function overArg(func, transform) {
|
||
return function(arg) {
|
||
return func(transform(arg));
|
||
};
|
||
}
|
||
|
||
var _overArg = overArg;
|
||
|
||
/* Built-in method references for those with the same name as other `lodash` methods. */
|
||
var nativeKeys = _overArg(Object.keys, Object);
|
||
|
||
var _nativeKeys = nativeKeys;
|
||
|
||
/** Used for built-in method references. */
|
||
var objectProto$6 = Object.prototype;
|
||
|
||
/** Used to check objects for own properties. */
|
||
var hasOwnProperty$4 = objectProto$6.hasOwnProperty;
|
||
|
||
/**
|
||
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
|
||
*
|
||
* @private
|
||
* @param {Object} object The object to query.
|
||
* @returns {Array} Returns the array of property names.
|
||
*/
|
||
function baseKeys(object) {
|
||
if (!_isPrototype(object)) {
|
||
return _nativeKeys(object);
|
||
}
|
||
var result = [];
|
||
for (var key in Object(object)) {
|
||
if (hasOwnProperty$4.call(object, key) && key != 'constructor') {
|
||
result.push(key);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var _baseKeys = baseKeys;
|
||
|
||
/**
|
||
* Creates an array of the own enumerable property names of `object`.
|
||
*
|
||
* **Note:** Non-object values are coerced to objects. See the
|
||
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
|
||
* for more details.
|
||
*
|
||
* @static
|
||
* @since 0.1.0
|
||
* @memberOf _
|
||
* @category Object
|
||
* @param {Object} object The object to query.
|
||
* @returns {Array} Returns the array of property names.
|
||
* @example
|
||
*
|
||
* function Foo() {
|
||
* this.a = 1;
|
||
* this.b = 2;
|
||
* }
|
||
*
|
||
* Foo.prototype.c = 3;
|
||
*
|
||
* _.keys(new Foo);
|
||
* // => ['a', 'b'] (iteration order is not guaranteed)
|
||
*
|
||
* _.keys('hi');
|
||
* // => ['0', '1']
|
||
*/
|
||
function keys(object) {
|
||
return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object);
|
||
}
|
||
|
||
var keys_1 = keys;
|
||
|
||
/**
|
||
* Creates an array of the own enumerable string keyed property values of `object`.
|
||
*
|
||
* **Note:** Non-object values are coerced to objects.
|
||
*
|
||
* @static
|
||
* @since 0.1.0
|
||
* @memberOf _
|
||
* @category Object
|
||
* @param {Object} object The object to query.
|
||
* @returns {Array} Returns the array of property values.
|
||
* @example
|
||
*
|
||
* function Foo() {
|
||
* this.a = 1;
|
||
* this.b = 2;
|
||
* }
|
||
*
|
||
* Foo.prototype.c = 3;
|
||
*
|
||
* _.values(new Foo);
|
||
* // => [1, 2] (iteration order is not guaranteed)
|
||
*
|
||
* _.values('hi');
|
||
* // => ['h', 'i']
|
||
*/
|
||
function values(object) {
|
||
return object == null ? [] : _baseValues(object, keys_1(object));
|
||
}
|
||
|
||
var values_1 = values;
|
||
|
||
/** `Object#toString` result references. */
|
||
var mapTag$2 = '[object Map]',
|
||
setTag$2 = '[object Set]';
|
||
|
||
/** Built-in value references. */
|
||
var symIterator = _Symbol ? _Symbol.iterator : undefined;
|
||
|
||
/**
|
||
* Converts `value` to an array.
|
||
*
|
||
* @static
|
||
* @since 0.1.0
|
||
* @memberOf _
|
||
* @category Lang
|
||
* @param {*} value The value to convert.
|
||
* @returns {Array} Returns the converted array.
|
||
* @example
|
||
*
|
||
* _.toArray({ 'a': 1, 'b': 2 });
|
||
* // => [1, 2]
|
||
*
|
||
* _.toArray('abc');
|
||
* // => ['a', 'b', 'c']
|
||
*
|
||
* _.toArray(1);
|
||
* // => []
|
||
*
|
||
* _.toArray(null);
|
||
* // => []
|
||
*/
|
||
function toArray(value) {
|
||
if (!value) {
|
||
return [];
|
||
}
|
||
if (isArrayLike_1(value)) {
|
||
return isString_1(value) ? _stringToArray(value) : _copyArray(value);
|
||
}
|
||
if (symIterator && value[symIterator]) {
|
||
return _iteratorToArray(value[symIterator]());
|
||
}
|
||
var tag = _getTag(value),
|
||
func = tag == mapTag$2 ? _mapToArray : (tag == setTag$2 ? _setToArray : values_1);
|
||
|
||
return func(value);
|
||
}
|
||
|
||
var toArray_1 = toArray;
|
||
|
||
var umbrella_with_rain_drops = "☔";
|
||
var coffee = "☕";
|
||
var aries = "♈";
|
||
var taurus = "♉";
|
||
var sagittarius = "♐";
|
||
var capricorn = "♑";
|
||
var aquarius = "♒";
|
||
var pisces = "♓";
|
||
var anchor = "⚓";
|
||
var white_check_mark = "✅";
|
||
var sparkles = "✨";
|
||
var question = "❓";
|
||
var grey_question = "❔";
|
||
var grey_exclamation = "❕";
|
||
var exclamation = "❗";
|
||
var heavy_exclamation_mark = "❗";
|
||
var heavy_plus_sign = "➕";
|
||
var heavy_minus_sign = "➖";
|
||
var heavy_division_sign = "➗";
|
||
var hash = "#️⃣";
|
||
var keycap_star = "*️⃣";
|
||
var zero = "0️⃣";
|
||
var one = "1️⃣";
|
||
var two = "2️⃣";
|
||
var three = "3️⃣";
|
||
var four = "4️⃣";
|
||
var five = "5️⃣";
|
||
var six = "6️⃣";
|
||
var seven = "7️⃣";
|
||
var eight = "8️⃣";
|
||
var nine = "9️⃣";
|
||
var copyright = "©️";
|
||
var registered = "®️";
|
||
var mahjong = "🀄";
|
||
var black_joker = "🃏";
|
||
var a = "🅰️";
|
||
var b = "🅱️";
|
||
var o2 = "🅾️";
|
||
var parking = "🅿️";
|
||
var ab = "🆎";
|
||
var cl = "🆑";
|
||
var cool = "🆒";
|
||
var free = "🆓";
|
||
var id = "🆔";
|
||
var ng = "🆖";
|
||
var ok = "🆗";
|
||
var sos = "🆘";
|
||
var up = "🆙";
|
||
var vs = "🆚";
|
||
var cn = "🇨🇳";
|
||
var de = "🇩🇪";
|
||
var es = "🇪🇸";
|
||
var fr = "🇫🇷";
|
||
var gb = "🇬🇧";
|
||
var uk = "🇬🇧";
|
||
var it = "🇮🇹";
|
||
var jp = "🇯🇵";
|
||
var kr = "🇰🇷";
|
||
var ru = "🇷🇺";
|
||
var us = "🇺🇸";
|
||
var koko = "🈁";
|
||
var sa = "🈂️";
|
||
var u7121 = "🈚";
|
||
var u6307 = "🈯";
|
||
var u7981 = "🈲";
|
||
var u7a7a = "🈳";
|
||
var u5408 = "🈴";
|
||
var u6e80 = "🈵";
|
||
var u6709 = "🈶";
|
||
var u6708 = "🈷️";
|
||
var u7533 = "🈸";
|
||
var u5272 = "🈹";
|
||
var u55b6 = "🈺";
|
||
var ideograph_advantage = "🉐";
|
||
var accept = "🉑";
|
||
var cyclone = "🌀";
|
||
var foggy = "🌁";
|
||
var closed_umbrella = "🌂";
|
||
var night_with_stars = "🌃";
|
||
var sunrise_over_mountains = "🌄";
|
||
var sunrise = "🌅";
|
||
var city_sunset = "🌆";
|
||
var city_sunrise = "🌇";
|
||
var rainbow = "🌈";
|
||
var bridge_at_night = "🌉";
|
||
var ocean = "🌊";
|
||
var volcano = "🌋";
|
||
var milky_way = "🌌";
|
||
var earth_africa = "🌍";
|
||
var earth_americas = "🌎";
|
||
var earth_asia = "🌏";
|
||
var globe_with_meridians = "🌐";
|
||
var new_moon = "🌑";
|
||
var waxing_crescent_moon = "🌒";
|
||
var first_quarter_moon = "🌓";
|
||
var moon = "🌔";
|
||
var waxing_gibbous_moon = "🌔";
|
||
var full_moon = "🌕";
|
||
var waning_gibbous_moon = "🌖";
|
||
var last_quarter_moon = "🌗";
|
||
var waning_crescent_moon = "🌘";
|
||
var crescent_moon = "🌙";
|
||
var new_moon_with_face = "🌚";
|
||
var first_quarter_moon_with_face = "🌛";
|
||
var last_quarter_moon_with_face = "🌜";
|
||
var full_moon_with_face = "🌝";
|
||
var sun_with_face = "🌞";
|
||
var star2 = "🌟";
|
||
var stars = "🌠";
|
||
var thermometer = "🌡️";
|
||
var mostly_sunny = "🌤️";
|
||
var sun_small_cloud = "🌤️";
|
||
var barely_sunny = "🌥️";
|
||
var sun_behind_cloud = "🌥️";
|
||
var partly_sunny_rain = "🌦️";
|
||
var sun_behind_rain_cloud = "🌦️";
|
||
var rain_cloud = "🌧️";
|
||
var snow_cloud = "🌨️";
|
||
var lightning = "🌩️";
|
||
var lightning_cloud = "🌩️";
|
||
var tornado = "🌪️";
|
||
var tornado_cloud = "🌪️";
|
||
var fog = "🌫️";
|
||
var wind_blowing_face = "🌬️";
|
||
var hotdog = "🌭";
|
||
var taco = "🌮";
|
||
var burrito = "🌯";
|
||
var chestnut = "🌰";
|
||
var seedling = "🌱";
|
||
var evergreen_tree = "🌲";
|
||
var deciduous_tree = "🌳";
|
||
var palm_tree = "🌴";
|
||
var cactus = "🌵";
|
||
var hot_pepper = "🌶️";
|
||
var tulip = "🌷";
|
||
var cherry_blossom = "🌸";
|
||
var rose = "🌹";
|
||
var hibiscus = "🌺";
|
||
var sunflower = "🌻";
|
||
var blossom = "🌼";
|
||
var corn = "🌽";
|
||
var ear_of_rice = "🌾";
|
||
var herb = "🌿";
|
||
var four_leaf_clover = "🍀";
|
||
var maple_leaf = "🍁";
|
||
var fallen_leaf = "🍂";
|
||
var leaves = "🍃";
|
||
var mushroom = "🍄";
|
||
var tomato = "🍅";
|
||
var eggplant = "🍆";
|
||
var grapes = "🍇";
|
||
var melon = "🍈";
|
||
var watermelon = "🍉";
|
||
var tangerine = "🍊";
|
||
var lemon = "🍋";
|
||
var banana = "🍌";
|
||
var pineapple = "🍍";
|
||
var apple = "🍎";
|
||
var green_apple = "🍏";
|
||
var pear = "🍐";
|
||
var peach = "🍑";
|
||
var cherries = "🍒";
|
||
var strawberry = "🍓";
|
||
var hamburger = "🍔";
|
||
var pizza = "🍕";
|
||
var meat_on_bone = "🍖";
|
||
var poultry_leg = "🍗";
|
||
var rice_cracker = "🍘";
|
||
var rice_ball = "🍙";
|
||
var rice = "🍚";
|
||
var curry = "🍛";
|
||
var ramen = "🍜";
|
||
var spaghetti = "🍝";
|
||
var bread = "🍞";
|
||
var fries = "🍟";
|
||
var sweet_potato = "🍠";
|
||
var dango = "🍡";
|
||
var oden = "🍢";
|
||
var sushi = "🍣";
|
||
var fried_shrimp = "🍤";
|
||
var fish_cake = "🍥";
|
||
var icecream = "🍦";
|
||
var shaved_ice = "🍧";
|
||
var ice_cream = "🍨";
|
||
var doughnut = "🍩";
|
||
var cookie = "🍪";
|
||
var chocolate_bar = "🍫";
|
||
var candy = "🍬";
|
||
var lollipop = "🍭";
|
||
var custard = "🍮";
|
||
var honey_pot = "🍯";
|
||
var cake = "🍰";
|
||
var bento = "🍱";
|
||
var stew = "🍲";
|
||
var fried_egg = "🍳";
|
||
var cooking = "🍳";
|
||
var fork_and_knife = "🍴";
|
||
var tea = "🍵";
|
||
var sake = "🍶";
|
||
var wine_glass = "🍷";
|
||
var cocktail = "🍸";
|
||
var tropical_drink = "🍹";
|
||
var beer = "🍺";
|
||
var beers = "🍻";
|
||
var baby_bottle = "🍼";
|
||
var knife_fork_plate = "🍽️";
|
||
var champagne = "🍾";
|
||
var popcorn = "🍿";
|
||
var ribbon = "🎀";
|
||
var gift = "🎁";
|
||
var birthday = "🎂";
|
||
var jack_o_lantern = "🎃";
|
||
var christmas_tree = "🎄";
|
||
var santa = "🎅";
|
||
var fireworks = "🎆";
|
||
var sparkler = "🎇";
|
||
var balloon = "🎈";
|
||
var tada = "🎉";
|
||
var confetti_ball = "🎊";
|
||
var tanabata_tree = "🎋";
|
||
var crossed_flags = "🎌";
|
||
var bamboo = "🎍";
|
||
var dolls = "🎎";
|
||
var flags = "🎏";
|
||
var wind_chime = "🎐";
|
||
var rice_scene = "🎑";
|
||
var school_satchel = "🎒";
|
||
var mortar_board = "🎓";
|
||
var medal = "🎖️";
|
||
var reminder_ribbon = "🎗️";
|
||
var studio_microphone = "🎙️";
|
||
var level_slider = "🎚️";
|
||
var control_knobs = "🎛️";
|
||
var film_frames = "🎞️";
|
||
var admission_tickets = "🎟️";
|
||
var carousel_horse = "🎠";
|
||
var ferris_wheel = "🎡";
|
||
var roller_coaster = "🎢";
|
||
var fishing_pole_and_fish = "🎣";
|
||
var microphone = "🎤";
|
||
var movie_camera = "🎥";
|
||
var cinema = "🎦";
|
||
var headphones = "🎧";
|
||
var art = "🎨";
|
||
var tophat = "🎩";
|
||
var circus_tent = "🎪";
|
||
var ticket = "🎫";
|
||
var clapper = "🎬";
|
||
var performing_arts = "🎭";
|
||
var video_game = "🎮";
|
||
var dart = "🎯";
|
||
var slot_machine = "🎰";
|
||
var game_die = "🎲";
|
||
var bowling = "🎳";
|
||
var flower_playing_cards = "🎴";
|
||
var musical_note = "🎵";
|
||
var notes = "🎶";
|
||
var saxophone = "🎷";
|
||
var guitar = "🎸";
|
||
var musical_keyboard = "🎹";
|
||
var trumpet = "🎺";
|
||
var violin = "🎻";
|
||
var musical_score = "🎼";
|
||
var running_shirt_with_sash = "🎽";
|
||
var tennis = "🎾";
|
||
var ski = "🎿";
|
||
var basketball = "🏀";
|
||
var checkered_flag = "🏁";
|
||
var snowboarder = "🏂";
|
||
var runner = "🏃♂️";
|
||
var running = "🏃♂️";
|
||
var surfer = "🏄♂️";
|
||
var sports_medal = "🏅";
|
||
var trophy = "🏆";
|
||
var horse_racing = "🏇";
|
||
var football = "🏈";
|
||
var rugby_football = "🏉";
|
||
var swimmer = "🏊♂️";
|
||
var weight_lifter = "🏋️♂️";
|
||
var golfer = "🏌️♂️";
|
||
var racing_motorcycle = "🏍️";
|
||
var racing_car = "🏎️";
|
||
var cricket_bat_and_ball = "🏏";
|
||
var volleyball = "🏐";
|
||
var field_hockey_stick_and_ball = "🏑";
|
||
var ice_hockey_stick_and_puck = "🏒";
|
||
var table_tennis_paddle_and_ball = "🏓";
|
||
var snow_capped_mountain = "🏔️";
|
||
var camping = "🏕️";
|
||
var beach_with_umbrella = "🏖️";
|
||
var building_construction = "🏗️";
|
||
var house_buildings = "🏘️";
|
||
var cityscape = "🏙️";
|
||
var derelict_house_building = "🏚️";
|
||
var classical_building = "🏛️";
|
||
var desert = "🏜️";
|
||
var desert_island = "🏝️";
|
||
var national_park = "🏞️";
|
||
var stadium = "🏟️";
|
||
var house = "🏠";
|
||
var house_with_garden = "🏡";
|
||
var office = "🏢";
|
||
var post_office = "🏣";
|
||
var european_post_office = "🏤";
|
||
var hospital = "🏥";
|
||
var bank = "🏦";
|
||
var atm = "🏧";
|
||
var hotel = "🏨";
|
||
var love_hotel = "🏩";
|
||
var convenience_store = "🏪";
|
||
var school = "🏫";
|
||
var department_store = "🏬";
|
||
var factory = "🏭";
|
||
var izakaya_lantern = "🏮";
|
||
var lantern = "🏮";
|
||
var japanese_castle = "🏯";
|
||
var european_castle = "🏰";
|
||
var transgender_flag = "🏳️⚧️";
|
||
var waving_white_flag = "🏳️";
|
||
var pirate_flag = "🏴☠️";
|
||
var waving_black_flag = "🏴";
|
||
var rosette = "🏵️";
|
||
var label = "🏷️";
|
||
var badminton_racquet_and_shuttlecock = "🏸";
|
||
var bow_and_arrow = "🏹";
|
||
var amphora = "🏺";
|
||
var rat = "🐀";
|
||
var mouse2 = "🐁";
|
||
var ox = "🐂";
|
||
var water_buffalo = "🐃";
|
||
var cow2 = "🐄";
|
||
var tiger2 = "🐅";
|
||
var leopard = "🐆";
|
||
var rabbit2 = "🐇";
|
||
var black_cat = "🐈⬛";
|
||
var cat2 = "🐈";
|
||
var dragon = "🐉";
|
||
var crocodile = "🐊";
|
||
var whale2 = "🐋";
|
||
var snail = "🐌";
|
||
var snake = "🐍";
|
||
var racehorse = "🐎";
|
||
var ram = "🐏";
|
||
var goat = "🐐";
|
||
var sheep = "🐑";
|
||
var monkey = "🐒";
|
||
var rooster = "🐓";
|
||
var chicken = "🐔";
|
||
var service_dog = "🐕🦺";
|
||
var dog2 = "🐕";
|
||
var pig2 = "🐖";
|
||
var boar = "🐗";
|
||
var elephant = "🐘";
|
||
var octopus = "🐙";
|
||
var shell = "🐚";
|
||
var bug = "🐛";
|
||
var ant = "🐜";
|
||
var bee = "🐝";
|
||
var honeybee = "🐝";
|
||
var ladybug = "🐞";
|
||
var lady_beetle = "🐞";
|
||
var fish = "🐟";
|
||
var tropical_fish = "🐠";
|
||
var blowfish = "🐡";
|
||
var turtle = "🐢";
|
||
var hatching_chick = "🐣";
|
||
var baby_chick = "🐤";
|
||
var hatched_chick = "🐥";
|
||
var bird = "🐦";
|
||
var penguin = "🐧";
|
||
var koala = "🐨";
|
||
var poodle = "🐩";
|
||
var dromedary_camel = "🐪";
|
||
var camel = "🐫";
|
||
var dolphin = "🐬";
|
||
var flipper = "🐬";
|
||
var mouse = "🐭";
|
||
var cow = "🐮";
|
||
var tiger = "🐯";
|
||
var rabbit = "🐰";
|
||
var cat = "🐱";
|
||
var dragon_face = "🐲";
|
||
var whale = "🐳";
|
||
var horse = "🐴";
|
||
var monkey_face = "🐵";
|
||
var dog = "🐶";
|
||
var pig = "🐷";
|
||
var frog = "🐸";
|
||
var hamster = "🐹";
|
||
var wolf = "🐺";
|
||
var polar_bear = "🐻❄️";
|
||
var bear = "🐻";
|
||
var panda_face = "🐼";
|
||
var pig_nose = "🐽";
|
||
var feet = "🐾";
|
||
var paw_prints = "🐾";
|
||
var chipmunk = "🐿️";
|
||
var eyes = "👀";
|
||
var eye = "👁️";
|
||
var ear = "👂";
|
||
var nose = "👃";
|
||
var lips = "👄";
|
||
var tongue = "👅";
|
||
var point_up_2 = "👆";
|
||
var point_down = "👇";
|
||
var point_left = "👈";
|
||
var point_right = "👉";
|
||
var facepunch = "👊";
|
||
var punch = "👊";
|
||
var wave = "👋";
|
||
var ok_hand = "👌";
|
||
var thumbsup = "👍";
|
||
var thumbsdown = "👎";
|
||
var clap = "👏";
|
||
var open_hands = "👐";
|
||
var crown = "👑";
|
||
var womans_hat = "👒";
|
||
var eyeglasses = "👓";
|
||
var necktie = "👔";
|
||
var shirt = "👕";
|
||
var tshirt = "👕";
|
||
var jeans = "👖";
|
||
var dress = "👗";
|
||
var kimono = "👘";
|
||
var bikini = "👙";
|
||
var womans_clothes = "👚";
|
||
var purse = "👛";
|
||
var handbag = "👜";
|
||
var pouch = "👝";
|
||
var mans_shoe = "👞";
|
||
var shoe = "👞";
|
||
var athletic_shoe = "👟";
|
||
var high_heel = "👠";
|
||
var sandal = "👡";
|
||
var boot = "👢";
|
||
var footprints = "👣";
|
||
var bust_in_silhouette = "👤";
|
||
var busts_in_silhouette = "👥";
|
||
var boy = "👦";
|
||
var girl = "👧";
|
||
var man_feeding_baby = "👨🍼";
|
||
var family = "👨👩👦";
|
||
var man_with_probing_cane = "👨🦯";
|
||
var red_haired_man = "👨🦰";
|
||
var curly_haired_man = "👨🦱";
|
||
var bald_man = "👨🦲";
|
||
var white_haired_man = "👨🦳";
|
||
var man_in_motorized_wheelchair = "👨🦼";
|
||
var man_in_manual_wheelchair = "👨🦽";
|
||
var man = "👨";
|
||
var woman_feeding_baby = "👩🍼";
|
||
var woman_with_probing_cane = "👩🦯";
|
||
var red_haired_woman = "👩🦰";
|
||
var curly_haired_woman = "👩🦱";
|
||
var bald_woman = "👩🦲";
|
||
var white_haired_woman = "👩🦳";
|
||
var woman_in_motorized_wheelchair = "👩🦼";
|
||
var woman_in_manual_wheelchair = "👩🦽";
|
||
var woman = "👩";
|
||
var man_and_woman_holding_hands = "👫";
|
||
var woman_and_man_holding_hands = "👫";
|
||
var couple = "👫";
|
||
var two_men_holding_hands = "👬";
|
||
var men_holding_hands = "👬";
|
||
var two_women_holding_hands = "👭";
|
||
var women_holding_hands = "👭";
|
||
var cop = "👮♂️";
|
||
var dancers = "👯♀️";
|
||
var woman_with_veil = "👰♀️";
|
||
var man_with_veil = "👰♂️";
|
||
var bride_with_veil = "👰";
|
||
var person_with_blond_hair = "👱♂️";
|
||
var man_with_gua_pi_mao = "👲";
|
||
var man_with_turban = "👳♂️";
|
||
var older_man = "👴";
|
||
var older_woman = "👵";
|
||
var baby = "👶";
|
||
var construction_worker = "👷♂️";
|
||
var princess = "👸";
|
||
var japanese_ogre = "👹";
|
||
var japanese_goblin = "👺";
|
||
var ghost = "👻";
|
||
var angel = "👼";
|
||
var alien = "👽";
|
||
var space_invader = "👾";
|
||
var imp = "👿";
|
||
var skull = "💀";
|
||
var information_desk_person = "💁♀️";
|
||
var guardsman = "💂♂️";
|
||
var dancer = "💃";
|
||
var lipstick = "💄";
|
||
var nail_care = "💅";
|
||
var massage = "💆♀️";
|
||
var haircut = "💇♀️";
|
||
var barber = "💈";
|
||
var syringe = "💉";
|
||
var pill = "💊";
|
||
var kiss = "💋";
|
||
var love_letter = "💌";
|
||
var ring = "💍";
|
||
var gem = "💎";
|
||
var couplekiss = "💏";
|
||
var bouquet = "💐";
|
||
var couple_with_heart = "💑";
|
||
var wedding = "💒";
|
||
var heartbeat = "💓";
|
||
var broken_heart = "💔";
|
||
var two_hearts = "💕";
|
||
var sparkling_heart = "💖";
|
||
var heartpulse = "💗";
|
||
var cupid = "💘";
|
||
var blue_heart = "💙";
|
||
var green_heart = "💚";
|
||
var yellow_heart = "💛";
|
||
var purple_heart = "💜";
|
||
var gift_heart = "💝";
|
||
var revolving_hearts = "💞";
|
||
var heart_decoration = "💟";
|
||
var diamond_shape_with_a_dot_inside = "💠";
|
||
var bulb = "💡";
|
||
var anger = "💢";
|
||
var bomb = "💣";
|
||
var zzz = "💤";
|
||
var boom = "💥";
|
||
var collision = "💥";
|
||
var sweat_drops = "💦";
|
||
var droplet = "💧";
|
||
var dash = "💨";
|
||
var hankey = "💩";
|
||
var poop = "💩";
|
||
var shit = "💩";
|
||
var muscle = "💪";
|
||
var dizzy = "💫";
|
||
var speech_balloon = "💬";
|
||
var thought_balloon = "💭";
|
||
var white_flower = "💮";
|
||
var moneybag = "💰";
|
||
var currency_exchange = "💱";
|
||
var heavy_dollar_sign = "💲";
|
||
var credit_card = "💳";
|
||
var yen = "💴";
|
||
var dollar = "💵";
|
||
var euro = "💶";
|
||
var pound = "💷";
|
||
var money_with_wings = "💸";
|
||
var chart = "💹";
|
||
var seat = "💺";
|
||
var computer = "💻";
|
||
var briefcase = "💼";
|
||
var minidisc = "💽";
|
||
var floppy_disk = "💾";
|
||
var cd = "💿";
|
||
var dvd = "📀";
|
||
var file_folder = "📁";
|
||
var open_file_folder = "📂";
|
||
var page_with_curl = "📃";
|
||
var page_facing_up = "📄";
|
||
var date = "📅";
|
||
var calendar = "📆";
|
||
var card_index = "📇";
|
||
var chart_with_upwards_trend = "📈";
|
||
var chart_with_downwards_trend = "📉";
|
||
var bar_chart = "📊";
|
||
var clipboard = "📋";
|
||
var pushpin = "📌";
|
||
var round_pushpin = "📍";
|
||
var paperclip = "📎";
|
||
var straight_ruler = "📏";
|
||
var triangular_ruler = "📐";
|
||
var bookmark_tabs = "📑";
|
||
var ledger = "📒";
|
||
var notebook = "📓";
|
||
var notebook_with_decorative_cover = "📔";
|
||
var closed_book = "📕";
|
||
var book = "📖";
|
||
var open_book = "📖";
|
||
var green_book = "📗";
|
||
var blue_book = "📘";
|
||
var orange_book = "📙";
|
||
var books = "📚";
|
||
var name_badge = "📛";
|
||
var scroll = "📜";
|
||
var memo = "📝";
|
||
var pencil = "📝";
|
||
var telephone_receiver = "📞";
|
||
var pager = "📟";
|
||
var fax = "📠";
|
||
var satellite_antenna = "📡";
|
||
var loudspeaker = "📢";
|
||
var mega = "📣";
|
||
var outbox_tray = "📤";
|
||
var inbox_tray = "📥";
|
||
var incoming_envelope = "📨";
|
||
var envelope_with_arrow = "📩";
|
||
var mailbox_closed = "📪";
|
||
var mailbox = "📫";
|
||
var mailbox_with_mail = "📬";
|
||
var mailbox_with_no_mail = "📭";
|
||
var postbox = "📮";
|
||
var postal_horn = "📯";
|
||
var newspaper = "📰";
|
||
var iphone = "📱";
|
||
var calling = "📲";
|
||
var vibration_mode = "📳";
|
||
var mobile_phone_off = "📴";
|
||
var no_mobile_phones = "📵";
|
||
var signal_strength = "📶";
|
||
var camera = "📷";
|
||
var camera_with_flash = "📸";
|
||
var video_camera = "📹";
|
||
var tv = "📺";
|
||
var radio = "📻";
|
||
var vhs = "📼";
|
||
var film_projector = "📽️";
|
||
var prayer_beads = "📿";
|
||
var twisted_rightwards_arrows = "🔀";
|
||
var repeat = "🔁";
|
||
var repeat_one = "🔂";
|
||
var arrows_clockwise = "🔃";
|
||
var arrows_counterclockwise = "🔄";
|
||
var low_brightness = "🔅";
|
||
var high_brightness = "🔆";
|
||
var mute = "🔇";
|
||
var speaker = "🔈";
|
||
var sound = "🔉";
|
||
var loud_sound = "🔊";
|
||
var battery = "🔋";
|
||
var electric_plug = "🔌";
|
||
var mag = "🔍";
|
||
var mag_right = "🔎";
|
||
var lock_with_ink_pen = "🔏";
|
||
var closed_lock_with_key = "🔐";
|
||
var key = "🔑";
|
||
var lock = "🔒";
|
||
var unlock = "🔓";
|
||
var bell = "🔔";
|
||
var no_bell = "🔕";
|
||
var bookmark = "🔖";
|
||
var link = "🔗";
|
||
var radio_button = "🔘";
|
||
var back = "🔙";
|
||
var end = "🔚";
|
||
var on = "🔛";
|
||
var soon = "🔜";
|
||
var top = "🔝";
|
||
var underage = "🔞";
|
||
var keycap_ten = "🔟";
|
||
var capital_abcd = "🔠";
|
||
var abcd = "🔡";
|
||
var symbols = "🔣";
|
||
var abc = "🔤";
|
||
var fire = "🔥";
|
||
var flashlight = "🔦";
|
||
var wrench = "🔧";
|
||
var hammer = "🔨";
|
||
var nut_and_bolt = "🔩";
|
||
var hocho = "🔪";
|
||
var knife = "🔪";
|
||
var gun = "🔫";
|
||
var microscope = "🔬";
|
||
var telescope = "🔭";
|
||
var crystal_ball = "🔮";
|
||
var six_pointed_star = "🔯";
|
||
var beginner = "🔰";
|
||
var trident = "🔱";
|
||
var black_square_button = "🔲";
|
||
var white_square_button = "🔳";
|
||
var red_circle = "🔴";
|
||
var large_blue_circle = "🔵";
|
||
var large_orange_diamond = "🔶";
|
||
var large_blue_diamond = "🔷";
|
||
var small_orange_diamond = "🔸";
|
||
var small_blue_diamond = "🔹";
|
||
var small_red_triangle = "🔺";
|
||
var small_red_triangle_down = "🔻";
|
||
var arrow_up_small = "🔼";
|
||
var arrow_down_small = "🔽";
|
||
var om_symbol = "🕉️";
|
||
var dove_of_peace = "🕊️";
|
||
var kaaba = "🕋";
|
||
var mosque = "🕌";
|
||
var synagogue = "🕍";
|
||
var menorah_with_nine_branches = "🕎";
|
||
var clock1 = "🕐";
|
||
var clock2 = "🕑";
|
||
var clock3 = "🕒";
|
||
var clock4 = "🕓";
|
||
var clock5 = "🕔";
|
||
var clock6 = "🕕";
|
||
var clock7 = "🕖";
|
||
var clock8 = "🕗";
|
||
var clock9 = "🕘";
|
||
var clock10 = "🕙";
|
||
var clock11 = "🕚";
|
||
var clock12 = "🕛";
|
||
var clock130 = "🕜";
|
||
var clock230 = "🕝";
|
||
var clock330 = "🕞";
|
||
var clock430 = "🕟";
|
||
var clock530 = "🕠";
|
||
var clock630 = "🕡";
|
||
var clock730 = "🕢";
|
||
var clock830 = "🕣";
|
||
var clock930 = "🕤";
|
||
var clock1030 = "🕥";
|
||
var clock1130 = "🕦";
|
||
var clock1230 = "🕧";
|
||
var candle = "🕯️";
|
||
var mantelpiece_clock = "🕰️";
|
||
var hole = "🕳️";
|
||
var man_in_business_suit_levitating = "🕴️";
|
||
var sleuth_or_spy = "🕵️♂️";
|
||
var dark_sunglasses = "🕶️";
|
||
var spider = "🕷️";
|
||
var spider_web = "🕸️";
|
||
var joystick = "🕹️";
|
||
var man_dancing = "🕺";
|
||
var linked_paperclips = "🖇️";
|
||
var lower_left_ballpoint_pen = "🖊️";
|
||
var lower_left_fountain_pen = "🖋️";
|
||
var lower_left_paintbrush = "🖌️";
|
||
var lower_left_crayon = "🖍️";
|
||
var raised_hand_with_fingers_splayed = "🖐️";
|
||
var middle_finger = "🖕";
|
||
var reversed_hand_with_middle_finger_extended = "🖕";
|
||
var black_heart = "🖤";
|
||
var desktop_computer = "🖥️";
|
||
var printer = "🖨️";
|
||
var three_button_mouse = "🖱️";
|
||
var trackball = "🖲️";
|
||
var frame_with_picture = "🖼️";
|
||
var card_index_dividers = "🗂️";
|
||
var card_file_box = "🗃️";
|
||
var file_cabinet = "🗄️";
|
||
var wastebasket = "🗑️";
|
||
var spiral_note_pad = "🗒️";
|
||
var spiral_calendar_pad = "🗓️";
|
||
var compression = "🗜️";
|
||
var old_key = "🗝️";
|
||
var rolled_up_newspaper = "🗞️";
|
||
var dagger_knife = "🗡️";
|
||
var speaking_head_in_silhouette = "🗣️";
|
||
var left_speech_bubble = "🗨️";
|
||
var right_anger_bubble = "🗯️";
|
||
var ballot_box_with_ballot = "🗳️";
|
||
var world_map = "🗺️";
|
||
var mount_fuji = "🗻";
|
||
var tokyo_tower = "🗼";
|
||
var statue_of_liberty = "🗽";
|
||
var japan = "🗾";
|
||
var moyai = "🗿";
|
||
var grinning = "😀";
|
||
var grin = "😁";
|
||
var joy = "😂";
|
||
var smiley = "😃";
|
||
var smile = "😄";
|
||
var sweat_smile = "😅";
|
||
var laughing = "😆";
|
||
var satisfied = "😆";
|
||
var innocent = "😇";
|
||
var smiling_imp = "😈";
|
||
var wink = "😉";
|
||
var blush = "😊";
|
||
var yum = "😋";
|
||
var relieved = "😌";
|
||
var heart_eyes = "😍";
|
||
var sunglasses = "😎";
|
||
var smirk = "😏";
|
||
var neutral_face = "😐";
|
||
var expressionless = "😑";
|
||
var unamused = "😒";
|
||
var sweat = "😓";
|
||
var pensive = "😔";
|
||
var confused = "😕";
|
||
var confounded = "😖";
|
||
var kissing = "😗";
|
||
var kissing_heart = "😘";
|
||
var kissing_smiling_eyes = "😙";
|
||
var kissing_closed_eyes = "😚";
|
||
var stuck_out_tongue = "😛";
|
||
var stuck_out_tongue_winking_eye = "😜";
|
||
var stuck_out_tongue_closed_eyes = "😝";
|
||
var disappointed = "😞";
|
||
var worried = "😟";
|
||
var angry = "😠";
|
||
var rage = "😡";
|
||
var cry = "😢";
|
||
var persevere = "😣";
|
||
var triumph = "😤";
|
||
var disappointed_relieved = "😥";
|
||
var frowning = "😦";
|
||
var anguished = "😧";
|
||
var fearful = "😨";
|
||
var weary = "😩";
|
||
var sleepy = "😪";
|
||
var tired_face = "😫";
|
||
var grimacing = "😬";
|
||
var sob = "😭";
|
||
var face_exhaling = "😮💨";
|
||
var open_mouth = "😮";
|
||
var hushed = "😯";
|
||
var cold_sweat = "😰";
|
||
var scream = "😱";
|
||
var astonished = "😲";
|
||
var flushed = "😳";
|
||
var sleeping = "😴";
|
||
var face_with_spiral_eyes = "😵💫";
|
||
var dizzy_face = "😵";
|
||
var face_in_clouds = "😶🌫️";
|
||
var no_mouth = "😶";
|
||
var mask = "😷";
|
||
var smile_cat = "😸";
|
||
var joy_cat = "😹";
|
||
var smiley_cat = "😺";
|
||
var heart_eyes_cat = "😻";
|
||
var smirk_cat = "😼";
|
||
var kissing_cat = "😽";
|
||
var pouting_cat = "😾";
|
||
var crying_cat_face = "😿";
|
||
var scream_cat = "🙀";
|
||
var slightly_frowning_face = "🙁";
|
||
var slightly_smiling_face = "🙂";
|
||
var upside_down_face = "🙃";
|
||
var face_with_rolling_eyes = "🙄";
|
||
var no_good = "🙅♀️";
|
||
var ok_woman = "🙆♀️";
|
||
var bow = "🙇♂️";
|
||
var see_no_evil = "🙈";
|
||
var hear_no_evil = "🙉";
|
||
var speak_no_evil = "🙊";
|
||
var raising_hand = "🙋♀️";
|
||
var raised_hands = "🙌";
|
||
var person_frowning = "🙍♀️";
|
||
var person_with_pouting_face = "🙎♀️";
|
||
var pray = "🙏";
|
||
var rocket = "🚀";
|
||
var helicopter = "🚁";
|
||
var steam_locomotive = "🚂";
|
||
var railway_car = "🚃";
|
||
var bullettrain_side = "🚄";
|
||
var bullettrain_front = "🚅";
|
||
var train2 = "🚆";
|
||
var metro = "🚇";
|
||
var light_rail = "🚈";
|
||
var station = "🚉";
|
||
var tram = "🚊";
|
||
var train = "🚋";
|
||
var bus = "🚌";
|
||
var oncoming_bus = "🚍";
|
||
var trolleybus = "🚎";
|
||
var busstop = "🚏";
|
||
var minibus = "🚐";
|
||
var ambulance = "🚑";
|
||
var fire_engine = "🚒";
|
||
var police_car = "🚓";
|
||
var oncoming_police_car = "🚔";
|
||
var taxi = "🚕";
|
||
var oncoming_taxi = "🚖";
|
||
var car = "🚗";
|
||
var red_car = "🚗";
|
||
var oncoming_automobile = "🚘";
|
||
var blue_car = "🚙";
|
||
var truck = "🚚";
|
||
var articulated_lorry = "🚛";
|
||
var tractor = "🚜";
|
||
var monorail = "🚝";
|
||
var mountain_railway = "🚞";
|
||
var suspension_railway = "🚟";
|
||
var mountain_cableway = "🚠";
|
||
var aerial_tramway = "🚡";
|
||
var ship = "🚢";
|
||
var rowboat = "🚣♂️";
|
||
var speedboat = "🚤";
|
||
var traffic_light = "🚥";
|
||
var vertical_traffic_light = "🚦";
|
||
var construction = "🚧";
|
||
var rotating_light = "🚨";
|
||
var triangular_flag_on_post = "🚩";
|
||
var door = "🚪";
|
||
var no_entry_sign = "🚫";
|
||
var smoking = "🚬";
|
||
var no_smoking = "🚭";
|
||
var put_litter_in_its_place = "🚮";
|
||
var do_not_litter = "🚯";
|
||
var potable_water = "🚰";
|
||
var bike = "🚲";
|
||
var no_bicycles = "🚳";
|
||
var bicyclist = "🚴♂️";
|
||
var mountain_bicyclist = "🚵♂️";
|
||
var walking = "🚶♂️";
|
||
var no_pedestrians = "🚷";
|
||
var children_crossing = "🚸";
|
||
var mens = "🚹";
|
||
var womens = "🚺";
|
||
var restroom = "🚻";
|
||
var baby_symbol = "🚼";
|
||
var toilet = "🚽";
|
||
var wc = "🚾";
|
||
var shower = "🚿";
|
||
var bath = "🛀";
|
||
var bathtub = "🛁";
|
||
var passport_control = "🛂";
|
||
var customs = "🛃";
|
||
var baggage_claim = "🛄";
|
||
var left_luggage = "🛅";
|
||
var couch_and_lamp = "🛋️";
|
||
var sleeping_accommodation = "🛌";
|
||
var shopping_bags = "🛍️";
|
||
var bellhop_bell = "🛎️";
|
||
var bed = "🛏️";
|
||
var place_of_worship = "🛐";
|
||
var octagonal_sign = "🛑";
|
||
var shopping_trolley = "🛒";
|
||
var hindu_temple = "🛕";
|
||
var hut = "🛖";
|
||
var elevator = "🛗";
|
||
var hammer_and_wrench = "🛠️";
|
||
var shield = "🛡️";
|
||
var oil_drum = "🛢️";
|
||
var motorway = "🛣️";
|
||
var railway_track = "🛤️";
|
||
var motor_boat = "🛥️";
|
||
var small_airplane = "🛩️";
|
||
var airplane_departure = "🛫";
|
||
var airplane_arriving = "🛬";
|
||
var satellite = "🛰️";
|
||
var passenger_ship = "🛳️";
|
||
var scooter = "🛴";
|
||
var motor_scooter = "🛵";
|
||
var canoe = "🛶";
|
||
var sled = "🛷";
|
||
var flying_saucer = "🛸";
|
||
var skateboard = "🛹";
|
||
var auto_rickshaw = "🛺";
|
||
var pickup_truck = "🛻";
|
||
var roller_skate = "🛼";
|
||
var large_orange_circle = "🟠";
|
||
var large_yellow_circle = "🟡";
|
||
var large_green_circle = "🟢";
|
||
var large_purple_circle = "🟣";
|
||
var large_brown_circle = "🟤";
|
||
var large_red_square = "🟥";
|
||
var large_blue_square = "🟦";
|
||
var large_orange_square = "🟧";
|
||
var large_yellow_square = "🟨";
|
||
var large_green_square = "🟩";
|
||
var large_purple_square = "🟪";
|
||
var large_brown_square = "🟫";
|
||
var pinched_fingers = "🤌";
|
||
var white_heart = "🤍";
|
||
var brown_heart = "🤎";
|
||
var pinching_hand = "🤏";
|
||
var zipper_mouth_face = "🤐";
|
||
var money_mouth_face = "🤑";
|
||
var face_with_thermometer = "🤒";
|
||
var nerd_face = "🤓";
|
||
var thinking_face = "🤔";
|
||
var face_with_head_bandage = "🤕";
|
||
var robot_face = "🤖";
|
||
var hugging_face = "🤗";
|
||
var the_horns = "🤘";
|
||
var sign_of_the_horns = "🤘";
|
||
var call_me_hand = "🤙";
|
||
var raised_back_of_hand = "🤚";
|
||
var handshake = "🤝";
|
||
var crossed_fingers = "🤞";
|
||
var hand_with_index_and_middle_fingers_crossed = "🤞";
|
||
var i_love_you_hand_sign = "🤟";
|
||
var face_with_cowboy_hat = "🤠";
|
||
var clown_face = "🤡";
|
||
var nauseated_face = "🤢";
|
||
var rolling_on_the_floor_laughing = "🤣";
|
||
var drooling_face = "🤤";
|
||
var lying_face = "🤥";
|
||
var face_palm = "🤦";
|
||
var sneezing_face = "🤧";
|
||
var face_with_raised_eyebrow = "🤨";
|
||
var face_with_one_eyebrow_raised = "🤨";
|
||
var grinning_face_with_star_eyes = "🤩";
|
||
var zany_face = "🤪";
|
||
var grinning_face_with_one_large_and_one_small_eye = "🤪";
|
||
var shushing_face = "🤫";
|
||
var face_with_finger_covering_closed_lips = "🤫";
|
||
var face_with_symbols_on_mouth = "🤬";
|
||
var serious_face_with_symbols_covering_mouth = "🤬";
|
||
var face_with_hand_over_mouth = "🤭";
|
||
var smiling_face_with_smiling_eyes_and_hand_covering_mouth = "🤭";
|
||
var face_vomiting = "🤮";
|
||
var face_with_open_mouth_vomiting = "🤮";
|
||
var exploding_head = "🤯";
|
||
var shocked_face_with_exploding_head = "🤯";
|
||
var pregnant_woman = "🤰";
|
||
var palms_up_together = "🤲";
|
||
var selfie = "🤳";
|
||
var prince = "🤴";
|
||
var woman_in_tuxedo = "🤵♀️";
|
||
var man_in_tuxedo = "🤵♂️";
|
||
var person_in_tuxedo = "🤵";
|
||
var mrs_claus = "🤶";
|
||
var mother_christmas = "🤶";
|
||
var shrug = "🤷";
|
||
var person_doing_cartwheel = "🤸";
|
||
var juggling = "🤹";
|
||
var fencer = "🤺";
|
||
var wrestlers = "🤼";
|
||
var water_polo = "🤽";
|
||
var handball = "🤾";
|
||
var diving_mask = "🤿";
|
||
var wilted_flower = "🥀";
|
||
var drum_with_drumsticks = "🥁";
|
||
var clinking_glasses = "🥂";
|
||
var tumbler_glass = "🥃";
|
||
var spoon = "🥄";
|
||
var goal_net = "🥅";
|
||
var first_place_medal = "🥇";
|
||
var second_place_medal = "🥈";
|
||
var third_place_medal = "🥉";
|
||
var boxing_glove = "🥊";
|
||
var martial_arts_uniform = "🥋";
|
||
var curling_stone = "🥌";
|
||
var lacrosse = "🥍";
|
||
var softball = "🥎";
|
||
var flying_disc = "🥏";
|
||
var croissant = "🥐";
|
||
var avocado = "🥑";
|
||
var cucumber = "🥒";
|
||
var bacon = "🥓";
|
||
var potato = "🥔";
|
||
var carrot = "🥕";
|
||
var baguette_bread = "🥖";
|
||
var green_salad = "🥗";
|
||
var shallow_pan_of_food = "🥘";
|
||
var stuffed_flatbread = "🥙";
|
||
var egg = "🥚";
|
||
var glass_of_milk = "🥛";
|
||
var peanuts = "🥜";
|
||
var kiwifruit = "🥝";
|
||
var pancakes = "🥞";
|
||
var dumpling = "🥟";
|
||
var fortune_cookie = "🥠";
|
||
var takeout_box = "🥡";
|
||
var chopsticks = "🥢";
|
||
var bowl_with_spoon = "🥣";
|
||
var cup_with_straw = "🥤";
|
||
var coconut = "🥥";
|
||
var broccoli = "🥦";
|
||
var pie = "🥧";
|
||
var pretzel = "🥨";
|
||
var cut_of_meat = "🥩";
|
||
var sandwich = "🥪";
|
||
var canned_food = "🥫";
|
||
var leafy_green = "🥬";
|
||
var mango = "🥭";
|
||
var moon_cake = "🥮";
|
||
var bagel = "🥯";
|
||
var smiling_face_with_3_hearts = "🥰";
|
||
var yawning_face = "🥱";
|
||
var smiling_face_with_tear = "🥲";
|
||
var partying_face = "🥳";
|
||
var woozy_face = "🥴";
|
||
var hot_face = "🥵";
|
||
var cold_face = "🥶";
|
||
var ninja = "🥷";
|
||
var disguised_face = "🥸";
|
||
var pleading_face = "🥺";
|
||
var sari = "🥻";
|
||
var lab_coat = "🥼";
|
||
var goggles = "🥽";
|
||
var hiking_boot = "🥾";
|
||
var womans_flat_shoe = "🥿";
|
||
var crab = "🦀";
|
||
var lion_face = "🦁";
|
||
var scorpion = "🦂";
|
||
var turkey = "🦃";
|
||
var unicorn_face = "🦄";
|
||
var eagle = "🦅";
|
||
var duck = "🦆";
|
||
var bat = "🦇";
|
||
var shark = "🦈";
|
||
var owl = "🦉";
|
||
var fox_face = "🦊";
|
||
var butterfly = "🦋";
|
||
var deer = "🦌";
|
||
var gorilla = "🦍";
|
||
var lizard = "🦎";
|
||
var rhinoceros = "🦏";
|
||
var shrimp = "🦐";
|
||
var squid = "🦑";
|
||
var giraffe_face = "🦒";
|
||
var zebra_face = "🦓";
|
||
var hedgehog = "🦔";
|
||
var sauropod = "🦕";
|
||
var cricket = "🦗";
|
||
var kangaroo = "🦘";
|
||
var llama = "🦙";
|
||
var peacock = "🦚";
|
||
var hippopotamus = "🦛";
|
||
var parrot = "🦜";
|
||
var raccoon = "🦝";
|
||
var lobster = "🦞";
|
||
var mosquito = "🦟";
|
||
var microbe = "🦠";
|
||
var badger = "🦡";
|
||
var swan = "🦢";
|
||
var mammoth = "🦣";
|
||
var dodo = "🦤";
|
||
var sloth = "🦥";
|
||
var otter = "🦦";
|
||
var orangutan = "🦧";
|
||
var skunk = "🦨";
|
||
var flamingo = "🦩";
|
||
var oyster = "🦪";
|
||
var beaver = "🦫";
|
||
var bison = "🦬";
|
||
var seal = "🦭";
|
||
var guide_dog = "🦮";
|
||
var probing_cane = "🦯";
|
||
var bone = "🦴";
|
||
var leg = "🦵";
|
||
var foot = "🦶";
|
||
var tooth = "🦷";
|
||
var female_superhero = "🦸♀️";
|
||
var male_superhero = "🦸♂️";
|
||
var superhero = "🦸";
|
||
var female_supervillain = "🦹♀️";
|
||
var male_supervillain = "🦹♂️";
|
||
var supervillain = "🦹";
|
||
var safety_vest = "🦺";
|
||
var ear_with_hearing_aid = "🦻";
|
||
var motorized_wheelchair = "🦼";
|
||
var manual_wheelchair = "🦽";
|
||
var mechanical_arm = "🦾";
|
||
var mechanical_leg = "🦿";
|
||
var cheese_wedge = "🧀";
|
||
var cupcake = "🧁";
|
||
var salt = "🧂";
|
||
var beverage_box = "🧃";
|
||
var garlic = "🧄";
|
||
var onion = "🧅";
|
||
var falafel = "🧆";
|
||
var waffle = "🧇";
|
||
var butter = "🧈";
|
||
var mate_drink = "🧉";
|
||
var ice_cube = "🧊";
|
||
var bubble_tea = "🧋";
|
||
var woman_standing = "🧍♀️";
|
||
var man_standing = "🧍♂️";
|
||
var standing_person = "🧍";
|
||
var woman_kneeling = "🧎♀️";
|
||
var man_kneeling = "🧎♂️";
|
||
var kneeling_person = "🧎";
|
||
var deaf_woman = "🧏♀️";
|
||
var deaf_man = "🧏♂️";
|
||
var deaf_person = "🧏";
|
||
var face_with_monocle = "🧐";
|
||
var farmer = "🧑🌾";
|
||
var cook = "🧑🍳";
|
||
var person_feeding_baby = "🧑🍼";
|
||
var mx_claus = "🧑🎄";
|
||
var student = "🧑🎓";
|
||
var singer = "🧑🎤";
|
||
var artist = "🧑🎨";
|
||
var teacher = "🧑🏫";
|
||
var factory_worker = "🧑🏭";
|
||
var technologist = "🧑💻";
|
||
var office_worker = "🧑💼";
|
||
var mechanic = "🧑🔧";
|
||
var scientist = "🧑🔬";
|
||
var astronaut = "🧑🚀";
|
||
var firefighter = "🧑🚒";
|
||
var people_holding_hands = "🧑🤝🧑";
|
||
var person_with_probing_cane = "🧑🦯";
|
||
var red_haired_person = "🧑🦰";
|
||
var curly_haired_person = "🧑🦱";
|
||
var bald_person = "🧑🦲";
|
||
var white_haired_person = "🧑🦳";
|
||
var person_in_motorized_wheelchair = "🧑🦼";
|
||
var person_in_manual_wheelchair = "🧑🦽";
|
||
var health_worker = "🧑⚕️";
|
||
var judge = "🧑⚖️";
|
||
var pilot = "🧑✈️";
|
||
var adult = "🧑";
|
||
var child = "🧒";
|
||
var older_adult = "🧓";
|
||
var woman_with_beard = "🧔♀️";
|
||
var man_with_beard = "🧔♂️";
|
||
var bearded_person = "🧔";
|
||
var person_with_headscarf = "🧕";
|
||
var woman_in_steamy_room = "🧖♀️";
|
||
var man_in_steamy_room = "🧖♂️";
|
||
var person_in_steamy_room = "🧖♂️";
|
||
var woman_climbing = "🧗♀️";
|
||
var person_climbing = "🧗♀️";
|
||
var man_climbing = "🧗♂️";
|
||
var woman_in_lotus_position = "🧘♀️";
|
||
var person_in_lotus_position = "🧘♀️";
|
||
var man_in_lotus_position = "🧘♂️";
|
||
var female_mage = "🧙♀️";
|
||
var mage = "🧙♀️";
|
||
var male_mage = "🧙♂️";
|
||
var female_fairy = "🧚♀️";
|
||
var fairy = "🧚♀️";
|
||
var male_fairy = "🧚♂️";
|
||
var female_vampire = "🧛♀️";
|
||
var vampire = "🧛♀️";
|
||
var male_vampire = "🧛♂️";
|
||
var mermaid = "🧜♀️";
|
||
var merman = "🧜♂️";
|
||
var merperson = "🧜♂️";
|
||
var female_elf = "🧝♀️";
|
||
var male_elf = "🧝♂️";
|
||
var elf = "🧝♂️";
|
||
var female_genie = "🧞♀️";
|
||
var male_genie = "🧞♂️";
|
||
var genie = "🧞♂️";
|
||
var female_zombie = "🧟♀️";
|
||
var male_zombie = "🧟♂️";
|
||
var zombie = "🧟♂️";
|
||
var brain = "🧠";
|
||
var orange_heart = "🧡";
|
||
var billed_cap = "🧢";
|
||
var scarf = "🧣";
|
||
var gloves = "🧤";
|
||
var coat = "🧥";
|
||
var socks = "🧦";
|
||
var red_envelope = "🧧";
|
||
var firecracker = "🧨";
|
||
var jigsaw = "🧩";
|
||
var test_tube = "🧪";
|
||
var petri_dish = "🧫";
|
||
var dna = "🧬";
|
||
var compass = "🧭";
|
||
var abacus = "🧮";
|
||
var fire_extinguisher = "🧯";
|
||
var toolbox = "🧰";
|
||
var bricks = "🧱";
|
||
var magnet = "🧲";
|
||
var luggage = "🧳";
|
||
var lotion_bottle = "🧴";
|
||
var thread = "🧵";
|
||
var yarn = "🧶";
|
||
var safety_pin = "🧷";
|
||
var teddy_bear = "🧸";
|
||
var broom = "🧹";
|
||
var basket = "🧺";
|
||
var roll_of_paper = "🧻";
|
||
var soap = "🧼";
|
||
var sponge = "🧽";
|
||
var receipt = "🧾";
|
||
var nazar_amulet = "🧿";
|
||
var ballet_shoes = "🩰";
|
||
var briefs = "🩲";
|
||
var shorts = "🩳";
|
||
var thong_sandal = "🩴";
|
||
var drop_of_blood = "🩸";
|
||
var adhesive_bandage = "🩹";
|
||
var stethoscope = "🩺";
|
||
var kite = "🪁";
|
||
var parachute = "🪂";
|
||
var boomerang = "🪃";
|
||
var magic_wand = "🪄";
|
||
var pinata = "🪅";
|
||
var nesting_dolls = "🪆";
|
||
var ringed_planet = "🪐";
|
||
var chair = "🪑";
|
||
var razor = "🪒";
|
||
var axe = "🪓";
|
||
var diya_lamp = "🪔";
|
||
var banjo = "🪕";
|
||
var military_helmet = "🪖";
|
||
var accordion = "🪗";
|
||
var long_drum = "🪘";
|
||
var coin = "🪙";
|
||
var carpentry_saw = "🪚";
|
||
var screwdriver = "🪛";
|
||
var ladder = "🪜";
|
||
var hook = "🪝";
|
||
var mirror = "🪞";
|
||
var window$1 = "🪟";
|
||
var plunger = "🪠";
|
||
var sewing_needle = "🪡";
|
||
var knot = "🪢";
|
||
var bucket = "🪣";
|
||
var mouse_trap = "🪤";
|
||
var toothbrush = "🪥";
|
||
var headstone = "🪦";
|
||
var placard = "🪧";
|
||
var rock = "🪨";
|
||
var fly = "🪰";
|
||
var worm = "🪱";
|
||
var beetle = "🪲";
|
||
var cockroach = "🪳";
|
||
var potted_plant = "🪴";
|
||
var wood = "🪵";
|
||
var feather = "🪶";
|
||
var anatomical_heart = "🫀";
|
||
var lungs = "🫁";
|
||
var people_hugging = "🫂";
|
||
var blueberries = "🫐";
|
||
var bell_pepper = "🫑";
|
||
var olive = "🫒";
|
||
var flatbread = "🫓";
|
||
var tamale = "🫔";
|
||
var fondue = "🫕";
|
||
var teapot = "🫖";
|
||
var bangbang = "‼️";
|
||
var interrobang = "⁉️";
|
||
var tm = "™️";
|
||
var information_source = "ℹ️";
|
||
var left_right_arrow = "↔️";
|
||
var arrow_up_down = "↕️";
|
||
var arrow_upper_left = "↖️";
|
||
var arrow_upper_right = "↗️";
|
||
var arrow_lower_right = "↘️";
|
||
var arrow_lower_left = "↙️";
|
||
var leftwards_arrow_with_hook = "↩️";
|
||
var arrow_right_hook = "↪️";
|
||
var watch = "⌚";
|
||
var hourglass = "⌛";
|
||
var keyboard = "⌨️";
|
||
var eject = "⏏️";
|
||
var fast_forward = "⏩";
|
||
var rewind = "⏪";
|
||
var arrow_double_up = "⏫";
|
||
var arrow_double_down = "⏬";
|
||
var black_right_pointing_double_triangle_with_vertical_bar = "⏭️";
|
||
var black_left_pointing_double_triangle_with_vertical_bar = "⏮️";
|
||
var black_right_pointing_triangle_with_double_vertical_bar = "⏯️";
|
||
var alarm_clock = "⏰";
|
||
var stopwatch = "⏱️";
|
||
var timer_clock = "⏲️";
|
||
var hourglass_flowing_sand = "⏳";
|
||
var double_vertical_bar = "⏸️";
|
||
var black_square_for_stop = "⏹️";
|
||
var black_circle_for_record = "⏺️";
|
||
var m = "Ⓜ️";
|
||
var black_small_square = "▪️";
|
||
var white_small_square = "▫️";
|
||
var arrow_forward = "▶️";
|
||
var arrow_backward = "◀️";
|
||
var white_medium_square = "◻️";
|
||
var black_medium_square = "◼️";
|
||
var white_medium_small_square = "◽";
|
||
var black_medium_small_square = "◾";
|
||
var sunny = "☀️";
|
||
var cloud = "☁️";
|
||
var umbrella = "☂️";
|
||
var snowman = "☃️";
|
||
var comet = "☄️";
|
||
var phone = "☎️";
|
||
var telephone = "☎️";
|
||
var ballot_box_with_check = "☑️";
|
||
var shamrock = "☘️";
|
||
var point_up = "☝️";
|
||
var skull_and_crossbones = "☠️";
|
||
var radioactive_sign = "☢️";
|
||
var biohazard_sign = "☣️";
|
||
var orthodox_cross = "☦️";
|
||
var star_and_crescent = "☪️";
|
||
var peace_symbol = "☮️";
|
||
var yin_yang = "☯️";
|
||
var wheel_of_dharma = "☸️";
|
||
var white_frowning_face = "☹️";
|
||
var relaxed = "☺️";
|
||
var female_sign = "♀️";
|
||
var male_sign = "♂️";
|
||
var gemini = "♊";
|
||
var cancer = "♋";
|
||
var leo = "♌";
|
||
var virgo = "♍";
|
||
var libra = "♎";
|
||
var scorpius = "♏";
|
||
var chess_pawn = "♟️";
|
||
var spades = "♠️";
|
||
var clubs = "♣️";
|
||
var hearts = "♥️";
|
||
var diamonds = "♦️";
|
||
var hotsprings = "♨️";
|
||
var recycle = "♻️";
|
||
var infinity = "♾️";
|
||
var wheelchair = "♿";
|
||
var hammer_and_pick = "⚒️";
|
||
var crossed_swords = "⚔️";
|
||
var medical_symbol = "⚕️";
|
||
var staff_of_aesculapius = "⚕️";
|
||
var scales = "⚖️";
|
||
var alembic = "⚗️";
|
||
var gear = "⚙️";
|
||
var atom_symbol = "⚛️";
|
||
var fleur_de_lis = "⚜️";
|
||
var warning = "⚠️";
|
||
var zap = "⚡";
|
||
var transgender_symbol = "⚧️";
|
||
var white_circle = "⚪";
|
||
var black_circle = "⚫";
|
||
var coffin = "⚰️";
|
||
var funeral_urn = "⚱️";
|
||
var soccer = "⚽";
|
||
var baseball = "⚾";
|
||
var snowman_without_snow = "⛄";
|
||
var partly_sunny = "⛅";
|
||
var thunder_cloud_and_rain = "⛈️";
|
||
var ophiuchus = "⛎";
|
||
var pick = "⛏️";
|
||
var helmet_with_white_cross = "⛑️";
|
||
var chains = "⛓️";
|
||
var no_entry = "⛔";
|
||
var shinto_shrine = "⛩️";
|
||
var church = "⛪";
|
||
var mountain = "⛰️";
|
||
var umbrella_on_ground = "⛱️";
|
||
var fountain = "⛲";
|
||
var golf = "⛳";
|
||
var ferry = "⛴️";
|
||
var boat = "⛵";
|
||
var sailboat = "⛵";
|
||
var skier = "⛷️";
|
||
var ice_skate = "⛸️";
|
||
var person_with_ball = "⛹️♂️";
|
||
var tent = "⛺";
|
||
var fuelpump = "⛽";
|
||
var scissors = "✂️";
|
||
var airplane = "✈️";
|
||
var email = "✉️";
|
||
var envelope = "✉️";
|
||
var fist = "✊";
|
||
var hand = "✋";
|
||
var raised_hand = "✋";
|
||
var v = "✌️";
|
||
var writing_hand = "✍️";
|
||
var pencil2 = "✏️";
|
||
var black_nib = "✒️";
|
||
var heavy_check_mark = "✔️";
|
||
var heavy_multiplication_x = "✖️";
|
||
var latin_cross = "✝️";
|
||
var star_of_david = "✡️";
|
||
var eight_spoked_asterisk = "✳️";
|
||
var eight_pointed_black_star = "✴️";
|
||
var snowflake = "❄️";
|
||
var sparkle = "❇️";
|
||
var x = "❌";
|
||
var negative_squared_cross_mark = "❎";
|
||
var heavy_heart_exclamation_mark_ornament = "❣️";
|
||
var heart_on_fire = "❤️🔥";
|
||
var mending_heart = "❤️🩹";
|
||
var heart = "❤️";
|
||
var arrow_right = "➡️";
|
||
var curly_loop = "➰";
|
||
var loop = "➿";
|
||
var arrow_heading_up = "⤴️";
|
||
var arrow_heading_down = "⤵️";
|
||
var arrow_left = "⬅️";
|
||
var arrow_up = "⬆️";
|
||
var arrow_down = "⬇️";
|
||
var black_large_square = "⬛";
|
||
var white_large_square = "⬜";
|
||
var star = "⭐";
|
||
var o = "⭕";
|
||
var wavy_dash = "〰️";
|
||
var part_alternation_mark = "〽️";
|
||
var congratulations = "㊗️";
|
||
var secret = "㊙️";
|
||
var emojiByName = {
|
||
"100": "💯",
|
||
"1234": "🔢",
|
||
umbrella_with_rain_drops: umbrella_with_rain_drops,
|
||
coffee: coffee,
|
||
aries: aries,
|
||
taurus: taurus,
|
||
sagittarius: sagittarius,
|
||
capricorn: capricorn,
|
||
aquarius: aquarius,
|
||
pisces: pisces,
|
||
anchor: anchor,
|
||
white_check_mark: white_check_mark,
|
||
sparkles: sparkles,
|
||
question: question,
|
||
grey_question: grey_question,
|
||
grey_exclamation: grey_exclamation,
|
||
exclamation: exclamation,
|
||
heavy_exclamation_mark: heavy_exclamation_mark,
|
||
heavy_plus_sign: heavy_plus_sign,
|
||
heavy_minus_sign: heavy_minus_sign,
|
||
heavy_division_sign: heavy_division_sign,
|
||
hash: hash,
|
||
keycap_star: keycap_star,
|
||
zero: zero,
|
||
one: one,
|
||
two: two,
|
||
three: three,
|
||
four: four,
|
||
five: five,
|
||
six: six,
|
||
seven: seven,
|
||
eight: eight,
|
||
nine: nine,
|
||
copyright: copyright,
|
||
registered: registered,
|
||
mahjong: mahjong,
|
||
black_joker: black_joker,
|
||
a: a,
|
||
b: b,
|
||
o2: o2,
|
||
parking: parking,
|
||
ab: ab,
|
||
cl: cl,
|
||
cool: cool,
|
||
free: free,
|
||
id: id,
|
||
"new": "🆕",
|
||
ng: ng,
|
||
ok: ok,
|
||
sos: sos,
|
||
up: up,
|
||
vs: vs,
|
||
"flag-ac": "🇦🇨",
|
||
"flag-ad": "🇦🇩",
|
||
"flag-ae": "🇦🇪",
|
||
"flag-af": "🇦🇫",
|
||
"flag-ag": "🇦🇬",
|
||
"flag-ai": "🇦🇮",
|
||
"flag-al": "🇦🇱",
|
||
"flag-am": "🇦🇲",
|
||
"flag-ao": "🇦🇴",
|
||
"flag-aq": "🇦🇶",
|
||
"flag-ar": "🇦🇷",
|
||
"flag-as": "🇦🇸",
|
||
"flag-at": "🇦🇹",
|
||
"flag-au": "🇦🇺",
|
||
"flag-aw": "🇦🇼",
|
||
"flag-ax": "🇦🇽",
|
||
"flag-az": "🇦🇿",
|
||
"flag-ba": "🇧🇦",
|
||
"flag-bb": "🇧🇧",
|
||
"flag-bd": "🇧🇩",
|
||
"flag-be": "🇧🇪",
|
||
"flag-bf": "🇧🇫",
|
||
"flag-bg": "🇧🇬",
|
||
"flag-bh": "🇧🇭",
|
||
"flag-bi": "🇧🇮",
|
||
"flag-bj": "🇧🇯",
|
||
"flag-bl": "🇧🇱",
|
||
"flag-bm": "🇧🇲",
|
||
"flag-bn": "🇧🇳",
|
||
"flag-bo": "🇧🇴",
|
||
"flag-bq": "🇧🇶",
|
||
"flag-br": "🇧🇷",
|
||
"flag-bs": "🇧🇸",
|
||
"flag-bt": "🇧🇹",
|
||
"flag-bv": "🇧🇻",
|
||
"flag-bw": "🇧🇼",
|
||
"flag-by": "🇧🇾",
|
||
"flag-bz": "🇧🇿",
|
||
"flag-ca": "🇨🇦",
|
||
"flag-cc": "🇨🇨",
|
||
"flag-cd": "🇨🇩",
|
||
"flag-cf": "🇨🇫",
|
||
"flag-cg": "🇨🇬",
|
||
"flag-ch": "🇨🇭",
|
||
"flag-ci": "🇨🇮",
|
||
"flag-ck": "🇨🇰",
|
||
"flag-cl": "🇨🇱",
|
||
"flag-cm": "🇨🇲",
|
||
cn: cn,
|
||
"flag-cn": "🇨🇳",
|
||
"flag-co": "🇨🇴",
|
||
"flag-cp": "🇨🇵",
|
||
"flag-cr": "🇨🇷",
|
||
"flag-cu": "🇨🇺",
|
||
"flag-cv": "🇨🇻",
|
||
"flag-cw": "🇨🇼",
|
||
"flag-cx": "🇨🇽",
|
||
"flag-cy": "🇨🇾",
|
||
"flag-cz": "🇨🇿",
|
||
de: de,
|
||
"flag-de": "🇩🇪",
|
||
"flag-dg": "🇩🇬",
|
||
"flag-dj": "🇩🇯",
|
||
"flag-dk": "🇩🇰",
|
||
"flag-dm": "🇩🇲",
|
||
"flag-do": "🇩🇴",
|
||
"flag-dz": "🇩🇿",
|
||
"flag-ea": "🇪🇦",
|
||
"flag-ec": "🇪🇨",
|
||
"flag-ee": "🇪🇪",
|
||
"flag-eg": "🇪🇬",
|
||
"flag-eh": "🇪🇭",
|
||
"flag-er": "🇪🇷",
|
||
es: es,
|
||
"flag-es": "🇪🇸",
|
||
"flag-et": "🇪🇹",
|
||
"flag-eu": "🇪🇺",
|
||
"flag-fi": "🇫🇮",
|
||
"flag-fj": "🇫🇯",
|
||
"flag-fk": "🇫🇰",
|
||
"flag-fm": "🇫🇲",
|
||
"flag-fo": "🇫🇴",
|
||
fr: fr,
|
||
"flag-fr": "🇫🇷",
|
||
"flag-ga": "🇬🇦",
|
||
gb: gb,
|
||
uk: uk,
|
||
"flag-gb": "🇬🇧",
|
||
"flag-gd": "🇬🇩",
|
||
"flag-ge": "🇬🇪",
|
||
"flag-gf": "🇬🇫",
|
||
"flag-gg": "🇬🇬",
|
||
"flag-gh": "🇬🇭",
|
||
"flag-gi": "🇬🇮",
|
||
"flag-gl": "🇬🇱",
|
||
"flag-gm": "🇬🇲",
|
||
"flag-gn": "🇬🇳",
|
||
"flag-gp": "🇬🇵",
|
||
"flag-gq": "🇬🇶",
|
||
"flag-gr": "🇬🇷",
|
||
"flag-gs": "🇬🇸",
|
||
"flag-gt": "🇬🇹",
|
||
"flag-gu": "🇬🇺",
|
||
"flag-gw": "🇬🇼",
|
||
"flag-gy": "🇬🇾",
|
||
"flag-hk": "🇭🇰",
|
||
"flag-hm": "🇭🇲",
|
||
"flag-hn": "🇭🇳",
|
||
"flag-hr": "🇭🇷",
|
||
"flag-ht": "🇭🇹",
|
||
"flag-hu": "🇭🇺",
|
||
"flag-ic": "🇮🇨",
|
||
"flag-id": "🇮🇩",
|
||
"flag-ie": "🇮🇪",
|
||
"flag-il": "🇮🇱",
|
||
"flag-im": "🇮🇲",
|
||
"flag-in": "🇮🇳",
|
||
"flag-io": "🇮🇴",
|
||
"flag-iq": "🇮🇶",
|
||
"flag-ir": "🇮🇷",
|
||
"flag-is": "🇮🇸",
|
||
it: it,
|
||
"flag-it": "🇮🇹",
|
||
"flag-je": "🇯🇪",
|
||
"flag-jm": "🇯🇲",
|
||
"flag-jo": "🇯🇴",
|
||
jp: jp,
|
||
"flag-jp": "🇯🇵",
|
||
"flag-ke": "🇰🇪",
|
||
"flag-kg": "🇰🇬",
|
||
"flag-kh": "🇰🇭",
|
||
"flag-ki": "🇰🇮",
|
||
"flag-km": "🇰🇲",
|
||
"flag-kn": "🇰🇳",
|
||
"flag-kp": "🇰🇵",
|
||
kr: kr,
|
||
"flag-kr": "🇰🇷",
|
||
"flag-kw": "🇰🇼",
|
||
"flag-ky": "🇰🇾",
|
||
"flag-kz": "🇰🇿",
|
||
"flag-la": "🇱🇦",
|
||
"flag-lb": "🇱🇧",
|
||
"flag-lc": "🇱🇨",
|
||
"flag-li": "🇱🇮",
|
||
"flag-lk": "🇱🇰",
|
||
"flag-lr": "🇱🇷",
|
||
"flag-ls": "🇱🇸",
|
||
"flag-lt": "🇱🇹",
|
||
"flag-lu": "🇱🇺",
|
||
"flag-lv": "🇱🇻",
|
||
"flag-ly": "🇱🇾",
|
||
"flag-ma": "🇲🇦",
|
||
"flag-mc": "🇲🇨",
|
||
"flag-md": "🇲🇩",
|
||
"flag-me": "🇲🇪",
|
||
"flag-mf": "🇲🇫",
|
||
"flag-mg": "🇲🇬",
|
||
"flag-mh": "🇲🇭",
|
||
"flag-mk": "🇲🇰",
|
||
"flag-ml": "🇲🇱",
|
||
"flag-mm": "🇲🇲",
|
||
"flag-mn": "🇲🇳",
|
||
"flag-mo": "🇲🇴",
|
||
"flag-mp": "🇲🇵",
|
||
"flag-mq": "🇲🇶",
|
||
"flag-mr": "🇲🇷",
|
||
"flag-ms": "🇲🇸",
|
||
"flag-mt": "🇲🇹",
|
||
"flag-mu": "🇲🇺",
|
||
"flag-mv": "🇲🇻",
|
||
"flag-mw": "🇲🇼",
|
||
"flag-mx": "🇲🇽",
|
||
"flag-my": "🇲🇾",
|
||
"flag-mz": "🇲🇿",
|
||
"flag-na": "🇳🇦",
|
||
"flag-nc": "🇳🇨",
|
||
"flag-ne": "🇳🇪",
|
||
"flag-nf": "🇳🇫",
|
||
"flag-ng": "🇳🇬",
|
||
"flag-ni": "🇳🇮",
|
||
"flag-nl": "🇳🇱",
|
||
"flag-no": "🇳🇴",
|
||
"flag-np": "🇳🇵",
|
||
"flag-nr": "🇳🇷",
|
||
"flag-nu": "🇳🇺",
|
||
"flag-nz": "🇳🇿",
|
||
"flag-om": "🇴🇲",
|
||
"flag-pa": "🇵🇦",
|
||
"flag-pe": "🇵🇪",
|
||
"flag-pf": "🇵🇫",
|
||
"flag-pg": "🇵🇬",
|
||
"flag-ph": "🇵🇭",
|
||
"flag-pk": "🇵🇰",
|
||
"flag-pl": "🇵🇱",
|
||
"flag-pm": "🇵🇲",
|
||
"flag-pn": "🇵🇳",
|
||
"flag-pr": "🇵🇷",
|
||
"flag-ps": "🇵🇸",
|
||
"flag-pt": "🇵🇹",
|
||
"flag-pw": "🇵🇼",
|
||
"flag-py": "🇵🇾",
|
||
"flag-qa": "🇶🇦",
|
||
"flag-re": "🇷🇪",
|
||
"flag-ro": "🇷🇴",
|
||
"flag-rs": "🇷🇸",
|
||
ru: ru,
|
||
"flag-ru": "🇷🇺",
|
||
"flag-rw": "🇷🇼",
|
||
"flag-sa": "🇸🇦",
|
||
"flag-sb": "🇸🇧",
|
||
"flag-sc": "🇸🇨",
|
||
"flag-sd": "🇸🇩",
|
||
"flag-se": "🇸🇪",
|
||
"flag-sg": "🇸🇬",
|
||
"flag-sh": "🇸🇭",
|
||
"flag-si": "🇸🇮",
|
||
"flag-sj": "🇸🇯",
|
||
"flag-sk": "🇸🇰",
|
||
"flag-sl": "🇸🇱",
|
||
"flag-sm": "🇸🇲",
|
||
"flag-sn": "🇸🇳",
|
||
"flag-so": "🇸🇴",
|
||
"flag-sr": "🇸🇷",
|
||
"flag-ss": "🇸🇸",
|
||
"flag-st": "🇸🇹",
|
||
"flag-sv": "🇸🇻",
|
||
"flag-sx": "🇸🇽",
|
||
"flag-sy": "🇸🇾",
|
||
"flag-sz": "🇸🇿",
|
||
"flag-ta": "🇹🇦",
|
||
"flag-tc": "🇹🇨",
|
||
"flag-td": "🇹🇩",
|
||
"flag-tf": "🇹🇫",
|
||
"flag-tg": "🇹🇬",
|
||
"flag-th": "🇹🇭",
|
||
"flag-tj": "🇹🇯",
|
||
"flag-tk": "🇹🇰",
|
||
"flag-tl": "🇹🇱",
|
||
"flag-tm": "🇹🇲",
|
||
"flag-tn": "🇹🇳",
|
||
"flag-to": "🇹🇴",
|
||
"flag-tr": "🇹🇷",
|
||
"flag-tt": "🇹🇹",
|
||
"flag-tv": "🇹🇻",
|
||
"flag-tw": "🇹🇼",
|
||
"flag-tz": "🇹🇿",
|
||
"flag-ua": "🇺🇦",
|
||
"flag-ug": "🇺🇬",
|
||
"flag-um": "🇺🇲",
|
||
"flag-un": "🇺🇳",
|
||
us: us,
|
||
"flag-us": "🇺🇸",
|
||
"flag-uy": "🇺🇾",
|
||
"flag-uz": "🇺🇿",
|
||
"flag-va": "🇻🇦",
|
||
"flag-vc": "🇻🇨",
|
||
"flag-ve": "🇻🇪",
|
||
"flag-vg": "🇻🇬",
|
||
"flag-vi": "🇻🇮",
|
||
"flag-vn": "🇻🇳",
|
||
"flag-vu": "🇻🇺",
|
||
"flag-wf": "🇼🇫",
|
||
"flag-ws": "🇼🇸",
|
||
"flag-xk": "🇽🇰",
|
||
"flag-ye": "🇾🇪",
|
||
"flag-yt": "🇾🇹",
|
||
"flag-za": "🇿🇦",
|
||
"flag-zm": "🇿🇲",
|
||
"flag-zw": "🇿🇼",
|
||
koko: koko,
|
||
sa: sa,
|
||
u7121: u7121,
|
||
u6307: u6307,
|
||
u7981: u7981,
|
||
u7a7a: u7a7a,
|
||
u5408: u5408,
|
||
u6e80: u6e80,
|
||
u6709: u6709,
|
||
u6708: u6708,
|
||
u7533: u7533,
|
||
u5272: u5272,
|
||
u55b6: u55b6,
|
||
ideograph_advantage: ideograph_advantage,
|
||
accept: accept,
|
||
cyclone: cyclone,
|
||
foggy: foggy,
|
||
closed_umbrella: closed_umbrella,
|
||
night_with_stars: night_with_stars,
|
||
sunrise_over_mountains: sunrise_over_mountains,
|
||
sunrise: sunrise,
|
||
city_sunset: city_sunset,
|
||
city_sunrise: city_sunrise,
|
||
rainbow: rainbow,
|
||
bridge_at_night: bridge_at_night,
|
||
ocean: ocean,
|
||
volcano: volcano,
|
||
milky_way: milky_way,
|
||
earth_africa: earth_africa,
|
||
earth_americas: earth_americas,
|
||
earth_asia: earth_asia,
|
||
globe_with_meridians: globe_with_meridians,
|
||
new_moon: new_moon,
|
||
waxing_crescent_moon: waxing_crescent_moon,
|
||
first_quarter_moon: first_quarter_moon,
|
||
moon: moon,
|
||
waxing_gibbous_moon: waxing_gibbous_moon,
|
||
full_moon: full_moon,
|
||
waning_gibbous_moon: waning_gibbous_moon,
|
||
last_quarter_moon: last_quarter_moon,
|
||
waning_crescent_moon: waning_crescent_moon,
|
||
crescent_moon: crescent_moon,
|
||
new_moon_with_face: new_moon_with_face,
|
||
first_quarter_moon_with_face: first_quarter_moon_with_face,
|
||
last_quarter_moon_with_face: last_quarter_moon_with_face,
|
||
full_moon_with_face: full_moon_with_face,
|
||
sun_with_face: sun_with_face,
|
||
star2: star2,
|
||
stars: stars,
|
||
thermometer: thermometer,
|
||
mostly_sunny: mostly_sunny,
|
||
sun_small_cloud: sun_small_cloud,
|
||
barely_sunny: barely_sunny,
|
||
sun_behind_cloud: sun_behind_cloud,
|
||
partly_sunny_rain: partly_sunny_rain,
|
||
sun_behind_rain_cloud: sun_behind_rain_cloud,
|
||
rain_cloud: rain_cloud,
|
||
snow_cloud: snow_cloud,
|
||
lightning: lightning,
|
||
lightning_cloud: lightning_cloud,
|
||
tornado: tornado,
|
||
tornado_cloud: tornado_cloud,
|
||
fog: fog,
|
||
wind_blowing_face: wind_blowing_face,
|
||
hotdog: hotdog,
|
||
taco: taco,
|
||
burrito: burrito,
|
||
chestnut: chestnut,
|
||
seedling: seedling,
|
||
evergreen_tree: evergreen_tree,
|
||
deciduous_tree: deciduous_tree,
|
||
palm_tree: palm_tree,
|
||
cactus: cactus,
|
||
hot_pepper: hot_pepper,
|
||
tulip: tulip,
|
||
cherry_blossom: cherry_blossom,
|
||
rose: rose,
|
||
hibiscus: hibiscus,
|
||
sunflower: sunflower,
|
||
blossom: blossom,
|
||
corn: corn,
|
||
ear_of_rice: ear_of_rice,
|
||
herb: herb,
|
||
four_leaf_clover: four_leaf_clover,
|
||
maple_leaf: maple_leaf,
|
||
fallen_leaf: fallen_leaf,
|
||
leaves: leaves,
|
||
mushroom: mushroom,
|
||
tomato: tomato,
|
||
eggplant: eggplant,
|
||
grapes: grapes,
|
||
melon: melon,
|
||
watermelon: watermelon,
|
||
tangerine: tangerine,
|
||
lemon: lemon,
|
||
banana: banana,
|
||
pineapple: pineapple,
|
||
apple: apple,
|
||
green_apple: green_apple,
|
||
pear: pear,
|
||
peach: peach,
|
||
cherries: cherries,
|
||
strawberry: strawberry,
|
||
hamburger: hamburger,
|
||
pizza: pizza,
|
||
meat_on_bone: meat_on_bone,
|
||
poultry_leg: poultry_leg,
|
||
rice_cracker: rice_cracker,
|
||
rice_ball: rice_ball,
|
||
rice: rice,
|
||
curry: curry,
|
||
ramen: ramen,
|
||
spaghetti: spaghetti,
|
||
bread: bread,
|
||
fries: fries,
|
||
sweet_potato: sweet_potato,
|
||
dango: dango,
|
||
oden: oden,
|
||
sushi: sushi,
|
||
fried_shrimp: fried_shrimp,
|
||
fish_cake: fish_cake,
|
||
icecream: icecream,
|
||
shaved_ice: shaved_ice,
|
||
ice_cream: ice_cream,
|
||
doughnut: doughnut,
|
||
cookie: cookie,
|
||
chocolate_bar: chocolate_bar,
|
||
candy: candy,
|
||
lollipop: lollipop,
|
||
custard: custard,
|
||
honey_pot: honey_pot,
|
||
cake: cake,
|
||
bento: bento,
|
||
stew: stew,
|
||
fried_egg: fried_egg,
|
||
cooking: cooking,
|
||
fork_and_knife: fork_and_knife,
|
||
tea: tea,
|
||
sake: sake,
|
||
wine_glass: wine_glass,
|
||
cocktail: cocktail,
|
||
tropical_drink: tropical_drink,
|
||
beer: beer,
|
||
beers: beers,
|
||
baby_bottle: baby_bottle,
|
||
knife_fork_plate: knife_fork_plate,
|
||
champagne: champagne,
|
||
popcorn: popcorn,
|
||
ribbon: ribbon,
|
||
gift: gift,
|
||
birthday: birthday,
|
||
jack_o_lantern: jack_o_lantern,
|
||
christmas_tree: christmas_tree,
|
||
santa: santa,
|
||
fireworks: fireworks,
|
||
sparkler: sparkler,
|
||
balloon: balloon,
|
||
tada: tada,
|
||
confetti_ball: confetti_ball,
|
||
tanabata_tree: tanabata_tree,
|
||
crossed_flags: crossed_flags,
|
||
bamboo: bamboo,
|
||
dolls: dolls,
|
||
flags: flags,
|
||
wind_chime: wind_chime,
|
||
rice_scene: rice_scene,
|
||
school_satchel: school_satchel,
|
||
mortar_board: mortar_board,
|
||
medal: medal,
|
||
reminder_ribbon: reminder_ribbon,
|
||
studio_microphone: studio_microphone,
|
||
level_slider: level_slider,
|
||
control_knobs: control_knobs,
|
||
film_frames: film_frames,
|
||
admission_tickets: admission_tickets,
|
||
carousel_horse: carousel_horse,
|
||
ferris_wheel: ferris_wheel,
|
||
roller_coaster: roller_coaster,
|
||
fishing_pole_and_fish: fishing_pole_and_fish,
|
||
microphone: microphone,
|
||
movie_camera: movie_camera,
|
||
cinema: cinema,
|
||
headphones: headphones,
|
||
art: art,
|
||
tophat: tophat,
|
||
circus_tent: circus_tent,
|
||
ticket: ticket,
|
||
clapper: clapper,
|
||
performing_arts: performing_arts,
|
||
video_game: video_game,
|
||
dart: dart,
|
||
slot_machine: slot_machine,
|
||
"8ball": "🎱",
|
||
game_die: game_die,
|
||
bowling: bowling,
|
||
flower_playing_cards: flower_playing_cards,
|
||
musical_note: musical_note,
|
||
notes: notes,
|
||
saxophone: saxophone,
|
||
guitar: guitar,
|
||
musical_keyboard: musical_keyboard,
|
||
trumpet: trumpet,
|
||
violin: violin,
|
||
musical_score: musical_score,
|
||
running_shirt_with_sash: running_shirt_with_sash,
|
||
tennis: tennis,
|
||
ski: ski,
|
||
basketball: basketball,
|
||
checkered_flag: checkered_flag,
|
||
snowboarder: snowboarder,
|
||
"woman-running": "🏃♀️",
|
||
"man-running": "🏃♂️",
|
||
runner: runner,
|
||
running: running,
|
||
"woman-surfing": "🏄♀️",
|
||
"man-surfing": "🏄♂️",
|
||
surfer: surfer,
|
||
sports_medal: sports_medal,
|
||
trophy: trophy,
|
||
horse_racing: horse_racing,
|
||
football: football,
|
||
rugby_football: rugby_football,
|
||
"woman-swimming": "🏊♀️",
|
||
"man-swimming": "🏊♂️",
|
||
swimmer: swimmer,
|
||
"woman-lifting-weights": "🏋️♀️",
|
||
"man-lifting-weights": "🏋️♂️",
|
||
weight_lifter: weight_lifter,
|
||
"woman-golfing": "🏌️♀️",
|
||
"man-golfing": "🏌️♂️",
|
||
golfer: golfer,
|
||
racing_motorcycle: racing_motorcycle,
|
||
racing_car: racing_car,
|
||
cricket_bat_and_ball: cricket_bat_and_ball,
|
||
volleyball: volleyball,
|
||
field_hockey_stick_and_ball: field_hockey_stick_and_ball,
|
||
ice_hockey_stick_and_puck: ice_hockey_stick_and_puck,
|
||
table_tennis_paddle_and_ball: table_tennis_paddle_and_ball,
|
||
snow_capped_mountain: snow_capped_mountain,
|
||
camping: camping,
|
||
beach_with_umbrella: beach_with_umbrella,
|
||
building_construction: building_construction,
|
||
house_buildings: house_buildings,
|
||
cityscape: cityscape,
|
||
derelict_house_building: derelict_house_building,
|
||
classical_building: classical_building,
|
||
desert: desert,
|
||
desert_island: desert_island,
|
||
national_park: national_park,
|
||
stadium: stadium,
|
||
house: house,
|
||
house_with_garden: house_with_garden,
|
||
office: office,
|
||
post_office: post_office,
|
||
european_post_office: european_post_office,
|
||
hospital: hospital,
|
||
bank: bank,
|
||
atm: atm,
|
||
hotel: hotel,
|
||
love_hotel: love_hotel,
|
||
convenience_store: convenience_store,
|
||
school: school,
|
||
department_store: department_store,
|
||
factory: factory,
|
||
izakaya_lantern: izakaya_lantern,
|
||
lantern: lantern,
|
||
japanese_castle: japanese_castle,
|
||
european_castle: european_castle,
|
||
"rainbow-flag": "🏳️🌈",
|
||
transgender_flag: transgender_flag,
|
||
waving_white_flag: waving_white_flag,
|
||
pirate_flag: pirate_flag,
|
||
"flag-england": "🏴",
|
||
"flag-scotland": "🏴",
|
||
"flag-wales": "🏴",
|
||
waving_black_flag: waving_black_flag,
|
||
rosette: rosette,
|
||
label: label,
|
||
badminton_racquet_and_shuttlecock: badminton_racquet_and_shuttlecock,
|
||
bow_and_arrow: bow_and_arrow,
|
||
amphora: amphora,
|
||
"skin-tone-2": "🏻",
|
||
"skin-tone-3": "🏼",
|
||
"skin-tone-4": "🏽",
|
||
"skin-tone-5": "🏾",
|
||
"skin-tone-6": "🏿",
|
||
rat: rat,
|
||
mouse2: mouse2,
|
||
ox: ox,
|
||
water_buffalo: water_buffalo,
|
||
cow2: cow2,
|
||
tiger2: tiger2,
|
||
leopard: leopard,
|
||
rabbit2: rabbit2,
|
||
black_cat: black_cat,
|
||
cat2: cat2,
|
||
dragon: dragon,
|
||
crocodile: crocodile,
|
||
whale2: whale2,
|
||
snail: snail,
|
||
snake: snake,
|
||
racehorse: racehorse,
|
||
ram: ram,
|
||
goat: goat,
|
||
sheep: sheep,
|
||
monkey: monkey,
|
||
rooster: rooster,
|
||
chicken: chicken,
|
||
service_dog: service_dog,
|
||
dog2: dog2,
|
||
pig2: pig2,
|
||
boar: boar,
|
||
elephant: elephant,
|
||
octopus: octopus,
|
||
shell: shell,
|
||
bug: bug,
|
||
ant: ant,
|
||
bee: bee,
|
||
honeybee: honeybee,
|
||
ladybug: ladybug,
|
||
lady_beetle: lady_beetle,
|
||
fish: fish,
|
||
tropical_fish: tropical_fish,
|
||
blowfish: blowfish,
|
||
turtle: turtle,
|
||
hatching_chick: hatching_chick,
|
||
baby_chick: baby_chick,
|
||
hatched_chick: hatched_chick,
|
||
bird: bird,
|
||
penguin: penguin,
|
||
koala: koala,
|
||
poodle: poodle,
|
||
dromedary_camel: dromedary_camel,
|
||
camel: camel,
|
||
dolphin: dolphin,
|
||
flipper: flipper,
|
||
mouse: mouse,
|
||
cow: cow,
|
||
tiger: tiger,
|
||
rabbit: rabbit,
|
||
cat: cat,
|
||
dragon_face: dragon_face,
|
||
whale: whale,
|
||
horse: horse,
|
||
monkey_face: monkey_face,
|
||
dog: dog,
|
||
pig: pig,
|
||
frog: frog,
|
||
hamster: hamster,
|
||
wolf: wolf,
|
||
polar_bear: polar_bear,
|
||
bear: bear,
|
||
panda_face: panda_face,
|
||
pig_nose: pig_nose,
|
||
feet: feet,
|
||
paw_prints: paw_prints,
|
||
chipmunk: chipmunk,
|
||
eyes: eyes,
|
||
"eye-in-speech-bubble": "👁️🗨️",
|
||
eye: eye,
|
||
ear: ear,
|
||
nose: nose,
|
||
lips: lips,
|
||
tongue: tongue,
|
||
point_up_2: point_up_2,
|
||
point_down: point_down,
|
||
point_left: point_left,
|
||
point_right: point_right,
|
||
facepunch: facepunch,
|
||
punch: punch,
|
||
wave: wave,
|
||
ok_hand: ok_hand,
|
||
"+1": "👍",
|
||
thumbsup: thumbsup,
|
||
"-1": "👎",
|
||
thumbsdown: thumbsdown,
|
||
clap: clap,
|
||
open_hands: open_hands,
|
||
crown: crown,
|
||
womans_hat: womans_hat,
|
||
eyeglasses: eyeglasses,
|
||
necktie: necktie,
|
||
shirt: shirt,
|
||
tshirt: tshirt,
|
||
jeans: jeans,
|
||
dress: dress,
|
||
kimono: kimono,
|
||
bikini: bikini,
|
||
womans_clothes: womans_clothes,
|
||
purse: purse,
|
||
handbag: handbag,
|
||
pouch: pouch,
|
||
mans_shoe: mans_shoe,
|
||
shoe: shoe,
|
||
athletic_shoe: athletic_shoe,
|
||
high_heel: high_heel,
|
||
sandal: sandal,
|
||
boot: boot,
|
||
footprints: footprints,
|
||
bust_in_silhouette: bust_in_silhouette,
|
||
busts_in_silhouette: busts_in_silhouette,
|
||
boy: boy,
|
||
girl: girl,
|
||
"male-farmer": "👨🌾",
|
||
"male-cook": "👨🍳",
|
||
man_feeding_baby: man_feeding_baby,
|
||
"male-student": "👨🎓",
|
||
"male-singer": "👨🎤",
|
||
"male-artist": "👨🎨",
|
||
"male-teacher": "👨🏫",
|
||
"male-factory-worker": "👨🏭",
|
||
"man-boy-boy": "👨👦👦",
|
||
"man-boy": "👨👦",
|
||
"man-girl-boy": "👨👧👦",
|
||
"man-girl-girl": "👨👧👧",
|
||
"man-girl": "👨👧",
|
||
"man-man-boy": "👨👨👦",
|
||
"man-man-boy-boy": "👨👨👦👦",
|
||
"man-man-girl": "👨👨👧",
|
||
"man-man-girl-boy": "👨👨👧👦",
|
||
"man-man-girl-girl": "👨👨👧👧",
|
||
"man-woman-boy": "👨👩👦",
|
||
family: family,
|
||
"man-woman-boy-boy": "👨👩👦👦",
|
||
"man-woman-girl": "👨👩👧",
|
||
"man-woman-girl-boy": "👨👩👧👦",
|
||
"man-woman-girl-girl": "👨👩👧👧",
|
||
"male-technologist": "👨💻",
|
||
"male-office-worker": "👨💼",
|
||
"male-mechanic": "👨🔧",
|
||
"male-scientist": "👨🔬",
|
||
"male-astronaut": "👨🚀",
|
||
"male-firefighter": "👨🚒",
|
||
man_with_probing_cane: man_with_probing_cane,
|
||
red_haired_man: red_haired_man,
|
||
curly_haired_man: curly_haired_man,
|
||
bald_man: bald_man,
|
||
white_haired_man: white_haired_man,
|
||
man_in_motorized_wheelchair: man_in_motorized_wheelchair,
|
||
man_in_manual_wheelchair: man_in_manual_wheelchair,
|
||
"male-doctor": "👨⚕️",
|
||
"male-judge": "👨⚖️",
|
||
"male-pilot": "👨✈️",
|
||
"man-heart-man": "👨❤️👨",
|
||
"man-kiss-man": "👨❤️💋👨",
|
||
man: man,
|
||
"female-farmer": "👩🌾",
|
||
"female-cook": "👩🍳",
|
||
woman_feeding_baby: woman_feeding_baby,
|
||
"female-student": "👩🎓",
|
||
"female-singer": "👩🎤",
|
||
"female-artist": "👩🎨",
|
||
"female-teacher": "👩🏫",
|
||
"female-factory-worker": "👩🏭",
|
||
"woman-boy-boy": "👩👦👦",
|
||
"woman-boy": "👩👦",
|
||
"woman-girl-boy": "👩👧👦",
|
||
"woman-girl-girl": "👩👧👧",
|
||
"woman-girl": "👩👧",
|
||
"woman-woman-boy": "👩👩👦",
|
||
"woman-woman-boy-boy": "👩👩👦👦",
|
||
"woman-woman-girl": "👩👩👧",
|
||
"woman-woman-girl-boy": "👩👩👧👦",
|
||
"woman-woman-girl-girl": "👩👩👧👧",
|
||
"female-technologist": "👩💻",
|
||
"female-office-worker": "👩💼",
|
||
"female-mechanic": "👩🔧",
|
||
"female-scientist": "👩🔬",
|
||
"female-astronaut": "👩🚀",
|
||
"female-firefighter": "👩🚒",
|
||
woman_with_probing_cane: woman_with_probing_cane,
|
||
red_haired_woman: red_haired_woman,
|
||
curly_haired_woman: curly_haired_woman,
|
||
bald_woman: bald_woman,
|
||
white_haired_woman: white_haired_woman,
|
||
woman_in_motorized_wheelchair: woman_in_motorized_wheelchair,
|
||
woman_in_manual_wheelchair: woman_in_manual_wheelchair,
|
||
"female-doctor": "👩⚕️",
|
||
"female-judge": "👩⚖️",
|
||
"female-pilot": "👩✈️",
|
||
"woman-heart-man": "👩❤️👨",
|
||
"woman-heart-woman": "👩❤️👩",
|
||
"woman-kiss-man": "👩❤️💋👨",
|
||
"woman-kiss-woman": "👩❤️💋👩",
|
||
woman: woman,
|
||
man_and_woman_holding_hands: man_and_woman_holding_hands,
|
||
woman_and_man_holding_hands: woman_and_man_holding_hands,
|
||
couple: couple,
|
||
two_men_holding_hands: two_men_holding_hands,
|
||
men_holding_hands: men_holding_hands,
|
||
two_women_holding_hands: two_women_holding_hands,
|
||
women_holding_hands: women_holding_hands,
|
||
"female-police-officer": "👮♀️",
|
||
"male-police-officer": "👮♂️",
|
||
cop: cop,
|
||
"women-with-bunny-ears-partying": "👯♀️",
|
||
"woman-with-bunny-ears-partying": "👯♀️",
|
||
dancers: dancers,
|
||
"men-with-bunny-ears-partying": "👯♂️",
|
||
"man-with-bunny-ears-partying": "👯♂️",
|
||
woman_with_veil: woman_with_veil,
|
||
man_with_veil: man_with_veil,
|
||
bride_with_veil: bride_with_veil,
|
||
"blond-haired-woman": "👱♀️",
|
||
"blond-haired-man": "👱♂️",
|
||
person_with_blond_hair: person_with_blond_hair,
|
||
man_with_gua_pi_mao: man_with_gua_pi_mao,
|
||
"woman-wearing-turban": "👳♀️",
|
||
"man-wearing-turban": "👳♂️",
|
||
man_with_turban: man_with_turban,
|
||
older_man: older_man,
|
||
older_woman: older_woman,
|
||
baby: baby,
|
||
"female-construction-worker": "👷♀️",
|
||
"male-construction-worker": "👷♂️",
|
||
construction_worker: construction_worker,
|
||
princess: princess,
|
||
japanese_ogre: japanese_ogre,
|
||
japanese_goblin: japanese_goblin,
|
||
ghost: ghost,
|
||
angel: angel,
|
||
alien: alien,
|
||
space_invader: space_invader,
|
||
imp: imp,
|
||
skull: skull,
|
||
"woman-tipping-hand": "💁♀️",
|
||
information_desk_person: information_desk_person,
|
||
"man-tipping-hand": "💁♂️",
|
||
"female-guard": "💂♀️",
|
||
"male-guard": "💂♂️",
|
||
guardsman: guardsman,
|
||
dancer: dancer,
|
||
lipstick: lipstick,
|
||
nail_care: nail_care,
|
||
"woman-getting-massage": "💆♀️",
|
||
massage: massage,
|
||
"man-getting-massage": "💆♂️",
|
||
"woman-getting-haircut": "💇♀️",
|
||
haircut: haircut,
|
||
"man-getting-haircut": "💇♂️",
|
||
barber: barber,
|
||
syringe: syringe,
|
||
pill: pill,
|
||
kiss: kiss,
|
||
love_letter: love_letter,
|
||
ring: ring,
|
||
gem: gem,
|
||
couplekiss: couplekiss,
|
||
bouquet: bouquet,
|
||
couple_with_heart: couple_with_heart,
|
||
wedding: wedding,
|
||
heartbeat: heartbeat,
|
||
broken_heart: broken_heart,
|
||
two_hearts: two_hearts,
|
||
sparkling_heart: sparkling_heart,
|
||
heartpulse: heartpulse,
|
||
cupid: cupid,
|
||
blue_heart: blue_heart,
|
||
green_heart: green_heart,
|
||
yellow_heart: yellow_heart,
|
||
purple_heart: purple_heart,
|
||
gift_heart: gift_heart,
|
||
revolving_hearts: revolving_hearts,
|
||
heart_decoration: heart_decoration,
|
||
diamond_shape_with_a_dot_inside: diamond_shape_with_a_dot_inside,
|
||
bulb: bulb,
|
||
anger: anger,
|
||
bomb: bomb,
|
||
zzz: zzz,
|
||
boom: boom,
|
||
collision: collision,
|
||
sweat_drops: sweat_drops,
|
||
droplet: droplet,
|
||
dash: dash,
|
||
hankey: hankey,
|
||
poop: poop,
|
||
shit: shit,
|
||
muscle: muscle,
|
||
dizzy: dizzy,
|
||
speech_balloon: speech_balloon,
|
||
thought_balloon: thought_balloon,
|
||
white_flower: white_flower,
|
||
moneybag: moneybag,
|
||
currency_exchange: currency_exchange,
|
||
heavy_dollar_sign: heavy_dollar_sign,
|
||
credit_card: credit_card,
|
||
yen: yen,
|
||
dollar: dollar,
|
||
euro: euro,
|
||
pound: pound,
|
||
money_with_wings: money_with_wings,
|
||
chart: chart,
|
||
seat: seat,
|
||
computer: computer,
|
||
briefcase: briefcase,
|
||
minidisc: minidisc,
|
||
floppy_disk: floppy_disk,
|
||
cd: cd,
|
||
dvd: dvd,
|
||
file_folder: file_folder,
|
||
open_file_folder: open_file_folder,
|
||
page_with_curl: page_with_curl,
|
||
page_facing_up: page_facing_up,
|
||
date: date,
|
||
calendar: calendar,
|
||
card_index: card_index,
|
||
chart_with_upwards_trend: chart_with_upwards_trend,
|
||
chart_with_downwards_trend: chart_with_downwards_trend,
|
||
bar_chart: bar_chart,
|
||
clipboard: clipboard,
|
||
pushpin: pushpin,
|
||
round_pushpin: round_pushpin,
|
||
paperclip: paperclip,
|
||
straight_ruler: straight_ruler,
|
||
triangular_ruler: triangular_ruler,
|
||
bookmark_tabs: bookmark_tabs,
|
||
ledger: ledger,
|
||
notebook: notebook,
|
||
notebook_with_decorative_cover: notebook_with_decorative_cover,
|
||
closed_book: closed_book,
|
||
book: book,
|
||
open_book: open_book,
|
||
green_book: green_book,
|
||
blue_book: blue_book,
|
||
orange_book: orange_book,
|
||
books: books,
|
||
name_badge: name_badge,
|
||
scroll: scroll,
|
||
memo: memo,
|
||
pencil: pencil,
|
||
telephone_receiver: telephone_receiver,
|
||
pager: pager,
|
||
fax: fax,
|
||
satellite_antenna: satellite_antenna,
|
||
loudspeaker: loudspeaker,
|
||
mega: mega,
|
||
outbox_tray: outbox_tray,
|
||
inbox_tray: inbox_tray,
|
||
"package": "📦",
|
||
"e-mail": "📧",
|
||
incoming_envelope: incoming_envelope,
|
||
envelope_with_arrow: envelope_with_arrow,
|
||
mailbox_closed: mailbox_closed,
|
||
mailbox: mailbox,
|
||
mailbox_with_mail: mailbox_with_mail,
|
||
mailbox_with_no_mail: mailbox_with_no_mail,
|
||
postbox: postbox,
|
||
postal_horn: postal_horn,
|
||
newspaper: newspaper,
|
||
iphone: iphone,
|
||
calling: calling,
|
||
vibration_mode: vibration_mode,
|
||
mobile_phone_off: mobile_phone_off,
|
||
no_mobile_phones: no_mobile_phones,
|
||
signal_strength: signal_strength,
|
||
camera: camera,
|
||
camera_with_flash: camera_with_flash,
|
||
video_camera: video_camera,
|
||
tv: tv,
|
||
radio: radio,
|
||
vhs: vhs,
|
||
film_projector: film_projector,
|
||
prayer_beads: prayer_beads,
|
||
twisted_rightwards_arrows: twisted_rightwards_arrows,
|
||
repeat: repeat,
|
||
repeat_one: repeat_one,
|
||
arrows_clockwise: arrows_clockwise,
|
||
arrows_counterclockwise: arrows_counterclockwise,
|
||
low_brightness: low_brightness,
|
||
high_brightness: high_brightness,
|
||
mute: mute,
|
||
speaker: speaker,
|
||
sound: sound,
|
||
loud_sound: loud_sound,
|
||
battery: battery,
|
||
electric_plug: electric_plug,
|
||
mag: mag,
|
||
mag_right: mag_right,
|
||
lock_with_ink_pen: lock_with_ink_pen,
|
||
closed_lock_with_key: closed_lock_with_key,
|
||
key: key,
|
||
lock: lock,
|
||
unlock: unlock,
|
||
bell: bell,
|
||
no_bell: no_bell,
|
||
bookmark: bookmark,
|
||
link: link,
|
||
radio_button: radio_button,
|
||
back: back,
|
||
end: end,
|
||
on: on,
|
||
soon: soon,
|
||
top: top,
|
||
underage: underage,
|
||
keycap_ten: keycap_ten,
|
||
capital_abcd: capital_abcd,
|
||
abcd: abcd,
|
||
symbols: symbols,
|
||
abc: abc,
|
||
fire: fire,
|
||
flashlight: flashlight,
|
||
wrench: wrench,
|
||
hammer: hammer,
|
||
nut_and_bolt: nut_and_bolt,
|
||
hocho: hocho,
|
||
knife: knife,
|
||
gun: gun,
|
||
microscope: microscope,
|
||
telescope: telescope,
|
||
crystal_ball: crystal_ball,
|
||
six_pointed_star: six_pointed_star,
|
||
beginner: beginner,
|
||
trident: trident,
|
||
black_square_button: black_square_button,
|
||
white_square_button: white_square_button,
|
||
red_circle: red_circle,
|
||
large_blue_circle: large_blue_circle,
|
||
large_orange_diamond: large_orange_diamond,
|
||
large_blue_diamond: large_blue_diamond,
|
||
small_orange_diamond: small_orange_diamond,
|
||
small_blue_diamond: small_blue_diamond,
|
||
small_red_triangle: small_red_triangle,
|
||
small_red_triangle_down: small_red_triangle_down,
|
||
arrow_up_small: arrow_up_small,
|
||
arrow_down_small: arrow_down_small,
|
||
om_symbol: om_symbol,
|
||
dove_of_peace: dove_of_peace,
|
||
kaaba: kaaba,
|
||
mosque: mosque,
|
||
synagogue: synagogue,
|
||
menorah_with_nine_branches: menorah_with_nine_branches,
|
||
clock1: clock1,
|
||
clock2: clock2,
|
||
clock3: clock3,
|
||
clock4: clock4,
|
||
clock5: clock5,
|
||
clock6: clock6,
|
||
clock7: clock7,
|
||
clock8: clock8,
|
||
clock9: clock9,
|
||
clock10: clock10,
|
||
clock11: clock11,
|
||
clock12: clock12,
|
||
clock130: clock130,
|
||
clock230: clock230,
|
||
clock330: clock330,
|
||
clock430: clock430,
|
||
clock530: clock530,
|
||
clock630: clock630,
|
||
clock730: clock730,
|
||
clock830: clock830,
|
||
clock930: clock930,
|
||
clock1030: clock1030,
|
||
clock1130: clock1130,
|
||
clock1230: clock1230,
|
||
candle: candle,
|
||
mantelpiece_clock: mantelpiece_clock,
|
||
hole: hole,
|
||
man_in_business_suit_levitating: man_in_business_suit_levitating,
|
||
"female-detective": "🕵️♀️",
|
||
"male-detective": "🕵️♂️",
|
||
sleuth_or_spy: sleuth_or_spy,
|
||
dark_sunglasses: dark_sunglasses,
|
||
spider: spider,
|
||
spider_web: spider_web,
|
||
joystick: joystick,
|
||
man_dancing: man_dancing,
|
||
linked_paperclips: linked_paperclips,
|
||
lower_left_ballpoint_pen: lower_left_ballpoint_pen,
|
||
lower_left_fountain_pen: lower_left_fountain_pen,
|
||
lower_left_paintbrush: lower_left_paintbrush,
|
||
lower_left_crayon: lower_left_crayon,
|
||
raised_hand_with_fingers_splayed: raised_hand_with_fingers_splayed,
|
||
middle_finger: middle_finger,
|
||
reversed_hand_with_middle_finger_extended: reversed_hand_with_middle_finger_extended,
|
||
"spock-hand": "🖖",
|
||
black_heart: black_heart,
|
||
desktop_computer: desktop_computer,
|
||
printer: printer,
|
||
three_button_mouse: three_button_mouse,
|
||
trackball: trackball,
|
||
frame_with_picture: frame_with_picture,
|
||
card_index_dividers: card_index_dividers,
|
||
card_file_box: card_file_box,
|
||
file_cabinet: file_cabinet,
|
||
wastebasket: wastebasket,
|
||
spiral_note_pad: spiral_note_pad,
|
||
spiral_calendar_pad: spiral_calendar_pad,
|
||
compression: compression,
|
||
old_key: old_key,
|
||
rolled_up_newspaper: rolled_up_newspaper,
|
||
dagger_knife: dagger_knife,
|
||
speaking_head_in_silhouette: speaking_head_in_silhouette,
|
||
left_speech_bubble: left_speech_bubble,
|
||
right_anger_bubble: right_anger_bubble,
|
||
ballot_box_with_ballot: ballot_box_with_ballot,
|
||
world_map: world_map,
|
||
mount_fuji: mount_fuji,
|
||
tokyo_tower: tokyo_tower,
|
||
statue_of_liberty: statue_of_liberty,
|
||
japan: japan,
|
||
moyai: moyai,
|
||
grinning: grinning,
|
||
grin: grin,
|
||
joy: joy,
|
||
smiley: smiley,
|
||
smile: smile,
|
||
sweat_smile: sweat_smile,
|
||
laughing: laughing,
|
||
satisfied: satisfied,
|
||
innocent: innocent,
|
||
smiling_imp: smiling_imp,
|
||
wink: wink,
|
||
blush: blush,
|
||
yum: yum,
|
||
relieved: relieved,
|
||
heart_eyes: heart_eyes,
|
||
sunglasses: sunglasses,
|
||
smirk: smirk,
|
||
neutral_face: neutral_face,
|
||
expressionless: expressionless,
|
||
unamused: unamused,
|
||
sweat: sweat,
|
||
pensive: pensive,
|
||
confused: confused,
|
||
confounded: confounded,
|
||
kissing: kissing,
|
||
kissing_heart: kissing_heart,
|
||
kissing_smiling_eyes: kissing_smiling_eyes,
|
||
kissing_closed_eyes: kissing_closed_eyes,
|
||
stuck_out_tongue: stuck_out_tongue,
|
||
stuck_out_tongue_winking_eye: stuck_out_tongue_winking_eye,
|
||
stuck_out_tongue_closed_eyes: stuck_out_tongue_closed_eyes,
|
||
disappointed: disappointed,
|
||
worried: worried,
|
||
angry: angry,
|
||
rage: rage,
|
||
cry: cry,
|
||
persevere: persevere,
|
||
triumph: triumph,
|
||
disappointed_relieved: disappointed_relieved,
|
||
frowning: frowning,
|
||
anguished: anguished,
|
||
fearful: fearful,
|
||
weary: weary,
|
||
sleepy: sleepy,
|
||
tired_face: tired_face,
|
||
grimacing: grimacing,
|
||
sob: sob,
|
||
face_exhaling: face_exhaling,
|
||
open_mouth: open_mouth,
|
||
hushed: hushed,
|
||
cold_sweat: cold_sweat,
|
||
scream: scream,
|
||
astonished: astonished,
|
||
flushed: flushed,
|
||
sleeping: sleeping,
|
||
face_with_spiral_eyes: face_with_spiral_eyes,
|
||
dizzy_face: dizzy_face,
|
||
face_in_clouds: face_in_clouds,
|
||
no_mouth: no_mouth,
|
||
mask: mask,
|
||
smile_cat: smile_cat,
|
||
joy_cat: joy_cat,
|
||
smiley_cat: smiley_cat,
|
||
heart_eyes_cat: heart_eyes_cat,
|
||
smirk_cat: smirk_cat,
|
||
kissing_cat: kissing_cat,
|
||
pouting_cat: pouting_cat,
|
||
crying_cat_face: crying_cat_face,
|
||
scream_cat: scream_cat,
|
||
slightly_frowning_face: slightly_frowning_face,
|
||
slightly_smiling_face: slightly_smiling_face,
|
||
upside_down_face: upside_down_face,
|
||
face_with_rolling_eyes: face_with_rolling_eyes,
|
||
"woman-gesturing-no": "🙅♀️",
|
||
no_good: no_good,
|
||
"man-gesturing-no": "🙅♂️",
|
||
"woman-gesturing-ok": "🙆♀️",
|
||
ok_woman: ok_woman,
|
||
"man-gesturing-ok": "🙆♂️",
|
||
"woman-bowing": "🙇♀️",
|
||
"man-bowing": "🙇♂️",
|
||
bow: bow,
|
||
see_no_evil: see_no_evil,
|
||
hear_no_evil: hear_no_evil,
|
||
speak_no_evil: speak_no_evil,
|
||
"woman-raising-hand": "🙋♀️",
|
||
raising_hand: raising_hand,
|
||
"man-raising-hand": "🙋♂️",
|
||
raised_hands: raised_hands,
|
||
"woman-frowning": "🙍♀️",
|
||
person_frowning: person_frowning,
|
||
"man-frowning": "🙍♂️",
|
||
"woman-pouting": "🙎♀️",
|
||
person_with_pouting_face: person_with_pouting_face,
|
||
"man-pouting": "🙎♂️",
|
||
pray: pray,
|
||
rocket: rocket,
|
||
helicopter: helicopter,
|
||
steam_locomotive: steam_locomotive,
|
||
railway_car: railway_car,
|
||
bullettrain_side: bullettrain_side,
|
||
bullettrain_front: bullettrain_front,
|
||
train2: train2,
|
||
metro: metro,
|
||
light_rail: light_rail,
|
||
station: station,
|
||
tram: tram,
|
||
train: train,
|
||
bus: bus,
|
||
oncoming_bus: oncoming_bus,
|
||
trolleybus: trolleybus,
|
||
busstop: busstop,
|
||
minibus: minibus,
|
||
ambulance: ambulance,
|
||
fire_engine: fire_engine,
|
||
police_car: police_car,
|
||
oncoming_police_car: oncoming_police_car,
|
||
taxi: taxi,
|
||
oncoming_taxi: oncoming_taxi,
|
||
car: car,
|
||
red_car: red_car,
|
||
oncoming_automobile: oncoming_automobile,
|
||
blue_car: blue_car,
|
||
truck: truck,
|
||
articulated_lorry: articulated_lorry,
|
||
tractor: tractor,
|
||
monorail: monorail,
|
||
mountain_railway: mountain_railway,
|
||
suspension_railway: suspension_railway,
|
||
mountain_cableway: mountain_cableway,
|
||
aerial_tramway: aerial_tramway,
|
||
ship: ship,
|
||
"woman-rowing-boat": "🚣♀️",
|
||
"man-rowing-boat": "🚣♂️",
|
||
rowboat: rowboat,
|
||
speedboat: speedboat,
|
||
traffic_light: traffic_light,
|
||
vertical_traffic_light: vertical_traffic_light,
|
||
construction: construction,
|
||
rotating_light: rotating_light,
|
||
triangular_flag_on_post: triangular_flag_on_post,
|
||
door: door,
|
||
no_entry_sign: no_entry_sign,
|
||
smoking: smoking,
|
||
no_smoking: no_smoking,
|
||
put_litter_in_its_place: put_litter_in_its_place,
|
||
do_not_litter: do_not_litter,
|
||
potable_water: potable_water,
|
||
"non-potable_water": "🚱",
|
||
bike: bike,
|
||
no_bicycles: no_bicycles,
|
||
"woman-biking": "🚴♀️",
|
||
"man-biking": "🚴♂️",
|
||
bicyclist: bicyclist,
|
||
"woman-mountain-biking": "🚵♀️",
|
||
"man-mountain-biking": "🚵♂️",
|
||
mountain_bicyclist: mountain_bicyclist,
|
||
"woman-walking": "🚶♀️",
|
||
"man-walking": "🚶♂️",
|
||
walking: walking,
|
||
no_pedestrians: no_pedestrians,
|
||
children_crossing: children_crossing,
|
||
mens: mens,
|
||
womens: womens,
|
||
restroom: restroom,
|
||
baby_symbol: baby_symbol,
|
||
toilet: toilet,
|
||
wc: wc,
|
||
shower: shower,
|
||
bath: bath,
|
||
bathtub: bathtub,
|
||
passport_control: passport_control,
|
||
customs: customs,
|
||
baggage_claim: baggage_claim,
|
||
left_luggage: left_luggage,
|
||
couch_and_lamp: couch_and_lamp,
|
||
sleeping_accommodation: sleeping_accommodation,
|
||
shopping_bags: shopping_bags,
|
||
bellhop_bell: bellhop_bell,
|
||
bed: bed,
|
||
place_of_worship: place_of_worship,
|
||
octagonal_sign: octagonal_sign,
|
||
shopping_trolley: shopping_trolley,
|
||
hindu_temple: hindu_temple,
|
||
hut: hut,
|
||
elevator: elevator,
|
||
hammer_and_wrench: hammer_and_wrench,
|
||
shield: shield,
|
||
oil_drum: oil_drum,
|
||
motorway: motorway,
|
||
railway_track: railway_track,
|
||
motor_boat: motor_boat,
|
||
small_airplane: small_airplane,
|
||
airplane_departure: airplane_departure,
|
||
airplane_arriving: airplane_arriving,
|
||
satellite: satellite,
|
||
passenger_ship: passenger_ship,
|
||
scooter: scooter,
|
||
motor_scooter: motor_scooter,
|
||
canoe: canoe,
|
||
sled: sled,
|
||
flying_saucer: flying_saucer,
|
||
skateboard: skateboard,
|
||
auto_rickshaw: auto_rickshaw,
|
||
pickup_truck: pickup_truck,
|
||
roller_skate: roller_skate,
|
||
large_orange_circle: large_orange_circle,
|
||
large_yellow_circle: large_yellow_circle,
|
||
large_green_circle: large_green_circle,
|
||
large_purple_circle: large_purple_circle,
|
||
large_brown_circle: large_brown_circle,
|
||
large_red_square: large_red_square,
|
||
large_blue_square: large_blue_square,
|
||
large_orange_square: large_orange_square,
|
||
large_yellow_square: large_yellow_square,
|
||
large_green_square: large_green_square,
|
||
large_purple_square: large_purple_square,
|
||
large_brown_square: large_brown_square,
|
||
pinched_fingers: pinched_fingers,
|
||
white_heart: white_heart,
|
||
brown_heart: brown_heart,
|
||
pinching_hand: pinching_hand,
|
||
zipper_mouth_face: zipper_mouth_face,
|
||
money_mouth_face: money_mouth_face,
|
||
face_with_thermometer: face_with_thermometer,
|
||
nerd_face: nerd_face,
|
||
thinking_face: thinking_face,
|
||
face_with_head_bandage: face_with_head_bandage,
|
||
robot_face: robot_face,
|
||
hugging_face: hugging_face,
|
||
the_horns: the_horns,
|
||
sign_of_the_horns: sign_of_the_horns,
|
||
call_me_hand: call_me_hand,
|
||
raised_back_of_hand: raised_back_of_hand,
|
||
"left-facing_fist": "🤛",
|
||
"right-facing_fist": "🤜",
|
||
handshake: handshake,
|
||
crossed_fingers: crossed_fingers,
|
||
hand_with_index_and_middle_fingers_crossed: hand_with_index_and_middle_fingers_crossed,
|
||
i_love_you_hand_sign: i_love_you_hand_sign,
|
||
face_with_cowboy_hat: face_with_cowboy_hat,
|
||
clown_face: clown_face,
|
||
nauseated_face: nauseated_face,
|
||
rolling_on_the_floor_laughing: rolling_on_the_floor_laughing,
|
||
drooling_face: drooling_face,
|
||
lying_face: lying_face,
|
||
"woman-facepalming": "🤦♀️",
|
||
"man-facepalming": "🤦♂️",
|
||
face_palm: face_palm,
|
||
sneezing_face: sneezing_face,
|
||
face_with_raised_eyebrow: face_with_raised_eyebrow,
|
||
face_with_one_eyebrow_raised: face_with_one_eyebrow_raised,
|
||
"star-struck": "🤩",
|
||
grinning_face_with_star_eyes: grinning_face_with_star_eyes,
|
||
zany_face: zany_face,
|
||
grinning_face_with_one_large_and_one_small_eye: grinning_face_with_one_large_and_one_small_eye,
|
||
shushing_face: shushing_face,
|
||
face_with_finger_covering_closed_lips: face_with_finger_covering_closed_lips,
|
||
face_with_symbols_on_mouth: face_with_symbols_on_mouth,
|
||
serious_face_with_symbols_covering_mouth: serious_face_with_symbols_covering_mouth,
|
||
face_with_hand_over_mouth: face_with_hand_over_mouth,
|
||
smiling_face_with_smiling_eyes_and_hand_covering_mouth: smiling_face_with_smiling_eyes_and_hand_covering_mouth,
|
||
face_vomiting: face_vomiting,
|
||
face_with_open_mouth_vomiting: face_with_open_mouth_vomiting,
|
||
exploding_head: exploding_head,
|
||
shocked_face_with_exploding_head: shocked_face_with_exploding_head,
|
||
pregnant_woman: pregnant_woman,
|
||
"breast-feeding": "🤱",
|
||
palms_up_together: palms_up_together,
|
||
selfie: selfie,
|
||
prince: prince,
|
||
woman_in_tuxedo: woman_in_tuxedo,
|
||
man_in_tuxedo: man_in_tuxedo,
|
||
person_in_tuxedo: person_in_tuxedo,
|
||
mrs_claus: mrs_claus,
|
||
mother_christmas: mother_christmas,
|
||
"woman-shrugging": "🤷♀️",
|
||
"man-shrugging": "🤷♂️",
|
||
shrug: shrug,
|
||
"woman-cartwheeling": "🤸♀️",
|
||
"man-cartwheeling": "🤸♂️",
|
||
person_doing_cartwheel: person_doing_cartwheel,
|
||
"woman-juggling": "🤹♀️",
|
||
"man-juggling": "🤹♂️",
|
||
juggling: juggling,
|
||
fencer: fencer,
|
||
"woman-wrestling": "🤼♀️",
|
||
"man-wrestling": "🤼♂️",
|
||
wrestlers: wrestlers,
|
||
"woman-playing-water-polo": "🤽♀️",
|
||
"man-playing-water-polo": "🤽♂️",
|
||
water_polo: water_polo,
|
||
"woman-playing-handball": "🤾♀️",
|
||
"man-playing-handball": "🤾♂️",
|
||
handball: handball,
|
||
diving_mask: diving_mask,
|
||
wilted_flower: wilted_flower,
|
||
drum_with_drumsticks: drum_with_drumsticks,
|
||
clinking_glasses: clinking_glasses,
|
||
tumbler_glass: tumbler_glass,
|
||
spoon: spoon,
|
||
goal_net: goal_net,
|
||
first_place_medal: first_place_medal,
|
||
second_place_medal: second_place_medal,
|
||
third_place_medal: third_place_medal,
|
||
boxing_glove: boxing_glove,
|
||
martial_arts_uniform: martial_arts_uniform,
|
||
curling_stone: curling_stone,
|
||
lacrosse: lacrosse,
|
||
softball: softball,
|
||
flying_disc: flying_disc,
|
||
croissant: croissant,
|
||
avocado: avocado,
|
||
cucumber: cucumber,
|
||
bacon: bacon,
|
||
potato: potato,
|
||
carrot: carrot,
|
||
baguette_bread: baguette_bread,
|
||
green_salad: green_salad,
|
||
shallow_pan_of_food: shallow_pan_of_food,
|
||
stuffed_flatbread: stuffed_flatbread,
|
||
egg: egg,
|
||
glass_of_milk: glass_of_milk,
|
||
peanuts: peanuts,
|
||
kiwifruit: kiwifruit,
|
||
pancakes: pancakes,
|
||
dumpling: dumpling,
|
||
fortune_cookie: fortune_cookie,
|
||
takeout_box: takeout_box,
|
||
chopsticks: chopsticks,
|
||
bowl_with_spoon: bowl_with_spoon,
|
||
cup_with_straw: cup_with_straw,
|
||
coconut: coconut,
|
||
broccoli: broccoli,
|
||
pie: pie,
|
||
pretzel: pretzel,
|
||
cut_of_meat: cut_of_meat,
|
||
sandwich: sandwich,
|
||
canned_food: canned_food,
|
||
leafy_green: leafy_green,
|
||
mango: mango,
|
||
moon_cake: moon_cake,
|
||
bagel: bagel,
|
||
smiling_face_with_3_hearts: smiling_face_with_3_hearts,
|
||
yawning_face: yawning_face,
|
||
smiling_face_with_tear: smiling_face_with_tear,
|
||
partying_face: partying_face,
|
||
woozy_face: woozy_face,
|
||
hot_face: hot_face,
|
||
cold_face: cold_face,
|
||
ninja: ninja,
|
||
disguised_face: disguised_face,
|
||
pleading_face: pleading_face,
|
||
sari: sari,
|
||
lab_coat: lab_coat,
|
||
goggles: goggles,
|
||
hiking_boot: hiking_boot,
|
||
womans_flat_shoe: womans_flat_shoe,
|
||
crab: crab,
|
||
lion_face: lion_face,
|
||
scorpion: scorpion,
|
||
turkey: turkey,
|
||
unicorn_face: unicorn_face,
|
||
eagle: eagle,
|
||
duck: duck,
|
||
bat: bat,
|
||
shark: shark,
|
||
owl: owl,
|
||
fox_face: fox_face,
|
||
butterfly: butterfly,
|
||
deer: deer,
|
||
gorilla: gorilla,
|
||
lizard: lizard,
|
||
rhinoceros: rhinoceros,
|
||
shrimp: shrimp,
|
||
squid: squid,
|
||
giraffe_face: giraffe_face,
|
||
zebra_face: zebra_face,
|
||
hedgehog: hedgehog,
|
||
sauropod: sauropod,
|
||
"t-rex": "🦖",
|
||
cricket: cricket,
|
||
kangaroo: kangaroo,
|
||
llama: llama,
|
||
peacock: peacock,
|
||
hippopotamus: hippopotamus,
|
||
parrot: parrot,
|
||
raccoon: raccoon,
|
||
lobster: lobster,
|
||
mosquito: mosquito,
|
||
microbe: microbe,
|
||
badger: badger,
|
||
swan: swan,
|
||
mammoth: mammoth,
|
||
dodo: dodo,
|
||
sloth: sloth,
|
||
otter: otter,
|
||
orangutan: orangutan,
|
||
skunk: skunk,
|
||
flamingo: flamingo,
|
||
oyster: oyster,
|
||
beaver: beaver,
|
||
bison: bison,
|
||
seal: seal,
|
||
guide_dog: guide_dog,
|
||
probing_cane: probing_cane,
|
||
bone: bone,
|
||
leg: leg,
|
||
foot: foot,
|
||
tooth: tooth,
|
||
female_superhero: female_superhero,
|
||
male_superhero: male_superhero,
|
||
superhero: superhero,
|
||
female_supervillain: female_supervillain,
|
||
male_supervillain: male_supervillain,
|
||
supervillain: supervillain,
|
||
safety_vest: safety_vest,
|
||
ear_with_hearing_aid: ear_with_hearing_aid,
|
||
motorized_wheelchair: motorized_wheelchair,
|
||
manual_wheelchair: manual_wheelchair,
|
||
mechanical_arm: mechanical_arm,
|
||
mechanical_leg: mechanical_leg,
|
||
cheese_wedge: cheese_wedge,
|
||
cupcake: cupcake,
|
||
salt: salt,
|
||
beverage_box: beverage_box,
|
||
garlic: garlic,
|
||
onion: onion,
|
||
falafel: falafel,
|
||
waffle: waffle,
|
||
butter: butter,
|
||
mate_drink: mate_drink,
|
||
ice_cube: ice_cube,
|
||
bubble_tea: bubble_tea,
|
||
woman_standing: woman_standing,
|
||
man_standing: man_standing,
|
||
standing_person: standing_person,
|
||
woman_kneeling: woman_kneeling,
|
||
man_kneeling: man_kneeling,
|
||
kneeling_person: kneeling_person,
|
||
deaf_woman: deaf_woman,
|
||
deaf_man: deaf_man,
|
||
deaf_person: deaf_person,
|
||
face_with_monocle: face_with_monocle,
|
||
farmer: farmer,
|
||
cook: cook,
|
||
person_feeding_baby: person_feeding_baby,
|
||
mx_claus: mx_claus,
|
||
student: student,
|
||
singer: singer,
|
||
artist: artist,
|
||
teacher: teacher,
|
||
factory_worker: factory_worker,
|
||
technologist: technologist,
|
||
office_worker: office_worker,
|
||
mechanic: mechanic,
|
||
scientist: scientist,
|
||
astronaut: astronaut,
|
||
firefighter: firefighter,
|
||
people_holding_hands: people_holding_hands,
|
||
person_with_probing_cane: person_with_probing_cane,
|
||
red_haired_person: red_haired_person,
|
||
curly_haired_person: curly_haired_person,
|
||
bald_person: bald_person,
|
||
white_haired_person: white_haired_person,
|
||
person_in_motorized_wheelchair: person_in_motorized_wheelchair,
|
||
person_in_manual_wheelchair: person_in_manual_wheelchair,
|
||
health_worker: health_worker,
|
||
judge: judge,
|
||
pilot: pilot,
|
||
adult: adult,
|
||
child: child,
|
||
older_adult: older_adult,
|
||
woman_with_beard: woman_with_beard,
|
||
man_with_beard: man_with_beard,
|
||
bearded_person: bearded_person,
|
||
person_with_headscarf: person_with_headscarf,
|
||
woman_in_steamy_room: woman_in_steamy_room,
|
||
man_in_steamy_room: man_in_steamy_room,
|
||
person_in_steamy_room: person_in_steamy_room,
|
||
woman_climbing: woman_climbing,
|
||
person_climbing: person_climbing,
|
||
man_climbing: man_climbing,
|
||
woman_in_lotus_position: woman_in_lotus_position,
|
||
person_in_lotus_position: person_in_lotus_position,
|
||
man_in_lotus_position: man_in_lotus_position,
|
||
female_mage: female_mage,
|
||
mage: mage,
|
||
male_mage: male_mage,
|
||
female_fairy: female_fairy,
|
||
fairy: fairy,
|
||
male_fairy: male_fairy,
|
||
female_vampire: female_vampire,
|
||
vampire: vampire,
|
||
male_vampire: male_vampire,
|
||
mermaid: mermaid,
|
||
merman: merman,
|
||
merperson: merperson,
|
||
female_elf: female_elf,
|
||
male_elf: male_elf,
|
||
elf: elf,
|
||
female_genie: female_genie,
|
||
male_genie: male_genie,
|
||
genie: genie,
|
||
female_zombie: female_zombie,
|
||
male_zombie: male_zombie,
|
||
zombie: zombie,
|
||
brain: brain,
|
||
orange_heart: orange_heart,
|
||
billed_cap: billed_cap,
|
||
scarf: scarf,
|
||
gloves: gloves,
|
||
coat: coat,
|
||
socks: socks,
|
||
red_envelope: red_envelope,
|
||
firecracker: firecracker,
|
||
jigsaw: jigsaw,
|
||
test_tube: test_tube,
|
||
petri_dish: petri_dish,
|
||
dna: dna,
|
||
compass: compass,
|
||
abacus: abacus,
|
||
fire_extinguisher: fire_extinguisher,
|
||
toolbox: toolbox,
|
||
bricks: bricks,
|
||
magnet: magnet,
|
||
luggage: luggage,
|
||
lotion_bottle: lotion_bottle,
|
||
thread: thread,
|
||
yarn: yarn,
|
||
safety_pin: safety_pin,
|
||
teddy_bear: teddy_bear,
|
||
broom: broom,
|
||
basket: basket,
|
||
roll_of_paper: roll_of_paper,
|
||
soap: soap,
|
||
sponge: sponge,
|
||
receipt: receipt,
|
||
nazar_amulet: nazar_amulet,
|
||
ballet_shoes: ballet_shoes,
|
||
"one-piece_swimsuit": "🩱",
|
||
briefs: briefs,
|
||
shorts: shorts,
|
||
thong_sandal: thong_sandal,
|
||
drop_of_blood: drop_of_blood,
|
||
adhesive_bandage: adhesive_bandage,
|
||
stethoscope: stethoscope,
|
||
"yo-yo": "🪀",
|
||
kite: kite,
|
||
parachute: parachute,
|
||
boomerang: boomerang,
|
||
magic_wand: magic_wand,
|
||
pinata: pinata,
|
||
nesting_dolls: nesting_dolls,
|
||
ringed_planet: ringed_planet,
|
||
chair: chair,
|
||
razor: razor,
|
||
axe: axe,
|
||
diya_lamp: diya_lamp,
|
||
banjo: banjo,
|
||
military_helmet: military_helmet,
|
||
accordion: accordion,
|
||
long_drum: long_drum,
|
||
coin: coin,
|
||
carpentry_saw: carpentry_saw,
|
||
screwdriver: screwdriver,
|
||
ladder: ladder,
|
||
hook: hook,
|
||
mirror: mirror,
|
||
window: window$1,
|
||
plunger: plunger,
|
||
sewing_needle: sewing_needle,
|
||
knot: knot,
|
||
bucket: bucket,
|
||
mouse_trap: mouse_trap,
|
||
toothbrush: toothbrush,
|
||
headstone: headstone,
|
||
placard: placard,
|
||
rock: rock,
|
||
fly: fly,
|
||
worm: worm,
|
||
beetle: beetle,
|
||
cockroach: cockroach,
|
||
potted_plant: potted_plant,
|
||
wood: wood,
|
||
feather: feather,
|
||
anatomical_heart: anatomical_heart,
|
||
lungs: lungs,
|
||
people_hugging: people_hugging,
|
||
blueberries: blueberries,
|
||
bell_pepper: bell_pepper,
|
||
olive: olive,
|
||
flatbread: flatbread,
|
||
tamale: tamale,
|
||
fondue: fondue,
|
||
teapot: teapot,
|
||
bangbang: bangbang,
|
||
interrobang: interrobang,
|
||
tm: tm,
|
||
information_source: information_source,
|
||
left_right_arrow: left_right_arrow,
|
||
arrow_up_down: arrow_up_down,
|
||
arrow_upper_left: arrow_upper_left,
|
||
arrow_upper_right: arrow_upper_right,
|
||
arrow_lower_right: arrow_lower_right,
|
||
arrow_lower_left: arrow_lower_left,
|
||
leftwards_arrow_with_hook: leftwards_arrow_with_hook,
|
||
arrow_right_hook: arrow_right_hook,
|
||
watch: watch,
|
||
hourglass: hourglass,
|
||
keyboard: keyboard,
|
||
eject: eject,
|
||
fast_forward: fast_forward,
|
||
rewind: rewind,
|
||
arrow_double_up: arrow_double_up,
|
||
arrow_double_down: arrow_double_down,
|
||
black_right_pointing_double_triangle_with_vertical_bar: black_right_pointing_double_triangle_with_vertical_bar,
|
||
black_left_pointing_double_triangle_with_vertical_bar: black_left_pointing_double_triangle_with_vertical_bar,
|
||
black_right_pointing_triangle_with_double_vertical_bar: black_right_pointing_triangle_with_double_vertical_bar,
|
||
alarm_clock: alarm_clock,
|
||
stopwatch: stopwatch,
|
||
timer_clock: timer_clock,
|
||
hourglass_flowing_sand: hourglass_flowing_sand,
|
||
double_vertical_bar: double_vertical_bar,
|
||
black_square_for_stop: black_square_for_stop,
|
||
black_circle_for_record: black_circle_for_record,
|
||
m: m,
|
||
black_small_square: black_small_square,
|
||
white_small_square: white_small_square,
|
||
arrow_forward: arrow_forward,
|
||
arrow_backward: arrow_backward,
|
||
white_medium_square: white_medium_square,
|
||
black_medium_square: black_medium_square,
|
||
white_medium_small_square: white_medium_small_square,
|
||
black_medium_small_square: black_medium_small_square,
|
||
sunny: sunny,
|
||
cloud: cloud,
|
||
umbrella: umbrella,
|
||
snowman: snowman,
|
||
comet: comet,
|
||
phone: phone,
|
||
telephone: telephone,
|
||
ballot_box_with_check: ballot_box_with_check,
|
||
shamrock: shamrock,
|
||
point_up: point_up,
|
||
skull_and_crossbones: skull_and_crossbones,
|
||
radioactive_sign: radioactive_sign,
|
||
biohazard_sign: biohazard_sign,
|
||
orthodox_cross: orthodox_cross,
|
||
star_and_crescent: star_and_crescent,
|
||
peace_symbol: peace_symbol,
|
||
yin_yang: yin_yang,
|
||
wheel_of_dharma: wheel_of_dharma,
|
||
white_frowning_face: white_frowning_face,
|
||
relaxed: relaxed,
|
||
female_sign: female_sign,
|
||
male_sign: male_sign,
|
||
gemini: gemini,
|
||
cancer: cancer,
|
||
leo: leo,
|
||
virgo: virgo,
|
||
libra: libra,
|
||
scorpius: scorpius,
|
||
chess_pawn: chess_pawn,
|
||
spades: spades,
|
||
clubs: clubs,
|
||
hearts: hearts,
|
||
diamonds: diamonds,
|
||
hotsprings: hotsprings,
|
||
recycle: recycle,
|
||
infinity: infinity,
|
||
wheelchair: wheelchair,
|
||
hammer_and_pick: hammer_and_pick,
|
||
crossed_swords: crossed_swords,
|
||
medical_symbol: medical_symbol,
|
||
staff_of_aesculapius: staff_of_aesculapius,
|
||
scales: scales,
|
||
alembic: alembic,
|
||
gear: gear,
|
||
atom_symbol: atom_symbol,
|
||
fleur_de_lis: fleur_de_lis,
|
||
warning: warning,
|
||
zap: zap,
|
||
transgender_symbol: transgender_symbol,
|
||
white_circle: white_circle,
|
||
black_circle: black_circle,
|
||
coffin: coffin,
|
||
funeral_urn: funeral_urn,
|
||
soccer: soccer,
|
||
baseball: baseball,
|
||
snowman_without_snow: snowman_without_snow,
|
||
partly_sunny: partly_sunny,
|
||
thunder_cloud_and_rain: thunder_cloud_and_rain,
|
||
ophiuchus: ophiuchus,
|
||
pick: pick,
|
||
helmet_with_white_cross: helmet_with_white_cross,
|
||
chains: chains,
|
||
no_entry: no_entry,
|
||
shinto_shrine: shinto_shrine,
|
||
church: church,
|
||
mountain: mountain,
|
||
umbrella_on_ground: umbrella_on_ground,
|
||
fountain: fountain,
|
||
golf: golf,
|
||
ferry: ferry,
|
||
boat: boat,
|
||
sailboat: sailboat,
|
||
skier: skier,
|
||
ice_skate: ice_skate,
|
||
"woman-bouncing-ball": "⛹️♀️",
|
||
"man-bouncing-ball": "⛹️♂️",
|
||
person_with_ball: person_with_ball,
|
||
tent: tent,
|
||
fuelpump: fuelpump,
|
||
scissors: scissors,
|
||
airplane: airplane,
|
||
email: email,
|
||
envelope: envelope,
|
||
fist: fist,
|
||
hand: hand,
|
||
raised_hand: raised_hand,
|
||
v: v,
|
||
writing_hand: writing_hand,
|
||
pencil2: pencil2,
|
||
black_nib: black_nib,
|
||
heavy_check_mark: heavy_check_mark,
|
||
heavy_multiplication_x: heavy_multiplication_x,
|
||
latin_cross: latin_cross,
|
||
star_of_david: star_of_david,
|
||
eight_spoked_asterisk: eight_spoked_asterisk,
|
||
eight_pointed_black_star: eight_pointed_black_star,
|
||
snowflake: snowflake,
|
||
sparkle: sparkle,
|
||
x: x,
|
||
negative_squared_cross_mark: negative_squared_cross_mark,
|
||
heavy_heart_exclamation_mark_ornament: heavy_heart_exclamation_mark_ornament,
|
||
heart_on_fire: heart_on_fire,
|
||
mending_heart: mending_heart,
|
||
heart: heart,
|
||
arrow_right: arrow_right,
|
||
curly_loop: curly_loop,
|
||
loop: loop,
|
||
arrow_heading_up: arrow_heading_up,
|
||
arrow_heading_down: arrow_heading_down,
|
||
arrow_left: arrow_left,
|
||
arrow_up: arrow_up,
|
||
arrow_down: arrow_down,
|
||
black_large_square: black_large_square,
|
||
white_large_square: white_large_square,
|
||
star: star,
|
||
o: o,
|
||
wavy_dash: wavy_dash,
|
||
part_alternation_mark: part_alternation_mark,
|
||
congratulations: congratulations,
|
||
secret: secret
|
||
};
|
||
|
||
/*jslint node: true*/
|
||
|
||
/**
|
||
* regex to parse emoji in a string - finds emoji, e.g. :coffee:
|
||
*/
|
||
var emojiNameRegex = /:([a-zA-Z0-9_\-\+]+):/g;
|
||
|
||
/**
|
||
* regex to trim whitespace
|
||
* use instead of String.prototype.trim() for IE8 support
|
||
*/
|
||
var trimSpaceRegex = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
||
|
||
/**
|
||
* Removes colons on either side
|
||
* of the string if present
|
||
* @param {string} str
|
||
* @return {string}
|
||
*/
|
||
function stripColons (str) {
|
||
var colonIndex = str.indexOf(':');
|
||
if (colonIndex > -1) {
|
||
// :emoji: (http://www.emoji-cheat-sheet.com/)
|
||
if (colonIndex === str.length - 1) {
|
||
str = str.substring(0, colonIndex);
|
||
return stripColons(str);
|
||
} else {
|
||
str = str.substr(colonIndex + 1);
|
||
return stripColons(str);
|
||
}
|
||
}
|
||
|
||
return str;
|
||
}
|
||
|
||
/**
|
||
* Adds colons to either side
|
||
* of the string
|
||
* @param {string} str
|
||
* @return {string}
|
||
*/
|
||
function wrapColons (str) {
|
||
return (typeof str === 'string' && str.length > 0) ? ':' + str + ':' : str;
|
||
}
|
||
|
||
/**
|
||
* Ensure that the word is wrapped in colons
|
||
* by only adding them, if they are not there.
|
||
* @param {string} str
|
||
* @return {string}
|
||
*/
|
||
function ensureColons (str) {
|
||
return (typeof str === 'string' && str[0] !== ':') ? wrapColons(str) : str;
|
||
}
|
||
|
||
// Non spacing mark, some emoticons have them. It's the 'Variant Form',
|
||
// which provides more information so that emoticons can be rendered as
|
||
// more colorful graphics. FE0E is a unicode text version, where as FE0F
|
||
// should be rendered as a graphical version. The code gracefully degrades.
|
||
var NON_SPACING_MARK = String.fromCharCode(65039); // 65039 - '️' - 0xFE0F;
|
||
var nonSpacingRegex = new RegExp(NON_SPACING_MARK, 'g');
|
||
|
||
// Remove the non-spacing-mark from the code, never send a stripped version
|
||
// to the client, as it kills graphical emoticons.
|
||
function stripNSB (code) {
|
||
return code.replace(nonSpacingRegex, '');
|
||
}
|
||
// Reversed hash table, where as emojiByName contains a { heart: '❤' }
|
||
// dictionary emojiByCode contains { ❤: 'heart' }. The codes are normalized
|
||
// to the text version.
|
||
var emojiByCode = Object.keys(emojiByName).reduce(function(h,k) {
|
||
h[stripNSB(emojiByName[k])] = k;
|
||
return h;
|
||
}, {});
|
||
|
||
/**
|
||
* Emoji namespace
|
||
*/
|
||
var Emoji = {
|
||
emoji: emojiByName,
|
||
};
|
||
|
||
/**
|
||
* get emoji code from name. return emoji code back if code is passed in.
|
||
* @param {string} emoji
|
||
* @return {string}
|
||
*/
|
||
Emoji._get = function _get (emoji) {
|
||
if (emojiByCode[stripNSB(emoji)]) {
|
||
return emoji;
|
||
} else if (emojiByName.hasOwnProperty(emoji)) {
|
||
return emojiByName[emoji];
|
||
}
|
||
|
||
return ensureColons(emoji);
|
||
};
|
||
|
||
/**
|
||
* get emoji code from :emoji: string or name
|
||
* @param {string} emoji
|
||
* @return {string}
|
||
*/
|
||
Emoji.get = function get (emoji) {
|
||
emoji = stripColons(emoji);
|
||
|
||
return Emoji._get(emoji);
|
||
};
|
||
|
||
/**
|
||
* find the emoji by either code or name
|
||
* @param {string} nameOrCode The emoji to find, either `coffee`, `:coffee:` or `☕`;
|
||
* @return {object}
|
||
*/
|
||
Emoji.find = function find (nameOrCode) {
|
||
return Emoji.findByName(nameOrCode) || Emoji.findByCode(nameOrCode);
|
||
};
|
||
|
||
/**
|
||
* find the emoji by name
|
||
* @param {string} name The emoji to find either `coffee` or `:coffee:`;
|
||
* @return {object}
|
||
*/
|
||
Emoji.findByName = function findByName (name) {
|
||
var stripped = stripColons(name);
|
||
var emoji = emojiByName[stripped];
|
||
|
||
return emoji ? ({ emoji: emoji, key: stripped }) : undefined;
|
||
};
|
||
|
||
/**
|
||
* find the emoji by code (emoji)
|
||
* @param {string} code The emoji to find; for example `☕` or `☔`
|
||
* @return {object}
|
||
*/
|
||
Emoji.findByCode = function findByCode (code) {
|
||
var stripped = stripNSB(code);
|
||
var name = emojiByCode[stripped];
|
||
|
||
// lookup emoji to ensure the Variant Form is returned
|
||
return name ? ({ emoji: emojiByName[name], key: name }) : undefined;
|
||
};
|
||
|
||
|
||
/**
|
||
* Check if an emoji is known by this library
|
||
* @param {string} nameOrCode The emoji to validate, either `coffee`, `:coffee:` or `☕`;
|
||
* @return {object}
|
||
*/
|
||
Emoji.hasEmoji = function hasEmoji (nameOrCode) {
|
||
return Emoji.hasEmojiByName(nameOrCode) || Emoji.hasEmojiByCode(nameOrCode);
|
||
};
|
||
|
||
/**
|
||
* Check if an emoji with given name is known by this library
|
||
* @param {string} name The emoji to validate either `coffee` or `:coffee:`;
|
||
* @return {object}
|
||
*/
|
||
Emoji.hasEmojiByName = function hasEmojiByName (name) {
|
||
var result = Emoji.findByName(name);
|
||
return !!result && result.key === stripColons(name);
|
||
};
|
||
|
||
/**
|
||
* Check if a given emoji is known by this library
|
||
* @param {string} code The emoji to validate; for example `☕` or `☔`
|
||
* @return {object}
|
||
*/
|
||
Emoji.hasEmojiByCode = function hasEmojiByCode (code) {
|
||
var result = Emoji.findByCode(code);
|
||
return !!result && stripNSB(result.emoji) === stripNSB(code);
|
||
};
|
||
|
||
/**
|
||
* get emoji name from code
|
||
* @param {string} emoji
|
||
* @param {boolean} includeColons should the result include the ::
|
||
* @return {string}
|
||
*/
|
||
Emoji.which = function which (emoji_code, includeColons) {
|
||
var code = stripNSB(emoji_code);
|
||
var word = emojiByCode[code];
|
||
|
||
return includeColons ? wrapColons(word) : word;
|
||
};
|
||
|
||
/**
|
||
* emojify a string (replace :emoji: with an emoji)
|
||
* @param {string} str
|
||
* @param {function} on_missing (gets emoji name without :: and returns a proper emoji if no emoji was found)
|
||
* @param {function} format (wrap the returned emoji in a custom element)
|
||
* @return {string}
|
||
*/
|
||
Emoji.emojify = function emojify (str, on_missing, format) {
|
||
if (!str) return '';
|
||
|
||
return str.split(emojiNameRegex) // parse emoji via regex
|
||
.map(function parseEmoji(s, i) {
|
||
// every second element is an emoji, e.g. "test :fast_forward:" -> [ "test ", "fast_forward" ]
|
||
if (i % 2 === 0) return s;
|
||
var emoji = Emoji._get(s);
|
||
var isMissing = emoji.indexOf(':') > -1;
|
||
|
||
if (isMissing && typeof on_missing === 'function') {
|
||
return on_missing(s);
|
||
}
|
||
|
||
if (!isMissing && typeof format === 'function') {
|
||
return format(emoji, s);
|
||
}
|
||
|
||
return emoji;
|
||
})
|
||
.join('') // convert back to string
|
||
;
|
||
};
|
||
|
||
/**
|
||
* return a random emoji
|
||
* @return {string}
|
||
*/
|
||
Emoji.random = function random () {
|
||
var emojiKeys = Object.keys(emojiByName);
|
||
var randomIndex = Math.floor(Math.random() * emojiKeys.length);
|
||
var key = emojiKeys[randomIndex];
|
||
var emoji = Emoji._get(key);
|
||
return { key: key, emoji: emoji };
|
||
};
|
||
|
||
/**
|
||
* return an collection of potential emoji matches
|
||
* @param {string} str
|
||
* @return {Array.<Object>}
|
||
*/
|
||
Emoji.search = function search (str) {
|
||
var emojiKeys = Object.keys(emojiByName);
|
||
var matcher = stripColons(str);
|
||
var matchingKeys = emojiKeys.filter(function(key) {
|
||
return key.toString().indexOf(matcher) === 0;
|
||
});
|
||
return matchingKeys.map(function(key) {
|
||
return {
|
||
key: key,
|
||
emoji: Emoji._get(key),
|
||
};
|
||
});
|
||
};
|
||
|
||
/**
|
||
* unemojify a string (replace emoji with :emoji:)
|
||
* @param {string} str
|
||
* @return {string}
|
||
*/
|
||
Emoji.unemojify = function unemojify (str) {
|
||
if (!str) return '';
|
||
var words = toArray_1(str);
|
||
|
||
return words.map(function(word) {
|
||
return Emoji.which(word, true) || word;
|
||
}).join('');
|
||
};
|
||
|
||
/**
|
||
* replace emojis with replacement value
|
||
* @param {string} str
|
||
* @param {function|string} the string or callback function to replace the emoji with
|
||
* @param {boolean} should trailing whitespaces be cleaned? Defaults false
|
||
* @return {string}
|
||
*/
|
||
Emoji.replace = function replace (str, replacement, cleanSpaces) {
|
||
if (!str) return '';
|
||
|
||
var replace = typeof replacement === 'function' ? replacement : function() { return replacement; };
|
||
var words = toArray_1(str);
|
||
|
||
var replaced = words.map(function(word, idx) {
|
||
var emoji = Emoji.findByCode(word);
|
||
|
||
if (emoji && cleanSpaces && words[idx + 1] === ' ') {
|
||
words[idx + 1] = '';
|
||
}
|
||
|
||
return emoji ? replace(emoji) : word;
|
||
}).join('');
|
||
|
||
return cleanSpaces ? replaced.replace(trimSpaceRegex, '') : replaced;
|
||
};
|
||
|
||
|
||
/**
|
||
* remove all emojis from a string
|
||
* @param {string} str
|
||
* @return {string}
|
||
*/
|
||
Emoji.strip = function strip (str) {
|
||
return Emoji.replace(str, '', true);
|
||
};
|
||
|
||
var emoji = Emoji;
|
||
|
||
var nodeEmoji = emoji;
|
||
|
||
class ZoottelkeeperPlugin extends obsidian.Plugin {
|
||
constructor() {
|
||
super(...arguments);
|
||
this.triggerUpdateIndexFile = obsidian.debounce(this.keepTheZooClean.bind(this, false), 3000, true);
|
||
this.generateIndexContents = async (indexFile) => {
|
||
const templateFile = this.app.vault.getAbstractFileByPath(this.settings.templateFile);
|
||
let currentTemplateContent = '';
|
||
if (templateFile instanceof obsidian.TFile) {
|
||
currentTemplateContent = await this.app.vault.cachedRead(templateFile);
|
||
}
|
||
let indexTFile = this.app.vault.getAbstractFileByPath(indexFile) ||
|
||
(await this.app.vault.create(indexFile, currentTemplateContent));
|
||
if (indexTFile && indexTFile instanceof obsidian.TFile)
|
||
return this.generateIndexContent(indexTFile);
|
||
};
|
||
this.generateGeneralIndexContent = (options) => {
|
||
return options.items
|
||
.reduce((acc, curr) => {
|
||
acc.push(options.func(curr.path, this.isFile(curr)));
|
||
return acc;
|
||
}, options.initValue);
|
||
};
|
||
this.generateIndexContent = async (indexTFile) => {
|
||
let indexContent;
|
||
// get subFolders
|
||
//const subFolders = indexTFile.parent.children.filter(item => !this.isFile(item));
|
||
//const files = indexTFile.parent.children.filter(item => this.isFile(item));
|
||
const splitItems = indexTFile.parent.children.reduce((acc, curr) => {
|
||
if (this.isFile(curr))
|
||
acc['files'].push(curr);
|
||
else
|
||
acc['subFolders'].push(curr);
|
||
return acc;
|
||
}, { subFolders: [], files: [] });
|
||
indexContent = this.generateGeneralIndexContent({
|
||
items: splitItems.subFolders,
|
||
func: this.generateIndexFolderItem,
|
||
initValue: [],
|
||
});
|
||
indexContent = this.generateGeneralIndexContent({
|
||
items: splitItems.files.filter(file => file.name !== indexTFile.name),
|
||
func: this.generateIndexItem,
|
||
initValue: indexContent,
|
||
});
|
||
try {
|
||
if (indexTFile instanceof obsidian.TFile) {
|
||
let currentContent = await this.app.vault.cachedRead(indexTFile);
|
||
if (currentContent === '') {
|
||
const templateFile = this.app.vault.getAbstractFileByPath(this.settings.templateFile);
|
||
if (templateFile instanceof obsidian.TFile) {
|
||
currentContent = await this.app.vault.cachedRead(templateFile);
|
||
}
|
||
}
|
||
const updatedFrontmatter = hasFrontmatter(currentContent, this.settings.frontMatterSeparator)
|
||
? updateFrontmatter(this.settings, currentContent)
|
||
: '';
|
||
currentContent = removeFrontmatter(currentContent, this.settings.frontMatterSeparator);
|
||
const updatedIndexContent = updateIndexContent(this.settings.sortOrder, currentContent, indexContent);
|
||
await this.app.vault.modify(indexTFile, `${updatedFrontmatter}${updatedIndexContent}`);
|
||
}
|
||
else {
|
||
throw new Error('Creation index as folder is not supported');
|
||
}
|
||
}
|
||
catch (e) {
|
||
console.warn('Error during deletion/creation of index files', e);
|
||
}
|
||
};
|
||
this.setEmojiPrefix = (isFile) => {
|
||
return this.settings.enableEmojis
|
||
? isFile
|
||
? nodeEmoji.get(this.settings.fileEmoji)
|
||
: nodeEmoji.get(this.settings.folderEmoji)
|
||
: '';
|
||
};
|
||
this.generateFormattedIndexItem = (path, isFile) => {
|
||
const realFileName = `${path.split('|')[0]}.md`;
|
||
const fileAbstrPath = this.app.vault.getAbstractFileByPath(realFileName);
|
||
const embedSubIndexCharacter = this.settings.embedSubIndex && this.isIndexFile(fileAbstrPath) ? '!' : '';
|
||
switch (this.settings.indexItemStyle) {
|
||
case IndexItemStyle.PureLink:
|
||
return `${this.setEmojiPrefix(isFile)} ${embedSubIndexCharacter}[[${path}]]`;
|
||
case IndexItemStyle.List:
|
||
return `- ${this.setEmojiPrefix(isFile)} ${embedSubIndexCharacter}[[${path}]]`;
|
||
case IndexItemStyle.Checkbox:
|
||
return `- [ ] ${this.setEmojiPrefix(isFile)} ${embedSubIndexCharacter}[[${path}]]`;
|
||
}
|
||
};
|
||
this.generateIndexItem = (path, isFile) => {
|
||
let internalFormattedIndex;
|
||
if (this.settings.cleanPathBoolean) {
|
||
const cleanPath = (path.endsWith(".md"))
|
||
? path.replace(/\.md$/, '')
|
||
: path;
|
||
const fileName = cleanPath.split("/").pop();
|
||
internalFormattedIndex = `${cleanPath}|${fileName}`;
|
||
}
|
||
else {
|
||
internalFormattedIndex = path;
|
||
}
|
||
return this.generateFormattedIndexItem(internalFormattedIndex, isFile);
|
||
};
|
||
this.generateIndexFolderItem = (path, isFile) => {
|
||
return this.generateIndexItem(this.getInnerIndexFilePath(path), isFile);
|
||
};
|
||
this.getInnerIndexFilePath = (folderPath) => {
|
||
const folderName = this.getFolderName(folderPath);
|
||
return `${folderPath}/${this.settings.indexPrefix}${folderName}.md`;
|
||
};
|
||
this.getIndexFilePath = (filePath) => {
|
||
const fileAbstrPath = this.app.vault.getAbstractFileByPath(filePath);
|
||
if (this.isIndexFile(fileAbstrPath))
|
||
return null;
|
||
let parentPath = this.getParentFolder(filePath);
|
||
// if its parent does not exits, then its a moved subfolder, so it should not be updated
|
||
const parentTFolder = this.app.vault.getAbstractFileByPath(parentPath);
|
||
if (parentPath && parentPath !== '') {
|
||
if (!parentTFolder)
|
||
return undefined;
|
||
parentPath = `${parentPath}/`;
|
||
}
|
||
const parentName = this.getParentFolderName(filePath);
|
||
return `${parentPath}${this.settings.indexPrefix}${parentName}.md`;
|
||
};
|
||
this.removeDisallowedFoldersIndexes = async (indexFiles) => {
|
||
for (const folder of this.settings.foldersExcluded.split('\n').map(f => f.trim())) {
|
||
const innerIndex = this.getInnerIndexFilePath(folder);
|
||
indexFiles.delete(innerIndex);
|
||
}
|
||
};
|
||
this.cleanDisallowedFolders = async () => {
|
||
for (const folder of this.settings.foldersExcluded.split('\n').map(f => f.trim())) {
|
||
const innerIndex = this.getInnerIndexFilePath(folder);
|
||
const indexTFile = this.app.vault.getAbstractFileByPath(innerIndex);
|
||
await this.app.vault.delete(indexTFile);
|
||
}
|
||
};
|
||
this.getParentFolder = (filePath) => {
|
||
const fileFolderArray = filePath.split('/');
|
||
fileFolderArray.pop();
|
||
return fileFolderArray.join('/');
|
||
};
|
||
this.getParentFolderName = (filePath) => {
|
||
const parentFolder = this.getParentFolder(filePath);
|
||
const fileFolderArray = parentFolder.split('/');
|
||
return fileFolderArray[0] !== ''
|
||
? fileFolderArray[fileFolderArray.length - 1]
|
||
: this.app.vault.getName();
|
||
};
|
||
this.getFolderName = (folderPath) => {
|
||
const folderArray = folderPath.split('/');
|
||
return (folderArray[0] !== '') ? folderArray[folderArray.length - 1] : this.app.vault.getName();
|
||
};
|
||
this.isIndexFile = (item) => {
|
||
return this.isFile(item)
|
||
&& (this.settings.indexPrefix === ''
|
||
? item.name === item.parent.name
|
||
: item.name.startsWith(this.settings.indexPrefix));
|
||
};
|
||
this.isFile = (item) => {
|
||
return item instanceof obsidian.TFile;
|
||
};
|
||
}
|
||
async onload() {
|
||
await this.loadSettings();
|
||
this.app.workspace.onLayoutReady(async () => {
|
||
this.loadVault();
|
||
console.debug(`Vault in files: ${JSON.stringify(this.app.vault.getMarkdownFiles().map((f) => f.path))}`);
|
||
});
|
||
this.registerEvent(this.app.vault.on('create', this.triggerUpdateIndexFile));
|
||
this.registerEvent(this.app.vault.on('delete', this.triggerUpdateIndexFile));
|
||
this.registerEvent(this.app.vault.on('rename', this.triggerUpdateIndexFile));
|
||
this.addSettingTab(new ZoottelkeeperPluginSettingTab(this.app, this));
|
||
}
|
||
loadVault() {
|
||
this.lastVault = new Set(this.app.vault.getMarkdownFiles().map((file) => file.path));
|
||
}
|
||
async keepTheZooClean(triggeredManually) {
|
||
console.debug('keeping the zoo clean...');
|
||
if (this.lastVault || triggeredManually) {
|
||
const vaultFilePathsSet = new Set(this.app.vault.getMarkdownFiles().map((file) => file.path));
|
||
try {
|
||
// getting the changed files using symmetric diff
|
||
let changedFiles = new Set([
|
||
...Array.from(vaultFilePathsSet).filter((currentFile) => !this.lastVault.has(currentFile)),
|
||
...Array.from(this.lastVault).filter((currentVaultFile) => !vaultFilePathsSet.has(currentVaultFile)),
|
||
]);
|
||
console.debug(`changedFiles: ${JSON.stringify(Array.from(changedFiles))}`);
|
||
// getting index files to be updated
|
||
const indexFiles2BUpdated = new Set();
|
||
for (const changedFile of Array.from(changedFiles)) {
|
||
const indexFilePath = this.getIndexFilePath(changedFile);
|
||
if (indexFilePath
|
||
&& isInAllowedFolder(this.settings, indexFilePath)
|
||
&& !isInDisAllowedFolder(this.settings, indexFilePath)) {
|
||
indexFiles2BUpdated.add(indexFilePath);
|
||
}
|
||
// getting the parents' index notes of each changed file in order to update their links as well (hierarhical backlinks)
|
||
const parentIndexFilePath = this.getIndexFilePath(this.getParentFolder(changedFile));
|
||
if (parentIndexFilePath)
|
||
indexFiles2BUpdated.add(parentIndexFilePath);
|
||
}
|
||
console.debug(`Index files to be updated: ${JSON.stringify(Array.from(indexFiles2BUpdated))}`);
|
||
await this.removeDisallowedFoldersIndexes(indexFiles2BUpdated);
|
||
// update index files
|
||
for (const indexFile of Array.from(indexFiles2BUpdated)) {
|
||
await this.generateIndexContents(indexFile);
|
||
}
|
||
await this.cleanDisallowedFolders();
|
||
}
|
||
catch (e) { }
|
||
}
|
||
this.lastVault = new Set(this.app.vault.getMarkdownFiles().map((file) => file.path));
|
||
}
|
||
onunload() {
|
||
console.debug('unloading plugin');
|
||
}
|
||
async loadSettings() {
|
||
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
|
||
}
|
||
async saveSettings() {
|
||
await this.saveData(this.settings);
|
||
}
|
||
}
|
||
class ZoottelkeeperPluginSettingTab extends obsidian.PluginSettingTab {
|
||
constructor(app, plugin) {
|
||
super(app, plugin);
|
||
this.plugin = plugin;
|
||
}
|
||
display() {
|
||
let { containerEl } = this;
|
||
containerEl.empty();
|
||
containerEl.createEl('h2', { text: 'Zoottelkeeper Settings' });
|
||
containerEl.createEl('h3', { text: 'Folder Settings' });
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Folders included')
|
||
.setDesc('Specify the folders to be handled by Zoottelkeeper. They must be absolute paths starting from the root vault, one per line, example: Notes/ <enter> Articles/, which will include Notes and Articles folder in the root folder. Empty list means all of the vault will be handled except the excluded folders. \'*\' can be added to the end, to include the folder\'s subdirectories recursively, e.g. Notes/* <enter> Articles/')
|
||
.addTextArea((text) => text
|
||
.setPlaceholder('')
|
||
.setValue(this.plugin.settings.foldersIncluded)
|
||
.onChange(async (value) => {
|
||
this.plugin.settings.foldersIncluded = value
|
||
.replace(/,/g, '\n')
|
||
.split('\n')
|
||
.map(folder => {
|
||
const f = folder.trim();
|
||
return f.startsWith('/')
|
||
? f.substring(1)
|
||
: f;
|
||
})
|
||
.join('\n');
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Folders excluded')
|
||
.setDesc('Specify the folders NOT to be handled by Zoottelkeeper. They must be absolute paths starting from the root vault, one per line. Example: "Notes/ <enter> Articles/ ", it will exclude Notes and Articles folder in the root folder. * can be added to the end, to exclude the folder\'s subdirectories recursively.')
|
||
.addTextArea((text) => text
|
||
.setPlaceholder('')
|
||
.setValue(this.plugin.settings.foldersExcluded)
|
||
.onChange(async (value) => {
|
||
this.plugin.settings.foldersExcluded = value
|
||
.replace(/,/g, '\n')
|
||
.split('\n')
|
||
.map(folder => {
|
||
const f = folder.trim();
|
||
return f.startsWith('/')
|
||
? f.substring(1)
|
||
: f;
|
||
})
|
||
.join('\n');
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Trigger indexing')
|
||
.setDesc('By pushing this button you can trigger the indexing on folders match your include/exclude criterias currently set.')
|
||
.addButton((btn) => {
|
||
btn.setButtonText('Generate index now');
|
||
btn.onClick(async () => {
|
||
this.plugin.lastVault = new Set();
|
||
await this.plugin.keepTheZooClean(true);
|
||
});
|
||
});
|
||
containerEl.createEl('h3', { text: 'General Settings' });
|
||
new obsidian.Setting(containerEl)
|
||
.setName("Clean Files")
|
||
.setDesc("This enables you to only show the files without path and '.md' ending in preview mode.")
|
||
.addToggle((t) => {
|
||
t.setValue(this.plugin.settings.cleanPathBoolean);
|
||
t.onChange(async (v) => {
|
||
this.plugin.settings.cleanPathBoolean = v;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Index links Order')
|
||
.setDesc('Select the order of the links to be sorted in the index files.')
|
||
.addDropdown(async (dropdown) => {
|
||
dropdown.addOption(SortOrder.ASC, 'Ascending');
|
||
dropdown.addOption(SortOrder.DESC, 'Descending');
|
||
dropdown.setValue(this.plugin.settings.sortOrder);
|
||
dropdown.onChange(async (option) => {
|
||
this.plugin.settings.sortOrder = option;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
new obsidian.Setting(containerEl)
|
||
.setName('List Style')
|
||
.setDesc('Select the style of the index-list.')
|
||
.addDropdown(async (dropdown) => {
|
||
dropdown.addOption(IndexItemStyle.PureLink, 'Pure Obsidian link');
|
||
dropdown.addOption(IndexItemStyle.List, 'Listed link');
|
||
dropdown.addOption(IndexItemStyle.Checkbox, 'Checkboxed link');
|
||
dropdown.setValue(this.plugin.settings.indexItemStyle);
|
||
dropdown.onChange(async (option) => {
|
||
console.debug('Chosen index item style: ' + option);
|
||
this.plugin.settings.indexItemStyle = option;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Embed sub-index content in preview')
|
||
.setDesc("If you enable this, the plugin will embed the sub-index content in preview mode.")
|
||
.addToggle((t) => {
|
||
t.setValue(this.plugin.settings.embedSubIndex);
|
||
t.onChange(async (v) => {
|
||
this.plugin.settings.embedSubIndex = v;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
// index prefix
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Index Prefix')
|
||
.setDesc('Per default the file is named after your folder, but you can prefix it here.')
|
||
.addText((text) => text
|
||
.setPlaceholder('')
|
||
.setValue(this.plugin.settings.indexPrefix)
|
||
.onChange(async (value) => {
|
||
console.debug('Index prefix: ' + value);
|
||
this.plugin.settings.indexPrefix = value;
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Template file')
|
||
.setDesc('Set your template file\'s absolute path like "templates/zoottel_template.md"')
|
||
.addText((text) => text
|
||
.setPlaceholder('')
|
||
.setValue(this.plugin.settings.templateFile)
|
||
.onChange(async (value) => {
|
||
console.debug('Template file: ' + value);
|
||
this.plugin.settings.templateFile = value;
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Frontmatter separator')
|
||
.setDesc('It specifies the separator string generated before and after the frontmatter, by default its ---')
|
||
.addText((text) => text
|
||
.setPlaceholder('')
|
||
.setValue(this.plugin.settings.frontMatterSeparator)
|
||
.onChange(async (value) => {
|
||
this.plugin.settings.frontMatterSeparator = value;
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
containerEl.createEl('h4', { text: 'Meta Tags' });
|
||
// Enabling Meta Tags
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Enable Meta Tags')
|
||
.setDesc("You can add Meta Tags at the top of your index-file. This is useful when you're using the index files as MOCs.")
|
||
.addToggle((t) => {
|
||
t.setValue(this.plugin.settings.indexTagBoolean);
|
||
t.onChange(async (v) => {
|
||
this.plugin.settings.indexTagBoolean = v;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
// setting the meta tag value
|
||
const metaTagsSetting = new obsidian.Setting(containerEl)
|
||
.setName('Set Meta Tags')
|
||
.setDesc('You can add one or multiple tags to your index-files! There is no need to use "#", just use the exact value of the tags\' separator specified below between the tags.')
|
||
.addText((text) => text
|
||
.setPlaceholder('moc')
|
||
.setValue(this.plugin.settings.indexTagValue)
|
||
.onChange(async (value) => {
|
||
this.plugin.settings.indexTagValue = value;
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Set the tag\'s label in frontmatter')
|
||
.setDesc('Please specify the label of the tags in frontmatter (the text before the colon ):')
|
||
.addText((text) => text
|
||
.setPlaceholder('tags')
|
||
.setValue(this.plugin.settings.indexTagLabel)
|
||
.onChange(async (value) => {
|
||
this.plugin.settings.indexTagLabel = value;
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Set the tag\'s separator in Frontmatter')
|
||
.setDesc('Please specify the separator characters that distinguish the tags in Frontmatter:')
|
||
.addText((text) => text
|
||
.setPlaceholder(', ')
|
||
.setValue(this.plugin.settings.indexTagSeparator)
|
||
.onChange(async (value) => {
|
||
this.plugin.settings.indexTagSeparator = value;
|
||
await this.plugin.saveSettings();
|
||
}));
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Add square brackets around each tags')
|
||
.setDesc("If you enable this, the plugin will put square brackets around the tags set.")
|
||
.addToggle((t) => {
|
||
t.setValue(this.plugin.settings.addSquareBrackets);
|
||
t.onChange(async (v) => {
|
||
this.plugin.settings.addSquareBrackets = v;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
containerEl.createEl('h4', { text: 'Emojis' });
|
||
// Enabling Meta Tags
|
||
new obsidian.Setting(containerEl)
|
||
.setName('Enable Emojis')
|
||
.setDesc("You can set an emoji at the beginning of each index item depending on its type (file or folder). If multiple emojis matches, the first one will be stored.")
|
||
.addToggle((t) => {
|
||
t.setValue(this.plugin.settings.enableEmojis);
|
||
t.onChange(async (v) => {
|
||
this.plugin.settings.enableEmojis = v;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
let emojiFolderDesc = 'Set an emoji for folders:';
|
||
if (this.plugin.settings.folderEmoji) {
|
||
const setFolderEmoji = nodeEmoji.search(this.plugin.settings.folderEmoji);
|
||
emojiFolderDesc = `Matching Options:${setFolderEmoji[0].emoji} (${setFolderEmoji[0].key})`;
|
||
}
|
||
const emojiForFoldersSetting = new obsidian.Setting(containerEl)
|
||
.setName('Emojis')
|
||
.setDesc(emojiFolderDesc)
|
||
.addText((text) => text.setPlaceholder('card_index_dividers')
|
||
.setValue(this.plugin.settings.folderEmoji.replace(/:/g, ''))
|
||
.onChange(async (value) => {
|
||
if (value !== '') {
|
||
const emojiOptions = nodeEmoji.search(value);
|
||
emojiForFoldersSetting.setDesc(`Matching Options:${emojiOptions.map(emojOp => emojOp.emoji + "(" + emojOp.key + ")")}`);
|
||
if (emojiOptions.length > 0) {
|
||
this.plugin.settings.folderEmoji = `:${emojiOptions[0].key}:`;
|
||
await this.plugin.saveSettings();
|
||
}
|
||
}
|
||
else {
|
||
emojiForFoldersSetting.setDesc('Set an emoji for folders:');
|
||
}
|
||
}));
|
||
let emojiFileDesc = 'Set an emoji for files:';
|
||
if (this.plugin.settings.fileEmoji) {
|
||
const setFileEmoji = nodeEmoji.search(this.plugin.settings.fileEmoji);
|
||
emojiFileDesc = `Matching Options:${setFileEmoji[0].emoji} (${setFileEmoji[0].key})`;
|
||
}
|
||
const emojiForFilesSetting = new obsidian.Setting(containerEl)
|
||
.setName('Emojis')
|
||
.setDesc(emojiFileDesc)
|
||
.addText((text) => text.setPlaceholder('page_facing_up')
|
||
.setValue(this.plugin.settings.fileEmoji.replace(/:/g, ''))
|
||
.onChange(async (value) => {
|
||
if (value !== '') {
|
||
const emojiOptions = nodeEmoji.search(value);
|
||
emojiForFilesSetting.setDesc(`Matching Options:${emojiOptions.map(emojOp => emojOp.emoji + "(" + emojOp.key + ")")}`);
|
||
if (emojiOptions.length > 0) {
|
||
this.plugin.settings.fileEmoji = `:${emojiOptions[0].key}:`;
|
||
await this.plugin.saveSettings();
|
||
}
|
||
}
|
||
else {
|
||
emojiForFilesSetting.setDesc('Set an emoji for files:');
|
||
}
|
||
}));
|
||
}
|
||
}
|
||
|
||
module.exports = ZoottelkeeperPlugin;
|
||
|
||
|
||
/* nosourcemap */ |