Path: blob/master/webroot/rsrc/js/application/diff/DiffInlineContentState.js
12242 views
/**1* @provides phabricator-diff-inline-content-state2* @requires javelin-dom3* @javelin4*/56JX.install('DiffInlineContentState', {78construct : function() {910},1112properties: {13text: null,14suggestionText: null,15hasSuggestion: false16},1718members: {19readForm: function(row) {20var node;2122try {23node = JX.DOM.find(row, 'textarea', 'inline-content-text');24this.setText(node.value);25} catch (ex) {26this.setText(null);27}2829node = this._getSuggestionNode(row);30if (node) {31this.setSuggestionText(node.value);32} else {33this.setSuggestionText(null);34}3536return this;37},3839getWireFormat: function() {40return {41text: this.getText(),42suggestionText: this.getSuggestionText(),43hasSuggestion: this.getHasSuggestion()44};45},4647readWireFormat: function(map) {48this.setText(map.text || null);49this.setSuggestionText(map.suggestionText || null);50this.setHasSuggestion(!!map.hasSuggestion);5152return this;53},5455getTextForQuote: function() {56var text = this.getText();57text = '> ' + text.replace(/\n/g, '\n> ') + '\n\n';58return text;59},6061isStateEmpty: function() {62return (this.isTextEmpty() && this.isSuggestionEmpty());63},6465isTextEmpty: function() {66var text = this.getText();67if (text === null) {68return true;69}7071if (this._isStringSimilar(text, '')) {72return true;73}7475return false;76},7778isSuggestionEmpty: function() {79if (!this.getHasSuggestion()) {80return true;81}8283var suggestion = this.getSuggestionText();84if (suggestion === null) {85return true;86}8788if (this._isStringSimilar(suggestion, '')) {89return true;90}9192return false;93},9495isTextSimilar: function(v) {96if (!v) {97return false;98}99100var us = this.getText();101var vs = v.getText();102103return this._isStringSimilar(us, vs);104},105106isSuggestionSimilar: function(v) {107// If we don't have a comparison state, treat them as dissimilar. This108// is expected to occur in old inline comments that did not save an109// initial state.110111if (!v) {112return false;113}114115var us = this.getSuggestionText();116var vs = v.getSuggestionText();117118return this._isStringSimilar(us, vs);119},120121_isStringSimilar: function(u, v) {122u = u || '';123v = v || '';124return (u === v);125},126127_getSuggestionNode: function(row) {128try {129return JX.DOM.find(row, 'textarea', 'inline-content-suggestion');130} catch (ex) {131return null;132}133}134}135136});137138139