orz-mdhtml 0.1.1 → 0.1.2
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/assets/app.js +32 -3
- package/dist/cli.js +1 -0
- package/package.json +1 -1
package/assets/app.js
CHANGED
|
@@ -63,11 +63,15 @@
|
|
|
63
63
|
+ '<article class="markdown-body" id="orz-doc"></article>'
|
|
64
64
|
+ '<script src="' + f.hljsJs + '"><\/script>'
|
|
65
65
|
+ '<script src="' + f.mermaidJs + '"><\/script>'
|
|
66
|
+
+ '<script src="' + f.smilesJs + '"><\/script>'
|
|
66
67
|
+ '<script>try{mermaid.initialize({startOnLoad:false})}catch(e){}<\/script>'
|
|
67
68
|
+ '<script>' + guard(CFG.runtime) + '<\/script>'
|
|
68
69
|
+ '<script>window.__orzEnhance=function(){'
|
|
69
70
|
+ 'try{if(window.hljs){document.querySelectorAll("#orz-doc pre code:not(.hljs)").forEach(function(b){window.hljs.highlightElement(b)})}}catch(e){}'
|
|
70
71
|
+ 'try{if(window.mermaid){window.mermaid.run({querySelector:"#orz-doc .mermaid:not([data-processed])"})}}catch(e){}'
|
|
72
|
+
// SMILES: draw each canvas once (tracked via a JS prop so morphdom keeps
|
|
73
|
+
// the drawn canvas across edits — DOM attributes stay identical).
|
|
74
|
+
+ 'try{if(window.SmilesDrawer){document.querySelectorAll("#orz-doc canvas[data-smiles]").forEach(function(c){if(c.__orzSmilesDone)return;var s=c.getAttribute("data-smiles");if(!s)return;c.__orzSmilesDone=true;var dr=new window.SmilesDrawer.Drawer({width:c.width,height:c.height});window.SmilesDrawer.parse(s,function(t){try{dr.draw(t,c,window.__orzSmilesTheme||"light",false)}catch(e){}},function(){})})}}catch(e){}'
|
|
71
75
|
// Tabs init runs in the runtime on load (empty #orz-doc); re-run now that
|
|
72
76
|
// content is injected, and after each incremental update. Idempotent.
|
|
73
77
|
+ 'try{if(window.OrzMarkdownRuntime&&window.OrzMarkdownRuntime.initTabs){window.OrzMarkdownRuntime.initTabs(document)}}catch(e){}'
|
|
@@ -94,7 +98,20 @@
|
|
|
94
98
|
|
|
95
99
|
function enhance() {
|
|
96
100
|
var w = frame.contentWindow;
|
|
97
|
-
if (w
|
|
101
|
+
if (!w) return;
|
|
102
|
+
try { w.__orzSmilesTheme = themeById(currentTheme).scheme === 'dark' ? 'dark' : 'light'; } catch (e) {}
|
|
103
|
+
if (typeof w.__orzEnhance === 'function') { try { w.__orzEnhance(); } catch (e) {} }
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Re-draw SMILES canvases (fresh, cleared) so they pick up the current
|
|
107
|
+
// light/dark theme; used after a theme switch.
|
|
108
|
+
function redrawSmiles() {
|
|
109
|
+
var doc = frameDoc(); if (!doc) return;
|
|
110
|
+
Array.prototype.forEach.call(doc.querySelectorAll('#orz-doc canvas[data-smiles]'), function (c) {
|
|
111
|
+
var fresh = c.cloneNode(false); // drops the drawing + the __orzSmilesDone JS prop
|
|
112
|
+
if (c.parentNode) c.parentNode.replaceChild(fresh, c);
|
|
113
|
+
});
|
|
114
|
+
enhance();
|
|
98
115
|
}
|
|
99
116
|
// CDN libs inside the iframe load async — retry enhance a few times.
|
|
100
117
|
function enhanceSoon() { enhance(); setTimeout(enhance, 150); setTimeout(enhance, 600); setTimeout(enhance, 1500); }
|
|
@@ -330,6 +347,7 @@
|
|
|
330
347
|
root.setAttribute('data-chrome', t.scheme);
|
|
331
348
|
if (themeSelect) themeSelect.value = id;
|
|
332
349
|
applyThemeToFrame(t);
|
|
350
|
+
redrawSmiles(); // pick up the new light/dark SMILES palette
|
|
333
351
|
if (cm) cm.setOption('theme', cmTheme(t.scheme));
|
|
334
352
|
markDirty();
|
|
335
353
|
}
|
|
@@ -466,19 +484,30 @@
|
|
|
466
484
|
}
|
|
467
485
|
|
|
468
486
|
// ---- version check -------------------------------------------------------
|
|
487
|
+
// True only when `a` is a strictly newer semver than `b` (so an older
|
|
488
|
+
// resolved version never shows a bogus "update available").
|
|
489
|
+
function isNewer(a, b) {
|
|
490
|
+
var pa = String(a).split('.'), pb = String(b).split('.');
|
|
491
|
+
for (var i = 0; i < 3; i++) {
|
|
492
|
+
var x = parseInt(pa[i], 10) || 0, y = parseInt(pb[i], 10) || 0;
|
|
493
|
+
if (x > y) return true;
|
|
494
|
+
if (x < y) return false;
|
|
495
|
+
}
|
|
496
|
+
return false;
|
|
497
|
+
}
|
|
469
498
|
function checkVersion() {
|
|
470
499
|
if (!CFG.versionManifest || !CFG.rendererVersion) return;
|
|
471
500
|
try {
|
|
472
501
|
var cached = JSON.parse(localStorage.getItem('orz-mdhtml:vercheck') || 'null');
|
|
473
502
|
if (cached && (Date.now() - cached.t) < 86400000) {
|
|
474
|
-
if (cached.v && cached.v
|
|
503
|
+
if (cached.v && isNewer(cached.v, CFG.rendererVersion)) showUpdate(cached.v);
|
|
475
504
|
return;
|
|
476
505
|
}
|
|
477
506
|
} catch (e) {}
|
|
478
507
|
fetch(CFG.versionManifest).then(function (r) { return r.json(); }).then(function (j) {
|
|
479
508
|
var latest = j && j.version;
|
|
480
509
|
try { localStorage.setItem('orz-mdhtml:vercheck', JSON.stringify({ t: Date.now(), v: latest })); } catch (e) {}
|
|
481
|
-
if (latest && latest
|
|
510
|
+
if (latest && isNewer(latest, CFG.rendererVersion)) showUpdate(latest);
|
|
482
511
|
}).catch(function () {});
|
|
483
512
|
}
|
|
484
513
|
function showUpdate(latest) {
|
package/dist/cli.js
CHANGED
|
@@ -140,6 +140,7 @@ function main() {
|
|
|
140
140
|
hljsDarkCss: `${CDN.hl}/styles/atom-one-dark.min.css`,
|
|
141
141
|
hljsJs: `${CDN.hl}/highlight.min.js`,
|
|
142
142
|
mermaidJs: 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js',
|
|
143
|
+
smilesJs: 'https://cdn.jsdelivr.net/npm/smiles-drawer@1.0.10/dist/smiles-drawer.min.js',
|
|
143
144
|
},
|
|
144
145
|
editorLibs: {
|
|
145
146
|
codemirrorCss: `${CDN.cm}/codemirror.min.css`,
|
package/package.json
CHANGED