Initial commit!
This commit is contained in:
		
						commit
						ed3770792a
					
				
					 8 changed files with 1627 additions and 0 deletions
				
			
		
							
								
								
									
										11
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | # Intellij | ||||||
|  | *.iml | ||||||
|  | .idea | ||||||
|  | 
 | ||||||
|  | # npm | ||||||
|  | node_modules | ||||||
|  | package-lock.json | ||||||
|  | 
 | ||||||
|  | # build | ||||||
|  | main.js | ||||||
|  | *.js.map | ||||||
							
								
								
									
										35
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,35 @@ | ||||||
|  | ### Obsidian Sample Plugin | ||||||
|  | 
 | ||||||
|  | This is a sample plugin for Obsidian (https://obsidian.md). | ||||||
|  | 
 | ||||||
|  | This project uses Typescript to provide type checking and documentation. | ||||||
|  | The repo contains the latest plugin API (obsidian.d.ts) in Typescript Definition format, which contains JSDoc comments describing what it does. | ||||||
|  | 
 | ||||||
|  | #### How to use | ||||||
|  | 
 | ||||||
|  | - Clone this repo. | ||||||
|  | - `npm i` or `yarn` to install dependencies | ||||||
|  | - `npm run dev` to start compilation in watch mode. | ||||||
|  | 
 | ||||||
|  | #### How to install the plugin | ||||||
|  | 
 | ||||||
|  | - Copy over `main.js`, `styles.css`, `manifest.json` to your vault `vault/.obsidian/plugins/plugin-id/`. | ||||||
|  | 
 | ||||||
|  | #### Plugin structure | ||||||
|  | 
 | ||||||
|  | `manifest.json` | ||||||
|  |   | ||||||
|  |  - `id` the ID of your plugin. | ||||||
|  |  - `name` the display name of your plugin. | ||||||
|  |  - `description` the long description of your plugin. | ||||||
|  |  - `isDesktopOnly` whether your plugin uses NodeJS or Electron APIs. | ||||||
|  |  - `js` (optional) an alternative js entry point. Defaults to `main.js` | ||||||
|  |  - `css` (optional) a css file that should be injected. Defaults to `styles.css` | ||||||
|  |   | ||||||
|  |  `main.js` | ||||||
|  |   | ||||||
|  |  - This is the main entry point of your plugin. | ||||||
|  |  - Import any Obsidian API using `require('obsidian')` | ||||||
|  |  - Import NodeJS or Electron API using `require('fs')` or `require('electron')` | ||||||
|  |  - Must export a default class which extends `CustomPlugin` | ||||||
|  |   | ||||||
							
								
								
									
										77
									
								
								main.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								main.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,77 @@ | ||||||
|  | import { App, CustomPlugin, Modal, Notice, PluginSettingTab, Setting } from 'obsidian'; | ||||||
|  | 
 | ||||||
|  | export default class MyPlugin extends CustomPlugin { | ||||||
|  | 	onInit() { | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	onload() { | ||||||
|  | 		console.log('loading plugin'); | ||||||
|  | 
 | ||||||
|  | 		this.addRibbonIcon('dice', 'Sample Plugin', () => { | ||||||
|  | 			new Notice('This is a notice!'); | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 		this.addStatusBarItem().setText('Status Bar Text'); | ||||||
|  | 
 | ||||||
|  | 		this.addCommand({ | ||||||
|  | 			id: 'open-sample-modal', | ||||||
|  | 			name: 'Open Sample Modal', | ||||||
|  | 			// callback: () => {
 | ||||||
|  | 			// 	console.log('Simple Callback');
 | ||||||
|  | 			// },
 | ||||||
|  | 			checkCallback: (checking: boolean) => { | ||||||
|  | 				let leaf = this.app.workspace.activeLeaf; | ||||||
|  | 				if (leaf) { | ||||||
|  | 					if (!checking) { | ||||||
|  | 						new SampleModal(this.app).open(); | ||||||
|  | 					} | ||||||
|  | 					return true; | ||||||
|  | 				} | ||||||
|  | 				return false; | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 		this.addSettingTab(new SampleSettingTab(this.app, this)); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	onunload() { | ||||||
|  | 		console.log('unloading plugin'); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class SampleModal extends Modal { | ||||||
|  | 	constructor(app: App) { | ||||||
|  | 		super(app); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	onOpen() { | ||||||
|  | 		let {contentEl} = this; | ||||||
|  | 		contentEl.setText('Woah!'); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	onClose() { | ||||||
|  | 		let {contentEl} = this; | ||||||
|  | 		contentEl.empty(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class SampleSettingTab extends PluginSettingTab { | ||||||
|  | 	display(): void { | ||||||
|  | 		let {containerEl} = this; | ||||||
|  | 
 | ||||||
|  | 		containerEl.empty(); | ||||||
|  | 
 | ||||||
|  | 		containerEl.createEl('h2', {text: 'Settings for my awesome plugin.'}); | ||||||
|  | 
 | ||||||
|  | 		new Setting(containerEl) | ||||||
|  | 			.setName('Setting #1') | ||||||
|  | 			.setDesc('It\'s a secret') | ||||||
|  | 			.addText(text => text.setPlaceholder('Enter your secret') | ||||||
|  | 				.setValue('') | ||||||
|  | 				.onChange((value) => { | ||||||
|  | 					console.log('Secret: ' + value); | ||||||
|  | 				})); | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										8
									
								
								manifest.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								manifest.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | { | ||||||
|  |   "id": "obsidian-sample-plugin", | ||||||
|  |   "name": "Sample Plugin", | ||||||
|  |   "description": "This is a sample plugin for Obsidian (https://obsidian.md)", | ||||||
|  |   "isDesktopOnly": false, | ||||||
|  |   "js": "main.js", | ||||||
|  |   "css": "styles.css" | ||||||
|  | } | ||||||
							
								
								
									
										1453
									
								
								obsidian.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1453
									
								
								obsidian.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										18
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | ||||||
|  | { | ||||||
|  |   "name": "obsidian-sample-plugin", | ||||||
|  |   "version": "0.9.7", | ||||||
|  |   "description": "This is a sample plugin for Obsidian (https://obsidian.md)", | ||||||
|  |   "main": "main.js", | ||||||
|  |   "scripts": { | ||||||
|  |     "dev": "tsc --project tsconfig.json -w", | ||||||
|  |     "build": "tsc --project tsconfig.json" | ||||||
|  |   }, | ||||||
|  |   "keywords": [], | ||||||
|  |   "author": "", | ||||||
|  |   "license": "MIT", | ||||||
|  |   "devDependencies": { | ||||||
|  |     "@types/codemirror": "0.0.98", | ||||||
|  |     "@types/node": "^14.14.2", | ||||||
|  |     "typescript": "^4.0.3" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										4
									
								
								styles.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								styles.css
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | /* Sets all the text color to red! */ | ||||||
|  | body { | ||||||
|  |     color: red; | ||||||
|  | } | ||||||
							
								
								
									
										21
									
								
								tsconfig.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tsconfig.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | { | ||||||
|  |   "compilerOptions": { | ||||||
|  |     "baseUrl": ".", | ||||||
|  |     "inlineSourceMap": true, | ||||||
|  |     "inlineSources": true, | ||||||
|  |     "module": "CommonJS", | ||||||
|  |     "target": "es5", | ||||||
|  |     "allowJs": true, | ||||||
|  |     "noImplicitAny": true, | ||||||
|  |     "moduleResolution": "node", | ||||||
|  |     "lib": [ | ||||||
|  |       "dom", | ||||||
|  |       "es5", | ||||||
|  |       "scripthost", | ||||||
|  |       "es2015" | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   "include": [ | ||||||
|  |     "**/*.ts" | ||||||
|  |   ] | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 lishid
						lishid