UNPKG

@petkoneo/phaser3-rex-plugins

Version:
52 lines (40 loc) 1.37 kB
import { diffChars } from '../../../../utils/jsdiff/index.js' const RemoveItem = Phaser.Utils.Array.Remove; var SetText = function (textObject, newText) { var text = textObject.text; if (newText === text) { return; } if (text == null) { text = ''; } // textObject.setText(newText); // Remove lastInsertCursor directly RemoveItem(textObject.children, textObject.lastInsertCursor); if (newText === '') { textObject.removeChildren(); } else { var results = diffChars(text, newText); var charIndex = 0; for (var i = 0, cnt = results.length; i < cnt; i++) { var result = results[i]; if (result.removed) { // Remove character at charIndex textObject.removeText(charIndex, result.count); } else if (result.added) { textObject.insertText(charIndex, result.value); charIndex += result.count; } else { charIndex += result.count; } } } // Push back lastInsertCursor directly textObject.children.push(textObject.lastInsertCursor); textObject.runWrap(); if (textObject.isOpened) { textObject.textEdit.setText(newText); } textObject.emit('textchange', newText, textObject); } export default SetText;