upfront-editable
Version:
Friendly contenteditable API
66 lines (57 loc) • 2.21 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _cursor = _interopRequireDefault(require("./cursor"));
var _selection = _interopRequireDefault(require("./selection"));
/** 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 = /*#__PURE__*/function () {
function RangeContainer(editableHost, rangyRange) {
(0, _classCallCheck2["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, _createClass2["default"])(RangeContainer, [{
key: "getCursor",
value: function getCursor() {
if (this.isCursor) return new _cursor["default"](this.host, this.range);
}
}, {
key: "getSelection",
value: function getSelection() {
if (this.isSelection) return new _selection["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;
module.exports = exports.default;