munar-plugin-triggers
Version:
Munar plugin for sharing reaction GIFs.
91 lines (75 loc) • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.renderTriggers = renderTriggers;
var _nanohtml = _interopRequireDefault(require("nanohtml"));
var _uWaveParseChatMarkup = _interopRequireDefault(require("u-wave-parse-chat-markup"));
var _nodeEmoji = _interopRequireDefault(require("node-emoji"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function Markup(text) {
return compile((0, _uWaveParseChatMarkup.default)(text));
function compile(node) {
if (typeof node === 'string') return node;
if (Array.isArray(node)) return node.map(compile);
switch (node.type) {
case 'mention':
return `@${node.user || node.group}`;
case 'link':
return _nanohtml.default`<a class="link dim light-pink" href=${node.href}>${node.text}</a>`;
case 'emoji':
return _nodeEmoji.default.get(node.name) || `:${node.name}:`;
case 'italic':
return _nanohtml.default`<i>${compile(node.content)}</i>`;
case 'bold':
return _nanohtml.default`<b>${compile(node.content)}</b>`;
case 'strike':
return _nanohtml.default`<s>${compile(node.content)}</s>`;
case 'code':
return _nanohtml.default`<span class="code">${compile(node.content)}</span>`;
return compile(node.content);
}
}
}
function TriggerRow({
trigger,
triggerCharacter
}) {
return _nanohtml.default`
<tr class="stripe-dark">
<td class="pv2 ph3 trigger code">
${triggerCharacter}${trigger._id}
</td>
<td class="pv2 ph3 response">
${Markup(trigger.response)}
</td>
</tr>
`;
}
function renderTriggers({
triggerCharacter,
triggers
}) {
return _nanohtml.default`
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://unpkg.com/tachyons@4.6.1/css/tachyons.min.css">
</head>
<body class="bg-dark-gray near-white mh5 mv3">
<table class="collapse" style="margin: auto">
<thead><tr>
<th class="pv2 ph3 ttu">Trigger</th>
<th class="pv2 ph3 ttu">Response</th>
</tr></thead>
<tbody>
${triggers.map(trigger => TriggerRow({
trigger,
triggerCharacter
}))}
</tbody>
</table>
</body>
</html>
`.toString();
}