diff --git a/src/index.html b/src/index.html
index 74c524ba..93971f3c 100755
--- a/src/index.html
+++ b/src/index.html
@@ -525,6 +525,10 @@
Settings
+
+
+
+
@@ -597,6 +601,11 @@
Settings
+
+
+
+
+
diff --git a/src/js/classes/app.js b/src/js/classes/app.js
index 58908057..0d0a5e96 100644
--- a/src/js/classes/app.js
+++ b/src/js/classes/app.js
@@ -47,10 +47,16 @@ export var App = function(name, version) {
window.parent.dispatchEvent(event);
};
+ this.log = function(message){
+ if(self.settings.developmentModeEnabled()){
+ console.log(message)
+ }
+ };
+
this.setDocumentType = function(documentType, e) {
const documentTypeId = e ? e.target.value : documentType;
self.settings.documentType(documentTypeId);
- console.log('Set doc type', documentType, app.data.inkCompiler);
+ self.log('Set doc type', documentType, app.data.inkCompiler);
if (documentTypeId === 'ink') {
if (app.data.inkCompiler === null)
app.data.inkCompiler = new app.data.InkCompiler();
@@ -86,7 +92,7 @@ export var App = function(name, version) {
};
this.setGistCredentials = function(gist, e) {
- console.log("SET CREDENTIALS")
+ self.log("SET CREDENTIALS")
const { token, file } = gist;
data.storage.setCredentials(token, file);
};
@@ -206,7 +212,7 @@ export var App = function(name, version) {
let deferredPrompt;
const addBtn = $('#addPwa')[0];
addBtn.style.display = 'none';
- // addBtn.addEventListener('click', (e) => {console.log(e)});
+ // addBtn.addEventListener('click', (e) => {self.log(e)});
window.addEventListener('beforeinstallprompt', e => {
// Prevent Chrome 67 and earlier from automatically showing the prompt
e.preventDefault();
@@ -221,10 +227,10 @@ export var App = function(name, version) {
// Wait for the user to respond to the prompt
deferredPrompt.userChoice.then(choiceResult => {
if (choiceResult.outcome === 'accepted') {
- console.log('User accepted the A2HS prompt');
+ self.log('User accepted the A2HS prompt');
addBtn.style.display = 'none';
} else {
- console.log('User dismissed the A2HS prompt');
+ self.log('User dismissed the A2HS prompt');
}
deferredPrompt = null;
});
@@ -847,7 +853,7 @@ export var App = function(name, version) {
}),
'Node Link'
);
- // console.log(langTools);
+ // self.log(langTools);
langTools.setCompleters([
nodeLinksCompleter,
langTools.keyWordCompleter,
diff --git a/src/js/classes/data.js b/src/js/classes/data.js
index 1a00bbdc..849bad9d 100644
--- a/src/js/classes/data.js
+++ b/src/js/classes/data.js
@@ -9,7 +9,6 @@ export const data = {
db: DBStorage('yarn-DB', 'Yarn-persistence'),
storage: StorageJs("gist"),
appInstanceStates: ko.observable([]),
- restoreFromLocalStorage: ko.observable(true),
// All the bellow go into appInstanceStates, which controls r/w of app states to local storage (for file tabs feature)
isDocumentDirty: ko.observable(false),
editingPath: ko.observable(null),
@@ -87,7 +86,7 @@ export const data = {
});
},
loadDocumentStateTabFromIndex: function(index) {
- console.log('ATTEMPT TO LOAD STATE', index);
+ app.log('ATTEMPT TO LOAD STATE', index);
app.settings.selectedFileTab(index);
data.loadAppStateFromLocalStorage();
},
@@ -125,7 +124,7 @@ export const data = {
reverseButtons: true,
}).then(result => {
if (result.value) {
- console.log('DELETE TAB', data.appInstanceStates(), index);
+ app.log('DELETE TAB', data.appInstanceStates(), index);
const mutatedState = data
.appInstanceStates()
.filter((_, i) => i !== index)
@@ -140,7 +139,7 @@ export const data = {
: index;
data.loadDocumentStateTabFromIndex(nextIndex);
}, 500);
- console.log(
+ app.log(
data.appInstanceStates(),
'resulting mutation',
mutatedState
@@ -154,7 +153,7 @@ export const data = {
...data.appInstanceStates(),
{ ...data.getCurrentAppState() }, //this is pretty slow
]);
- console.log('DOCUMENT TAB ADDED', data.appInstanceStates());
+ app.log('DOCUMENT TAB ADDED', data.appInstanceStates());
data.saveAppStateToLocalStorage();
data.loadDocumentStateTabFromIndex(data.appInstanceStates().length - 1);
if (checked) {
@@ -164,7 +163,7 @@ export const data = {
data.startNewFile(editingName, editingType);
}
- console.log({ editingName, yarnData, editingType, checked });
+ app.log({ editingName, yarnData, editingType, checked });
},
addDocumentStateTab: function() {
data.promptFileNameAndFormat(
@@ -175,13 +174,13 @@ export const data = {
);
},
saveAppStateToLocalStorage: Utils.debounce(function(writeCurrent = true) {
- if (!data.restoreFromLocalStorage()) return;
+ if (!app.settings.restoreSessionEnabled()) return;
const storage = app.settings.storage;
data.isDocumentDirty(true);
data.lastEditedUnix(new Date());
app.refreshWindowTitle();
- // console.log('Update storage', data.appInstanceStates(), writeCurrent);
+ // app.log('Update storage', data.appInstanceStates(), writeCurrent);
const updatedStates = [...data.appInstanceStates()];
if (writeCurrent)
updatedStates[app.settings.selectedFileTab()] = data.getCurrentAppState();
@@ -191,12 +190,10 @@ export const data = {
app.ui.dispatchEvent('yarnSavedStateToLocalStorage');
}, 700),
loadAppStateFromLocalStorage: async function() {
- if (!data.restoreFromLocalStorage()) return; // to ignore sometimes?
-
const storage = app.settings.storage;
// Just in case clear old state's cache
if (storage.getItem('appState')) {
- console.log('--- storage.clear() ---');
+ app.log('--- storage.clear() ---');
storage.clear(); //TODO remove later
}
@@ -206,7 +203,7 @@ export const data = {
const currentDocState = appStates[app.settings.selectedFileTab()];
data.appInstanceStates(appStates);
- console.log('APP state', appStates, currentDocState);
+ app.log('APP state', appStates, currentDocState);
if (currentDocState) {
const {
editingPath,
@@ -226,6 +223,10 @@ export const data = {
lastEditedUnix,
lastSavedUnix,
} = currentDocState;
+ app.pluginStorage = pluginStorage;
+
+ if (!app.settings.restoreSessionEnabled()) return; // to ignore sometimes?
+
app.tags(tags);
data.editingPath(editingPath);
data.editingName(editingName);
@@ -239,21 +240,19 @@ export const data = {
data.isDocumentDirty(true);
app.refreshWindowTitle();
app.ui.dispatchEvent('yarnLoadedStateFromLocalStorage');
- console.log('--- app.plugins.pluginStorage ---');
- app.plugins.pluginStorage = pluginStorage;
-
+ app.log('--- app.plugins.pluginStorage ---');
data.getNodesFromObjectsAsync(nodes).then(newNodes => {
if (editingTitle) {
app.editNode(newNodes.find(node => node.title() === editingTitle));
if (editorSelection) app.editor.selection.setRange(editorSelection);
}
- console.log('--- app.nodes(newNodes) ---', newNodes.length);
+ app.log('--- app.nodes(newNodes) ---', newNodes.length);
app.nodes(newNodes);
- console.log('--- app.updateNodeLinks ---');
+ app.log('--- app.updateNodeLinks ---');
app.updateNodeLinks();
- console.log('--- app.workspace.setTranslation ---');
+ app.log('--- app.workspace.setTranslation ---');
app.workspace.setTranslation(transform.x, transform.y);
- console.log('--- app.workspace.setZoom ---');
+ app.log('--- app.workspace.setZoom ---');
app.workspace.setZoom(scale * 4);
});
}
@@ -267,7 +266,7 @@ export const data = {
},
setNewFileStats: function(fileName, filePath, lastStorageHost = 'LOCAL') {
- console.log('Updated save data', fileName, filePath);
+ app.log('Updated save data', fileName, filePath);
data.editingName(fileName.replace(/^.*[\\\/]/, ''));
data.isDocumentDirty(false);
data.editingPath(filePath);
@@ -362,7 +361,7 @@ export const data = {
restoreSettingsFromDocumentHeader: function() {
if (data.documentHeader() !== null) {
const documentHeader = data.documentHeader();
- console.log('Apply settings from file header:', documentHeader);
+ app.log('Apply settings from file header:', documentHeader);
if ('markupLanguage' in documentHeader)
app.settings.markupLanguage(documentHeader.markupLanguage);
if ('language' in documentHeader)
@@ -380,7 +379,7 @@ export const data = {
}
};
- console.log('OPENING::', { content });
+ app.log('OPENING::', { content });
// different depending on file
if (type === FILETYPE.JSON) {
content = JSON.parse(content); // todo this can fail, show error
@@ -410,7 +409,7 @@ export const data = {
);
obj.position = { x: parseInt(x), y: parseInt(y) };
obj.colorID = colorID;
- // console.log('OBJECT', obj);
+ // app.log('OBJECT', obj);
} catch (e) {
console.warn('node metadata failed parse: ', e);
}
@@ -657,7 +656,7 @@ export const data = {
if (type === FILETYPE.JSON) {
// store useful values for later use if the file type supports it
if (app.settings.filetypeVersion() === '2') {
- console.log('Saving as Yarn json v2 type');
+ app.log('Saving as Yarn json v2 type');
const date = new Date();
data.documentHeader({
...data.documentHeader(),
@@ -777,7 +776,7 @@ export const data = {
);
reject();
} else {
- console.log('Warnings', response.warnings);
+ app.log('Warnings', response.warnings);
app.ui.toastMixin.fire({
animation: true,
@@ -788,7 +787,7 @@ export const data = {
icon: response.warnings.length > 0 ? 'warning' : 'success',
text: response.warnings.join('\n'),
});
- console.log({ responseStory: response.story });
+ app.log({ responseStory: response.story });
resolve(JSON.stringify(response.story, null, '\t'));
}
})
@@ -888,7 +887,7 @@ export const data = {
isIfElse = false;
} else if (trimmedLine.startsWith('<\$]|set /g, '').split('=');
- console.log({ set });
+ app.log({ set });
parsedBodyContent +=
set.length > 1
? `${tabs}$ ${set[0].trim()} = ${set[1].trim()}\n`
@@ -1050,8 +1049,8 @@ export const data = {
text: yarnData,
file: [file],
})
- .then(() => console.log('Successful share'))
- .catch(error => console.log('Error sharing', error));
+ .then(() => app.log('Successful share'))
+ .catch(error => app.log('Error sharing', error));
} else {
Swal.fire({
title:
@@ -1066,7 +1065,7 @@ export const data = {
if (data.storage.hasGistSettings()) {
data.storage.getGistFile().then(gist => {
const gistFiles = Object.keys(gist.body.files);
- console.log(gistFiles);
+ app.log(gistFiles);
data.promptFileNameAndFormat(({ editingName, yarnData }) => {
data.editingName(editingName);
data.storage.editGist(gists.file, editingName, yarnData);
@@ -1202,7 +1201,7 @@ export const data = {
})
.catch(err => {
app.clipboard = app.editor.getSelectedText();
- console.log('No clipboard access', err, 'using local instead');
+ app.log('No clipboard access', err, 'using local instead');
});
}
// execCommand("paste") will not work on web browsers, due to security
diff --git a/src/js/classes/richTextFormatter.js b/src/js/classes/richTextFormatter.js
index cf6682cf..3cf1395b 100644
--- a/src/js/classes/richTextFormatter.js
+++ b/src/js/classes/richTextFormatter.js
@@ -62,7 +62,7 @@ export const RichTextFormatter = function(app) {
/((?:https?:\/\/)?(?:www.)?instagram.com\/p\/([^\s\<]+)\/)/i
);
if (extractedId.length > 2) {
- console.log('EXTRACTED', extractedId);
+ app.log('EXTRACTED', extractedId);
return `
`;
diff --git a/src/js/classes/settings.js b/src/js/classes/settings.js
index 61c770fe..eab46c65 100644
--- a/src/js/classes/settings.js
+++ b/src/js/classes/settings.js
@@ -63,7 +63,7 @@ export const Settings = function(app) {
.readText()
.then(
(clipText) => {
- console.log("clipboard", clipText)
+ app.log("clipboard", clipText)
if(clipText && clipText.length > 5) koItem(clipText)
},
);
@@ -173,6 +173,22 @@ export const Settings = function(app) {
)
.extend({ persist: 'snapGridEnabled' });
+ this.restoreSessionEnabled = ko
+ .observable(
+ storage.getItem('restoreSessionEnabled') !== null
+ ? storage.getItem('restoreSessionEnabled') === 'true'
+ : false
+ )
+ .extend({ persist: 'restoreSessionEnabled' });
+
+ this.developmentModeEnabled = ko
+ .observable(
+ storage.getItem('developmentModeEnabled') !== null
+ ? storage.getItem('developmentModeEnabled') === 'true'
+ : false
+ )
+ .extend({ persist: 'developmentModeEnabled' });
+
// Grid size
this.gridSize = ko
.observable(parseInt(storage.getItem('gridSize') || '40'))
diff --git a/src/js/classes/ui.js b/src/js/classes/ui.js
index c0ea5c54..b027e3a5 100644
--- a/src/js/classes/ui.js
+++ b/src/js/classes/ui.js
@@ -14,7 +14,7 @@ export const UI = function(app) {
event.options = options;
window.dispatchEvent(event);
window.parent.dispatchEvent(event);
- // console.log('Dispatched event', eventName, event);
+ // app.log('Dispatched event', eventName, event);
};
this.settingsDialogVisible = ko.observable(false);
@@ -420,7 +420,7 @@ export const UI = function(app) {
if (typeof param.default === 'boolean') {
$(`#swal-input${i}`)[0].checked = param.default;
} else $(`#swal-input${i}`)[0].value = param.default;
- console.log($(`#swal-input${i}`));
+ app.log($(`#swal-input${i}`));
});
},
}).then(function(result) {
diff --git a/src/public/mode-ink.js b/src/public/mode-ink.js
index c52341dc..259b59ba 100644
--- a/src/public/mode-ink.js
+++ b/src/public/mode-ink.js
@@ -820,7 +820,7 @@ define('ace/mode/ink', [
/// set context menu
$.contextMenu(app.utils.getEditorContextMenu(/->/g));
- console.log('ink', InkMode);
+ app.log('ink', InkMode);
app.editor.setOptions({
enableBasicAutocompletion: app.settings.autocompleteSuggestionsEnabled(),
enableLiveAutocompletion: app.settings.autocompleteSuggestionsEnabled(),
diff --git a/src/public/plugins/index.js b/src/public/plugins/index.js
index 8c76cf26..d74383d3 100644
--- a/src/public/plugins/index.js
+++ b/src/public/plugins/index.js
@@ -25,7 +25,7 @@ export var Plugins = function(app) {
const self = this;
const registerPlugin = plugin => {
app.plugins[plugin.name] = plugin;
- // console.log('attaching plugin', plugin, app.plugins);
+ // app.log('attaching plugin', plugin, app.plugins);
};
const getPluginStore = pluginName => {
@@ -267,10 +267,10 @@ export var Plugins = function(app) {
// register plugins stored on a gist - todo cache all this
if (app.settings.gistPluginsFile() !== null) {
app.data.storage.getGist(app.settings.gistPluginsFile()).then(({fileList}) => {
- console.log({ fileList });
+ app.log({ fileList });
fileList.forEach(gistFile => {
if (gistFile.language === 'JavaScript') {
- console.log({ gistFile });
+ app.log({ gistFile });
try {
app.storage
.getContentOrRaw(gistFile.content, gistFile.raw_url)
@@ -279,7 +279,7 @@ export var Plugins = function(app) {
importedPlugin => {
const newPlugin = importedPlugin(pluginApiMethods);
newPlugin.name = newPlugin.name || gistFile.filename;
- console.log(
+ app.log(
{ newPlugin },
'loaded from ',
gistFile.raw_url
@@ -290,11 +290,11 @@ export var Plugins = function(app) {
scriptEle.setAttribute('src', dependency);
document.body.appendChild(scriptEle);
scriptEle.addEventListener('load', () => {
- console.log('File loaded', dependency);
+ app.log('File loaded', dependency);
});
scriptEle.addEventListener('error', ev => {
- console.log('Error on loading file', ev);
+ app.log('Error on loading file', ev);
});
});
}
diff --git a/src/public/plugins/runner.js b/src/public/plugins/runner.js
index a0ce923c..e9a286d3 100644
--- a/src/public/plugins/runner.js
+++ b/src/public/plugins/runner.js
@@ -32,7 +32,7 @@ export var Runner = function({
require('./jsoneditor/size-overrides.css');
editor = new JSONEditor({ id: 'jsoneditor' });
const localVariables = getPluginStore(self.name);
- console.log({ editor });
+ app.log({ editor });
// set json
editor.setValue(
typeof localVariables.variables !== 'object'
@@ -131,7 +131,7 @@ export var Runner = function({
}
});
const localVariables = getPluginStore(self.name);
- console.log('variables', localVariables);
+ app.log('variables', localVariables);
app.data.getSaveData('json').then(saveData => {
self.previewStory.initYarn(
JSON.parse(saveData),
@@ -246,7 +246,7 @@ export var Runner = function({
}
});
const localVariables = getPluginStore(self.name);
- console.log('VARIABLES::::', localVariables);
+ app.log('VARIABLES::::', localVariables);
app.data.getSaveData('ink', null, true).then(saveData => {
const onRecompile = () => {