@commentray/render 0.0.9 → 0.1.0
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 +1 -1
- package/dist/code-browser-client.bundle.js +24 -11
- package/dist/code-browser-client.js +697 -100
- package/dist/code-browser-client.js.map +1 -1
- package/dist/code-browser-intro.css +187 -0
- package/dist/code-browser-wide-intro-controller.d.ts +4 -0
- package/dist/code-browser-wide-intro-controller.d.ts.map +1 -0
- package/dist/code-browser-wide-intro-controller.js +148 -0
- package/dist/code-browser-wide-intro-controller.js.map +1 -0
- package/dist/code-browser-wide-intro-layout.d.ts +3 -0
- package/dist/code-browser-wide-intro-layout.d.ts.map +1 -0
- package/dist/code-browser-wide-intro-layout.js +84 -0
- package/dist/code-browser-wide-intro-layout.js.map +1 -0
- package/dist/code-browser-wide-intro-steps.d.ts +11 -0
- package/dist/code-browser-wide-intro-steps.d.ts.map +1 -0
- package/dist/code-browser-wide-intro-steps.js +108 -0
- package/dist/code-browser-wide-intro-steps.js.map +1 -0
- package/dist/code-browser-wide-intro-ui.d.ts +14 -0
- package/dist/code-browser-wide-intro-ui.d.ts.map +1 -0
- package/dist/code-browser-wide-intro-ui.js +67 -0
- package/dist/code-browser-wide-intro-ui.js.map +1 -0
- package/dist/code-browser.d.ts.map +1 -1
- package/dist/code-browser.js +597 -42
- package/dist/code-browser.js.map +1 -1
- package/dist/markdown-pipeline.d.ts.map +1 -1
- package/dist/markdown-pipeline.js +7 -1
- package/dist/markdown-pipeline.js.map +1 -1
- package/dist/side-by-side-layout-css.d.ts +1 -1
- package/dist/side-by-side-layout-css.d.ts.map +1 -1
- package/dist/side-by-side-layout-css.js +48 -0
- package/dist/side-by-side-layout-css.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { renderWideIntroArrows, repositionWideIntroBubble, } from "./code-browser-wide-intro-layout.js";
|
|
2
|
+
import { wideIntroStepsForShell, wideIntroVisibleTargetsForCurrentStep, } from "./code-browser-wide-intro-steps.js";
|
|
3
|
+
import { clearOpenWideModeIntroTourUi, createWideIntroElements, } from "./code-browser-wide-intro-ui.js";
|
|
4
|
+
import { readWebStorageItem, writeWebStorageItem } from "./code-browser-web-storage.js";
|
|
5
|
+
const STORAGE_WIDE_MODE_INTRO_DONE = "commentray.codeCommentrayStatic.wideModeIntro.v1";
|
|
6
|
+
function refreshWideIntroSteps(runtime) {
|
|
7
|
+
const nextMode = runtime.isNarrowViewport() ? "narrow" : "wide";
|
|
8
|
+
if (nextMode === runtime.viewportMode)
|
|
9
|
+
return;
|
|
10
|
+
runtime.viewportMode = nextMode;
|
|
11
|
+
runtime.steps = wideIntroStepsForShell(runtime.shell, nextMode === "narrow");
|
|
12
|
+
}
|
|
13
|
+
function repositionWideIntro(runtime) {
|
|
14
|
+
const { bubble, arrowLayer } = runtime.elements;
|
|
15
|
+
refreshWideIntroSteps(runtime);
|
|
16
|
+
const targets = wideIntroVisibleTargetsForCurrentStep(runtime.steps, runtime.current);
|
|
17
|
+
const primary = targets[0];
|
|
18
|
+
if (!primary) {
|
|
19
|
+
bubble.dataset.side = "none";
|
|
20
|
+
bubble.style.top = "12px";
|
|
21
|
+
bubble.style.left = "12px";
|
|
22
|
+
arrowLayer.replaceChildren();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
repositionWideIntroBubble(bubble, primary);
|
|
26
|
+
renderWideIntroArrows(bubble, arrowLayer, targets);
|
|
27
|
+
}
|
|
28
|
+
function advanceWideIntroToRenderableStep(runtime) {
|
|
29
|
+
refreshWideIntroSteps(runtime);
|
|
30
|
+
while (runtime.current < runtime.steps.length) {
|
|
31
|
+
const step = runtime.steps[runtime.current];
|
|
32
|
+
if (!step)
|
|
33
|
+
break;
|
|
34
|
+
const visibleTargets = wideIntroVisibleTargetsForCurrentStep(runtime.steps, runtime.current);
|
|
35
|
+
const hasFallbackAction = typeof step.fallbackAction === "function";
|
|
36
|
+
if (visibleTargets.length > 0 || hasFallbackAction)
|
|
37
|
+
break;
|
|
38
|
+
runtime.current++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function syncWideIntroStepActionUi(runtime, step, targets) {
|
|
42
|
+
const { stepActionBtn } = runtime.elements;
|
|
43
|
+
if (targets.length === 0 &&
|
|
44
|
+
typeof step.fallbackAction === "function" &&
|
|
45
|
+
step.fallbackActionLabel) {
|
|
46
|
+
stepActionBtn.hidden = false;
|
|
47
|
+
stepActionBtn.textContent = step.fallbackActionLabel;
|
|
48
|
+
stepActionBtn.disabled = false;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
stepActionBtn.hidden = true;
|
|
52
|
+
stepActionBtn.textContent = "";
|
|
53
|
+
stepActionBtn.disabled = true;
|
|
54
|
+
}
|
|
55
|
+
function renderWideIntro(runtime, closeTour) {
|
|
56
|
+
const { titleEl, bodyEl, progressEl, backBtn, nextBtn } = runtime.elements;
|
|
57
|
+
advanceWideIntroToRenderableStep(runtime);
|
|
58
|
+
if (runtime.current >= runtime.steps.length) {
|
|
59
|
+
closeTour();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const step = runtime.steps[runtime.current];
|
|
63
|
+
if (!step)
|
|
64
|
+
return;
|
|
65
|
+
const targets = wideIntroVisibleTargetsForCurrentStep(runtime.steps, runtime.current);
|
|
66
|
+
for (const el of runtime.highlighted)
|
|
67
|
+
el.classList.remove("commentray-wide-intro-target");
|
|
68
|
+
runtime.highlighted = targets;
|
|
69
|
+
for (const el of runtime.highlighted)
|
|
70
|
+
el.classList.add("commentray-wide-intro-target");
|
|
71
|
+
titleEl.textContent = step.title;
|
|
72
|
+
bodyEl.textContent = step.body;
|
|
73
|
+
syncWideIntroStepActionUi(runtime, step, targets);
|
|
74
|
+
progressEl.textContent = `${String(runtime.current + 1)} / ${String(runtime.steps.length)}`;
|
|
75
|
+
backBtn.disabled = runtime.current === 0;
|
|
76
|
+
nextBtn.textContent = runtime.current === runtime.steps.length - 1 ? "Done" : "Next";
|
|
77
|
+
repositionWideIntro(runtime);
|
|
78
|
+
}
|
|
79
|
+
export function wireWideModeIntroTour(shell, isNarrowViewport, opts) {
|
|
80
|
+
if (!opts?.force && readWebStorageItem(localStorage, STORAGE_WIDE_MODE_INTRO_DONE) === "1")
|
|
81
|
+
return;
|
|
82
|
+
clearOpenWideModeIntroTourUi();
|
|
83
|
+
const elements = createWideIntroElements();
|
|
84
|
+
if (!elements)
|
|
85
|
+
return;
|
|
86
|
+
const runtime = {
|
|
87
|
+
shell,
|
|
88
|
+
steps: wideIntroStepsForShell(shell, isNarrowViewport()),
|
|
89
|
+
viewportMode: isNarrowViewport() ? "narrow" : "wide",
|
|
90
|
+
current: 0,
|
|
91
|
+
highlighted: [],
|
|
92
|
+
elements,
|
|
93
|
+
isNarrowViewport,
|
|
94
|
+
};
|
|
95
|
+
const { bubble, arrowLayer, stepActionBtn, backBtn, nextBtn, skipBtn } = runtime.elements;
|
|
96
|
+
const closeTour = () => {
|
|
97
|
+
for (const el of runtime.highlighted)
|
|
98
|
+
el.classList.remove("commentray-wide-intro-target");
|
|
99
|
+
runtime.highlighted = [];
|
|
100
|
+
arrowLayer.remove();
|
|
101
|
+
bubble.remove();
|
|
102
|
+
globalThis.removeEventListener("resize", onResize);
|
|
103
|
+
globalThis.removeEventListener("scroll", reposition, true);
|
|
104
|
+
document.removeEventListener("keydown", onKeyDown, true);
|
|
105
|
+
writeWebStorageItem(localStorage, STORAGE_WIDE_MODE_INTRO_DONE, "1");
|
|
106
|
+
};
|
|
107
|
+
const reposition = () => {
|
|
108
|
+
repositionWideIntro(runtime);
|
|
109
|
+
};
|
|
110
|
+
const render = () => {
|
|
111
|
+
renderWideIntro(runtime, closeTour);
|
|
112
|
+
};
|
|
113
|
+
const onResize = () => {
|
|
114
|
+
render();
|
|
115
|
+
};
|
|
116
|
+
const onKeyDown = (ev) => {
|
|
117
|
+
if (ev.key !== "Escape")
|
|
118
|
+
return;
|
|
119
|
+
ev.preventDefault();
|
|
120
|
+
closeTour();
|
|
121
|
+
};
|
|
122
|
+
backBtn.addEventListener("click", () => {
|
|
123
|
+
if (runtime.current > 0)
|
|
124
|
+
runtime.current--;
|
|
125
|
+
render();
|
|
126
|
+
});
|
|
127
|
+
stepActionBtn.addEventListener("click", () => {
|
|
128
|
+
const step = runtime.steps[runtime.current];
|
|
129
|
+
if (!step || typeof step.fallbackAction !== "function")
|
|
130
|
+
return;
|
|
131
|
+
step.fallbackAction();
|
|
132
|
+
render();
|
|
133
|
+
});
|
|
134
|
+
nextBtn.addEventListener("click", () => {
|
|
135
|
+
if (runtime.current >= runtime.steps.length - 1) {
|
|
136
|
+
closeTour();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
runtime.current++;
|
|
140
|
+
render();
|
|
141
|
+
});
|
|
142
|
+
skipBtn.addEventListener("click", closeTour);
|
|
143
|
+
globalThis.addEventListener("resize", onResize);
|
|
144
|
+
globalThis.addEventListener("scroll", reposition, true);
|
|
145
|
+
document.addEventListener("keydown", onKeyDown, true);
|
|
146
|
+
render();
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=code-browser-wide-intro-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-controller.js","sourceRoot":"","sources":["../src/code-browser-wide-intro-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function repositionWideIntroBubble(bubble: HTMLElement, target: HTMLElement): void;
|
|
2
|
+
export declare function renderWideIntroArrows(bubble: HTMLElement, arrowLayer: HTMLElement, targets: HTMLElement[]): void;
|
|
3
|
+
//# sourceMappingURL=code-browser-wide-intro-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-layout.d.ts","sourceRoot":"","sources":["../src/code-browser-wide-intro-layout.ts"],"names":[],"mappings":"AAIA,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAkBxF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,WAAW,EAAE,GACrB,IAAI,CAsEN"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
function clamp(n, lo, hi) {
|
|
2
|
+
return Math.max(lo, Math.min(hi, n));
|
|
3
|
+
}
|
|
4
|
+
export function repositionWideIntroBubble(bubble, target) {
|
|
5
|
+
const rect = target.getBoundingClientRect();
|
|
6
|
+
const vw = globalThis.innerWidth;
|
|
7
|
+
const vh = globalThis.innerHeight;
|
|
8
|
+
const bubbleRect = bubble.getBoundingClientRect();
|
|
9
|
+
const bubbleWidth = bubbleRect.width > 0 ? bubbleRect.width : 340;
|
|
10
|
+
const bubbleHeight = bubbleRect.height > 0 ? bubbleRect.height : 160;
|
|
11
|
+
const margin = 8;
|
|
12
|
+
const canPlaceBelow = rect.bottom + 12 + bubbleHeight <= vh - margin;
|
|
13
|
+
const top = canPlaceBelow
|
|
14
|
+
? Math.max(margin, rect.bottom + 12)
|
|
15
|
+
: Math.max(margin, rect.top - bubbleHeight - 12);
|
|
16
|
+
const left = clamp(rect.left, margin, vw - bubbleWidth - margin);
|
|
17
|
+
bubble.style.top = `${String(Math.round(top))}px`;
|
|
18
|
+
bubble.style.left = `${String(Math.round(left))}px`;
|
|
19
|
+
bubble.dataset.side = canPlaceBelow ? "below" : "above";
|
|
20
|
+
const pointerLeft = clamp(rect.left + rect.width / 2 - left - 8, 10, bubbleWidth - 22);
|
|
21
|
+
bubble.style.setProperty("--pointer-left", `${String(Math.round(pointerLeft))}px`);
|
|
22
|
+
}
|
|
23
|
+
export function renderWideIntroArrows(bubble, arrowLayer, targets) {
|
|
24
|
+
arrowLayer.replaceChildren();
|
|
25
|
+
if (targets.length === 0)
|
|
26
|
+
return;
|
|
27
|
+
const bubbleRect = bubble.getBoundingClientRect();
|
|
28
|
+
const bubbleCenterX = bubbleRect.left + bubbleRect.width / 2;
|
|
29
|
+
const bubbleCenterY = bubbleRect.top + bubbleRect.height / 2;
|
|
30
|
+
const edgePadding = 12;
|
|
31
|
+
const sideInset = 8;
|
|
32
|
+
const spread = 12;
|
|
33
|
+
const side = bubble.dataset.side;
|
|
34
|
+
const pointerLeftRaw = Number.parseFloat(bubble.style.getPropertyValue("--pointer-left"));
|
|
35
|
+
const pointerCenterX = Number.isFinite(pointerLeftRaw)
|
|
36
|
+
? bubbleRect.left + pointerLeftRaw + 8
|
|
37
|
+
: bubbleCenterX;
|
|
38
|
+
const pointerTipY = side === "below"
|
|
39
|
+
? bubbleRect.top - sideInset
|
|
40
|
+
: side === "above"
|
|
41
|
+
? bubbleRect.bottom + sideInset
|
|
42
|
+
: bubbleCenterY;
|
|
43
|
+
for (const [index, target] of targets.entries()) {
|
|
44
|
+
const rect = target.getBoundingClientRect();
|
|
45
|
+
// Point to the middle of each target element.
|
|
46
|
+
const endX = rect.left + rect.width / 2;
|
|
47
|
+
const endY = rect.top + rect.height / 2;
|
|
48
|
+
const toTargetX = endX - bubbleCenterX;
|
|
49
|
+
const toTargetY = endY - bubbleCenterY;
|
|
50
|
+
const horizontalDominant = Math.abs(toTargetX) >= Math.abs(toTargetY);
|
|
51
|
+
const spreadOffset = index - (targets.length - 1) / 2;
|
|
52
|
+
let startX;
|
|
53
|
+
let startY;
|
|
54
|
+
if (targets.length === 1 && (side === "below" || side === "above")) {
|
|
55
|
+
// Single-target tours look cleaner when the arrow starts from the bubble pointer notch.
|
|
56
|
+
startX = pointerCenterX;
|
|
57
|
+
startY = pointerTipY;
|
|
58
|
+
}
|
|
59
|
+
else if (horizontalDominant) {
|
|
60
|
+
startX = toTargetX >= 0 ? bubbleRect.right + sideInset : bubbleRect.left - sideInset;
|
|
61
|
+
startY = clamp(endY + spreadOffset * spread, bubbleRect.top + edgePadding, bubbleRect.bottom - edgePadding);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
startY = toTargetY >= 0 ? bubbleRect.bottom + sideInset : bubbleRect.top - sideInset;
|
|
65
|
+
startX = clamp(endX + spreadOffset * spread, bubbleRect.left + edgePadding, bubbleRect.right - edgePadding);
|
|
66
|
+
}
|
|
67
|
+
const dx = endX - startX;
|
|
68
|
+
const dy = endY - startY;
|
|
69
|
+
const length = Math.hypot(dx, dy);
|
|
70
|
+
if (!Number.isFinite(length) || length < 12)
|
|
71
|
+
continue;
|
|
72
|
+
const arrow = document.createElement("span");
|
|
73
|
+
arrow.className = "commentray-wide-intro-arrow";
|
|
74
|
+
arrow.style.left = `${String(Math.round(startX))}px`;
|
|
75
|
+
arrow.style.top = `${String(Math.round(startY))}px`;
|
|
76
|
+
arrow.style.width = `${String(Math.round(length))}px`;
|
|
77
|
+
arrow.style.setProperty("--wide-intro-arrow-angle", `${String(Math.atan2(dy, dx))}rad`);
|
|
78
|
+
const head = document.createElement("span");
|
|
79
|
+
head.className = "commentray-wide-intro-arrow-head";
|
|
80
|
+
arrow.appendChild(head);
|
|
81
|
+
arrowLayer.appendChild(arrow);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=code-browser-wide-intro-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-layout.js","sourceRoot":"","sources":["../src/code-browser-wide-intro-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type WideIntroStep = {
|
|
2
|
+
targetSelector?: string;
|
|
3
|
+
targetSelectors?: string[];
|
|
4
|
+
title: string;
|
|
5
|
+
body: string;
|
|
6
|
+
fallbackActionLabel?: string;
|
|
7
|
+
fallbackAction?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare function wideIntroStepsForShell(shell: HTMLElement, isNarrowViewport: boolean): WideIntroStep[];
|
|
10
|
+
export declare function wideIntroVisibleTargetsForCurrentStep(steps: WideIntroStep[], current: number): HTMLElement[];
|
|
11
|
+
//# sourceMappingURL=code-browser-wide-intro-steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-steps.d.ts","sourceRoot":"","sources":["../src/code-browser-wide-intro-steps.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,gBAAgB,EAAE,OAAO,GACxB,aAAa,EAAE,CA2EjB;AA8BD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,WAAW,EAAE,CAIf"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export function wideIntroStepsForShell(shell, isNarrowViewport) {
|
|
2
|
+
const introTargetSelector = isNarrowViewport ? "#mobile-pane-flip" : "#shell";
|
|
3
|
+
const shellSelector = shell.id.trim().length > 0 && typeof globalThis.CSS?.escape === "function"
|
|
4
|
+
? `#${globalThis.CSS.escape(shell.id)}`
|
|
5
|
+
: "#shell";
|
|
6
|
+
const shellOrIntroTargetSelector = introTargetSelector === "#shell" ? shellSelector : introTargetSelector;
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
targetSelectors: isNarrowViewport
|
|
10
|
+
? [shellOrIntroTargetSelector]
|
|
11
|
+
: ["#code-pane", "#doc-pane"],
|
|
12
|
+
title: "Welcome",
|
|
13
|
+
body: "Welcome to commentray, a system to create and view commentaries next to the source tree. Angles are different aspects of these commentaries, so switch between them and keep scrolling while both panes stay aligned.",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
targetSelectors: isNarrowViewport
|
|
17
|
+
? [shellOrIntroTargetSelector]
|
|
18
|
+
: ["#code-pane", "#doc-pane"],
|
|
19
|
+
title: "Two views",
|
|
20
|
+
body: isNarrowViewport
|
|
21
|
+
? "You are in narrow view now. Use the pane flip to switch code and commentary. Wide view shows both panes side by side."
|
|
22
|
+
: "You are in wide view now. It shows code and commentary side by side. Narrow view uses one pane and a flip control.",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
targetSelectors: isNarrowViewport
|
|
26
|
+
? ["#mobile-pane-flip", "#doc-pane"]
|
|
27
|
+
: ["#code-pane", "#doc-pane"],
|
|
28
|
+
title: isNarrowViewport ? "Scroll and toggle" : "Scroll both panes",
|
|
29
|
+
body: isNarrowViewport
|
|
30
|
+
? "Try scrolling commentary, then use the pane flip to switch to source and keep exploring."
|
|
31
|
+
: "Try scrolling in either pane. Source and commentary stay aligned while you read side by side.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
targetSelector: "#search-q",
|
|
35
|
+
title: "Search quickly",
|
|
36
|
+
body: "Use this search input to jump to documented source lines and markdown snippets.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
targetSelector: "#angle-select",
|
|
40
|
+
title: "Angle switch",
|
|
41
|
+
body: "Change the Commentray angle to view a different narrative for this same source file.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
targetSelector: "#source-markdown-pane-flip",
|
|
45
|
+
title: "Source view mode",
|
|
46
|
+
body: "Toggle between raw source and rendered markdown in the source pane.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
targetSelector: "#wrap-lines",
|
|
50
|
+
title: "Readability controls",
|
|
51
|
+
body: "Wrap lines to reduce horizontal scrolling in both source and commentary panes.",
|
|
52
|
+
fallbackActionLabel: "Switch to markdown source",
|
|
53
|
+
fallbackAction: () => {
|
|
54
|
+
const sourceModeFlip = document.getElementById("source-markdown-pane-flip");
|
|
55
|
+
if (sourceModeFlip instanceof HTMLButtonElement)
|
|
56
|
+
sourceModeFlip.click();
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
targetSelector: "#commentray-theme-trigger",
|
|
61
|
+
title: "Appearance",
|
|
62
|
+
body: "Change theme mode from this trigger (menu on left-click, quick cycle on right-click).",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
targetSelector: "#commentray-share-link",
|
|
66
|
+
title: "Share this view",
|
|
67
|
+
body: "Use this link button to copy a shareable permalink to the exact page and state you are viewing.",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
targetSelector: "#commentray-help-tour",
|
|
71
|
+
title: "Need a refresher?",
|
|
72
|
+
body: "You can always go back to this tutorial via the help button.",
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
function wideIntroTargetsForCurrentStep(steps, current) {
|
|
77
|
+
const step = steps[current];
|
|
78
|
+
if (!step)
|
|
79
|
+
return [];
|
|
80
|
+
const selectors = Array.isArray(step.targetSelectors) && step.targetSelectors.length > 0
|
|
81
|
+
? step.targetSelectors
|
|
82
|
+
: step.targetSelector
|
|
83
|
+
? [step.targetSelector]
|
|
84
|
+
: [];
|
|
85
|
+
const targets = [];
|
|
86
|
+
const seen = new Set();
|
|
87
|
+
for (const selector of selectors) {
|
|
88
|
+
const found = document.querySelector(selector);
|
|
89
|
+
if (!(found instanceof HTMLElement) || seen.has(found))
|
|
90
|
+
continue;
|
|
91
|
+
seen.add(found);
|
|
92
|
+
targets.push(found);
|
|
93
|
+
}
|
|
94
|
+
return targets;
|
|
95
|
+
}
|
|
96
|
+
function isWideIntroTargetVisible(target) {
|
|
97
|
+
if (target.hidden)
|
|
98
|
+
return false;
|
|
99
|
+
const style = globalThis.getComputedStyle(target);
|
|
100
|
+
if (style.display === "none" || style.visibility === "hidden")
|
|
101
|
+
return false;
|
|
102
|
+
const rect = target.getBoundingClientRect();
|
|
103
|
+
return rect.width > 0 && rect.height > 0;
|
|
104
|
+
}
|
|
105
|
+
export function wideIntroVisibleTargetsForCurrentStep(steps, current) {
|
|
106
|
+
return wideIntroTargetsForCurrentStep(steps, current).filter((target) => isWideIntroTargetVisible(target));
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=code-browser-wide-intro-steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-steps.js","sourceRoot":"","sources":["../src/code-browser-wide-intro-steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type WideIntroElements = {
|
|
2
|
+
bubble: HTMLElement;
|
|
3
|
+
arrowLayer: HTMLElement;
|
|
4
|
+
titleEl: HTMLElement;
|
|
5
|
+
bodyEl: HTMLElement;
|
|
6
|
+
stepActionBtn: HTMLButtonElement;
|
|
7
|
+
progressEl: HTMLElement;
|
|
8
|
+
backBtn: HTMLButtonElement;
|
|
9
|
+
nextBtn: HTMLButtonElement;
|
|
10
|
+
skipBtn: HTMLButtonElement;
|
|
11
|
+
};
|
|
12
|
+
export declare function clearOpenWideModeIntroTourUi(): void;
|
|
13
|
+
export declare function createWideIntroElements(): WideIntroElements | null;
|
|
14
|
+
//# sourceMappingURL=code-browser-wide-intro-ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-ui.d.ts","sourceRoot":"","sources":["../src/code-browser-wide-intro-ui.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,wBAAgB,4BAA4B,IAAI,IAAI,CAQnD;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,GAAG,IAAI,CAyDlE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export function clearOpenWideModeIntroTourUi() {
|
|
2
|
+
for (const el of Array.from(document.querySelectorAll(".commentray-wide-intro-target"))) {
|
|
3
|
+
if (el instanceof HTMLElement)
|
|
4
|
+
el.classList.remove("commentray-wide-intro-target");
|
|
5
|
+
}
|
|
6
|
+
const open = document.getElementById("commentray-wide-intro");
|
|
7
|
+
if (open instanceof HTMLElement)
|
|
8
|
+
open.remove();
|
|
9
|
+
const arrows = document.getElementById("commentray-wide-intro-arrows");
|
|
10
|
+
if (arrows instanceof HTMLElement)
|
|
11
|
+
arrows.remove();
|
|
12
|
+
}
|
|
13
|
+
export function createWideIntroElements() {
|
|
14
|
+
const arrowLayer = document.createElement("div");
|
|
15
|
+
arrowLayer.id = "commentray-wide-intro-arrows";
|
|
16
|
+
arrowLayer.setAttribute("aria-hidden", "true");
|
|
17
|
+
document.body.appendChild(arrowLayer);
|
|
18
|
+
const bubble = document.createElement("section");
|
|
19
|
+
bubble.id = "commentray-wide-intro";
|
|
20
|
+
bubble.setAttribute("role", "dialog");
|
|
21
|
+
bubble.setAttribute("aria-live", "polite");
|
|
22
|
+
bubble.innerHTML = `
|
|
23
|
+
<span class="commentray-wide-intro-pointer" aria-hidden="true"></span>
|
|
24
|
+
<p class="commentray-wide-intro-title"></p>
|
|
25
|
+
<p class="commentray-wide-intro-body"></p>
|
|
26
|
+
<button type="button" class="commentray-wide-intro-step-action" hidden></button>
|
|
27
|
+
<div class="commentray-wide-intro-footer">
|
|
28
|
+
<span class="commentray-wide-intro-progress"></span>
|
|
29
|
+
<div class="commentray-wide-intro-actions">
|
|
30
|
+
<button type="button" data-wide-intro="back">Back</button>
|
|
31
|
+
<button type="button" data-wide-intro="next">Next</button>
|
|
32
|
+
<button type="button" data-wide-intro="skip">Skip</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
`;
|
|
36
|
+
document.body.appendChild(bubble);
|
|
37
|
+
const titleEl = bubble.querySelector(".commentray-wide-intro-title");
|
|
38
|
+
const bodyEl = bubble.querySelector(".commentray-wide-intro-body");
|
|
39
|
+
const stepActionBtn = bubble.querySelector(".commentray-wide-intro-step-action");
|
|
40
|
+
const progressEl = bubble.querySelector(".commentray-wide-intro-progress");
|
|
41
|
+
const backBtn = bubble.querySelector('button[data-wide-intro="back"]');
|
|
42
|
+
const nextBtn = bubble.querySelector('button[data-wide-intro="next"]');
|
|
43
|
+
const skipBtn = bubble.querySelector('button[data-wide-intro="skip"]');
|
|
44
|
+
if (!(titleEl instanceof HTMLElement) ||
|
|
45
|
+
!(bodyEl instanceof HTMLElement) ||
|
|
46
|
+
!(stepActionBtn instanceof HTMLButtonElement) ||
|
|
47
|
+
!(progressEl instanceof HTMLElement) ||
|
|
48
|
+
!(backBtn instanceof HTMLButtonElement) ||
|
|
49
|
+
!(nextBtn instanceof HTMLButtonElement) ||
|
|
50
|
+
!(skipBtn instanceof HTMLButtonElement)) {
|
|
51
|
+
arrowLayer.remove();
|
|
52
|
+
bubble.remove();
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
bubble,
|
|
57
|
+
arrowLayer,
|
|
58
|
+
titleEl,
|
|
59
|
+
bodyEl,
|
|
60
|
+
stepActionBtn,
|
|
61
|
+
progressEl,
|
|
62
|
+
backBtn,
|
|
63
|
+
nextBtn,
|
|
64
|
+
skipBtn,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=code-browser-wide-intro-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-wide-intro-ui.js","sourceRoot":"","sources":["../src/code-browser-wide-intro-ui.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,4BAA4B;IAC1C,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC;QACxF,IAAI,EAAE,YAAY,WAAW;YAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC9D,IAAI,IAAI,YAAY,WAAW;QAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC;IACvE,IAAI,MAAM,YAAY,WAAW;QAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,GAAG,8BAA8B,CAAC;IAC/C,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,GAAG,uBAAuB,CAAC;IACpC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,GAAG;;;;;;;;;;;;;GAalB,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,iCAAiC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;IACvE,IACE,CAAC,CAAC,OAAO,YAAY,WAAW,CAAC;QACjC,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC;QAChC,CAAC,CAAC,aAAa,YAAY,iBAAiB,CAAC;QAC7C,CAAC,CAAC,UAAU,YAAY,WAAW,CAAC;QACpC,CAAC,CAAC,OAAO,YAAY,iBAAiB,CAAC;QACvC,CAAC,CAAC,OAAO,YAAY,iBAAiB,CAAC;QACvC,CAAC,CAAC,OAAO,YAAY,iBAAiB,CAAC,EACvC,CAAC;QACD,UAAU,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,MAAM;QACN,UAAU;QACV,OAAO;QACP,MAAM;QACN,aAAa;QACb,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-browser.d.ts","sourceRoot":"","sources":["../src/code-browser.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAE,KAAK,0BAA0B,EAAwB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"code-browser.d.ts","sourceRoot":"","sources":["../src/code-browser.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAE,KAAK,0BAA0B,EAAwB,MAAM,wBAAwB,CAAC;AAI/F,2EAA2E;AAC3E,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,eAAe,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD;;;OAGG;IACH,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,eAAe,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;IACpD,oHAAoH;IACpH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;CACpD,CAAC;AAmpFF;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4EzF"}
|