// Set up initial (hidden) spoilers.
spoilerNode.replaceWith(spoilertextify(
spoilerNode.getAttribute('content'),
- { document: statusDoc },
+ { document: statusDoc, emojos: emojiMap },
));
});
onToggleSpoilerText (status, oldBody, spoilerElement, intl, open) {
spoilerElement.replaceWith(spoilertextify(
- spoilerElement.querySelector('.spoilertext--content').textContent,
+ spoilerElement.getAttribute('data-spoilertext-content'),
{
+ emojos: status.get('emojis').reduce((obj, emoji) => {
+ obj[`:${emoji.get('shortcode')}:`] = emoji.toJS();
+ return obj;
+ }, {}),
intl,
open: open == null
? !spoilerElement.classList.contains('open')
handleToggleSpoilerText = (status, oldBody, spoilerElement, intl, open) => {
spoilerElement.replaceWith(spoilertextify(
- spoilerElement.querySelector('.spoilertext--content').textContent,
+ spoilerElement.getAttribute('data-spoilertext-content'),
{
+ emojos: status.get('emojis').reduce((obj, emoji) => {
+ obj[`:${emoji.get('shortcode')}:`] = emoji.toJS();
+ return obj;
+ }, {}),
intl,
open: open == null
? !spoilerElement.classList.contains('open')
background: $base-shadow-color;
user-select: none;
pointer-events: none;
+
+ img { visibility: hidden }
}
.spoilertext--span { white-space: nowrap }
import { defineMessages } from 'react-intl';
+import emojify from 'flavours/glitch/util/emoji';
const messages = defineMessages({
spoilerHidden: {
*/
export default (text, options) => {
const doc = options?.document || document;
+ const emojiMap = options?.emojos || {};
const { intl, open } = options;
const result = doc.createElement('span');
result.className = open ? 'spoilertext open' : 'spoilertext';
+ result.setAttribute('data-spoilertext-content', text);
if (!open) {
const accessibleDescription = doc.createElement('span');
accessibleDescription.className = 'spoilertext--screenreader-only';
textElt.className = 'spoilertext--content';
textElt.setAttribute('aria-hidden', open ? 'false' : 'true');
textElt.textContent = text;
+ textElt.innerHTML = emojify(textElt.innerHTML, emojiMap);
const togglerSpan = doc.createElement('span');
togglerSpan.className = 'spoilertext--span';
const togglerButton = doc.createElement('button');