![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-acomp/js/tokenizeiput/tiutils.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tokenizeMessageText = tokenizeMessageText; exports.findNextTextNode = findNextTextNode; exports.findPrevTextNode = findPrevTextNode; exports.text2ContentElements = text2ContentElements; exports.isToken = exports.isTokenText = exports.getLastTextNode = exports.getFirstTextNode = exports.isNewLine = exports.isText = void 0; var _EmojiAnims = require("../EmojiAnims"); var _ACore = require("../../ACore"); var _TITextController = require("./TITextController"); function tokenizeMessageText(text) { var emojis = _EmojiAnims.EmojiAnimByIdent; var splitter = Object.keys(_EmojiAnims.EmojiAnimByIdent).concat(['\n']); var tagTokens = text.match(/@\[id:\d+]/g) || []; var otherTokens = text.split(/@\[id:\d+]/g); var tokens = otherTokens.reduce((ac, cr, i) => { ac.push(cr); if (i < tagTokens.length) ac.push(tagTokens[i]); return ac; }, []); tokens = splitter.reduce((chain, splitter) => { return chain.reduce((ac, token) => { var subChain = token.split(splitter); for (var i = 0; i < subChain.length; ++i) { if (subChain[i]) { ac.push(subChain[i]); } if (i + 1 < subChain.length) { ac.push(splitter); } } return ac; }, []); }, tokens); tokens = tokens.map(text => { var tagId; if (text === '\n') { return { type: 'NEW_LINE' }; } else if (emojis[text]) { return { type: 'EMOJI', value: text }; } else if (text.match(/^@\[id:\d+]$/)) { tagId = text.substring(5, text.length - 1); return { type: "TAG", value: tagId }; } else return { type: 'TEXT', value: text }; }); return tokens; } var isText = node => { return node && node.nodeType === Node.TEXT_NODE; }; exports.isText = isText; var isNewLine = node => { return node && node.tagName === 'BR'; }; /*** * * @param {Text|AElement}node * @returns {null|*} */ exports.isNewLine = isNewLine; var getFirstTextNode = node => { if (node.nodeType === Node.TEXT_NODE || node.tagName === 'BR') return node; var nodes = node.childNodes; var res = null; for (var i = 0; i < nodes.length && !res; ++i) { res = res || getFirstTextNode(nodes[i]); } return res; }; exports.getFirstTextNode = getFirstTextNode; var getLastTextNode = node => { if (node.nodeType === Node.TEXT_NODE || node.tagName === 'BR') return node; var nodes = node.childNodes; var res = null; for (var i = nodes.length - 1; i > 0 && !res; --i) { res = res || getLastTextNode(node); } return res; }; exports.getLastTextNode = getLastTextNode; var isTokenText = node => { if (node.nodeType !== Node.TEXT_NODE) return false; return isToken(node.parentElement); }; exports.isTokenText = isTokenText; var isToken = node => { return node && node.classList && (node.classList.contains('as-emoji-token') || node.classList.contains('as-tag-token')); }; exports.isToken = isToken; function findNextTextNode(root, current) { var nextTextNode = node => { var res = null; var next = node.nextSibling; while (next && !res) { res = getFirstTextNode(next); next = next.nextSibling; } if (!res && node.parentElement !== root) { res = nextTextNode(node.parentElement); } return res; }; return nextTextNode(current); } function findPrevTextNode(root, current) { var prevTextNode = node => { var res = null; var prev = node.previousSibling; while (prev && !res) { res = getLastTextNode(prev); prev = prev.previousSibling; } if (!res && node.parentElement !== root) { res = prevTextNode(node.parentElement); } return res; }; return prevTextNode(current); } function text2ContentElements(text, opt) { return tokenizeMessageText(text).map(token => { var textOfTag; switch (token.type) { case 'NEW_LINE': return (0, _ACore._)('br'); case 'EMOJI': return (0, _ACore._)({ tag: 'span', class: 'as-emoji-token', attr: { 'data-display': _TITextController.EMPTY_2_SPACES, 'data-text': token.value }, child: { text: _TITextController.EMPTY_2_SPACES } }); case 'TAG': textOfTag = opt.tagMap && opt.tagMap[token.value]; return (0, _ACore._)({ tag: 'span', class: 'as-tag-token', attr: { 'data-text': '@[id:' + token.value + ']', 'data-display': textOfTag ? '@' + textOfTag : '@[id:' + token.value + ']' }, child: { text: textOfTag ? '@' + textOfTag : '@[id:' + token.value + ']' } }); case 'TEXT': default: return (0, _ACore._)({ text: token.value }); } }); }