upfront-editable
Version:
Friendly contenteditable API
75 lines (59 loc) • 2.27 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _cursor = require('./cursor');
var _cursor2 = _interopRequireDefault(_cursor);
var _selection = require('./selection');
var _selection2 = _interopRequireDefault(_selection);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** RangeContainer
*
* primarily used to compare ranges
* its designed to work with undefined ranges as well
* so we can easily compare them without checking for undefined
* all the time
*/
var RangeContainer = function () {
function RangeContainer(editableHost, rangyRange) {
(0, _classCallCheck3.default)(this, RangeContainer);
this.host = editableHost && editableHost.jquery ? editableHost[0] : editableHost;
this.range = rangyRange;
this.isAnythingSelected = rangyRange !== undefined;
this.isCursor = this.isAnythingSelected && rangyRange.collapsed;
this.isSelection = this.isAnythingSelected && !this.isCursor;
}
(0, _createClass3.default)(RangeContainer, [{
key: 'getCursor',
value: function getCursor() {
if (this.isCursor) return new _cursor2.default(this.host, this.range);
}
}, {
key: 'getSelection',
value: function getSelection() {
if (this.isSelection) return new _selection2.default(this.host, this.range);
}
}, {
key: 'forceCursor',
value: function forceCursor() {
if (!this.isSelection) return this.getCursor();
return this.getSelection().deleteContent();
}
}, {
key: 'isDifferentFrom',
value: function isDifferentFrom() {
var otherRangeContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new RangeContainer();
var self = this.range;
var other = otherRangeContainer.range;
if (self && other) return !self.equals(other);
if (!self && !other) return false;
return true;
}
}]);
return RangeContainer;
}();
exports.default = RangeContainer;