Build Index

Summary

This describes the scripts/buildIndex.js logic which is used to help develop plugin views in browser mode.

Lifecycle

Build

We dynamically generate an index.html based on the passed in parameters. This lets us build an index for us within Plugin Core as well as NextJS Template

out = genVSCodeHTMLIndex;
write(public / index.html, out);
genVSCodeHTMLIndex(opts) {
	return `<html>

	// interpolate a bunch of values
	...

	</html>
	`
}

Initialization

onLoad {
	applyTheme(document.body.className)
}

applyTheme(theme) {
	window.currentTheme := theme
	...

	// css link of new theme
	link := theme
	document.head.appendChild link

}

Copy and Paste

When copy and pasting content, Dendron has a listener that intercepts all copy events to apply additional formatting. This happens in ../packages/common-server/src/etc.ts (Private).

When a copy event is detected, Dendron creates two clipboard items:

  • plaintext
  • html

The plaintext clipboard item takes the raw plaintext.

The HTML clipboard item will strip out background color and other properties when copying HTML content (otherwise, pasting into Gmail will also paste in the extension background).


Backlinks