@atlaskit/editor-wikimarkup-transformer
Version:
Wiki markup transformer for JIRA and Confluence
183 lines (180 loc) • 4.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.wikiToAdfEmojiMapping = exports.emoji = exports.adfEmojiItems = void 0;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var emptyOrSpecialCharRegex = new RegExp(/^$|[^A-Za-z0-9]/);
var emoji = exports.emoji = function emoji(_ref) {
var input = _ref.input,
position = _ref.position,
schema = _ref.schema;
var substring = input.substring(position);
/**
* The length of wikimakrup emoji test ranges from 2 to 9 characters at the time of writing.
*/
for (var i = 2; i <= 9 && i <= substring.length; ++i) {
var candidateText = substring.substring(0, i);
var emojiId = wikiToAdfEmojiMapping[candidateText];
// Is current candidate an emoji AND next character empty string any special character?
if (emojiId && emptyOrSpecialCharRegex.test(substring.charAt(i))) {
return {
type: 'pmnode',
nodes: [schema.nodes.emoji.createChecked(adfEmojiItems[emojiId])],
length: i
};
}
}
return {
type: 'text',
text: substring.substr(0, 1),
length: 1
};
};
var adfEmojiItems = exports.adfEmojiItems = {
'1f642': {
id: '1f642',
shortName: ':slight_smile:',
text: '🙂'
},
'1f61e': {
id: '1f61e',
shortName: ':disappointed:',
text: '😞'
},
'1f61b': {
id: '1f61b',
shortName: ':stuck_out_tongue:',
text: '😛'
},
'1f603': {
id: '1f603',
shortName: ':smiley:',
text: '😃'
},
'1f609': {
id: '1f609',
shortName: ':wink:',
text: '😉'
},
'1f44d': {
id: '1f44d',
shortName: ':thumbsup:',
text: '👍'
},
'1f44e': {
id: '1f44e',
shortName: ':thumbsdown:',
text: '👎'
},
'atlassian-info': {
id: 'atlassian-info',
shortName: ':info:',
text: ':info:'
},
'atlassian-check_mark': {
id: 'atlassian-check_mark',
shortName: ':check_mark:',
text: ':check_mark:'
},
'atlassian-cross_mark': {
id: 'atlassian-cross_mark',
shortName: ':cross_mark:',
text: ':cross_mark:'
},
'atlassian-warning': {
id: 'atlassian-warning',
shortName: ':warning:',
text: ':warning:'
},
'atlassian-plus': {
id: 'atlassian-plus',
shortName: ':plus:',
text: ':plus:'
},
'atlassian-minus': {
id: 'atlassian-minus',
shortName: ':minus:',
text: ':minus:'
},
'atlassian-question_mark': {
id: 'atlassian-question_mark',
shortName: ':question:',
text: ':question:'
},
'atlassian-light_bulb_on': {
id: 'atlassian-light_bulb_on',
shortName: ':light_bulb_on:',
text: ':light_bulb_on:'
},
'atlassian-light_bulb_off': {
id: 'atlassian-light_bulb_off',
shortName: ':light_bulb_off:',
text: ':light_bulb_off:'
},
'atlassian-yellow_star': {
id: 'atlassian-yellow_star',
shortName: ':yellow_star:',
text: ':yellow_star:'
},
'atlassian-red_star': {
id: 'atlassian-red_star',
shortName: ':red_star:',
text: ':red_star:'
},
'atlassian-green_star': {
id: 'atlassian-green_star',
shortName: ':green_star:',
text: ':green_star:'
},
'atlassian-blue_star': {
id: 'atlassian-blue_star',
shortName: ':blue_star:',
text: ':blue_star:'
},
'atlassian-flag_on': {
id: 'atlassian-flag_on',
shortName: ':flag_on:',
text: ':flag_on:'
},
'atlassian-flag_off': {
id: 'atlassian-flag_off',
shortName: ':flag_off:',
text: ':flag_off:'
}
};
var wikiToAdfEmojiMapping = exports.wikiToAdfEmojiMapping = {
':)': '1f642',
':-)': '1f642',
':(': '1f61e',
':-(': '1f61e',
':P': '1f61b',
':-P': '1f61b',
':p': '1f61b',
':-p': '1f61b',
':D': '1f603',
':-D': '1f603',
';)': '1f609',
';-)': '1f609',
'(y)': '1f44d',
'(n)': '1f44e',
'(i)': 'atlassian-info',
'(/)': 'atlassian-check_mark',
'(x)': 'atlassian-cross_mark',
'(!)': 'atlassian-warning',
'(+)': 'atlassian-plus',
'(-)': 'atlassian-minus',
'(?)': 'atlassian-question_mark',
'(on)': 'atlassian-light_bulb_on',
'(off)': 'atlassian-light_bulb_off',
'(*)': 'atlassian-yellow_star',
'(*y)': 'atlassian-yellow_star',
'(*r)': 'atlassian-red_star',
'(*g)': 'atlassian-green_star',
'(*b)': 'atlassian-blue_star',
'(flag)': 'atlassian-flag_on',
'(flagoff)': 'atlassian-flag_off'
};