@mdzip/editor 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -0
- package/dist/archive-utils.d.ts +35 -0
- package/dist/archive-utils.d.ts.map +1 -0
- package/dist/archive-utils.js +148 -0
- package/dist/archive-utils.js.map +1 -0
- package/dist/browser.d.ts +7 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +108 -0
- package/dist/browser.js.map +1 -0
- package/dist/diff.d.ts +36 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +100 -0
- package/dist/diff.js.map +1 -0
- package/dist/icons/md-markdown.d.ts +3 -0
- package/dist/icons/md-markdown.d.ts.map +1 -0
- package/dist/icons/md-markdown.js +35 -0
- package/dist/icons/md-markdown.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +9 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +21 -0
- package/dist/metadata.js.map +1 -0
- package/dist/rendering.d.ts +20 -0
- package/dist/rendering.d.ts.map +1 -0
- package/dist/rendering.js +83 -0
- package/dist/rendering.js.map +1 -0
- package/dist/theme.d.ts +14 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +96 -0
- package/dist/theme.js.map +1 -0
- package/dist/view-css.d.ts +2 -0
- package/dist/view-css.d.ts.map +1 -0
- package/dist/view-css.js +1281 -0
- package/dist/view-css.js.map +1 -0
- package/dist/view.d.ts +237 -0
- package/dist/view.d.ts.map +1 -0
- package/dist/view.js +1857 -0
- package/dist/view.js.map +1 -0
- package/dist/workspace-view.d.ts +20 -0
- package/dist/workspace-view.d.ts.map +1 -0
- package/dist/workspace-view.js +200 -0
- package/dist/workspace-view.js.map +1 -0
- package/dist/workspace.d.ts +131 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +555 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +40 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { MdzWorkspace, MdzWorkspaceAsset } from 'mdzip-core-js';
|
|
2
|
+
export * from './archive-utils.js';
|
|
3
|
+
export * from './browser.js';
|
|
4
|
+
export * from './diff.js';
|
|
5
|
+
export * from './metadata.js';
|
|
6
|
+
export * from './rendering.js';
|
|
7
|
+
export * from './theme.js';
|
|
8
|
+
export * from './view.js';
|
|
9
|
+
export * from './workspace.js';
|
|
10
|
+
export * from './workspace-view.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrE,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './archive-utils.js';
|
|
2
|
+
export * from './browser.js';
|
|
3
|
+
export * from './diff.js';
|
|
4
|
+
export * from './metadata.js';
|
|
5
|
+
export * from './rendering.js';
|
|
6
|
+
export * from './theme.js';
|
|
7
|
+
export * from './view.js';
|
|
8
|
+
export * from './workspace.js';
|
|
9
|
+
export * from './workspace-view.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Extract the first ATX heading, for example `# Title`, from markdown text. */
|
|
2
|
+
export declare function firstMarkdownHeading(markdown: string): string | undefined;
|
|
3
|
+
/** Derive the file base name, without extension, from a path string. */
|
|
4
|
+
export declare function fileBaseNameFromPath(path: string): string;
|
|
5
|
+
/** Resolve a stable title fallback from markdown heading or filename. */
|
|
6
|
+
export declare function suggestedTitleFromMarkdown(markdown: string, fileBaseName: string): string;
|
|
7
|
+
/** Resolve display title from manifest title with filename fallback. */
|
|
8
|
+
export declare function displayTitleFromManifest(manifestTitle: string | undefined, fileBaseName: string): string;
|
|
9
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzF;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR"}
|
package/dist/metadata.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Extract the first ATX heading, for example `# Title`, from markdown text. */
|
|
2
|
+
export function firstMarkdownHeading(markdown) {
|
|
3
|
+
const match = markdown.match(/^\s{0,3}#{1,6}\s+(.+?)\s*#*\s*$/m);
|
|
4
|
+
return match?.[1]?.trim();
|
|
5
|
+
}
|
|
6
|
+
/** Derive the file base name, without extension, from a path string. */
|
|
7
|
+
export function fileBaseNameFromPath(path) {
|
|
8
|
+
const slashIndex = path.lastIndexOf('/');
|
|
9
|
+
const fileName = slashIndex >= 0 ? path.slice(slashIndex + 1) : path;
|
|
10
|
+
return fileName.replace(/\.[^.]+$/, '') || 'document';
|
|
11
|
+
}
|
|
12
|
+
/** Resolve a stable title fallback from markdown heading or filename. */
|
|
13
|
+
export function suggestedTitleFromMarkdown(markdown, fileBaseName) {
|
|
14
|
+
return firstMarkdownHeading(markdown) || fileBaseName;
|
|
15
|
+
}
|
|
16
|
+
/** Resolve display title from manifest title with filename fallback. */
|
|
17
|
+
export function displayTitleFromManifest(manifestTitle, fileBaseName) {
|
|
18
|
+
const trimmed = manifestTitle?.trim();
|
|
19
|
+
return trimmed || fileBaseName;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACjE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;AACxD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE,YAAoB;IAC/E,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC;AACxD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,wBAAwB,CACtC,aAAiC,EACjC,YAAoB;IAEpB,MAAM,OAAO,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC;IACtC,OAAO,OAAO,IAAI,YAAY,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface MdzipMarkdownRenderer {
|
|
2
|
+
render(markdown: string, options?: Record<string, unknown>): string;
|
|
3
|
+
}
|
|
4
|
+
export interface MdzipAssetUrlResolver {
|
|
5
|
+
resolveAssetUrl(path: string, fallbackDataUri?: string): string | undefined;
|
|
6
|
+
}
|
|
7
|
+
export interface MdzipRenderRequest {
|
|
8
|
+
markdown: string;
|
|
9
|
+
assetResolver?: MdzipAssetUrlResolver;
|
|
10
|
+
}
|
|
11
|
+
export interface MdzipRenderResult {
|
|
12
|
+
html: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const defaultSafeMarkdownRenderer: MdzipMarkdownRenderer;
|
|
15
|
+
export declare class MdzipRenderingService {
|
|
16
|
+
private readonly renderer;
|
|
17
|
+
constructor(renderer?: MdzipMarkdownRenderer);
|
|
18
|
+
render(request: MdzipRenderRequest): MdzipRenderResult;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=rendering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;CACrE;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAqCD,eAAO,MAAM,2BAA2B,EAAE,qBAYzC,CAAC;AAEF,qBAAa,qBAAqB;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,qBAAmD;IAE1F,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB;CAQ9D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import DOMPurify from 'isomorphic-dompurify';
|
|
2
|
+
import hljs from 'highlight.js';
|
|
3
|
+
import { Marked } from 'marked';
|
|
4
|
+
const marked = new Marked({
|
|
5
|
+
renderer: {
|
|
6
|
+
code(token) {
|
|
7
|
+
const requestedLanguage = token.lang || '';
|
|
8
|
+
const language = requestedLanguage === 'vue' ? 'html' : requestedLanguage;
|
|
9
|
+
if (language && hljs.getLanguage(language)) {
|
|
10
|
+
try {
|
|
11
|
+
const highlighted = hljs.highlight(token.text, {
|
|
12
|
+
language,
|
|
13
|
+
ignoreIllegals: true
|
|
14
|
+
}).value;
|
|
15
|
+
return `<pre><code class="hljs language-${escapeHtml(requestedLanguage)}">${highlighted}</code></pre>`;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Fall through to escaped plain code.
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return `<pre><code>${escapeHtml(token.text)}</code></pre>`;
|
|
22
|
+
},
|
|
23
|
+
table(token) {
|
|
24
|
+
const renderCell = (cell) => {
|
|
25
|
+
const tag = cell.header ? 'th' : 'td';
|
|
26
|
+
const align = cell.align ? ` align="${cell.align}"` : '';
|
|
27
|
+
return `<${tag}${align}>${this.parser.parseInline(cell.tokens)}</${tag}>\n`;
|
|
28
|
+
};
|
|
29
|
+
const renderRow = (cells) => `<tr>\n${cells.map(renderCell).join('')}</tr>\n`;
|
|
30
|
+
const header = renderRow(token.header);
|
|
31
|
+
const body = token.rows.length
|
|
32
|
+
? `<tbody>\n${token.rows.map(renderRow).join('')}</tbody>\n`
|
|
33
|
+
: '';
|
|
34
|
+
return `<div class="mdzip-table-scroll"><table>\n<thead>\n${header}</thead>\n${body}</table></div>\n`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
export const defaultSafeMarkdownRenderer = {
|
|
39
|
+
render(markdown) {
|
|
40
|
+
const rendered = marked.parse(markdown, { async: false });
|
|
41
|
+
const html = typeof rendered === 'string' ? rendered : escapeHtml(markdown);
|
|
42
|
+
return DOMPurify.sanitize(html, {
|
|
43
|
+
USE_PROFILES: { html: true },
|
|
44
|
+
ADD_ATTR: ['class'],
|
|
45
|
+
FORBID_TAGS: ['base', 'embed', 'form', 'iframe', 'input', 'link', 'meta', 'object', 'script', 'style'],
|
|
46
|
+
FORBID_ATTR: ['style'],
|
|
47
|
+
ALLOW_DATA_ATTR: false
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
export class MdzipRenderingService {
|
|
52
|
+
constructor(renderer = defaultSafeMarkdownRenderer) {
|
|
53
|
+
this.renderer = renderer;
|
|
54
|
+
}
|
|
55
|
+
render(request) {
|
|
56
|
+
const markdown = request.assetResolver
|
|
57
|
+
? rewriteAssetSources(request.markdown, request.assetResolver)
|
|
58
|
+
: request.markdown;
|
|
59
|
+
return {
|
|
60
|
+
html: this.renderer.render(markdown)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function rewriteAssetSources(markdown, resolver) {
|
|
65
|
+
return markdown.replace(/!\[([^\]]*)\]\(([^)\s]+)(?:\s+"([^"]*)")?\)/g, (match, alt, rawPath, title) => {
|
|
66
|
+
const path = rawPath.replace(/^<|>$/g, '');
|
|
67
|
+
const resolved = resolver.resolveAssetUrl(path);
|
|
68
|
+
if (!resolved) {
|
|
69
|
+
return match;
|
|
70
|
+
}
|
|
71
|
+
const suffix = title ? ` "${title.replace(/"/g, '"')}"` : '';
|
|
72
|
+
return ``;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function escapeHtml(value) {
|
|
76
|
+
return value
|
|
77
|
+
.replace(/&/g, '&')
|
|
78
|
+
.replace(/</g, '<')
|
|
79
|
+
.replace(/>/g, '>')
|
|
80
|
+
.replace(/"/g, '"')
|
|
81
|
+
.replace(/'/g, ''');
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"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"}
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS variable mapping: --mdzip-* resolves from consumer --theme-* tokens,
|
|
3
|
+
* then the active built-in color scheme, then hardcoded light fallbacks.
|
|
4
|
+
*
|
|
5
|
+
* Consumers can define --theme-* variables on :root, the editor container, or
|
|
6
|
+
* any ancestor. Direct --mdzip-* overrides remain available for individual
|
|
7
|
+
* component-level adjustments.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MDZIP_VARIABLES_CSS = "\n /* Editor surface */\n --mdzip-editor-background-color: var(--theme-editor-background-color, var(--mdzip-default-editor-background-color, #ffffff));\n --mdzip-editor-foreground-color: var(--theme-editor-foreground-color, var(--mdzip-default-editor-foreground-color, #1f2328));\n --mdzip-editor-cursor-color: var(--theme-editor-cursor-color, var(--theme-editor-foreground-color, var(--mdzip-default-editor-cursor-color, var(--mdzip-default-editor-foreground-color, #1f2328))));\n\n /* Chrome */\n --mdzip-toolbar-background-color: var(--theme-toolbar-background-color, var(--theme-editor-background-color, var(--mdzip-default-toolbar-background-color, var(--mdzip-default-editor-background-color, #ffffff))));\n --mdzip-toolbar-icon-fill-color: var(--theme-toolbar-icon-fill-color, var(--mdzip-default-toolbar-icon-fill-color, #ffffff));\n --mdzip-sidebar-background-color: var(--theme-sidebar-background-color, var(--mdzip-default-sidebar-background-color, #f7f7f9));\n --mdzip-sidebar-foreground-color: var(--theme-sidebar-foreground-color, var(--mdzip-default-sidebar-foreground-color, #202124));\n --mdzip-border-color: var(--theme-border-color, var(--mdzip-default-border-color, #e5e7eb));\n\n /* Widgets / popovers */\n --mdzip-widget-background-color: var(--theme-widget-background-color, var(--mdzip-default-widget-background-color, #f6f8fa));\n --mdzip-widget-border-color: var(--theme-widget-border-color, var(--mdzip-default-widget-border-color, #d8dee4));\n\n /* Accent / primary action */\n --mdzip-accent-color: var(--theme-accent-color, var(--mdzip-default-accent-color, #0969da));\n --mdzip-accent-foreground-color: var(--theme-accent-foreground-color, var(--mdzip-default-accent-foreground-color, #ffffff));\n\n /* Secondary controls */\n --mdzip-control-foreground-color: var(--theme-control-foreground-color, var(--mdzip-default-control-foreground-color, #24292f));\n --mdzip-control-hover-background-color: var(--theme-control-hover-background-color, var(--mdzip-default-control-hover-background-color, #eaeef2));\n\n /* Links */\n --mdzip-link-color: var(--theme-link-color, var(--theme-accent-color, var(--mdzip-default-link-color, var(--mdzip-default-accent-color, #0969da))));\n\n /* List / nav states */\n --mdzip-hover-background-color: var(--theme-hover-background-color, var(--mdzip-default-hover-background-color, rgba(175, 184, 193, 0.18)));\n --mdzip-selection-background-color: var(--theme-selection-background-color, var(--mdzip-default-selection-background-color, rgba(9, 105, 218, 0.12)));\n --mdzip-focus-outline-color: var(--theme-focus-outline-color, var(--theme-accent-color, var(--mdzip-default-focus-outline-color, var(--mdzip-default-accent-color, #0969da))));\n --mdzip-tree-guide-color: var(--theme-tree-guide-color, var(--mdzip-default-tree-guide-color, #a8b0ba));\n\n /* Text variants */\n --mdzip-muted-foreground-color: var(--theme-muted-foreground-color, var(--mdzip-default-muted-foreground-color, #57606a));\n\n /* Code / editor gutter */\n --mdzip-code-background-color: var(--theme-code-background-color, var(--mdzip-default-code-background-color, #f6f8fa));\n --mdzip-line-number-foreground-color: var(--theme-line-number-foreground-color, var(--mdzip-default-line-number-foreground-color, #8c959f));\n";
|
|
10
|
+
/** Drop-in light theme. Set these on :root or a parent element. */
|
|
11
|
+
export declare const MDZIP_LIGHT_THEME_CSS = "\n --theme-editor-background-color: #ffffff;\n --theme-editor-foreground-color: #1f2328;\n --theme-toolbar-background-color: #ffffff;\n --theme-sidebar-background-color: #f7f7f9;\n --theme-sidebar-foreground-color: #202124;\n --theme-border-color: #e5e7eb;\n --theme-widget-background-color: #f6f8fa;\n --theme-widget-border-color: #d8dee4;\n --theme-accent-color: #0969da;\n --theme-accent-foreground-color: #ffffff;\n --theme-control-foreground-color: #24292f;\n --theme-control-hover-background-color: #eaeef2;\n --theme-link-color: #0969da;\n --theme-hover-background-color: rgba(175, 184, 193, 0.18);\n --theme-selection-background-color: rgba(9, 105, 218, 0.12);\n --theme-focus-outline-color: #0969da;\n --theme-tree-guide-color: #a8b0ba;\n --theme-muted-foreground-color: #57606a;\n --theme-code-background-color: #f6f8fa;\n --theme-line-number-foreground-color: #8c959f;\n";
|
|
12
|
+
/** Drop-in dark theme. Set these on :root or a parent element. */
|
|
13
|
+
export declare const MDZIP_DARK_THEME_CSS = "\n --theme-editor-background-color: #1e1e1e;\n --theme-editor-foreground-color: #d4d4d4;\n --theme-toolbar-background-color: #252526;\n --theme-sidebar-background-color: #252526;\n --theme-sidebar-foreground-color: #cccccc;\n --theme-border-color: #3c3c3c;\n --theme-widget-background-color: #2d2d2d;\n --theme-widget-border-color: #454545;\n --theme-accent-color: #0078d4;\n --theme-accent-foreground-color: #ffffff;\n --theme-control-foreground-color: #cccccc;\n --theme-control-hover-background-color: #3a3a3a;\n --theme-link-color: #4fc1ff;\n --theme-hover-background-color: rgba(255, 255, 255, 0.08);\n --theme-selection-background-color: rgba(0, 120, 212, 0.20);\n --theme-focus-outline-color: #0078d4;\n --theme-tree-guide-color: #6f747a;\n --theme-muted-foreground-color: #8c8c8c;\n --theme-code-background-color: #2d2d2d;\n --theme-line-number-foreground-color: #6f7378;\n";
|
|
14
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,28GAwC/B,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,6kCAqBjC,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,6kCAqBhC,CAAC"}
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS variable mapping: --mdzip-* resolves from consumer --theme-* tokens,
|
|
3
|
+
* then the active built-in color scheme, then hardcoded light fallbacks.
|
|
4
|
+
*
|
|
5
|
+
* Consumers can define --theme-* variables on :root, the editor container, or
|
|
6
|
+
* any ancestor. Direct --mdzip-* overrides remain available for individual
|
|
7
|
+
* component-level adjustments.
|
|
8
|
+
*/
|
|
9
|
+
export const MDZIP_VARIABLES_CSS = `
|
|
10
|
+
/* Editor surface */
|
|
11
|
+
--mdzip-editor-background-color: var(--theme-editor-background-color, var(--mdzip-default-editor-background-color, #ffffff));
|
|
12
|
+
--mdzip-editor-foreground-color: var(--theme-editor-foreground-color, var(--mdzip-default-editor-foreground-color, #1f2328));
|
|
13
|
+
--mdzip-editor-cursor-color: var(--theme-editor-cursor-color, var(--theme-editor-foreground-color, var(--mdzip-default-editor-cursor-color, var(--mdzip-default-editor-foreground-color, #1f2328))));
|
|
14
|
+
|
|
15
|
+
/* Chrome */
|
|
16
|
+
--mdzip-toolbar-background-color: var(--theme-toolbar-background-color, var(--theme-editor-background-color, var(--mdzip-default-toolbar-background-color, var(--mdzip-default-editor-background-color, #ffffff))));
|
|
17
|
+
--mdzip-toolbar-icon-fill-color: var(--theme-toolbar-icon-fill-color, var(--mdzip-default-toolbar-icon-fill-color, #ffffff));
|
|
18
|
+
--mdzip-sidebar-background-color: var(--theme-sidebar-background-color, var(--mdzip-default-sidebar-background-color, #f7f7f9));
|
|
19
|
+
--mdzip-sidebar-foreground-color: var(--theme-sidebar-foreground-color, var(--mdzip-default-sidebar-foreground-color, #202124));
|
|
20
|
+
--mdzip-border-color: var(--theme-border-color, var(--mdzip-default-border-color, #e5e7eb));
|
|
21
|
+
|
|
22
|
+
/* Widgets / popovers */
|
|
23
|
+
--mdzip-widget-background-color: var(--theme-widget-background-color, var(--mdzip-default-widget-background-color, #f6f8fa));
|
|
24
|
+
--mdzip-widget-border-color: var(--theme-widget-border-color, var(--mdzip-default-widget-border-color, #d8dee4));
|
|
25
|
+
|
|
26
|
+
/* Accent / primary action */
|
|
27
|
+
--mdzip-accent-color: var(--theme-accent-color, var(--mdzip-default-accent-color, #0969da));
|
|
28
|
+
--mdzip-accent-foreground-color: var(--theme-accent-foreground-color, var(--mdzip-default-accent-foreground-color, #ffffff));
|
|
29
|
+
|
|
30
|
+
/* Secondary controls */
|
|
31
|
+
--mdzip-control-foreground-color: var(--theme-control-foreground-color, var(--mdzip-default-control-foreground-color, #24292f));
|
|
32
|
+
--mdzip-control-hover-background-color: var(--theme-control-hover-background-color, var(--mdzip-default-control-hover-background-color, #eaeef2));
|
|
33
|
+
|
|
34
|
+
/* Links */
|
|
35
|
+
--mdzip-link-color: var(--theme-link-color, var(--theme-accent-color, var(--mdzip-default-link-color, var(--mdzip-default-accent-color, #0969da))));
|
|
36
|
+
|
|
37
|
+
/* List / nav states */
|
|
38
|
+
--mdzip-hover-background-color: var(--theme-hover-background-color, var(--mdzip-default-hover-background-color, rgba(175, 184, 193, 0.18)));
|
|
39
|
+
--mdzip-selection-background-color: var(--theme-selection-background-color, var(--mdzip-default-selection-background-color, rgba(9, 105, 218, 0.12)));
|
|
40
|
+
--mdzip-focus-outline-color: var(--theme-focus-outline-color, var(--theme-accent-color, var(--mdzip-default-focus-outline-color, var(--mdzip-default-accent-color, #0969da))));
|
|
41
|
+
--mdzip-tree-guide-color: var(--theme-tree-guide-color, var(--mdzip-default-tree-guide-color, #a8b0ba));
|
|
42
|
+
|
|
43
|
+
/* Text variants */
|
|
44
|
+
--mdzip-muted-foreground-color: var(--theme-muted-foreground-color, var(--mdzip-default-muted-foreground-color, #57606a));
|
|
45
|
+
|
|
46
|
+
/* Code / editor gutter */
|
|
47
|
+
--mdzip-code-background-color: var(--theme-code-background-color, var(--mdzip-default-code-background-color, #f6f8fa));
|
|
48
|
+
--mdzip-line-number-foreground-color: var(--theme-line-number-foreground-color, var(--mdzip-default-line-number-foreground-color, #8c959f));
|
|
49
|
+
`;
|
|
50
|
+
/** Drop-in light theme. Set these on :root or a parent element. */
|
|
51
|
+
export const MDZIP_LIGHT_THEME_CSS = `
|
|
52
|
+
--theme-editor-background-color: #ffffff;
|
|
53
|
+
--theme-editor-foreground-color: #1f2328;
|
|
54
|
+
--theme-toolbar-background-color: #ffffff;
|
|
55
|
+
--theme-sidebar-background-color: #f7f7f9;
|
|
56
|
+
--theme-sidebar-foreground-color: #202124;
|
|
57
|
+
--theme-border-color: #e5e7eb;
|
|
58
|
+
--theme-widget-background-color: #f6f8fa;
|
|
59
|
+
--theme-widget-border-color: #d8dee4;
|
|
60
|
+
--theme-accent-color: #0969da;
|
|
61
|
+
--theme-accent-foreground-color: #ffffff;
|
|
62
|
+
--theme-control-foreground-color: #24292f;
|
|
63
|
+
--theme-control-hover-background-color: #eaeef2;
|
|
64
|
+
--theme-link-color: #0969da;
|
|
65
|
+
--theme-hover-background-color: rgba(175, 184, 193, 0.18);
|
|
66
|
+
--theme-selection-background-color: rgba(9, 105, 218, 0.12);
|
|
67
|
+
--theme-focus-outline-color: #0969da;
|
|
68
|
+
--theme-tree-guide-color: #a8b0ba;
|
|
69
|
+
--theme-muted-foreground-color: #57606a;
|
|
70
|
+
--theme-code-background-color: #f6f8fa;
|
|
71
|
+
--theme-line-number-foreground-color: #8c959f;
|
|
72
|
+
`;
|
|
73
|
+
/** Drop-in dark theme. Set these on :root or a parent element. */
|
|
74
|
+
export const MDZIP_DARK_THEME_CSS = `
|
|
75
|
+
--theme-editor-background-color: #1e1e1e;
|
|
76
|
+
--theme-editor-foreground-color: #d4d4d4;
|
|
77
|
+
--theme-toolbar-background-color: #252526;
|
|
78
|
+
--theme-sidebar-background-color: #252526;
|
|
79
|
+
--theme-sidebar-foreground-color: #cccccc;
|
|
80
|
+
--theme-border-color: #3c3c3c;
|
|
81
|
+
--theme-widget-background-color: #2d2d2d;
|
|
82
|
+
--theme-widget-border-color: #454545;
|
|
83
|
+
--theme-accent-color: #0078d4;
|
|
84
|
+
--theme-accent-foreground-color: #ffffff;
|
|
85
|
+
--theme-control-foreground-color: #cccccc;
|
|
86
|
+
--theme-control-hover-background-color: #3a3a3a;
|
|
87
|
+
--theme-link-color: #4fc1ff;
|
|
88
|
+
--theme-hover-background-color: rgba(255, 255, 255, 0.08);
|
|
89
|
+
--theme-selection-background-color: rgba(0, 120, 212, 0.20);
|
|
90
|
+
--theme-focus-outline-color: #0078d4;
|
|
91
|
+
--theme-tree-guide-color: #6f747a;
|
|
92
|
+
--theme-muted-foreground-color: #8c8c8c;
|
|
93
|
+
--theme-code-background-color: #2d2d2d;
|
|
94
|
+
--theme-line-number-foreground-color: #6f7378;
|
|
95
|
+
`;
|
|
96
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwClC,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBpC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-css.d.ts","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa,QA4vCzB,CAAC"}
|