vault backup: 2023-04-16 20:30:09
19
.obsidian/community-plugins.json
vendored
@@ -4,5 +4,22 @@
|
||||
"better-pdf-plugin",
|
||||
"table-editor-obsidian",
|
||||
"obsidian-plugin-toc",
|
||||
"obsidian-dynamic-toc"
|
||||
"obsidian-dynamic-toc",
|
||||
"obsidian-livesync",
|
||||
"obsidian-advanced-slides",
|
||||
"calendar",
|
||||
"obsidian-completr",
|
||||
"code-block-copy",
|
||||
"drawio-obsidian",
|
||||
"obsidian-dictionary-plugin",
|
||||
"cm-editor-syntax-highlight-obsidian",
|
||||
"obsidian-excel-to-markdown-table",
|
||||
"execute-code",
|
||||
"obsidian-icons-plugin",
|
||||
"obsidian-image-toolkit",
|
||||
"juggl",
|
||||
"obsidian-languagetool-plugin",
|
||||
"nldates-obsidian",
|
||||
"url-into-selection",
|
||||
"quick-latex"
|
||||
]
|
||||
4
.obsidian/core-plugins-migration.json
vendored
@@ -12,10 +12,10 @@
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"slash-command": true,
|
||||
"editor-status": true,
|
||||
"starred": true,
|
||||
"markdown-importer": false,
|
||||
"markdown-importer": true,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
|
||||
2
.obsidian/core-plugins.json
vendored
@@ -12,8 +12,10 @@
|
||||
"templates",
|
||||
"note-composer",
|
||||
"command-palette",
|
||||
"slash-command",
|
||||
"editor-status",
|
||||
"starred",
|
||||
"markdown-importer",
|
||||
"outline",
|
||||
"word-count",
|
||||
"file-recovery"
|
||||
|
||||
10
.obsidian/graph.json
vendored
@@ -12,11 +12,11 @@
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": false,
|
||||
"centerStrength": 1,
|
||||
"repelStrength": 0,
|
||||
"linkStrength": 0,
|
||||
"linkDistance": 500,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1,
|
||||
"close": false
|
||||
}
|
||||
19
.obsidian/hotkeys.json
vendored
@@ -1 +1,18 @@
|
||||
{}
|
||||
{
|
||||
"obsidian-git:commit": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "C"
|
||||
}
|
||||
],
|
||||
"obsidian-git:push2": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "P"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -2,73 +2,73 @@
|
||||
|
||||
var obsidian = require('obsidian');
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
}
|
||||
|
||||
var codemirror = CodeMirror;
|
||||
@@ -2,71 +2,71 @@
|
||||
|
||||
var obsidian = require('obsidian');
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
}
|
||||
|
||||
var excludeLangs = [
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"id": "drawio-obsidian",
|
||||
"name": "Diagrams",
|
||||
"version": "1.5.0",
|
||||
"minAppVersion": "0.9.12",
|
||||
"description": "Draw.io diagrams for Obsidian. This plugin introduces diagrams that can be included within notes or as stand-alone files. Diagrams are created as SVG files (although .drawio extensions are also supported).",
|
||||
"author": "Sam Greenhalgh",
|
||||
"authorUrl": "https://www.radicalresearch.co.uk/",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
{
|
||||
"id": "drawio-obsidian",
|
||||
"name": "Diagrams",
|
||||
"version": "1.5.0",
|
||||
"minAppVersion": "0.9.12",
|
||||
"description": "Draw.io diagrams for Obsidian. This plugin introduces diagrams that can be included within notes or as stand-alone files. Diagrams are created as SVG files (although .drawio extensions are also supported).",
|
||||
"author": "Sam Greenhalgh",
|
||||
"authorUrl": "https://www.radicalresearch.co.uk/",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
@@ -1,28 +1,28 @@
|
||||
.progress-bar-line {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.progress-bar-indicator {
|
||||
width: 90%;
|
||||
margin: 0 10%;
|
||||
}
|
||||
|
||||
.diagram-view svg {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.diagram-view svg a:link,
|
||||
.diagram-view svg a:visited {
|
||||
color: var(--interactive-accent, #00f);
|
||||
filter: drop-shadow(
|
||||
0 0 3px rgba(var(--interactive-accent-rgb, "0, 0, 255"), 0.5)
|
||||
);
|
||||
}
|
||||
|
||||
.diagram-view svg a:hover {
|
||||
color: var(--interactive-accent-hover, #00f);
|
||||
filter: drop-shadow(0 0 3px var(--interactive-accent-hover, #00f));
|
||||
}
|
||||
.progress-bar-line {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.progress-bar-indicator {
|
||||
width: 90%;
|
||||
margin: 0 10%;
|
||||
}
|
||||
|
||||
.diagram-view svg {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.diagram-view svg a:link,
|
||||
.diagram-view svg a:visited {
|
||||
color: var(--interactive-accent, #00f);
|
||||
filter: drop-shadow(
|
||||
0 0 3px rgba(var(--interactive-accent-rgb, "0, 0, 255"), 0.5)
|
||||
);
|
||||
}
|
||||
|
||||
.diagram-view svg a:hover {
|
||||
color: var(--interactive-accent-hover, #00f);
|
||||
filter: drop-shadow(0 0 3px var(--interactive-accent-hover, #00f));
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"id": "execute-code",
|
||||
"name": "Execute Code",
|
||||
"version": "1.8.0",
|
||||
"minAppVersion": "0.12.0",
|
||||
"description": "Allows to execute code snippets within a note. Supported programming languages: C, CPP, Dart, Golang, Groovy, Kotlin, Java, JavaScript, TypeScript, Lean, Lua, CSharp, Prolog, Rust, Python, R, Ruby, Wolfram Mathematica, Haskell, Scala, Racket, F#, Batch, Shell & Powershell.",
|
||||
"author": "twibiral",
|
||||
"authorUrl": "https://www.github.com/twibiral",
|
||||
"isDesktopOnly": true
|
||||
{
|
||||
"id": "execute-code",
|
||||
"name": "Execute Code",
|
||||
"version": "1.8.0",
|
||||
"minAppVersion": "0.12.0",
|
||||
"description": "Allows to execute code snippets within a note. Supported programming languages: C, CPP, Dart, Golang, Groovy, Kotlin, Java, JavaScript, TypeScript, Lean, Lua, CSharp, Prolog, Rust, Python, R, Ruby, Wolfram Mathematica, Haskell, Scala, Racket, F#, Batch, Shell & Powershell.",
|
||||
"author": "twibiral",
|
||||
"authorUrl": "https://www.github.com/twibiral",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
@@ -1,218 +1,218 @@
|
||||
/* @settings
|
||||
|
||||
name: Execute Code Settings
|
||||
id: obsidian-execute-code
|
||||
settings:
|
||||
-
|
||||
id: color-section-title
|
||||
title: Color Settings
|
||||
type: heading
|
||||
level: 3
|
||||
-
|
||||
id: use-custom-output-color
|
||||
title: Custom Code Output Color
|
||||
description: Use a custom color for the output of code blocks
|
||||
type: class-toggle
|
||||
default: false
|
||||
-
|
||||
id: code-output-text-color
|
||||
title: Output Text Color
|
||||
type: variable-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default: '#FFFFFF'
|
||||
-
|
||||
id: use-custom-error-color
|
||||
title: Custom Code Error Color
|
||||
description: Use a custom color for the error output of code blocks
|
||||
type: class-toggle
|
||||
default: false
|
||||
-
|
||||
id: code-error-text-color
|
||||
title: Error Text Color
|
||||
type: variable-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default: '#FF0000'
|
||||
*/
|
||||
|
||||
button.run-code-button {
|
||||
display: none;
|
||||
color: var(--text-muted);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
margin: 5px;
|
||||
padding: 5px 20px 5px 20px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
button.clear-button {
|
||||
display: none;
|
||||
color: var(--text-muted);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: 5px;
|
||||
padding: 5px 20px 5px 20px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
pre:hover .run-code-button, pre:hover .clear-button {
|
||||
display: block;
|
||||
}
|
||||
|
||||
pre:hover .run-button-disabled, pre:hover .clear-button-disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.run-button-disabled, .clear-button-disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
pre:hover code.language-output {
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
:not(.use-custom-output-color) code.language-output span.stdout {
|
||||
color: var(--text-muted) !important;
|
||||
}
|
||||
|
||||
.use-custom-output-color code.language-output span.stdout {
|
||||
color: var(--code-output-text-color) !important;
|
||||
}
|
||||
|
||||
:not(.use-custom-error-color) code.language-output span.stderr {
|
||||
color: red !important;
|
||||
}
|
||||
|
||||
.use-custom-error-color code.language-output span.stderr {
|
||||
color: var(--code-error-text-color) !important;
|
||||
}
|
||||
|
||||
code.language-output hr {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
|
||||
.settings-code-input-box textarea, .settings-code-input-box input {
|
||||
min-width: 400px;
|
||||
min-height: 100px;
|
||||
font-family: monospace;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
input.interactive-stdin {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.manage-executors-view h3 {
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.manage-executors-view ul {
|
||||
margin: 1em;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.manage-executors-view ul li {
|
||||
padding: 0.5em;
|
||||
background: var(--background-primary-alt);
|
||||
border-radius: 4px;
|
||||
display: grid;
|
||||
flex-direction: column;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.manage-executors-view small {
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.1ch;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.manage-executors-view .filename {
|
||||
grid-row: 2;
|
||||
}
|
||||
|
||||
.manage-executors-view li button {
|
||||
grid-column: 2;
|
||||
grid-row: 1 / 3;
|
||||
margin: 0;
|
||||
padding: 0.25em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--text-muted);
|
||||
background: none;
|
||||
}
|
||||
|
||||
.manage-executors-view li button:hover {
|
||||
background: var(--background-tertiary);
|
||||
color: var(--icon-color-hover);
|
||||
}
|
||||
|
||||
.manage-executors-view > div {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.manage-executors-view .empty-state {
|
||||
color: var(--text-muted);
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.has-run-code-button {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.has-run-code-button pre {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.load-state-indicator {
|
||||
position: absolute;
|
||||
top: 0.1em;
|
||||
left: -2em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
background: var(--background-primary-alt);
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
color: var(--tx1);
|
||||
transform: translateX(2em);
|
||||
transition: transform 0.25s, opacity 0.25s;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.load-state-indicator svg {
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
margin: 0.25em;
|
||||
}
|
||||
|
||||
.load-state-indicator.visible {
|
||||
transform: translateX(0);
|
||||
transform: translateX(var(--folding-offset, 0));
|
||||
opacity: 1;
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.load-state-indicator::before {
|
||||
content: "";
|
||||
box-shadow: -1em 0 1em -0.75em inset var(--background-modifier-box-shadow);
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
transform: translateX(-2em);
|
||||
opacity: 0;
|
||||
transition: transform 0.25s, opacity 0.25s;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.load-state-indicator.visible::before {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
/* @settings
|
||||
|
||||
name: Execute Code Settings
|
||||
id: obsidian-execute-code
|
||||
settings:
|
||||
-
|
||||
id: color-section-title
|
||||
title: Color Settings
|
||||
type: heading
|
||||
level: 3
|
||||
-
|
||||
id: use-custom-output-color
|
||||
title: Custom Code Output Color
|
||||
description: Use a custom color for the output of code blocks
|
||||
type: class-toggle
|
||||
default: false
|
||||
-
|
||||
id: code-output-text-color
|
||||
title: Output Text Color
|
||||
type: variable-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default: '#FFFFFF'
|
||||
-
|
||||
id: use-custom-error-color
|
||||
title: Custom Code Error Color
|
||||
description: Use a custom color for the error output of code blocks
|
||||
type: class-toggle
|
||||
default: false
|
||||
-
|
||||
id: code-error-text-color
|
||||
title: Error Text Color
|
||||
type: variable-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default: '#FF0000'
|
||||
*/
|
||||
|
||||
button.run-code-button {
|
||||
display: none;
|
||||
color: var(--text-muted);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
margin: 5px;
|
||||
padding: 5px 20px 5px 20px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
button.clear-button {
|
||||
display: none;
|
||||
color: var(--text-muted);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: 5px;
|
||||
padding: 5px 20px 5px 20px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
pre:hover .run-code-button, pre:hover .clear-button {
|
||||
display: block;
|
||||
}
|
||||
|
||||
pre:hover .run-button-disabled, pre:hover .clear-button-disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.run-button-disabled, .clear-button-disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
pre:hover code.language-output {
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
:not(.use-custom-output-color) code.language-output span.stdout {
|
||||
color: var(--text-muted) !important;
|
||||
}
|
||||
|
||||
.use-custom-output-color code.language-output span.stdout {
|
||||
color: var(--code-output-text-color) !important;
|
||||
}
|
||||
|
||||
:not(.use-custom-error-color) code.language-output span.stderr {
|
||||
color: red !important;
|
||||
}
|
||||
|
||||
.use-custom-error-color code.language-output span.stderr {
|
||||
color: var(--code-error-text-color) !important;
|
||||
}
|
||||
|
||||
code.language-output hr {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
|
||||
.settings-code-input-box textarea, .settings-code-input-box input {
|
||||
min-width: 400px;
|
||||
min-height: 100px;
|
||||
font-family: monospace;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
input.interactive-stdin {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.manage-executors-view h3 {
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.manage-executors-view ul {
|
||||
margin: 1em;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.manage-executors-view ul li {
|
||||
padding: 0.5em;
|
||||
background: var(--background-primary-alt);
|
||||
border-radius: 4px;
|
||||
display: grid;
|
||||
flex-direction: column;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.manage-executors-view small {
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.1ch;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.manage-executors-view .filename {
|
||||
grid-row: 2;
|
||||
}
|
||||
|
||||
.manage-executors-view li button {
|
||||
grid-column: 2;
|
||||
grid-row: 1 / 3;
|
||||
margin: 0;
|
||||
padding: 0.25em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--text-muted);
|
||||
background: none;
|
||||
}
|
||||
|
||||
.manage-executors-view li button:hover {
|
||||
background: var(--background-tertiary);
|
||||
color: var(--icon-color-hover);
|
||||
}
|
||||
|
||||
.manage-executors-view > div {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.manage-executors-view .empty-state {
|
||||
color: var(--text-muted);
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.has-run-code-button {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.has-run-code-button pre {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.load-state-indicator {
|
||||
position: absolute;
|
||||
top: 0.1em;
|
||||
left: -2em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
background: var(--background-primary-alt);
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
color: var(--tx1);
|
||||
transform: translateX(2em);
|
||||
transition: transform 0.25s, opacity 0.25s;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.load-state-indicator svg {
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
margin: 0.25em;
|
||||
}
|
||||
|
||||
.load-state-indicator.visible {
|
||||
transform: translateX(0);
|
||||
transform: translateX(var(--folding-offset, 0));
|
||||
opacity: 1;
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.load-state-indicator::before {
|
||||
content: "";
|
||||
box-shadow: -1em 0 1em -0.75em inset var(--background-modifier-box-shadow);
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
transform: translateX(-2em);
|
||||
opacity: 0;
|
||||
transition: transform 0.25s, opacity 0.25s;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.load-state-indicator.visible::before {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
@@ -6,83 +6,83 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
||||
|
||||
var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
}
|
||||
|
||||
function __spreadArray(to, from, pack) {
|
||||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||||
if (ar || !(i in from)) {
|
||||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||||
ar[i] = from[i];
|
||||
}
|
||||
}
|
||||
return to.concat(ar || Array.prototype.slice.call(from));
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
}
|
||||
|
||||
function __spreadArray(to, from, pack) {
|
||||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||||
if (ar || !(i in from)) {
|
||||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||||
ar[i] = from[i];
|
||||
}
|
||||
}
|
||||
return to.concat(ar || Array.prototype.slice.call(from));
|
||||
}
|
||||
|
||||
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"id": "nldates-obsidian",
|
||||
"name": "Natural Language Dates",
|
||||
"description": "Create date-links based on natural language",
|
||||
"version": "0.6.1",
|
||||
"author": "Argentina Ortega Sainz",
|
||||
"authorUrl": "https://argentinaos.com/",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "0.13.0"
|
||||
}
|
||||
{
|
||||
"id": "nldates-obsidian",
|
||||
"name": "Natural Language Dates",
|
||||
"description": "Create date-links based on natural language",
|
||||
"version": "0.6.1",
|
||||
"author": "Argentina Ortega Sainz",
|
||||
"authorUrl": "https://argentinaos.com/",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "0.13.0"
|
||||
}
|
||||
@@ -1,160 +1,160 @@
|
||||
# Chalkboard
|
||||
|
||||
With this plugin you can add a chalkboard to reveal.js. The plugin provides two possibilities to include handwritten notes to your presentation:
|
||||
|
||||
- you can make notes directly on the slides, e.g. to comment on certain aspects,
|
||||
- you can open a chalkboard or whiteboard on which you can make notes.
|
||||
|
||||
The main use case in mind when implementing the plugin is classroom usage in which you may want to explain some course content and quickly need to make some notes.
|
||||
|
||||
The plugin records all drawings made so that they can be play backed using the `autoSlide` feature or the `audio-slideshow` plugin.
|
||||
|
||||
[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/chalkboard-demo.html)
|
||||
|
||||
The chalkboard effect is based on [Chalkboard](https://github.com/mmoustafa/Chalkboard) by Mohamed Moustafa.
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the file `plugin.js` and the `img` directory into the plugin folder of your reveal.js presentation, i.e. `plugin/chalkboard` and load the plugin as shown below.
|
||||
|
||||
```html
|
||||
<script src="plugin/chalkboard/plugin.js"></script>
|
||||
<script src="plugin/chalkboard/customcontrols.js"></script>
|
||||
|
||||
<script>
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
plugins: [ RevealChalkboard, RevealCustomControls ],
|
||||
// ...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
The following stylesheet
|
||||
```html
|
||||
<link rel="stylesheet" href="plugin/chalkboard/style.css">
|
||||
<link rel="stylesheet" href="plugin/customcontrols/style.css">
|
||||
```
|
||||
has to be included to the `head` section of you HTML-file.
|
||||
|
||||
|
||||
In order to include buttons for opening and closing the notes canvas or the chalkboard you should make sure that `font-awesome` is available. The easiest way is to include
|
||||
```
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||
```
|
||||
to the ```head``` section of you HTML-file.
|
||||
|
||||
## Usage
|
||||
|
||||
### Mouse or touch
|
||||
- Click on the pen symbols at the bottom left to toggle the notes canvas or chalkboard
|
||||
- Click on the color picker at the left to change the color (the color picker is only visible if the notes canvas or chalkboard is active)
|
||||
- Click on the up/down arrows on the left to the switch among multiple chalkboardd (the up/down arrows are only available for the chlakboard)
|
||||
- Click the left mouse button and drag to write on notes canvas or chalkboard
|
||||
- Click the right mouse button and drag to wipe away previous drawings
|
||||
- Touch and move to write on notes canvas or chalkboard
|
||||
- Touch and hold for half a second, then move to wipe away previous drawings
|
||||
|
||||
### Keyboard
|
||||
- Press the 'BACKSPACE' key to delete all chalkboard drawings
|
||||
- Press the 'DEL' key to clear the notes canvas or chalkboard
|
||||
- Press the 'c' key to toggle the notes canvas
|
||||
- Press the 'b' key to toggle the chalkboard
|
||||
- Press the 'd' key to download drawings
|
||||
- Press the 'x' key to cycle colors forward
|
||||
- Press the 'y' key to cycle colors backward
|
||||
|
||||
## Playback
|
||||
|
||||
If the `autoSlide` feature is set or if the `audio-slideshow` plugin is used, pre-recorded chalkboard drawings can be played. The slideshow plays back the user interaction with the chalkboard in the same way as it was conducted when recording the data.
|
||||
|
||||
## Multiplexing
|
||||
|
||||
The plugin supports multiplexing via the [`multiplex` plugin](https://github.com/reveal/multiplex) or the [`seminar` plugin](https://github.com/rajgoel/reveal.js-plugins/tree/master/seminar).
|
||||
|
||||
## PDF-Export
|
||||
|
||||
If the slideshow is opened in [print mode](https://revealjs.com/pdf-export/), the chalkboard drawings in the session storage (see `storage` option - print version must be opened in the same tab or window as the original slideshow) or provided in a file (see `src` option) are included in the PDF-file. Each drawing on the chalkboard is added after the slide that was shown when opening the chalkboard. Drawings on the notes canvas are not included in the PDF-file.
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin has several configuration options:
|
||||
|
||||
- ```boardmarkerWidth```: an integer, the drawing width of the boardmarker; larger values draw thicker lines.
|
||||
- ```chalkWidth```: an integer, the drawing width of the chalk; larger values draw thicker lines.
|
||||
- ```chalkEffect```: a float in the range ```[0.0, 1.0]```, the intesity of the chalk effect on the chalk board. Full effect (default) ```1.0```, no effect ```0.0```.
|
||||
- ```storage```: Optional variable name for session storage of drawings.
|
||||
- ```src```: Optional filename for pre-recorded drawings.
|
||||
- ```readOnly```: Configuation option allowing to prevent changes to existing drawings. If set to ```true``` no changes can be made, if set to false ```false``` changes can be made, if unset or set to ```undefined``` no changes to the drawings can be made after returning to a slide or fragment for which drawings had been recorded before. In any case the recorded drawings for a slide or fragment can be cleared by pressing the 'DEL' key (i.e. by using the ```RevealChalkboard.clear()``` function).
|
||||
- ```transition```: Gives the duration (in milliseconds) of the transition for a slide change, so that the notes canvas is drawn after the transition is completed.
|
||||
- ```theme```: Can be set to either ```"chalkboard"``` or ```"whiteboard"```.
|
||||
|
||||
The following configuration options allow to change the appearance of the notes canvas and the chalkboard. All of these options require two values, the first gives the value for the notes canvas, the second for the chalkboard.
|
||||
|
||||
- ```background```: The first value expects a (semi-)transparent color which is used to provide visual feedback that the notes canvas is enabled, the second value expects a filename to a background image for the chalkboard.
|
||||
- ```grid```: By default whiteboard and chalkboard themes include a grid pattern on the background. This pattern can be modified by setting the color, the distance between lines, and the line width, e.g. ```{ color: 'rgb(127,127,255,0.1)', distance: 40, width: 2}```. Alternatively, the grid can be removed by setting the value to ```false```.
|
||||
- ```eraser```: An image path and radius for the eraser.
|
||||
- ```boardmarkers```: A list of boardmarkers with given color and cursor.
|
||||
- ```chalks```: A list of chalks with given color and cursor.
|
||||
- ```rememberColor```: Whether to remember the last selected color for the slide canvas or the board.
|
||||
|
||||
All of the configurations are optional and the default values shown below are used if the options are not provided.
|
||||
|
||||
```javascript
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
chalkboard: {
|
||||
boardmarkerWidth: 3,
|
||||
chalkWidth: 7,
|
||||
chalkEffect: 1.0,
|
||||
storage: null,
|
||||
src: null,
|
||||
readOnly: undefined,
|
||||
transition: 800,
|
||||
theme: "chalkboard",
|
||||
background: [ 'rgba(127,127,127,.1)' , path + 'img/blackboard.png' ],
|
||||
grid: { color: 'rgb(50,50,10,0.5)', distance: 80, width: 2},
|
||||
eraser: { src: path + 'img/sponge.png', radius: 20},
|
||||
boardmarkers : [
|
||||
{ color: 'rgba(100,100,100,1)', cursor: 'url(' + path + 'img/boardmarker-black.png), auto'},
|
||||
{ color: 'rgba(30,144,255, 1)', cursor: 'url(' + path + 'img/boardmarker-blue.png), auto'},
|
||||
{ color: 'rgba(220,20,60,1)', cursor: 'url(' + path + 'img/boardmarker-red.png), auto'},
|
||||
{ color: 'rgba(50,205,50,1)', cursor: 'url(' + path + 'img/boardmarker-green.png), auto'},
|
||||
{ color: 'rgba(255,140,0,1)', cursor: 'url(' + path + 'img/boardmarker-orange.png), auto'},
|
||||
{ color: 'rgba(150,0,20150,1)', cursor: 'url(' + path + 'img/boardmarker-purple.png), auto'},
|
||||
{ color: 'rgba(255,220,0,1)', cursor: 'url(' + path + 'img/boardmarker-yellow.png), auto'}
|
||||
],
|
||||
chalks: [
|
||||
{ color: 'rgba(255,255,255,0.5)', cursor: 'url(' + path + 'img/chalk-white.png), auto'},
|
||||
{ color: 'rgba(96, 154, 244, 0.5)', cursor: 'url(' + path + 'img/chalk-blue.png), auto'},
|
||||
{ color: 'rgba(237, 20, 28, 0.5)', cursor: 'url(' + path + 'img/chalk-red.png), auto'},
|
||||
{ color: 'rgba(20, 237, 28, 0.5)', cursor: 'url(' + path + 'img/chalk-green.png), auto'},
|
||||
{ color: 'rgba(220, 133, 41, 0.5)', cursor: 'url(' + path + 'img/chalk-orange.png), auto'},
|
||||
{ color: 'rgba(220,0,220,0.5)', cursor: 'url(' + path + 'img/chalk-purple.png), auto'},
|
||||
{ color: 'rgba(255,220,0,0.5)', cursor: 'url(' + path + 'img/chalk-yellow.png), auto'}
|
||||
]
|
||||
},
|
||||
customcontrols: {
|
||||
controls: [
|
||||
{ icon: '<i class="fa fa-pen-square"></i>',
|
||||
title: 'Toggle chalkboard (B)',
|
||||
action: 'RevealChalkboard.toggleChalkboard();'
|
||||
},
|
||||
{ icon: '<i class="fa fa-pen"></i>',
|
||||
title: 'Toggle notes canvas (C)',
|
||||
action: 'RevealChalkboard.toggleNotesCanvas();'
|
||||
}
|
||||
]
|
||||
},
|
||||
// ...
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT licensed
|
||||
|
||||
Copyright (C) 2021 Asvin Goel
|
||||
# Chalkboard
|
||||
|
||||
With this plugin you can add a chalkboard to reveal.js. The plugin provides two possibilities to include handwritten notes to your presentation:
|
||||
|
||||
- you can make notes directly on the slides, e.g. to comment on certain aspects,
|
||||
- you can open a chalkboard or whiteboard on which you can make notes.
|
||||
|
||||
The main use case in mind when implementing the plugin is classroom usage in which you may want to explain some course content and quickly need to make some notes.
|
||||
|
||||
The plugin records all drawings made so that they can be play backed using the `autoSlide` feature or the `audio-slideshow` plugin.
|
||||
|
||||
[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/chalkboard-demo.html)
|
||||
|
||||
The chalkboard effect is based on [Chalkboard](https://github.com/mmoustafa/Chalkboard) by Mohamed Moustafa.
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the file `plugin.js` and the `img` directory into the plugin folder of your reveal.js presentation, i.e. `plugin/chalkboard` and load the plugin as shown below.
|
||||
|
||||
```html
|
||||
<script src="plugin/chalkboard/plugin.js"></script>
|
||||
<script src="plugin/chalkboard/customcontrols.js"></script>
|
||||
|
||||
<script>
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
plugins: [ RevealChalkboard, RevealCustomControls ],
|
||||
// ...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
The following stylesheet
|
||||
```html
|
||||
<link rel="stylesheet" href="plugin/chalkboard/style.css">
|
||||
<link rel="stylesheet" href="plugin/customcontrols/style.css">
|
||||
```
|
||||
has to be included to the `head` section of you HTML-file.
|
||||
|
||||
|
||||
In order to include buttons for opening and closing the notes canvas or the chalkboard you should make sure that `font-awesome` is available. The easiest way is to include
|
||||
```
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||
```
|
||||
to the ```head``` section of you HTML-file.
|
||||
|
||||
## Usage
|
||||
|
||||
### Mouse or touch
|
||||
- Click on the pen symbols at the bottom left to toggle the notes canvas or chalkboard
|
||||
- Click on the color picker at the left to change the color (the color picker is only visible if the notes canvas or chalkboard is active)
|
||||
- Click on the up/down arrows on the left to the switch among multiple chalkboardd (the up/down arrows are only available for the chlakboard)
|
||||
- Click the left mouse button and drag to write on notes canvas or chalkboard
|
||||
- Click the right mouse button and drag to wipe away previous drawings
|
||||
- Touch and move to write on notes canvas or chalkboard
|
||||
- Touch and hold for half a second, then move to wipe away previous drawings
|
||||
|
||||
### Keyboard
|
||||
- Press the 'BACKSPACE' key to delete all chalkboard drawings
|
||||
- Press the 'DEL' key to clear the notes canvas or chalkboard
|
||||
- Press the 'c' key to toggle the notes canvas
|
||||
- Press the 'b' key to toggle the chalkboard
|
||||
- Press the 'd' key to download drawings
|
||||
- Press the 'x' key to cycle colors forward
|
||||
- Press the 'y' key to cycle colors backward
|
||||
|
||||
## Playback
|
||||
|
||||
If the `autoSlide` feature is set or if the `audio-slideshow` plugin is used, pre-recorded chalkboard drawings can be played. The slideshow plays back the user interaction with the chalkboard in the same way as it was conducted when recording the data.
|
||||
|
||||
## Multiplexing
|
||||
|
||||
The plugin supports multiplexing via the [`multiplex` plugin](https://github.com/reveal/multiplex) or the [`seminar` plugin](https://github.com/rajgoel/reveal.js-plugins/tree/master/seminar).
|
||||
|
||||
## PDF-Export
|
||||
|
||||
If the slideshow is opened in [print mode](https://revealjs.com/pdf-export/), the chalkboard drawings in the session storage (see `storage` option - print version must be opened in the same tab or window as the original slideshow) or provided in a file (see `src` option) are included in the PDF-file. Each drawing on the chalkboard is added after the slide that was shown when opening the chalkboard. Drawings on the notes canvas are not included in the PDF-file.
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin has several configuration options:
|
||||
|
||||
- ```boardmarkerWidth```: an integer, the drawing width of the boardmarker; larger values draw thicker lines.
|
||||
- ```chalkWidth```: an integer, the drawing width of the chalk; larger values draw thicker lines.
|
||||
- ```chalkEffect```: a float in the range ```[0.0, 1.0]```, the intesity of the chalk effect on the chalk board. Full effect (default) ```1.0```, no effect ```0.0```.
|
||||
- ```storage```: Optional variable name for session storage of drawings.
|
||||
- ```src```: Optional filename for pre-recorded drawings.
|
||||
- ```readOnly```: Configuation option allowing to prevent changes to existing drawings. If set to ```true``` no changes can be made, if set to false ```false``` changes can be made, if unset or set to ```undefined``` no changes to the drawings can be made after returning to a slide or fragment for which drawings had been recorded before. In any case the recorded drawings for a slide or fragment can be cleared by pressing the 'DEL' key (i.e. by using the ```RevealChalkboard.clear()``` function).
|
||||
- ```transition```: Gives the duration (in milliseconds) of the transition for a slide change, so that the notes canvas is drawn after the transition is completed.
|
||||
- ```theme```: Can be set to either ```"chalkboard"``` or ```"whiteboard"```.
|
||||
|
||||
The following configuration options allow to change the appearance of the notes canvas and the chalkboard. All of these options require two values, the first gives the value for the notes canvas, the second for the chalkboard.
|
||||
|
||||
- ```background```: The first value expects a (semi-)transparent color which is used to provide visual feedback that the notes canvas is enabled, the second value expects a filename to a background image for the chalkboard.
|
||||
- ```grid```: By default whiteboard and chalkboard themes include a grid pattern on the background. This pattern can be modified by setting the color, the distance between lines, and the line width, e.g. ```{ color: 'rgb(127,127,255,0.1)', distance: 40, width: 2}```. Alternatively, the grid can be removed by setting the value to ```false```.
|
||||
- ```eraser```: An image path and radius for the eraser.
|
||||
- ```boardmarkers```: A list of boardmarkers with given color and cursor.
|
||||
- ```chalks```: A list of chalks with given color and cursor.
|
||||
- ```rememberColor```: Whether to remember the last selected color for the slide canvas or the board.
|
||||
|
||||
All of the configurations are optional and the default values shown below are used if the options are not provided.
|
||||
|
||||
```javascript
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
chalkboard: {
|
||||
boardmarkerWidth: 3,
|
||||
chalkWidth: 7,
|
||||
chalkEffect: 1.0,
|
||||
storage: null,
|
||||
src: null,
|
||||
readOnly: undefined,
|
||||
transition: 800,
|
||||
theme: "chalkboard",
|
||||
background: [ 'rgba(127,127,127,.1)' , path + 'img/blackboard.png' ],
|
||||
grid: { color: 'rgb(50,50,10,0.5)', distance: 80, width: 2},
|
||||
eraser: { src: path + 'img/sponge.png', radius: 20},
|
||||
boardmarkers : [
|
||||
{ color: 'rgba(100,100,100,1)', cursor: 'url(' + path + 'img/boardmarker-black.png), auto'},
|
||||
{ color: 'rgba(30,144,255, 1)', cursor: 'url(' + path + 'img/boardmarker-blue.png), auto'},
|
||||
{ color: 'rgba(220,20,60,1)', cursor: 'url(' + path + 'img/boardmarker-red.png), auto'},
|
||||
{ color: 'rgba(50,205,50,1)', cursor: 'url(' + path + 'img/boardmarker-green.png), auto'},
|
||||
{ color: 'rgba(255,140,0,1)', cursor: 'url(' + path + 'img/boardmarker-orange.png), auto'},
|
||||
{ color: 'rgba(150,0,20150,1)', cursor: 'url(' + path + 'img/boardmarker-purple.png), auto'},
|
||||
{ color: 'rgba(255,220,0,1)', cursor: 'url(' + path + 'img/boardmarker-yellow.png), auto'}
|
||||
],
|
||||
chalks: [
|
||||
{ color: 'rgba(255,255,255,0.5)', cursor: 'url(' + path + 'img/chalk-white.png), auto'},
|
||||
{ color: 'rgba(96, 154, 244, 0.5)', cursor: 'url(' + path + 'img/chalk-blue.png), auto'},
|
||||
{ color: 'rgba(237, 20, 28, 0.5)', cursor: 'url(' + path + 'img/chalk-red.png), auto'},
|
||||
{ color: 'rgba(20, 237, 28, 0.5)', cursor: 'url(' + path + 'img/chalk-green.png), auto'},
|
||||
{ color: 'rgba(220, 133, 41, 0.5)', cursor: 'url(' + path + 'img/chalk-orange.png), auto'},
|
||||
{ color: 'rgba(220,0,220,0.5)', cursor: 'url(' + path + 'img/chalk-purple.png), auto'},
|
||||
{ color: 'rgba(255,220,0,0.5)', cursor: 'url(' + path + 'img/chalk-yellow.png), auto'}
|
||||
]
|
||||
},
|
||||
customcontrols: {
|
||||
controls: [
|
||||
{ icon: '<i class="fa fa-pen-square"></i>',
|
||||
title: 'Toggle chalkboard (B)',
|
||||
action: 'RevealChalkboard.toggleChalkboard();'
|
||||
},
|
||||
{ icon: '<i class="fa fa-pen"></i>',
|
||||
title: 'Toggle notes canvas (C)',
|
||||
action: 'RevealChalkboard.toggleNotesCanvas();'
|
||||
}
|
||||
]
|
||||
},
|
||||
// ...
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT licensed
|
||||
|
||||
Copyright (C) 2021 Asvin Goel
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
@@ -1,129 +1,129 @@
|
||||
# Chart
|
||||
|
||||
A plugin for [Reveal.js](https://github.com/hakimel/reveal.js) allowing to easily add charts using [Chart.js](http://www.chartjs.org/).
|
||||
|
||||
[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/chart-demo.html)
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the file `plugin.js` into the plugin folder of your reveal.js presentation, i.e. `plugin/chart`.
|
||||
|
||||
Add the plugin and Chart.js to the dependencies in your presentation, as below.
|
||||
|
||||
```html
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.2.0/chart.min.js"></script>
|
||||
<script src="plugin/chart/plugin.js"></script>
|
||||
|
||||
<script>
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
plugins: [ RevealChart ],
|
||||
// ...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin has several parameters that you can set for your presentation by providing an `chart` option in the reveal.js initialization options. Note that all configuration parameters are optional and the defaults of Chart.js will be used for parameters that are not specified.
|
||||
|
||||
|
||||
```javascript
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
chart: {
|
||||
defaults: {
|
||||
color: 'lightgray', // color of labels
|
||||
scale: {
|
||||
beginAtZero: true,
|
||||
ticks: { stepSize: 1 },
|
||||
grid: { color: "lightgray" } , // color of grid lines
|
||||
},
|
||||
},
|
||||
line: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ], "borderDash": [ [5,10], [0,0] ] },
|
||||
bar: { backgroundColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]},
|
||||
pie: { backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
|
||||
},
|
||||
// ...
|
||||
});
|
||||
```
|
||||
The `defaults` parameter will overwrite `Chart.defaults`. Furthermore, for any chart type, e.g. line, bar, etc., the parameters for the individual datasets can be specified. Where Chart.js allows to specify a single parameter for a particular dataset, the plugin allows to specify an array of values for this parameter, which will automatically be assigned to the different datasets. Note that if there are more datasets than elements in the array, the plugin will start again with the first value in the array.
|
||||
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
A chart can be included in a slide by adding a `canvas` element with the `data-chart` attribute set to the desired chart type.
|
||||
|
||||
The chart can be configured within the canvas body by a JSON string embedded into an HTML comment.
|
||||
|
||||
```html
|
||||
<canvas data-chart="line" >
|
||||
<!--
|
||||
{
|
||||
"data": {
|
||||
"labels": ["January"," February"," March"," April"," May"," June"," July"],
|
||||
"datasets":[
|
||||
{
|
||||
"data":[65,59,80,81,56,55,40],
|
||||
"label":"My first dataset","backgroundColor":"rgba(20,220,220,.8)"
|
||||
},
|
||||
{
|
||||
"data":[28,48,40,19,86,27,90],
|
||||
"label":"My second dataset","backgroundColor":"rgba(220,120,120,.8)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
-->
|
||||
</canvas>
|
||||
```
|
||||
It is possible to provide the chart data by comma separated values and use the JSON string within the HTML comment to configure the chart layout.
|
||||
|
||||
```html
|
||||
<canvas class="stretch" data-chart="line">
|
||||
My first dataset, 65, 59, 80, 81, 56, 55, 40
|
||||
<!-- This is a comment that will be ignored -->
|
||||
My second dataset, 28, 48, 40, 19, 86, 27, 90
|
||||
<!--
|
||||
{
|
||||
"data" : {
|
||||
"labels" : ["Enero", "Febrero", "Marzo", "Avril", "Mayo", "Junio", "Julio"],
|
||||
"datasets" : [{ "borderColor": "#0f0", "borderDash": ["5","10"] }, { "borderColor": "#0ff" } ]
|
||||
}
|
||||
}
|
||||
-->
|
||||
</canvas>
|
||||
```
|
||||
|
||||
The layout configuration provided in `chart` parameter (see Configuration) will be used by default and only those parameters that are specified in a JSON string are used to overwrite the default values. If no JSON string is provided to configure the chart layout the default configuration is used. Note, that if no labels for the data points are provided by a JSON string, the plugin expects that the first row provides table headers.
|
||||
|
||||
```html
|
||||
<canvas data-chart="line">
|
||||
Month, January, February, March, April, May, June, July
|
||||
My first dataset, 65, 59, 80, 81, 56, 55, 40
|
||||
My second dataset, 28, 48, 40, 19, 86, 27, 90
|
||||
</canvas>
|
||||
```
|
||||
|
||||
The chart data can also be provided in an external CSV file. To include external data, the filename must be specified using the `data-chart-src` attribute of the `canvas` element. The CSV file is expected to only contain data values, whereas options for drawing the chart can be given as described above.
|
||||
|
||||
```html
|
||||
<canvas data-chart="bar" data-chart-src="chart/data.csv">
|
||||
<!--
|
||||
{
|
||||
"data" : {
|
||||
"datasets" : [{ "backgroundColor": "#0f0" }, { "backgroundColor": "#0ff" } ]
|
||||
},
|
||||
"options": { "scales": { "x": { "stacked": true }, "y": { "stacked": true } } }
|
||||
}
|
||||
-->
|
||||
</canvas>
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT licensed
|
||||
|
||||
Copyright (C) 2021 Asvin Goel
|
||||
# Chart
|
||||
|
||||
A plugin for [Reveal.js](https://github.com/hakimel/reveal.js) allowing to easily add charts using [Chart.js](http://www.chartjs.org/).
|
||||
|
||||
[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/chart-demo.html)
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the file `plugin.js` into the plugin folder of your reveal.js presentation, i.e. `plugin/chart`.
|
||||
|
||||
Add the plugin and Chart.js to the dependencies in your presentation, as below.
|
||||
|
||||
```html
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.2.0/chart.min.js"></script>
|
||||
<script src="plugin/chart/plugin.js"></script>
|
||||
|
||||
<script>
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
plugins: [ RevealChart ],
|
||||
// ...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin has several parameters that you can set for your presentation by providing an `chart` option in the reveal.js initialization options. Note that all configuration parameters are optional and the defaults of Chart.js will be used for parameters that are not specified.
|
||||
|
||||
|
||||
```javascript
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
chart: {
|
||||
defaults: {
|
||||
color: 'lightgray', // color of labels
|
||||
scale: {
|
||||
beginAtZero: true,
|
||||
ticks: { stepSize: 1 },
|
||||
grid: { color: "lightgray" } , // color of grid lines
|
||||
},
|
||||
},
|
||||
line: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ], "borderDash": [ [5,10], [0,0] ] },
|
||||
bar: { backgroundColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]},
|
||||
pie: { backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
|
||||
},
|
||||
// ...
|
||||
});
|
||||
```
|
||||
The `defaults` parameter will overwrite `Chart.defaults`. Furthermore, for any chart type, e.g. line, bar, etc., the parameters for the individual datasets can be specified. Where Chart.js allows to specify a single parameter for a particular dataset, the plugin allows to specify an array of values for this parameter, which will automatically be assigned to the different datasets. Note that if there are more datasets than elements in the array, the plugin will start again with the first value in the array.
|
||||
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
A chart can be included in a slide by adding a `canvas` element with the `data-chart` attribute set to the desired chart type.
|
||||
|
||||
The chart can be configured within the canvas body by a JSON string embedded into an HTML comment.
|
||||
|
||||
```html
|
||||
<canvas data-chart="line" >
|
||||
<!--
|
||||
{
|
||||
"data": {
|
||||
"labels": ["January"," February"," March"," April"," May"," June"," July"],
|
||||
"datasets":[
|
||||
{
|
||||
"data":[65,59,80,81,56,55,40],
|
||||
"label":"My first dataset","backgroundColor":"rgba(20,220,220,.8)"
|
||||
},
|
||||
{
|
||||
"data":[28,48,40,19,86,27,90],
|
||||
"label":"My second dataset","backgroundColor":"rgba(220,120,120,.8)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
-->
|
||||
</canvas>
|
||||
```
|
||||
It is possible to provide the chart data by comma separated values and use the JSON string within the HTML comment to configure the chart layout.
|
||||
|
||||
```html
|
||||
<canvas class="stretch" data-chart="line">
|
||||
My first dataset, 65, 59, 80, 81, 56, 55, 40
|
||||
<!-- This is a comment that will be ignored -->
|
||||
My second dataset, 28, 48, 40, 19, 86, 27, 90
|
||||
<!--
|
||||
{
|
||||
"data" : {
|
||||
"labels" : ["Enero", "Febrero", "Marzo", "Avril", "Mayo", "Junio", "Julio"],
|
||||
"datasets" : [{ "borderColor": "#0f0", "borderDash": ["5","10"] }, { "borderColor": "#0ff" } ]
|
||||
}
|
||||
}
|
||||
-->
|
||||
</canvas>
|
||||
```
|
||||
|
||||
The layout configuration provided in `chart` parameter (see Configuration) will be used by default and only those parameters that are specified in a JSON string are used to overwrite the default values. If no JSON string is provided to configure the chart layout the default configuration is used. Note, that if no labels for the data points are provided by a JSON string, the plugin expects that the first row provides table headers.
|
||||
|
||||
```html
|
||||
<canvas data-chart="line">
|
||||
Month, January, February, March, April, May, June, July
|
||||
My first dataset, 65, 59, 80, 81, 56, 55, 40
|
||||
My second dataset, 28, 48, 40, 19, 86, 27, 90
|
||||
</canvas>
|
||||
```
|
||||
|
||||
The chart data can also be provided in an external CSV file. To include external data, the filename must be specified using the `data-chart-src` attribute of the `canvas` element. The CSV file is expected to only contain data values, whereas options for drawing the chart can be given as described above.
|
||||
|
||||
```html
|
||||
<canvas data-chart="bar" data-chart-src="chart/data.csv">
|
||||
<!--
|
||||
{
|
||||
"data" : {
|
||||
"datasets" : [{ "backgroundColor": "#0f0" }, { "backgroundColor": "#0ff" } ]
|
||||
},
|
||||
"options": { "scales": { "x": { "stacked": true }, "y": { "stacked": true } } }
|
||||
}
|
||||
-->
|
||||
</canvas>
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT licensed
|
||||
|
||||
Copyright (C) 2021 Asvin Goel
|
||||
@@ -1,72 +1,72 @@
|
||||
# Custom controls
|
||||
|
||||
This plugin allows to add responsive custom controls to reveal.js which allow arbitrary positioning, layout, and behaviour of the controls.
|
||||
|
||||
[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/customcontrols-demo.html)
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the files `plugin.js` and `style.css` into the plugin folder of your reveal.js presentation, i.e. ```plugin/customcontrols``` and load the plugin as shown below.
|
||||
|
||||
```html
|
||||
<link rel="stylesheet" href="plugin/customcontrols/style.css">
|
||||
<script src="plugin/customcontrols/plugin.js"></script>
|
||||
|
||||
<script>
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
plugins: [ RevealCustomControls ],
|
||||
// ...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
Note, without configuration you need to add
|
||||
|
||||
```javascript
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||
```
|
||||
|
||||
between ```<head>``` and ```</head>``` of your HTML file because the defaults use [Font Awesome](http://fontawesome.io/).
|
||||
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin can be configured by adding custom controls and changing the layout of the slide number, e.g., by:
|
||||
|
||||
|
||||
```javascript
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
customcontrols: {
|
||||
controls: [
|
||||
{
|
||||
id: 'toggle-overview',
|
||||
title: 'Toggle overview (O)',
|
||||
icon: '<i class="fa fa-th"></i>',
|
||||
action: 'Reveal.toggleOverview();'
|
||||
},
|
||||
{ icon: '<i class="fa fa-pen-square"></i>',
|
||||
title: 'Toggle chalkboard (B)',
|
||||
action: 'RevealChalkboard.toggleChalkboard();'
|
||||
},
|
||||
{ icon: '<i class="fa fa-pen"></i>',
|
||||
title: 'Toggle notes canvas (C)',
|
||||
action: 'RevealChalkboard.toggleNotesCanvas();'
|
||||
}
|
||||
]
|
||||
},
|
||||
// ...
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
The `id` and `title` are optional. The configuration should be self explaining and any number of controls can be added. The style file can be altered to control the layout and responsiveness of the custom controls.
|
||||
|
||||
## License
|
||||
|
||||
MIT licensed
|
||||
|
||||
Copyright (C) 2020 Asvin Goel
|
||||
# Custom controls
|
||||
|
||||
This plugin allows to add responsive custom controls to reveal.js which allow arbitrary positioning, layout, and behaviour of the controls.
|
||||
|
||||
[Check out the live demo](https://rajgoel.github.io/reveal.js-demos/customcontrols-demo.html)
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the files `plugin.js` and `style.css` into the plugin folder of your reveal.js presentation, i.e. ```plugin/customcontrols``` and load the plugin as shown below.
|
||||
|
||||
```html
|
||||
<link rel="stylesheet" href="plugin/customcontrols/style.css">
|
||||
<script src="plugin/customcontrols/plugin.js"></script>
|
||||
|
||||
<script>
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
plugins: [ RevealCustomControls ],
|
||||
// ...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
Note, without configuration you need to add
|
||||
|
||||
```javascript
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||
```
|
||||
|
||||
between ```<head>``` and ```</head>``` of your HTML file because the defaults use [Font Awesome](http://fontawesome.io/).
|
||||
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin can be configured by adding custom controls and changing the layout of the slide number, e.g., by:
|
||||
|
||||
|
||||
```javascript
|
||||
Reveal.initialize({
|
||||
// ...
|
||||
customcontrols: {
|
||||
controls: [
|
||||
{
|
||||
id: 'toggle-overview',
|
||||
title: 'Toggle overview (O)',
|
||||
icon: '<i class="fa fa-th"></i>',
|
||||
action: 'Reveal.toggleOverview();'
|
||||
},
|
||||
{ icon: '<i class="fa fa-pen-square"></i>',
|
||||
title: 'Toggle chalkboard (B)',
|
||||
action: 'RevealChalkboard.toggleChalkboard();'
|
||||
},
|
||||
{ icon: '<i class="fa fa-pen"></i>',
|
||||
title: 'Toggle notes canvas (C)',
|
||||
action: 'RevealChalkboard.toggleNotesCanvas();'
|
||||
}
|
||||
]
|
||||
},
|
||||
// ...
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
The `id` and `title` are optional. The configuration should be self explaining and any number of controls can be added. The style file can be altered to control the layout and responsiveness of the custom controls.
|
||||
|
||||
## License
|
||||
|
||||
MIT licensed
|
||||
|
||||
Copyright (C) 2020 Asvin Goel
|
||||