mirror of
https://github.com/Ellpeck/ObsidianCustomFrames.git
synced 2024-11-23 10:08:33 +01:00
cleanup
This commit is contained in:
parent
51b03d7bfc
commit
ab10797f39
11 changed files with 1866 additions and 1956 deletions
|
@ -4,6 +4,6 @@ root = true
|
||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = tab
|
indent_style = space
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
tab_width = 4
|
tab_width = 4
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import esbuild from "esbuild";
|
import esbuild from "esbuild";
|
||||||
import process from "process";
|
import process from "process";
|
||||||
import builtins from 'builtin-modules';
|
import builtins from 'builtin-modules';
|
||||||
import { copy } from 'esbuild-plugin-copy';
|
import {copy} from 'esbuild-plugin-copy';
|
||||||
|
|
||||||
const banner = `/*
|
const banner = `/*
|
||||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||||
|
@ -11,50 +11,50 @@ if you want to view the source, please visit the github repository of this plugi
|
||||||
const prod = (process.argv[2] === 'production');
|
const prod = (process.argv[2] === 'production');
|
||||||
|
|
||||||
esbuild.build({
|
esbuild.build({
|
||||||
banner: {
|
banner: {
|
||||||
js: banner,
|
js: banner,
|
||||||
},
|
},
|
||||||
entryPoints: ['src/main.ts'],
|
entryPoints: ['src/main.ts'],
|
||||||
bundle: true,
|
bundle: true,
|
||||||
external: [
|
external: [
|
||||||
'obsidian',
|
'obsidian',
|
||||||
'electron',
|
'electron',
|
||||||
'@codemirror/autocomplete',
|
'@codemirror/autocomplete',
|
||||||
'@codemirror/closebrackets',
|
'@codemirror/closebrackets',
|
||||||
'@codemirror/collab',
|
'@codemirror/collab',
|
||||||
'@codemirror/commands',
|
'@codemirror/commands',
|
||||||
'@codemirror/comment',
|
'@codemirror/comment',
|
||||||
'@codemirror/fold',
|
'@codemirror/fold',
|
||||||
'@codemirror/gutter',
|
'@codemirror/gutter',
|
||||||
'@codemirror/highlight',
|
'@codemirror/highlight',
|
||||||
'@codemirror/history',
|
'@codemirror/history',
|
||||||
'@codemirror/language',
|
'@codemirror/language',
|
||||||
'@codemirror/lint',
|
'@codemirror/lint',
|
||||||
'@codemirror/matchbrackets',
|
'@codemirror/matchbrackets',
|
||||||
'@codemirror/panel',
|
'@codemirror/panel',
|
||||||
'@codemirror/rangeset',
|
'@codemirror/rangeset',
|
||||||
'@codemirror/rectangular-selection',
|
'@codemirror/rectangular-selection',
|
||||||
'@codemirror/search',
|
'@codemirror/search',
|
||||||
'@codemirror/state',
|
'@codemirror/state',
|
||||||
'@codemirror/stream-parser',
|
'@codemirror/stream-parser',
|
||||||
'@codemirror/text',
|
'@codemirror/text',
|
||||||
'@codemirror/tooltip',
|
'@codemirror/tooltip',
|
||||||
'@codemirror/view',
|
'@codemirror/view',
|
||||||
...builtins
|
...builtins
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
copy({
|
copy({
|
||||||
assets: [{
|
assets: [{
|
||||||
from: ["./manifest.json", "./main.js", "./styles.css"],
|
from: ["./manifest.json", "./main.js", "./styles.css"],
|
||||||
to: ["./test-vault/.obsidian/plugins/obsidian-custom-frames/."]
|
to: ["./test-vault/.obsidian/plugins/obsidian-custom-frames/."]
|
||||||
}]
|
}]
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
format: 'cjs',
|
format: 'cjs',
|
||||||
watch: !prod,
|
watch: !prod,
|
||||||
target: 'es2016',
|
target: 'es2016',
|
||||||
logLevel: "info",
|
logLevel: "info",
|
||||||
sourcemap: prod ? false : 'inline',
|
sourcemap: prod ? false : 'inline',
|
||||||
treeShaking: true,
|
treeShaking: true,
|
||||||
outfile: 'main.js',
|
outfile: 'main.js',
|
||||||
}).catch(() => process.exit(1));
|
}).catch(() => process.exit(1));
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
"id": "obsidian-custom-frames",
|
"id": "obsidian-custom-frames",
|
||||||
"name": "Custom Frames",
|
"name": "Custom Frames",
|
||||||
"version": "2.4.6",
|
"version": "2.4.6",
|
||||||
"minAppVersion": "1.2.0",
|
"minAppVersion": "1.2.0",
|
||||||
"description": "A plugin that turns web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.",
|
"description": "A plugin that turns web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.",
|
||||||
"author": "Ellpeck",
|
"author": "Ellpeck",
|
||||||
"authorUrl": "https://ellpeck.de",
|
"authorUrl": "https://ellpeck.de",
|
||||||
"isDesktopOnly": false
|
"isDesktopOnly": false
|
||||||
}
|
}
|
||||||
|
|
3393
package-lock.json
generated
3393
package-lock.json
generated
File diff suppressed because it is too large
Load diff
44
package.json
44
package.json
|
@ -1,24 +1,24 @@
|
||||||
{
|
{
|
||||||
"name": "obsidian-custom-frames",
|
"name": "obsidian-custom-frames",
|
||||||
"version": "2.4.6",
|
"version": "2.4.6",
|
||||||
"description": "An Obsidian plugin that turns web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.",
|
"description": "An Obsidian plugin that turns web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "node esbuild.config.mjs",
|
"dev": "node esbuild.config.mjs",
|
||||||
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
|
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
|
||||||
"version": "node version-bump.mjs && git add manifest.json versions.json"
|
"version": "node version-bump.mjs && git add manifest.json versions.json"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "Ellpeck",
|
"author": "Ellpeck",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^16.11.6",
|
"@types/node": "^16.11.6",
|
||||||
"builtin-modules": "^3.2.0",
|
"builtin-modules": "^3.2.0",
|
||||||
"electron": "^13.6.2",
|
"electron": "^20.3.9",
|
||||||
"esbuild": "0.14.0",
|
"esbuild": "0.14.0",
|
||||||
"esbuild-plugin-copy": "^1.3.0",
|
"esbuild-plugin-copy": "^1.3.0",
|
||||||
"obsidian": "latest",
|
"obsidian": "latest",
|
||||||
"tslib": "2.3.1",
|
"tslib": "2.3.1",
|
||||||
"typescript": "4.4.4"
|
"typescript": "4.4.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
150
src/main.ts
150
src/main.ts
|
@ -6,92 +6,92 @@ import { CustomFrameView } from "./view";
|
||||||
|
|
||||||
export default class CustomFramesPlugin extends Plugin {
|
export default class CustomFramesPlugin extends Plugin {
|
||||||
|
|
||||||
settings: CustomFramesSettings;
|
settings: CustomFramesSettings;
|
||||||
|
|
||||||
async onload(): Promise<void> {
|
async onload(): Promise<void> {
|
||||||
await this.loadSettings();
|
await this.loadSettings();
|
||||||
|
|
||||||
for (let frame of this.settings.frames) {
|
for (let frame of this.settings.frames) {
|
||||||
if (!frame.url || !frame.displayName)
|
if (!frame.url || !frame.displayName)
|
||||||
continue;
|
continue;
|
||||||
let name = `custom-frames-${getId(frame)}`;
|
let name = `custom-frames-${getId(frame)}`;
|
||||||
if (Platform.isMobileApp && frame.hideOnMobile) {
|
if (Platform.isMobileApp && frame.hideOnMobile) {
|
||||||
console.log(`Skipping frame ${name} which is hidden on mobile`);
|
console.log(`Skipping frame ${name} which is hidden on mobile`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
console.log(`Registering frame ${name} for URL ${frame.url}`);
|
console.log(`Registering frame ${name} for URL ${frame.url}`);
|
||||||
|
|
||||||
this.registerView(name, l => new CustomFrameView(l, this.settings, frame, name));
|
this.registerView(name, l => new CustomFrameView(l, this.settings, frame, name));
|
||||||
this.addCommand({
|
this.addCommand({
|
||||||
id: `open-${name}`,
|
id: `open-${name}`,
|
||||||
name: `Open ${frame.displayName}`,
|
name: `Open ${frame.displayName}`,
|
||||||
callback: () => this.openLeaf(name, frame.openInCenter, false),
|
callback: () => this.openLeaf(name, frame.openInCenter, false),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (frame.addRibbonIcon)
|
if (frame.addRibbonIcon)
|
||||||
this.addRibbonIcon(getIcon(frame), `Open ${frame.displayName}`,
|
this.addRibbonIcon(getIcon(frame), `Open ${frame.displayName}`,
|
||||||
e => this.openLeaf(name, frame.openInCenter, Platform.isMacOS ? e.metaKey : e.ctrlKey));
|
e => this.openLeaf(name, frame.openInCenter, Platform.isMacOS ? e.metaKey : e.ctrlKey));
|
||||||
} catch {
|
} catch {
|
||||||
console.error(`Couldn't register frame ${name}, is there already one with the same name?`);
|
console.error(`Couldn't register frame ${name}, is there already one with the same name?`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.addSettingTab(new CustomFramesSettingTab(this.app, this));
|
this.addSettingTab(new CustomFramesSettingTab(this.app, this));
|
||||||
|
|
||||||
this.registerMarkdownCodeBlockProcessor("custom-frames", (s, e) => {
|
this.registerMarkdownCodeBlockProcessor("custom-frames", (s, e) => {
|
||||||
e.empty();
|
e.empty();
|
||||||
e.addClass("custom-frames-view-file");
|
e.addClass("custom-frames-view-file");
|
||||||
|
|
||||||
let frameMatch = /frame:([^\n]+)/gi.exec(s);
|
let frameMatch = /frame:([^\n]+)/gi.exec(s);
|
||||||
let frameName = frameMatch && frameMatch[1].trim();
|
let frameName = frameMatch && frameMatch[1].trim();
|
||||||
if (!frameName) {
|
if (!frameName) {
|
||||||
e.createSpan({ text: "Couldn't parse frame name" });
|
e.createSpan({ text: "Couldn't parse frame name" });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let data = this.settings.frames.find(f => f.displayName == frameName);
|
let data = this.settings.frames.find(f => f.displayName == frameName);
|
||||||
if (!data) {
|
if (!data) {
|
||||||
e.createSpan({ text: `Couldn't find a frame with name ${frameName}` });
|
e.createSpan({ text: `Couldn't find a frame with name ${frameName}` });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Platform.isMobileApp && data.hideOnMobile) {
|
if (Platform.isMobileApp && data.hideOnMobile) {
|
||||||
e.createSpan({ text: `${frameName} is hidden on mobile` });
|
e.createSpan({ text: `${frameName} is hidden on mobile` });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let styleMatch = /style:([^\n]+)/gi.exec(s);
|
let styleMatch = /style:([^\n]+)/gi.exec(s);
|
||||||
let style = styleMatch && styleMatch[1].trim();
|
let style = styleMatch && styleMatch[1].trim();
|
||||||
style ||= "height: 600px;";
|
style ||= "height: 600px;";
|
||||||
|
|
||||||
let urlSuffixMatch = /urlsuffix:([^\n]+)/gi.exec(s);
|
let urlSuffixMatch = /urlsuffix:([^\n]+)/gi.exec(s);
|
||||||
let urlSuffix = urlSuffixMatch && urlSuffixMatch[1].trim();
|
let urlSuffix = urlSuffixMatch && urlSuffixMatch[1].trim();
|
||||||
urlSuffix ||= "";
|
urlSuffix ||= "";
|
||||||
|
|
||||||
let frame = new CustomFrame(this.settings, data);
|
let frame = new CustomFrame(this.settings, data);
|
||||||
frame.create(e, style, urlSuffix);
|
frame.create(e, style, urlSuffix);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadSettings() {
|
async loadSettings() {
|
||||||
this.settings = Object.assign({}, defaultSettings, await this.loadData());
|
this.settings = Object.assign({}, defaultSettings, await this.loadData());
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveSettings() {
|
async saveSettings() {
|
||||||
await this.saveData(this.settings);
|
await this.saveData(this.settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async openLeaf(name: string, center: boolean, split: boolean): Promise<void> {
|
private async openLeaf(name: string, center: boolean, split: boolean): Promise<void> {
|
||||||
let leaf: WorkspaceLeaf;
|
let leaf: WorkspaceLeaf;
|
||||||
if (center) {
|
if (center) {
|
||||||
leaf = this.app.workspace.getLeaf(split);
|
leaf = this.app.workspace.getLeaf(split);
|
||||||
await leaf.setViewState({ type: name, active: true });
|
await leaf.setViewState({ type: name, active: true });
|
||||||
} else {
|
} else {
|
||||||
if (!this.app.workspace.getLeavesOfType(name).length)
|
if (!this.app.workspace.getLeavesOfType(name).length)
|
||||||
await this.app.workspace.getRightLeaf(false).setViewState({ type: name, active: true });
|
await this.app.workspace.getRightLeaf(false).setViewState({ type: name, active: true });
|
||||||
leaf = this.app.workspace.getLeavesOfType(name)[0];
|
leaf = this.app.workspace.getLeavesOfType(name)[0];
|
||||||
this.app.workspace.revealLeaf(leaf);
|
this.app.workspace.revealLeaf(leaf);
|
||||||
}
|
}
|
||||||
if (leaf.view instanceof CustomFrameView)
|
if (leaf.view instanceof CustomFrameView)
|
||||||
leaf.view.focus();
|
leaf.view.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,10 @@ export class CustomFramesSettingTab extends PluginSettingTab {
|
||||||
display(): void {
|
display(): void {
|
||||||
this.containerEl.empty();
|
this.containerEl.empty();
|
||||||
this.containerEl.createEl("h2", { text: "Custom Frames Settings" });
|
this.containerEl.createEl("h2", { text: "Custom Frames Settings" });
|
||||||
this.containerEl.createEl("p", { text: "Please note that Obsidian has to be restarted or reloaded for most of these settings to take effect.", cls: "mod-warning" });
|
this.containerEl.createEl("p", {
|
||||||
|
text: "Please note that Obsidian has to be restarted or reloaded for most of these settings to take effect.",
|
||||||
|
cls: "mod-warning"
|
||||||
|
});
|
||||||
|
|
||||||
new Setting(this.containerEl)
|
new Setting(this.containerEl)
|
||||||
.setName("Frame Padding")
|
.setName("Frame Padding")
|
||||||
|
@ -187,14 +190,20 @@ export class CustomFramesSettingTab extends PluginSettingTab {
|
||||||
this.display();
|
this.display();
|
||||||
});
|
});
|
||||||
|
|
||||||
var disclaimer = this.containerEl.createEl("p", { cls: "mod-warning" });
|
let disclaimer = this.containerEl.createEl("p", { cls: "mod-warning" });
|
||||||
disclaimer.createSpan({ text: "Please be advised that, when adding a site as a custom frame, you potentially expose personal information you enter to other plugins you have installed. For more information, see " });
|
disclaimer.createSpan({ text: "Please be advised that, when adding a site as a custom frame, you potentially expose personal information you enter to other plugins you have installed. For more information, see " });
|
||||||
disclaimer.createEl("a", { text: "this discussion", href: "https://github.com/Ellpeck/ObsidianCustomFrames/issues/54#issuecomment-1210879685", cls: "mod-warning" });
|
disclaimer.createEl("a", {
|
||||||
|
text: "this discussion",
|
||||||
|
href: "https://github.com/Ellpeck/ObsidianCustomFrames/issues/54#issuecomment-1210879685",
|
||||||
|
cls: "mod-warning"
|
||||||
|
});
|
||||||
disclaimer.createSpan({ text: "." });
|
disclaimer.createSpan({ text: "." });
|
||||||
|
|
||||||
this.containerEl.createEl("hr");
|
this.containerEl.createEl("hr");
|
||||||
this.containerEl.createEl("p", { text: "If you like this plugin and want to support its development, you can do so through my website by clicking this fancy image!" });
|
this.containerEl.createEl("p", { text: "If you like this plugin and want to support its development, you can do so through my website by clicking this fancy image!" });
|
||||||
this.containerEl.createEl("a", { href: "https://ellpeck.de/support" })
|
this.containerEl.createEl("a", { href: "https://ellpeck.de/support" }).createEl("img", {
|
||||||
.createEl("img", { attr: { src: "https://ellpeck.de/res/generalsupport.png" }, cls: "custom-frames-support" });
|
attr: { src: "https://ellpeck.de/res/generalsupport.png" },
|
||||||
|
cls: "custom-frames-support"
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
28
styles.css
28
styles.css
|
@ -1,31 +1,31 @@
|
||||||
.custom-frames-view {
|
.custom-frames-view {
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
overflow: hidden !important;
|
overflow: hidden !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-frames-view-file {
|
.custom-frames-view-file {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-frames-frame {
|
.custom-frames-frame {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
background-clip: content-box;
|
background-clip: content-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-frames-add {
|
.custom-frames-add {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-frames-show {
|
.custom-frames-show {
|
||||||
margin-bottom: 18px;
|
margin-bottom: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-frames-support {
|
.custom-frames-support {
|
||||||
max-width: 50%;
|
max-width: 50%;
|
||||||
width: 400px;
|
width: 400px;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"inlineSourceMap": true,
|
"inlineSourceMap": true,
|
||||||
"inlineSources": true,
|
"inlineSources": true,
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"target": "ES6",
|
"target": "ES6",
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"noImplicitAny": true,
|
"noImplicitAny": true,
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"importHelpers": true,
|
"importHelpers": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"lib": [
|
"lib": [
|
||||||
"DOM",
|
"DOM",
|
||||||
"ES5",
|
"ES5",
|
||||||
"ES6",
|
"ES6",
|
||||||
"ES7"
|
"ES7"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"**/*.ts"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"**/*.ts"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
{
|
{
|
||||||
"2.0.0": "0.13.33",
|
"2.0.0": "0.13.33",
|
||||||
"2.0.1": "0.13.33",
|
"2.0.1": "0.13.33",
|
||||||
"2.1.0": "0.13.33",
|
"2.1.0": "0.13.33",
|
||||||
"2.2.0": "0.14.3",
|
"2.2.0": "0.14.3",
|
||||||
"2.2.1": "0.14.3",
|
"2.2.1": "0.14.3",
|
||||||
"2.2.2": "0.14.3",
|
"2.2.2": "0.14.3",
|
||||||
"2.3.0": "0.14.5",
|
"2.3.0": "0.14.5",
|
||||||
"2.4.0": "0.14.5",
|
"2.4.0": "0.14.5",
|
||||||
"2.4.1": "0.14.5",
|
"2.4.1": "0.14.5",
|
||||||
"2.4.2": "0.14.5",
|
"2.4.2": "0.14.5",
|
||||||
"2.4.3": "0.15.5",
|
"2.4.3": "0.15.5",
|
||||||
"2.4.4": "0.16.0",
|
"2.4.4": "0.16.0",
|
||||||
"2.4.5": "1.1.0",
|
"2.4.5": "1.1.0",
|
||||||
"2.4.6": "1.2.0"
|
"2.4.6": "1.2.0"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue