markdown-design-doc-viewer-embed 1.5.0 → 1.5.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/index.js +93 -35
- package/package.json +1 -1
- package/viewer.css +6 -0
package/index.js
CHANGED
|
@@ -25362,6 +25362,96 @@ function restorePlain(root, indexes) {
|
|
|
25362
25362
|
});
|
|
25363
25363
|
}
|
|
25364
25364
|
|
|
25365
|
+
// webview/splitter.ts
|
|
25366
|
+
var MIN_SPLIT = 20;
|
|
25367
|
+
var MAX_SPLIT = 80;
|
|
25368
|
+
function applySplit(el, percent) {
|
|
25369
|
+
if (percent === void 0 || !Number.isFinite(percent)) {
|
|
25370
|
+
el.style.removeProperty("--seqnotes-split");
|
|
25371
|
+
return void 0;
|
|
25372
|
+
}
|
|
25373
|
+
percent = Math.min(MAX_SPLIT, Math.max(MIN_SPLIT, percent));
|
|
25374
|
+
el.style.setProperty("--seqnotes-split", `${percent}%`);
|
|
25375
|
+
return percent;
|
|
25376
|
+
}
|
|
25377
|
+
var KEY_STEP = 5;
|
|
25378
|
+
function addSplitter(pair, title, onSplit, signal) {
|
|
25379
|
+
const splitter = document.createElement("div");
|
|
25380
|
+
splitter.className = "seqnotes-splitter";
|
|
25381
|
+
splitter.title = title;
|
|
25382
|
+
splitter.tabIndex = 0;
|
|
25383
|
+
splitter.setAttribute("role", "separator");
|
|
25384
|
+
splitter.setAttribute("aria-orientation", "vertical");
|
|
25385
|
+
splitter.setAttribute("aria-valuemin", String(MIN_SPLIT));
|
|
25386
|
+
splitter.setAttribute("aria-valuemax", String(MAX_SPLIT));
|
|
25387
|
+
const column = pair.querySelector(".seqnotes-seq-col");
|
|
25388
|
+
column?.after(splitter);
|
|
25389
|
+
const current = () => {
|
|
25390
|
+
const width = pair.getBoundingClientRect().width;
|
|
25391
|
+
return width > 0 && column ? column.getBoundingClientRect().width / width * 100 : 0;
|
|
25392
|
+
};
|
|
25393
|
+
const showValue = () => splitter.setAttribute("aria-valuenow", String(Math.round(current())));
|
|
25394
|
+
const split = (percent) => {
|
|
25395
|
+
onSplit(percent);
|
|
25396
|
+
showValue();
|
|
25397
|
+
};
|
|
25398
|
+
splitter.addEventListener(
|
|
25399
|
+
"pointerdown",
|
|
25400
|
+
(e) => {
|
|
25401
|
+
e.preventDefault();
|
|
25402
|
+
splitter.setPointerCapture(e.pointerId);
|
|
25403
|
+
const move = (ev) => {
|
|
25404
|
+
const r = pair.getBoundingClientRect();
|
|
25405
|
+
split((ev.clientX - r.left) / r.width * 100);
|
|
25406
|
+
};
|
|
25407
|
+
const end = () => {
|
|
25408
|
+
splitter.removeEventListener("pointermove", move);
|
|
25409
|
+
splitter.removeEventListener("lostpointercapture", end);
|
|
25410
|
+
};
|
|
25411
|
+
splitter.addEventListener("pointermove", move, { signal });
|
|
25412
|
+
splitter.addEventListener("lostpointercapture", end, { signal });
|
|
25413
|
+
},
|
|
25414
|
+
{ signal }
|
|
25415
|
+
);
|
|
25416
|
+
splitter.addEventListener(
|
|
25417
|
+
"dblclick",
|
|
25418
|
+
(e) => {
|
|
25419
|
+
e.stopPropagation();
|
|
25420
|
+
split(void 0);
|
|
25421
|
+
},
|
|
25422
|
+
{ signal }
|
|
25423
|
+
);
|
|
25424
|
+
splitter.addEventListener("focus", showValue, { signal });
|
|
25425
|
+
splitter.addEventListener(
|
|
25426
|
+
"keydown",
|
|
25427
|
+
(e) => {
|
|
25428
|
+
let percent;
|
|
25429
|
+
switch (e.key) {
|
|
25430
|
+
case "ArrowLeft":
|
|
25431
|
+
percent = current() - KEY_STEP;
|
|
25432
|
+
break;
|
|
25433
|
+
case "ArrowRight":
|
|
25434
|
+
percent = current() + KEY_STEP;
|
|
25435
|
+
break;
|
|
25436
|
+
case "Home":
|
|
25437
|
+
percent = MIN_SPLIT;
|
|
25438
|
+
break;
|
|
25439
|
+
case "End":
|
|
25440
|
+
percent = MAX_SPLIT;
|
|
25441
|
+
break;
|
|
25442
|
+
case "Enter":
|
|
25443
|
+
percent = void 0;
|
|
25444
|
+
break;
|
|
25445
|
+
default:
|
|
25446
|
+
return;
|
|
25447
|
+
}
|
|
25448
|
+
e.preventDefault();
|
|
25449
|
+
split(percent);
|
|
25450
|
+
},
|
|
25451
|
+
{ signal }
|
|
25452
|
+
);
|
|
25453
|
+
}
|
|
25454
|
+
|
|
25365
25455
|
// webview/toc.ts
|
|
25366
25456
|
var TOC_CURRENT = "seqnotes-toc-current";
|
|
25367
25457
|
var TOC_CURRENT_RATIO = 0.2;
|
|
@@ -26128,46 +26218,14 @@ function createPreview(ctx) {
|
|
|
26128
26218
|
el.classList.toggle("seqnotes-wide", previewWidth() >= splitMinWidth);
|
|
26129
26219
|
}
|
|
26130
26220
|
const stopResize = scroll.onResize(applyLayout);
|
|
26131
|
-
const MIN_SPLIT = 20;
|
|
26132
|
-
const MAX_SPLIT = 80;
|
|
26133
26221
|
function setSplit(percent) {
|
|
26134
|
-
const
|
|
26135
|
-
if (percent === void 0) {
|
|
26136
|
-
style.removeProperty("--seqnotes-split");
|
|
26137
|
-
} else {
|
|
26138
|
-
percent = Math.min(MAX_SPLIT, Math.max(MIN_SPLIT, percent));
|
|
26139
|
-
style.setProperty("--seqnotes-split", `${percent}%`);
|
|
26140
|
-
}
|
|
26222
|
+
const split = applySplit(el, percent);
|
|
26141
26223
|
const state = ctx.getState();
|
|
26142
26224
|
if (state) {
|
|
26143
|
-
ctx.setState({ ...state, split
|
|
26225
|
+
ctx.setState({ ...state, split });
|
|
26144
26226
|
}
|
|
26145
26227
|
}
|
|
26146
26228
|
setSplit(ctx.getState()?.split);
|
|
26147
|
-
function addSplitter(pair) {
|
|
26148
|
-
const splitter = document.createElement("div");
|
|
26149
|
-
splitter.className = "seqnotes-splitter";
|
|
26150
|
-
splitter.title = titles.seqnotesSplitterTitle ?? "";
|
|
26151
|
-
pair.querySelector(".seqnotes-seq-col")?.after(splitter);
|
|
26152
|
-
splitter.addEventListener("pointerdown", (e) => {
|
|
26153
|
-
e.preventDefault();
|
|
26154
|
-
splitter.setPointerCapture(e.pointerId);
|
|
26155
|
-
const move = (ev) => {
|
|
26156
|
-
const r = pair.getBoundingClientRect();
|
|
26157
|
-
setSplit((ev.clientX - r.left) / r.width * 100);
|
|
26158
|
-
};
|
|
26159
|
-
const up = () => {
|
|
26160
|
-
splitter.removeEventListener("pointermove", move);
|
|
26161
|
-
splitter.removeEventListener("pointerup", up);
|
|
26162
|
-
};
|
|
26163
|
-
splitter.addEventListener("pointermove", move);
|
|
26164
|
-
splitter.addEventListener("pointerup", up);
|
|
26165
|
-
});
|
|
26166
|
-
splitter.addEventListener("dblclick", (e) => {
|
|
26167
|
-
e.stopPropagation();
|
|
26168
|
-
setSplit(void 0);
|
|
26169
|
-
});
|
|
26170
|
-
}
|
|
26171
26229
|
let previewTheme = titles.seqnotesTheme === "light" || titles.seqnotesTheme === "dark" ? titles.seqnotesTheme : "auto";
|
|
26172
26230
|
function isVscodeDark() {
|
|
26173
26231
|
return !el.classList.contains("vscode-light") && !el.classList.contains("vscode-high-contrast-light");
|
|
@@ -26463,7 +26521,7 @@ ${source}`;
|
|
|
26463
26521
|
root.querySelectorAll(".seqnotes-pair").forEach((pair2) => {
|
|
26464
26522
|
wrapSections(pair2);
|
|
26465
26523
|
if (!pair2.classList.contains("seqnotes-pair-stacked")) {
|
|
26466
|
-
addSplitter(pair2);
|
|
26524
|
+
addSplitter(pair2, titles.seqnotesSplitterTitle ?? "", setSplit, signal);
|
|
26467
26525
|
}
|
|
26468
26526
|
});
|
|
26469
26527
|
setUpWarnings();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "markdown-design-doc-viewer-embed",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "The viewer of Markdown Design Doc Viewer to embed in a web app (React or not): design documents in Markdown with their mermaid sequence diagrams, flowcharts, ER and state diagrams and wireframes linked to the steps after them.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
package/viewer.css
CHANGED
|
@@ -1076,6 +1076,12 @@ html:has(> body[data-seqnotes-theme=dark]:is(.vscode-light, .vscode-high-contras
|
|
|
1076
1076
|
.seqnotes-viewer.seqnotes-wide .seqnotes-splitter:active::after {
|
|
1077
1077
|
background: var(--vscode-sash-hoverBorder, var(--seqnotes-accent));
|
|
1078
1078
|
}
|
|
1079
|
+
.seqnotes-viewer.seqnotes-wide .seqnotes-splitter:focus {
|
|
1080
|
+
outline: none;
|
|
1081
|
+
}
|
|
1082
|
+
.seqnotes-viewer.seqnotes-wide .seqnotes-splitter:focus-visible::after {
|
|
1083
|
+
background: var(--vscode-focusBorder, var(--seqnotes-accent));
|
|
1084
|
+
}
|
|
1079
1085
|
.seqnotes-viewer.seqnotes-wide .seqnotes-pair:not(.seqnotes-pair-stacked) > .seqnotes-seq-col {
|
|
1080
1086
|
align-self: start;
|
|
1081
1087
|
position: sticky;
|