Merge branch 'pre' of insomnia247.nl:/home/benweet/stackedit into pre
This commit is contained in:
commit
c879a3abb8
@ -28,7 +28,7 @@ define([], function() {
|
||||
constants.SSH_PROXY_URL = "https://stackedit-ssh-proxy.herokuapp.com/";
|
||||
constants.HTMLTOPDF_URL = "https://stackedit-htmltopdf.herokuapp.com/";
|
||||
|
||||
// Site dependent
|
||||
// Site dependent
|
||||
constants.BASE_URL = "http://localhost/";
|
||||
constants.GOOGLE_CLIENT_ID = '241271498917-lev37kef013q85avc91am1gccg5g8lrb.apps.googleusercontent.com';
|
||||
constants.GITHUB_CLIENT_ID = 'e47fef6055344579799d';
|
||||
|
@ -175,12 +175,10 @@ define([
|
||||
this.updateSelectionRange = function() {
|
||||
var min = Math.min(this.selectionStart, this.selectionEnd);
|
||||
var max = Math.max(this.selectionStart, this.selectionEnd);
|
||||
var range = this.createRange(min, max);
|
||||
var range = this.createRange(min, max);
|
||||
var selection = rangy.getSelection();
|
||||
selection.removeAllRanges();
|
||||
selection.addRange(range, this.selectionStart > this.selectionEnd);
|
||||
selection.detach();
|
||||
range.detach();
|
||||
};
|
||||
this.setSelectionStartEnd = function(start, end) {
|
||||
if(start === undefined) {
|
||||
@ -232,13 +230,12 @@ define([
|
||||
selectionEnd = offset + (range + '').length;
|
||||
}
|
||||
}
|
||||
selectionRange.detach();
|
||||
}
|
||||
selection.detach();
|
||||
self.setSelectionStartEnd(selectionStart, selectionEnd);
|
||||
}
|
||||
undoMgr.saveSelectionState();
|
||||
}
|
||||
|
||||
var nextTickAdjustScroll = false;
|
||||
var debouncedSave = utils.debounce(function() {
|
||||
save();
|
||||
@ -353,7 +350,7 @@ define([
|
||||
var range = selectionMgr.createRange(startOffset, textContent.length - endOffset);
|
||||
range.deleteContents();
|
||||
range.insertNode(document.createTextNode(replacement));
|
||||
range.detach();
|
||||
range.detach();
|
||||
}
|
||||
|
||||
editor.setValue = setValue;
|
||||
@ -369,7 +366,7 @@ define([
|
||||
}
|
||||
range.deleteContents();
|
||||
range.insertNode(document.createTextNode(replacement));
|
||||
range.detach();
|
||||
range.detach();
|
||||
offset = offset - text.length + replacement.length;
|
||||
selectionMgr.setSelectionStartEnd(offset, offset);
|
||||
selectionMgr.updateSelectionRange();
|
||||
@ -759,9 +756,18 @@ define([
|
||||
}, 0);
|
||||
})
|
||||
.on('mouseup', _.bind(selectionMgr.saveSelectionState, selectionMgr, true, false))
|
||||
.on('paste', function() {
|
||||
.on('paste', function(evt) {
|
||||
undoMgr.currentMode = 'paste';
|
||||
adjustCursorPosition();
|
||||
try {
|
||||
var data = evt.originalEvent.clipboardData.getData("text/plain");
|
||||
if(data) {
|
||||
evt.preventDefault();
|
||||
document.execCommand("insertHTML", false, data);
|
||||
}
|
||||
}
|
||||
catch(e) {
|
||||
}
|
||||
})
|
||||
.on('cut', function() {
|
||||
undoMgr.currentMode = 'cut';
|
||||
|
@ -40,7 +40,9 @@ define([
|
||||
});
|
||||
preElt.parentNode.replaceChild(containerElt, preElt);
|
||||
chart.drawSVG(containerElt, {
|
||||
'line-width': 2
|
||||
'line-width': 2,
|
||||
'font-family': 'sans-serif',
|
||||
'font-weight': 'normal'
|
||||
});
|
||||
}
|
||||
catch(e) {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -117,7 +117,7 @@ define([
|
||||
};
|
||||
|
||||
DomObject.prototype.createToggler = function(backdrop) {
|
||||
var backdropElt;
|
||||
var $backdropElt;
|
||||
var pushedEvents = 0;
|
||||
this.toggle = function(show) {
|
||||
if(show === this.isOpen) {
|
||||
@ -127,7 +127,7 @@ define([
|
||||
if(this.isOpen) {
|
||||
this.$elt.addClass('panel-open').trigger('show.layout.toggle');
|
||||
if(backdrop) {
|
||||
$(backdropElt = utils.createBackdrop(wrapperL1.elt)).click(_.bind(function() {
|
||||
$backdropElt = $(utils.createBackdrop(wrapperL1.elt)).on('click.backdrop', _.bind(function() {
|
||||
this.toggle(false);
|
||||
}, this));
|
||||
this.$elt.addClass('bring-to-front');
|
||||
@ -140,8 +140,11 @@ define([
|
||||
}
|
||||
else {
|
||||
this.$elt.trigger('hide.layout.toggle');
|
||||
backdropElt && backdropElt.removeBackdrop();
|
||||
backdropElt = undefined;
|
||||
if($backdropElt) {
|
||||
$backdropElt.off('click.backdrop');
|
||||
$backdropElt[0].removeBackdrop();
|
||||
$backdropElt = undefined;
|
||||
}
|
||||
transitionEndCallbacks.push(_.bind(function() {
|
||||
if(--pushedEvents === 0) {
|
||||
!this.isOpen && this.$elt.removeClass('panel-open bring-to-front').trigger('hidden.layout.toggle');
|
||||
|
@ -1,8 +1,10 @@
|
||||
// Credit to https://editorially.com/
|
||||
Prism.languages.md = (function () {
|
||||
|
||||
var urlPattern = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>\[\]'"]+|\([^\s()<>\[\]'"]*\))+(?:\([^\s()<>\[\]'"]*\)|[^\s`!()\[\]{}:'".,<>?«»“”‘’]))/gi;
|
||||
var emailPattern = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b/gi;
|
||||
var charInsideUrl = "[-A-Z0-9+&@#/%?=~_|[\\]()!:,.;]",
|
||||
charEndingUrl = "[-A-Z0-9+&@#/%=~_|[\\])]";
|
||||
var urlPattern = new RegExp("(=\"|<)?\\b(https?|ftp)(://" + charInsideUrl + "*" + charEndingUrl + ")(?=$|\\W)", "gi");
|
||||
var emailPattern = /(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)/gi;
|
||||
|
||||
var latex = Prism.languages.latex;
|
||||
|
||||
@ -241,9 +243,6 @@ Prism.languages.md = (function () {
|
||||
}
|
||||
}
|
||||
};
|
||||
md.email = {
|
||||
pattern: emailPattern
|
||||
};
|
||||
md.code = {
|
||||
pattern: /(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/g,
|
||||
lookbehind: true,
|
||||
@ -297,8 +296,11 @@ Prism.languages.md = (function () {
|
||||
conflict: /⧸⧸/g,
|
||||
comment: Prism.languages.markup.comment,
|
||||
tag: Prism.languages.markup.tag,
|
||||
entity: Prism.languages.markup.entity
|
||||
entity: Prism.languages.markup.entity,
|
||||
url: urlPattern,
|
||||
email: emailPattern
|
||||
};
|
||||
|
||||
for (var c = 6; c >= 1; c--) {
|
||||
md["h" + c].inside.rest = rest;
|
||||
}
|
||||
|
@ -91,8 +91,7 @@ define([
|
||||
var syncIndex = createSyncIndex(doc.id);
|
||||
var fileDesc = fileMgr.getFileFromSyncIndex(syncIndex);
|
||||
if(fileDesc !== undefined) {
|
||||
eventMgr.onError('"' + fileDesc.title + '" was already imported.');
|
||||
return;
|
||||
return eventMgr.onError('"' + fileDesc.title + '" was already imported.');
|
||||
}
|
||||
importIds.push(doc.id);
|
||||
});
|
||||
@ -109,16 +108,14 @@ define([
|
||||
var fileDesc = fileMgr.getFileFromSyncIndex(syncIndex);
|
||||
if(fileDesc !== undefined) {
|
||||
eventMgr.onError('File ID is already synchronized with "' + fileDesc.title + '".');
|
||||
callback(true);
|
||||
return;
|
||||
return callback(true);
|
||||
}
|
||||
}
|
||||
var parentId = utils.getInputTextValue('#input-sync-export-' + providerId + '-parentid');
|
||||
var data = gdriveProvider.serializeContent(content, discussionListJSON);
|
||||
googleHelper.upload(fileId, parentId, title, data, undefined, undefined, accountId, function(error, result) {
|
||||
if(error) {
|
||||
callback(error);
|
||||
return;
|
||||
return callback(error);
|
||||
}
|
||||
var syncAttributes = createSyncAttributes(result.id, result.etag, content, title, discussionListJSON);
|
||||
callback(undefined, syncAttributes);
|
||||
@ -128,7 +125,7 @@ define([
|
||||
gdriveProvider.syncUp = function(content, contentCRC, title, titleCRC, discussionList, discussionListCRC, syncAttributes, callback) {
|
||||
if(
|
||||
(syncAttributes.contentCRC == contentCRC) && // Content CRC hasn't changed
|
||||
(syncAttributes.titleCRC == titleCRC) && // Content CRC hasn't changed
|
||||
(syncAttributes.titleCRC == titleCRC) && // Title CRC hasn't changed
|
||||
(syncAttributes.discussionListCRC == discussionListCRC) // Discussion list CRC hasn't changed
|
||||
) {
|
||||
return callback(undefined, false);
|
||||
@ -144,8 +141,7 @@ define([
|
||||
var data = gdriveProvider.serializeContent(content, discussionList);
|
||||
googleHelper.upload(syncAttributes.id, undefined, title, data, undefined, syncAttributes.etag, accountId, function(error, result) {
|
||||
if(error) {
|
||||
callback(error, true);
|
||||
return;
|
||||
return callback(error, true);
|
||||
}
|
||||
syncAttributes.etag = result.etag;
|
||||
// Remove this deprecated flag if any
|
||||
@ -167,8 +163,7 @@ define([
|
||||
var lastChangeId = parseInt(storage[accountId + ".gdrive.lastChangeId"], 10);
|
||||
googleHelper.checkChanges(lastChangeId, accountId, function(error, changes, newChangeId) {
|
||||
if(error) {
|
||||
callback(error);
|
||||
return;
|
||||
return callback(error);
|
||||
}
|
||||
var interestingChanges = [];
|
||||
_.each(changes, function(change) {
|
||||
|
@ -103,6 +103,7 @@ li.L9 { background: #eee }
|
||||
@line-height-base: 1.45;
|
||||
@p-margin: 1.1em;
|
||||
@headings-font-family: inherit;
|
||||
@headings-font-weight: 300;
|
||||
|
||||
@font-face {
|
||||
font-family: 'fontello';
|
||||
@ -183,6 +184,7 @@ li.L9 { background: #eee }
|
||||
|
||||
.container {
|
||||
margin-bottom: 180px;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
a code {
|
||||
@ -229,6 +231,9 @@ hr {
|
||||
[stroke="#000000"] {
|
||||
stroke: @text-color;
|
||||
}
|
||||
text[stroke="#000000"] {
|
||||
stroke: none;
|
||||
}
|
||||
[fill="#000"], [fill="#000000"], [fill="black"] {
|
||||
fill: @text-color;
|
||||
}
|
||||
|
@ -130,18 +130,19 @@
|
||||
@popover-arrow-outer-color: @secondary-border-color;
|
||||
@popover-title-bg: @transparent;
|
||||
@alert-border-radius: 0;
|
||||
@label-warning-bg: spin(darken(@logo-yellow, 4%), -6);
|
||||
@label-danger-bg: spin(darken(@logo-orange, 4%), -4);
|
||||
@state-warning-text: spin(darken(@logo-yellow, 14%), -6);
|
||||
@state-warning-bg: fade(spin(@logo-yellow, -6), 12%);
|
||||
@state-warning-border: fade(spin(@logo-yellow, -6), 24%);
|
||||
@state-danger-text: spin(darken(@logo-orange, 18%), -4);
|
||||
@state-danger-bg: fade(spin(@logo-orange, -4), 10%);
|
||||
@state-danger-border: fade(spin(@logo-orange, -4), 20%);
|
||||
@label-warning-bg: spin(darken(@logo-yellow, 4%), -10);
|
||||
@state-warning-text: spin(darken(@logo-yellow, 14%), -10);
|
||||
@state-warning-bg: fade(spin(@logo-yellow, -10), 12%);
|
||||
@state-warning-border: fade(spin(@logo-yellow, -10), 24%);
|
||||
@label-danger-bg: spin(darken(@logo-orange, 4%), -8);
|
||||
@state-danger-text: spin(darken(@logo-orange, 18%), -8);
|
||||
@state-danger-bg: fade(spin(@logo-orange, -8), 10%);
|
||||
@state-danger-border: fade(spin(@logo-orange, -8), 20%);
|
||||
|
||||
|
||||
body {
|
||||
tab-size: 4;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
* {
|
||||
@ -192,18 +193,27 @@ body {
|
||||
.translate(0, 0);
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
background-color: @secondary-bg-light;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
background-color: @secondary-bg-lighter;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
.modal-content {
|
||||
background-color: @secondary-bg-light;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
margin-top: 0;
|
||||
}
|
||||
.modal-body {
|
||||
background-color: @secondary-bg-lighter;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
background-color: @secondary-bg-light;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.modal-iframe {
|
||||
display: block;
|
||||
margin: 30px auto 0;
|
||||
z-index: 1040;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
@ -244,6 +254,8 @@ a {
|
||||
|
||||
.list-group-item {
|
||||
padding: 10px 15px;
|
||||
border-left-width: 0;
|
||||
border-right-width: 0;
|
||||
margin-bottom: 0;
|
||||
.list-group & {
|
||||
border-radius: 0;
|
||||
@ -251,9 +263,24 @@ a {
|
||||
a&:hover,
|
||||
a&:focus {
|
||||
color: darken(@secondary, 30%);
|
||||
border-top-color: @list-group-hover-border-color;
|
||||
border-bottom-color: @list-group-hover-border-color;
|
||||
border-color: @list-group-hover-border-color;
|
||||
}
|
||||
.checkbox {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
input {
|
||||
cursor: pointer;
|
||||
margin: 0 16px;
|
||||
height: @input-height-slim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.text-danger:hover {
|
||||
@ -765,17 +792,6 @@ a {
|
||||
font-size: 15px;
|
||||
border-top-color: @modal-content-separator-color;
|
||||
}
|
||||
.checkbox {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
input {
|
||||
cursor: pointer;
|
||||
margin: 0 16px;
|
||||
height: @input-height-slim;
|
||||
}
|
||||
}
|
||||
.input-rename {
|
||||
width: 220px;
|
||||
height: @input-height-slim;
|
||||
@ -922,7 +938,7 @@ a {
|
||||
width: 220px;
|
||||
margin: 10px auto 20px;
|
||||
.btn {
|
||||
text-align: initial;
|
||||
text-align: start;
|
||||
padding-left: 15px;
|
||||
}
|
||||
}
|
||||
@ -1223,11 +1239,6 @@ a {
|
||||
.h6 { font-size: 0.9em; }
|
||||
|
||||
|
||||
.url,
|
||||
.email {
|
||||
color: @tertiary-color-light;
|
||||
}
|
||||
|
||||
.md, .hr {
|
||||
color: @tertiary-color-light;
|
||||
font-style: normal;
|
||||
@ -1248,11 +1259,17 @@ a {
|
||||
text-decoration: line-through
|
||||
}
|
||||
|
||||
.url,
|
||||
.email,
|
||||
.md-underlined-text {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.img,
|
||||
.linkdef .url {
|
||||
color: @tertiary-color-light;
|
||||
}
|
||||
|
||||
.img,
|
||||
.imgref {
|
||||
padding: 0.2em 0.4em;
|
||||
padding-right: 0;
|
||||
|
@ -349,6 +349,36 @@ define([
|
||||
].join(""));
|
||||
};
|
||||
|
||||
var $windowElt = $(window);
|
||||
utils.iframe = function(url, width, height) {
|
||||
var $backdropElt = $(utils.createBackdrop());
|
||||
var result = crel('iframe', {
|
||||
src: url,
|
||||
frameborder: 0,
|
||||
class: 'modal-content modal-iframe'
|
||||
});
|
||||
document.body.appendChild(result);
|
||||
function placeIframe() {
|
||||
var actualWidth = window.innerWidth - 20;
|
||||
actualWidth > width && (actualWidth = width);
|
||||
var actualHeight = window.innerHeight - 50;
|
||||
actualHeight > height && (actualHeight = height);
|
||||
result.setAttribute('width', actualWidth);
|
||||
result.setAttribute('height', actualHeight);
|
||||
}
|
||||
placeIframe();
|
||||
$windowElt.on('resize.iframe', placeIframe);
|
||||
function removeIframe() {
|
||||
$backdropElt.off('click.backdrop');
|
||||
$backdropElt[0].removeBackdrop();
|
||||
$windowElt.off('resize.iframe');
|
||||
result.parentNode.removeChild(result);
|
||||
}
|
||||
result.removeIframe = removeIframe;
|
||||
$backdropElt.on('click.backdrop', removeIframe);
|
||||
return result;
|
||||
};
|
||||
|
||||
// Shows a dialog to force the user to click a button before opening oauth popup
|
||||
var redirectCallbackConfirm;
|
||||
var redirectCallbackCancel;
|
||||
|
Loading…
Reference in New Issue
Block a user