Skip to content

Instantly share code, notes, and snippets.

@jgerigmeyer
Created October 3, 2017 20:05
Show Gist options
  • Save jgerigmeyer/4e75ab233285fc99b9ea5e3dbd585acc to your computer and use it in GitHub Desktop.
Save jgerigmeyer/4e75ab233285fc99b9ea5e3dbd585acc to your computer and use it in GitHub Desktop.
'use strict';
exports.initialize = function (app) {
app.module('Utils', function (Utils, App, Backbone, Marionette, $) {
Utils.createAndNavigateToProject = function (collection) {
var model = collection.create({ name: 'Untitled' });
Backbone.history.navigate('/app/' + model.get('uuid'), true);
};
Utils.contentEditablePaste = function (evt) {
var event = evt.originalEvent || evt;
// @@@ Not supported in IE
if (event.clipboardData) {
evt.preventDefault();
var text = event.clipboardData.getData('text/plain');
text = App.renderer.env.filters.escape(text);
if ($(event.target).data('strip-newlines') === true) {
text = text.replace(/\n/g, ' ');
}
document.execCommand('insertHTML', false, text);
}
};
Utils.getCaretRangePositions = function (el) {
var start = 0;
var end = 0;
var sel;
if (typeof window.getSelection !== 'undefined') {
sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = window.getSelection().getRangeAt(0);
var startRange = range.cloneRange();
var endRange = range.cloneRange();
startRange.selectNodeContents(el);
startRange.setEnd(range.startContainer, range.startOffset);
endRange.selectNodeContents(el);
endRange.setEnd(range.endContainer, range.endOffset);
start = startRange.toString().length;
end = endRange.toString().length;
}
}
return [ start, end ];
};
Utils.setCaretRangePositions = function (el, pos) {
if (typeof el.setSelectionRange !== 'undefined') {
el.focus();
el.setSelectionRange(pos[0], pos[1]);
}
};
Utils.selectAllInElement = function (el) {
var range, sel;
range = document.createRange();
sel = window.getSelection();
range.selectNodeContents(el.get(0));
sel.removeAllRanges();
sel.addRange(range);
};
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment