![]() 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/TokenizeInput.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("../../css/tokenizeinput.css"); var _ACore = _interopRequireWildcard(require("../../ACore")); var _Dom = _interopRequireDefault(require("absol/src/HTML5/Dom")); var _file = require("absol/src/Converter/file"); var _AElement = _interopRequireDefault(require("absol/src/HTML5/AElement")); var _BrowserDetector = _interopRequireDefault(require("absol/src/Detector/BrowserDetector")); var _TIHistory = _interopRequireDefault(require("./TIHistory")); var _TITextController = _interopRequireDefault(require("./TITextController")); var _TISelectionController = _interopRequireDefault(require("./TISelectionController")); var _keyboard = require("absol/src/Input/keyboard"); var _utils = require("../utils"); var _tiutils = require("./tiutils"); var textDelay = _BrowserDetector.default.isSafari ? 100 : 1; /*** * @extends AElement * @constructor */ function TokenizeInput() { this._tagMap = {}; this.$br = (0, _ACore.$)('br', this); this.historyCtrl = new _TIHistory.default(this); this.textCtrl = new _TITextController.default(this); this.selectionCtrl = new _TISelectionController.default(this); this.prevKey = null; this.defineEvent(['pasteimg', 'pastefile', 'pastetext', 'change']); this.on('paste', this.eventHandler.paste); this.on('keydown', this.eventHandler.keydown); this.on('mouseup', this.eventHandler.mouseup); this.value = ''; this.historyCtrl.commit('', 0); /*** * @type {{}} * @name tagMap *@memberOf TokenizeInput# * */ } TokenizeInput.tag = 'TokenizeInput'.toLowerCase(); TokenizeInput.render = function () { return (0, _ACore._)({ tag: 'pre', class: 'as-tokenize-input', attr: { contenteditable: 'true', spellcheck: "false" }, child: 'br' }); }; TokenizeInput.prototype.applyData = function (text, offset) { this.textCtrl.applyData(text, offset); }; TokenizeInput.prototype.select = function (offset) { if (document.activeElement !== this) this.focus(); this.applyData(this.value, offset); }; TokenizeInput.prototype.scrollIntoRange = function (range) { var elementBound = range.getBoundingClientRect(); var viewportBound = this.getBoundingClientRect(); var dBottom = 0; if (range.startContainer && range.startContainer.data && range.startContainer.data.charAt(range.startContainer.data.length - 1) == '\n') dBottom += this.getFontSize() * 1.5; var currentScrollTop = this.scrollTop; var newScrollTop = currentScrollTop; if (elementBound.bottom + dBottom > viewportBound.bottom) { newScrollTop = currentScrollTop + (elementBound.bottom + dBottom - viewportBound.bottom); } if (elementBound.top < viewportBound.top) { newScrollTop = currentScrollTop - (viewportBound.top - elementBound.top); } if (newScrollTop != currentScrollTop) { this.scrollTop = newScrollTop; } var currentScrollLeft = this.scrollLeft; var newScrollLeft = currentScrollLeft; if (elementBound.right > viewportBound.right) { newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right); } if (elementBound.left < viewportBound.left) { newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left); } if (newScrollLeft != currentScrollLeft) { this.scrollLeft = newScrollLeft; } }; TokenizeInput.prototype.undo = function () { this.historyCtrl.undo(); }; TokenizeInput.prototype.redo = function () { this.historyCtrl.redo(); }; TokenizeInput.prototype.commitChange = function (text, offset) { this.historyCtrl.commit(text, offset); this.emit('change', {}, this); }; TokenizeInput.prototype.waitToCommit = function (text, offset) { var thisInput = this; if (this._commitTimeout > 0) clearTimeout(this._commitTimeout); this._commitTimeout = setTimeout(function () { thisInput.commitChange(text, offset); }, textDelay); }; TokenizeInput.prototype.getPosition = function (node, offset) { if (!node) return NaN; if (node === this) return offset; var parent = node.parentElement; if (!parent) return NaN; var text = ''; var child; var lastBr = false; for (var i = 0; i < parent.childNodes.length; ++i) { child = parent.childNodes[i]; if (child == node) break; text += this.stringOf(child); } return this.getPosition(parent, text.length + offset); }; TokenizeInput.prototype.getSelectPosition = function () { return this.selectionCtrl.getOffset(); }; /** * @type {TokenizeInput} */ TokenizeInput.eventHandler = {}; TokenizeInput.eventHandler.paste = function (event) { var clipboardData = event.clipboardData || window.clipboardData; if (!clipboardData) { alert('Input not support browser without clipboard API!'); return; } if (clipboardData.items) { var items = Array.prototype.slice.call(clipboardData.items); items.forEach(item => console.log(item.type)); var imgItems = items.filter(item => item.type.indexOf('image') >= 0); var fileItems = items.filter(item => item.type !== 'text/plain' && item.type.indexOf('image') < 0); var plainTextItems = items.filter(item => item.type.indexOf('text/plain') >= 0); if (imgItems.length > 0) { var imgFiles = imgItems.map(function (it) { return it.getAsFile(); }); this.emit('pasteimg', { target: this, imageFile: imgFiles[0], imageFiles: imgFiles, originalEvent: event }, this); } if (fileItems.length > 0) { var files = fileItems.map(item => item.getAsFile()); this.emit('pastefile', { target: this, file: files[0], files: files, originalEvent: event }, this); } if (plainTextItems.length > 0) { var plainTextItem = plainTextItems[0]; //only one item plainTextItem.getAsString(text => { this.textCtrl.insertText(text); }); } event.preventDefault(); } else { var text = event.clipboardData.getData('text/plain'); if (text) { event.preventDefault(); this.textCtrl.insertText(text); } } this.waitToCommit(); }; TokenizeInput.eventHandler.keydown = function (event) { this.prevKey = { time: new Date().getTime(), value: (0, _keyboard.keyboardEventToKeyBindingIdent)(event) }; setTimeout(() => { this.selectionCtrl.onSelect(); this.waitToCommit(); }, textDelay); }; /*** * @this TokenizeInput * @param event */ TokenizeInput.eventHandler.mouseup = function (event) { this.prevKey = { time: new Date().getTime(), value: 'mouseup' }; this.selectionCtrl.onSelect(); }; TokenizeInput.property = {}; TokenizeInput.property.value = { set: function (value) { value = value || ''; this.textCtrl.setText(value); // this.applyData(value, value.length); this.commitChange(value, value.length); }, get: function () { return this.textCtrl.getText(); } }; TokenizeInput.property.disabled = { set: function (value) { value = !!value; if (value === this.hasClass('as-disabled')) return; if (value) { this.addClass('as-disabled'); this.attr({ contenteditable: undefined, oncut: 'return false', onpaste: 'return false', onkeydown: 'if(event.metaKey) return true; return false;' }); } else { this.removeClass('as-disabled'); this.attr({ contenteditable: true, oncut: undefined, onpaste: undefined, onkeydown: undefined }); } }, get: function () { return this.hasClass('as-disabled'); } }; TokenizeInput.property.tagList = { get: function () { return (0, _utils.getTagListInTextMessage)(this.value); } }; TokenizeInput.property.tagMap = { set: function (o) { o = o || {}; this._tagMap = o; Array.prototype.forEach.call(this.childNodes, child => { var id, text; if (child.classList && child.classList.contains('as-tag-token')) { id = child.getAttribute('data-text') || ''; id = id.substring(5, id.length - 1); text = this._tagMap[id]; if (text) { child.getAttribute('data-display', '@' + text); child.firstChild.data = '@' + text; } console.log(id); } }); }, get: function () { return this._tagMap; } }; _ACore.default.install(TokenizeInput); var _default = TokenizeInput; exports.default = _default;