forgebook 0.1.4 → 0.1.6
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 +32 -1
- package/dist/bin/forgebook/agentClient.d.ts.map +1 -1
- package/dist/bin/forgebook/agentClient.js +2 -2
- package/dist/bin/forgebook/agentClient.js.map +1 -1
- package/dist/bin/forgebook/agentLoopCommands.d.mts.map +1 -1
- package/dist/bin/forgebook/agentLoopCommands.mjs +24 -3
- package/dist/bin/forgebook/agentLoopCommands.mjs.map +1 -1
- package/dist/bin/forgebook/agents.md +7 -1
- package/dist/bin/forgebook/errorsRun.d.ts.map +1 -1
- package/dist/bin/forgebook/errorsRun.js +14 -1
- package/dist/bin/forgebook/errorsRun.js.map +1 -1
- package/dist/bin/forgebook/forgebook.mjs +12 -2
- package/dist/bin/forgebook/forgebook.mjs.map +1 -1
- package/dist/bin/forgebook/importers/storybook.d.ts.map +1 -1
- package/dist/bin/forgebook/importers/storybook.js +41 -7
- package/dist/bin/forgebook/importers/storybook.js.map +1 -1
- package/dist/bin/forgebook/initCommands.d.mts.map +1 -1
- package/dist/bin/forgebook/initCommands.mjs +5 -2
- package/dist/bin/forgebook/initCommands.mjs.map +1 -1
- package/dist/bin/forgebook/mcpTools.d.ts.map +1 -1
- package/dist/bin/forgebook/mcpTools.js +14 -2
- package/dist/bin/forgebook/mcpTools.js.map +1 -1
- package/dist/bin/forgebook/storyCheckRun.d.ts +10 -0
- package/dist/bin/forgebook/storyCheckRun.d.ts.map +1 -1
- package/dist/bin/forgebook/storyCheckRun.js +4 -3
- package/dist/bin/forgebook/storyCheckRun.js.map +1 -1
- package/dist/bin/forgebook/touchWindowRun.d.ts +17 -0
- package/dist/bin/forgebook/touchWindowRun.d.ts.map +1 -0
- package/dist/bin/forgebook/touchWindowRun.js +22 -0
- package/dist/bin/forgebook/touchWindowRun.js.map +1 -0
- package/dist/src/catalogue.d.ts +6 -4
- package/dist/src/catalogue.d.ts.map +1 -1
- package/dist/src/catalogue.js +2 -1
- package/dist/src/catalogue.js.map +1 -1
- package/dist/src/controlKeys.d.ts +4 -4
- package/dist/src/controlKeys.d.ts.map +1 -1
- package/dist/src/controlKeys.js +12 -8
- package/dist/src/controlKeys.js.map +1 -1
- package/dist/src/frame/frameView.d.ts.map +1 -1
- package/dist/src/frame/frameView.js +7 -2
- package/dist/src/frame/frameView.js.map +1 -1
- package/dist/src/frame/mountFrame.d.ts.map +1 -1
- package/dist/src/frame/mountFrame.js +5 -1
- package/dist/src/frame/mountFrame.js.map +1 -1
- package/dist/src/frame/spillOutline.d.ts.map +1 -1
- package/dist/src/frame/spillOutline.js +2 -0
- package/dist/src/frame/spillOutline.js.map +1 -1
- package/dist/src/frame/touchDots.d.ts +32 -0
- package/dist/src/frame/touchDots.d.ts.map +1 -0
- package/dist/src/frame/touchDots.js +52 -0
- package/dist/src/frame/touchDots.js.map +1 -0
- package/dist/src/frame/touchEvents.d.ts +66 -0
- package/dist/src/frame/touchEvents.d.ts.map +1 -0
- package/dist/src/frame/touchEvents.js +152 -0
- package/dist/src/frame/touchEvents.js.map +1 -0
- package/dist/src/frame/touchGesture.d.ts +80 -0
- package/dist/src/frame/touchGesture.d.ts.map +1 -0
- package/dist/src/frame/touchGesture.js +87 -0
- package/dist/src/frame/touchGesture.js.map +1 -0
- package/dist/src/frame/touchLayer.d.ts +7 -0
- package/dist/src/frame/touchLayer.d.ts.map +1 -0
- package/dist/src/frame/touchLayer.js +449 -0
- package/dist/src/frame/touchLayer.js.map +1 -0
- package/dist/src/frame/touchScroll.d.ts +51 -0
- package/dist/src/frame/touchScroll.d.ts.map +1 -0
- package/dist/src/frame/touchScroll.js +154 -0
- package/dist/src/frame/touchScroll.js.map +1 -0
- package/dist/src/namedViews.d.ts +10 -1
- package/dist/src/namedViews.d.ts.map +1 -1
- package/dist/src/namedViews.js +24 -0
- package/dist/src/namedViews.js.map +1 -1
- package/dist/src/realTouch.d.ts +21 -0
- package/dist/src/realTouch.d.ts.map +1 -0
- package/dist/src/realTouch.js +16 -0
- package/dist/src/realTouch.js.map +1 -0
- package/dist/src/shell/ComponentPage.d.ts +6 -1
- package/dist/src/shell/ComponentPage.d.ts.map +1 -1
- package/dist/src/shell/ComponentPage.js +11 -3
- package/dist/src/shell/ComponentPage.js.map +1 -1
- package/dist/src/shell/ControlRow.d.ts.map +1 -1
- package/dist/src/shell/ControlRow.js +4 -1
- package/dist/src/shell/ControlRow.js.map +1 -1
- package/dist/src/shell/Example.d.ts +5 -0
- package/dist/src/shell/Example.d.ts.map +1 -1
- package/dist/src/shell/Example.js +18 -2
- package/dist/src/shell/Example.js.map +1 -1
- package/dist/src/shell/FrameView.d.ts +7 -0
- package/dist/src/shell/FrameView.d.ts.map +1 -1
- package/dist/src/shell/FrameView.js +12 -0
- package/dist/src/shell/FrameView.js.map +1 -1
- package/dist/src/shell/InfoTip.d.ts +23 -0
- package/dist/src/shell/InfoTip.d.ts.map +1 -0
- package/dist/src/shell/InfoTip.js +53 -0
- package/dist/src/shell/InfoTip.js.map +1 -0
- package/dist/src/shell/NamedViews.d.ts.map +1 -1
- package/dist/src/shell/NamedViews.js +2 -2
- package/dist/src/shell/NamedViews.js.map +1 -1
- package/dist/src/shell/PinnedControl.d.ts.map +1 -1
- package/dist/src/shell/PinnedControl.js +14 -2
- package/dist/src/shell/PinnedControl.js.map +1 -1
- package/dist/src/shell/Shell.d.ts.map +1 -1
- package/dist/src/shell/Shell.js +21 -3
- package/dist/src/shell/Shell.js.map +1 -1
- package/dist/src/shell/UsedIn.d.ts +4 -3
- package/dist/src/shell/UsedIn.d.ts.map +1 -1
- package/dist/src/shell/UsedIn.js +11 -7
- package/dist/src/shell/UsedIn.js.map +1 -1
- package/dist/src/shell/ViewMenu.d.ts +4 -2
- package/dist/src/shell/ViewMenu.d.ts.map +1 -1
- package/dist/src/shell/ViewMenu.js +14 -7
- package/dist/src/shell/ViewMenu.js.map +1 -1
- package/dist/src/shell/controlCycle.d.ts.map +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/controlCycle.js.map +1 -1
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.d.ts.map +1 -1
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/icons.js.map +1 -1
- package/dist/src/shell/shell.css +58 -1
- package/dist/src/shell/storyTouch.d.ts +52 -0
- package/dist/src/shell/storyTouch.d.ts.map +1 -0
- package/dist/src/shell/storyTouch.js +33 -0
- package/dist/src/shell/storyTouch.js.map +1 -0
- package/dist/src/shell/strings.d.ts +4 -3
- package/dist/src/shell/strings.d.ts.map +1 -1
- package/dist/src/shell/strings.js +4 -3
- package/dist/src/shell/strings.js.map +1 -1
- package/dist/src/shell/useFold.d.ts.map +1 -1
- package/dist/src/shell/useFold.js +2 -0
- package/dist/src/shell/useFold.js.map +1 -1
- package/dist/src/shell/useFrameMessages.d.ts +5 -2
- package/dist/src/shell/useFrameMessages.d.ts.map +1 -1
- package/dist/src/shell/useFrameMessages.js +1 -1
- package/dist/src/shell/useFrameMessages.js.map +1 -1
- package/dist/src/shell/useLiveView.d.ts +8 -1
- package/dist/src/shell/useLiveView.d.ts.map +1 -1
- package/dist/src/shell/useLiveView.js +14 -4
- package/dist/src/shell/useLiveView.js.map +1 -1
- package/dist/src/shell/useWorstCase.d.ts +2 -2
- package/dist/src/shell/useWorstCase.d.ts.map +1 -1
- package/dist/src/shell/useWorstCase.js +10 -3
- package/dist/src/shell/useWorstCase.js.map +1 -1
- package/dist/src/storyTree.d.ts +2 -0
- package/dist/src/storyTree.d.ts.map +1 -1
- package/dist/src/storyTree.js +1 -0
- package/dist/src/storyTree.js.map +1 -1
- package/dist/src/switches.d.ts +32 -6
- package/dist/src/switches.d.ts.map +1 -1
- package/dist/src/switches.js +45 -7
- package/dist/src/switches.js.map +1 -1
- package/dist/src/viewState.d.ts +27 -2
- package/dist/src/viewState.d.ts.map +1 -1
- package/dist/src/viewState.js +35 -2
- package/dist/src/viewState.js.map +1 -1
- package/dist/src/vite/agentRoutes.d.ts +7 -0
- package/dist/src/vite/agentRoutes.d.ts.map +1 -1
- package/dist/src/vite/agentRoutes.js +15 -2
- package/dist/src/vite/agentRoutes.js.map +1 -1
- package/dist/src/vite/forcedStates.d.ts +6 -2
- package/dist/src/vite/forcedStates.d.ts.map +1 -1
- package/dist/src/vite/forcedStates.js +20 -4
- package/dist/src/vite/forcedStates.js.map +1 -1
- package/dist/src/vite/forgebookPlugin.d.ts.map +1 -1
- package/dist/src/vite/forgebookPlugin.js +11 -21
- package/dist/src/vite/forgebookPlugin.js.map +1 -1
- package/dist/src/vite/indexStoryFile.d.ts +1 -1
- package/dist/src/vite/indexStoryFile.d.ts.map +1 -1
- package/dist/src/vite/indexStoryFile.js +14 -1
- package/dist/src/vite/indexStoryFile.js.map +1 -1
- package/dist/src/vite/mcpProtocol.d.ts.map +1 -1
- package/dist/src/vite/mcpProtocol.js +9 -1
- package/dist/src/vite/mcpProtocol.js.map +1 -1
- package/dist/src/vite/storyFilesModule.d.ts +25 -3
- package/dist/src/vite/storyFilesModule.d.ts.map +1 -1
- package/dist/src/vite/storyFilesModule.js +31 -4
- package/dist/src/vite/storyFilesModule.js.map +1 -1
- package/dist/src/vite/touchMedia.d.ts +35 -0
- package/dist/src/vite/touchMedia.d.ts.map +1 -0
- package/dist/src/vite/touchMedia.js +282 -0
- package/dist/src/vite/touchMedia.js.map +1 -0
- package/dist/src/vite/usageGraph.d.ts.map +1 -1
- package/dist/src/vite/usageGraph.js +25 -1
- package/dist/src/vite/usageGraph.js.map +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simulated finger's scrolling: the container a drag scrolls, on the axes the `touch-action` on the way allows, and
|
|
3
|
+
* the fling that carries on after the finger lifts.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* An approximation of the browser's own scrolling, which a page cannot start: no rubber band at the ends, the fling
|
|
7
|
+
* slows down at one fixed rate (`flungSpeed`), and a container that snaps snaps once the finger lifts. The scroll keeps to the drag's axis; the container is the nearest
|
|
8
|
+
* ancestor that scrolls on it, up to the document's own scrolling element.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { allowedPan, flungSpeed } from "./touchGesture.js";
|
|
13
|
+
/** How far ahead a snapping container's fling is aimed, in ms of the finger's last speed. */
|
|
14
|
+
const SNAP_AIM_MS = 250;
|
|
15
|
+
/**
|
|
16
|
+
* Whether an element scrolls on an axis: it overflows there and its style lets it.
|
|
17
|
+
*
|
|
18
|
+
* @param element - the element.
|
|
19
|
+
* @param axis - the axis.
|
|
20
|
+
*/
|
|
21
|
+
const scrollsOn = (element, axis) => {
|
|
22
|
+
const property = axis === "x" ? "overflowX" : "overflowY";
|
|
23
|
+
const document = element.ownerDocument;
|
|
24
|
+
const overflow = getComputedStyle(element)[property];
|
|
25
|
+
// the document scrolls unless its root or its body hides its overflow (a story that locks it behind a dialog)
|
|
26
|
+
const isDocument = element === document.scrollingElement;
|
|
27
|
+
const isDocumentLocked = [document.documentElement, document.body].some((each) => {
|
|
28
|
+
const value = getComputedStyle(each)[property];
|
|
29
|
+
return value === "hidden" || value === "clip";
|
|
30
|
+
});
|
|
31
|
+
const isScrollable = isDocument ? !isDocumentLocked : overflow === "auto" || overflow === "scroll";
|
|
32
|
+
const size = axis === "x" ? element.scrollWidth - element.clientWidth : element.scrollHeight - element.clientHeight;
|
|
33
|
+
return isScrollable && size > 0;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* A drag's scroll begins: a container that snaps stops snapping while the finger drags it, or every step of the drag
|
|
37
|
+
* would snap to a whole item.
|
|
38
|
+
*
|
|
39
|
+
* @param scroller - the container.
|
|
40
|
+
* @param axis - the drag's axis.
|
|
41
|
+
*/
|
|
42
|
+
const startPan = (scroller, axis) => {
|
|
43
|
+
const isSnapping = getComputedStyle(scroller).scrollSnapType !== "none";
|
|
44
|
+
const style = scroller instanceof HTMLElement ? scroller.style : undefined;
|
|
45
|
+
const pausedSnap = isSnapping && style !== undefined ? style.scrollSnapType : undefined;
|
|
46
|
+
if (pausedSnap !== undefined && style !== undefined)
|
|
47
|
+
style.scrollSnapType = "none";
|
|
48
|
+
return { scroller, axes: { x: axis === "x", y: axis === "y" }, pausedSnap };
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* The scroll a drag drives along its axis, or none when the `touch-action` on the way forbids that axis (a horizontal
|
|
52
|
+
* swipe on a `pan-y` row stays the row's) or nothing on the way scrolls on it.
|
|
53
|
+
*
|
|
54
|
+
* @param target - the element the finger went down on.
|
|
55
|
+
* @param axis - the drag's axis.
|
|
56
|
+
*/
|
|
57
|
+
export const panOf = (target, axis) => {
|
|
58
|
+
const touchActions = [];
|
|
59
|
+
for (let element = target; element !== null; element = element.parentElement) {
|
|
60
|
+
touchActions.push(getComputedStyle(element).touchAction);
|
|
61
|
+
if (!allowedPan(touchActions)[axis])
|
|
62
|
+
return undefined;
|
|
63
|
+
if (scrollsOn(element, axis))
|
|
64
|
+
return startPan(element, axis);
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Scrolls by a finger's move: the content follows the finger.
|
|
70
|
+
*
|
|
71
|
+
* @param pan - the scroll.
|
|
72
|
+
* @param from - where the finger was.
|
|
73
|
+
* @param to - where it is.
|
|
74
|
+
*/
|
|
75
|
+
export const panBy = (pan, from, to) => pan.scroller.scrollBy({
|
|
76
|
+
left: pan.axes.x ? from.x - to.x : 0,
|
|
77
|
+
top: pan.axes.y ? from.y - to.y : 0,
|
|
78
|
+
behavior: "instant"
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* Carries a scroll on after the finger lifts, slowing down; the returned function stops it (a new touch does).
|
|
82
|
+
*
|
|
83
|
+
* @param pan - the scroll.
|
|
84
|
+
* @param speed - the finger's last speed, in CSS px per ms, per axis.
|
|
85
|
+
*/
|
|
86
|
+
const fling = (pan, speed) => {
|
|
87
|
+
const view = pan.scroller.ownerDocument.defaultView;
|
|
88
|
+
if (view === null)
|
|
89
|
+
return () => undefined;
|
|
90
|
+
let current = { x: pan.axes.x ? speed.x : 0, y: pan.axes.y ? speed.y : 0 };
|
|
91
|
+
let last = view.performance.now();
|
|
92
|
+
let frame = 0;
|
|
93
|
+
const step = (now) => {
|
|
94
|
+
// a frame's time may come before the time the fling started at
|
|
95
|
+
const ms = Math.max(0, now - last);
|
|
96
|
+
last = now;
|
|
97
|
+
pan.scroller.scrollBy({ left: -current.x * ms, top: -current.y * ms, behavior: "instant" });
|
|
98
|
+
current = { x: flungSpeed(current.x, ms), y: flungSpeed(current.y, ms) };
|
|
99
|
+
if (current.x !== 0 || current.y !== 0)
|
|
100
|
+
frame = view.requestAnimationFrame(step);
|
|
101
|
+
};
|
|
102
|
+
frame = view.requestAnimationFrame(step);
|
|
103
|
+
return () => view.cancelAnimationFrame(frame);
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Where a snapping container's items snap along an axis, in its scroll coordinates: its children that snap, each by
|
|
107
|
+
* its `scroll-snap-align` (start, center or end; the container's `scroll-padding` is not read).
|
|
108
|
+
*
|
|
109
|
+
* @param scroller - the container.
|
|
110
|
+
* @param axis - the axis.
|
|
111
|
+
*/
|
|
112
|
+
const snapPoints = (scroller, axis) => {
|
|
113
|
+
const box = scroller.getBoundingClientRect();
|
|
114
|
+
const room = axis === "x" ? scroller.clientWidth : scroller.clientHeight;
|
|
115
|
+
const scrolled = axis === "x" ? scroller.scrollLeft : scroller.scrollTop;
|
|
116
|
+
return [...scroller.children].flatMap((child) => {
|
|
117
|
+
const aligns = getComputedStyle(child).scrollSnapAlign.split(/\s+/);
|
|
118
|
+
// one value aligns both axes; two give the block axis (y) then the inline one (x)
|
|
119
|
+
const align = (axis === "x" ? aligns[1] : aligns[0]) ?? aligns[0] ?? "none";
|
|
120
|
+
if (align === "none")
|
|
121
|
+
return [];
|
|
122
|
+
const childBox = child.getBoundingClientRect();
|
|
123
|
+
const start = (axis === "x" ? childBox.left - box.left : childBox.top - box.top) + scrolled;
|
|
124
|
+
const size = axis === "x" ? childBox.width : childBox.height;
|
|
125
|
+
if (align === "center")
|
|
126
|
+
return [start + size / 2 - room / 2];
|
|
127
|
+
return [align === "end" ? start + size - room : start];
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* A drag's scroll ends as the finger lifts: a container that snaps snaps again, to the item nearest where the finger
|
|
132
|
+
* aimed (its place now plus its last speed, at most half the container ahead, so a flick goes to the next item and
|
|
133
|
+
* never past it), with the browser's smooth scroll; any other flings on. The returned function stops a fling (a new
|
|
134
|
+
* touch does).
|
|
135
|
+
*
|
|
136
|
+
* @param pan - the scroll.
|
|
137
|
+
* @param speed - the finger's last speed, in CSS px per ms, per axis.
|
|
138
|
+
*/
|
|
139
|
+
export const endPan = (pan, speed) => {
|
|
140
|
+
if (pan.pausedSnap === undefined || !(pan.scroller instanceof HTMLElement))
|
|
141
|
+
return fling(pan, speed);
|
|
142
|
+
const scroller = pan.scroller;
|
|
143
|
+
const axis = pan.axes.x ? "x" : "y";
|
|
144
|
+
const room = axis === "x" ? scroller.clientWidth : scroller.clientHeight;
|
|
145
|
+
const now = axis === "x" ? scroller.scrollLeft : scroller.scrollTop;
|
|
146
|
+
const aim = now + Math.max(-room / 2, Math.min(room / 2, -(axis === "x" ? speed.x : speed.y) * SNAP_AIM_MS));
|
|
147
|
+
const target = snapPoints(scroller, axis).reduce((best, point) => (Math.abs(point - aim) < Math.abs(best - aim) ? point : best), aim);
|
|
148
|
+
// snapping comes back only now: back on, it would snap the place the finger left before the target is read
|
|
149
|
+
scroller.style.scrollSnapType = pan.pausedSnap;
|
|
150
|
+
scroller.scrollTo({ [axis === "x" ? "left" : "top"]: target, behavior: "smooth" });
|
|
151
|
+
// a new touch stops the smooth scroll where it is, as a finger stops a scrolling list
|
|
152
|
+
return () => scroller.scrollTo({ left: scroller.scrollLeft, top: scroller.scrollTop, behavior: "instant" });
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=touchScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"touchScroll.js","sourceRoot":"","sources":["../../../src/frame/touchScroll.ts"],"names":[],"mappings":"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"}
|
package/dist/src/namedViews.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
12
|
-
import type
|
|
12
|
+
import { type ViewCatalogue, type ViewState } from "./viewState.ts";
|
|
13
13
|
/** The values a named view holds: the View menu's. */
|
|
14
14
|
export type ViewValues = Pick<ViewState, "switches" | "backdrop" | "sheets" | "text" | "width">;
|
|
15
15
|
/** A view saved under a name. */
|
|
@@ -77,4 +77,13 @@ export declare const isSameView: (first: ViewValues, second: ViewValues, switche
|
|
|
77
77
|
readonly id: string;
|
|
78
78
|
readonly default: string;
|
|
79
79
|
}[]) => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* A view with a named view's values read back as an address is: what the catalogue no longer offers (a background, a
|
|
82
|
+
* text size, a control it turned off) falls back to its default, so a view saved before the catalogue changed never
|
|
83
|
+
* sets what the catalogue cannot show.
|
|
84
|
+
*
|
|
85
|
+
* @param view - the view with the named view's values set.
|
|
86
|
+
* @param catalogue - the catalogue's switches and lists.
|
|
87
|
+
*/
|
|
88
|
+
export declare const checkedView: (view: ViewState, catalogue: ViewCatalogue) => ViewState;
|
|
80
89
|
//# sourceMappingURL=namedViews.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedViews.d.ts","sourceRoot":"","sources":["../../src/namedViews.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"namedViews.d.ts","sourceRoot":"","sources":["../../src/namedViews.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAE3F,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEhG,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG;IACtB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,KAAG,UAM3C,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,EAAE,QAAQ,UAAU,KAAG,SAAqC,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,SAAS,EAAE,EAAE,OAAO,SAAS,KAAG,SAAS,EAOtF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,SAAS,SAAS,EAAE,EAAE,MAAM,MAAM,KAAG,SAAS,EACrC,CAAC;AAgB7C;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,GAAG,IAAI,KAAG,SAAS,EAY/D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,SAAS,EAAE,KAAG,MACZ,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACrB,OAAO,UAAU,EACjB,QAAQ,UAAU,EAClB,UAAU,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,KACrE,OAO2B,CAAC;AAE/B;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,EAAE,WAAW,aAAa,KAAG,SAGtE,CAAC"}
|
package/dist/src/namedViews.js
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named views: the View menu's values saved under a name ("Dark, Italian, 360") and picked again. A reader's, kept in
|
|
3
|
+
* their browser, and the catalogue's own (`views` in its configuration), offered to the whole team.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* A named view holds values, never an arrangement: the switches, the background, the style sheets, the text size and
|
|
7
|
+
* the width. Picking one sets them as choosing each would, so the address carries the values; a name never goes in the
|
|
8
|
+
* address, since another reader may not have it. Pure: views in, views out.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { parseView, viewParams } from "./viewState.js";
|
|
1
13
|
/**
|
|
2
14
|
* The values of a view that a named view holds.
|
|
3
15
|
*
|
|
@@ -85,4 +97,16 @@ export const isSameView = (first, second, switches) => switches.every((each) =>
|
|
|
85
97
|
first.sheets === second.sheets &&
|
|
86
98
|
first.text === second.text &&
|
|
87
99
|
first.width === second.width;
|
|
100
|
+
/**
|
|
101
|
+
* A view with a named view's values read back as an address is: what the catalogue no longer offers (a background, a
|
|
102
|
+
* text size, a control it turned off) falls back to its default, so a view saved before the catalogue changed never
|
|
103
|
+
* sets what the catalogue cannot show.
|
|
104
|
+
*
|
|
105
|
+
* @param view - the view with the named view's values set.
|
|
106
|
+
* @param catalogue - the catalogue's switches and lists.
|
|
107
|
+
*/
|
|
108
|
+
export const checkedView = (view, catalogue) => ({
|
|
109
|
+
...view,
|
|
110
|
+
...viewValues(parseView(viewParams(view, catalogue.switches).toString(), catalogue))
|
|
111
|
+
});
|
|
88
112
|
//# sourceMappingURL=namedViews.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedViews.js","sourceRoot":"","sources":["../../src/namedViews.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"namedViews.js","sourceRoot":"","sources":["../../src/namedViews.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mark of a window where Chromium's own touch emulation runs (`forgebook dev --touch`): its pages see real touch,
|
|
3
|
+
* so the catalogue's simulated touch stays off there. Shared by the window that sets it (`@forgebook/testing/touch`)
|
|
4
|
+
* and the frame that reads it (`touchLayer.ts`).
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
/** The window property the touch window defines before any page script runs. */
|
|
9
|
+
export declare const REAL_TOUCH_FLAG = "__forgebookRealTouch";
|
|
10
|
+
/**
|
|
11
|
+
* Whether a window runs Chromium's real touch emulation.
|
|
12
|
+
*
|
|
13
|
+
* @param view - the window.
|
|
14
|
+
*/
|
|
15
|
+
export declare const isRealTouchWindow: (view: Window) => boolean;
|
|
16
|
+
/** What `forgebook dev --touch` asks of the testing package's touch window. */
|
|
17
|
+
export type TouchWindowRequest = {
|
|
18
|
+
/** The catalogue's address. */
|
|
19
|
+
readonly url: string;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=realTouch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realTouch.d.ts","sourceRoot":"","sources":["../../src/realTouch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gFAAgF;AAChF,eAAO,MAAM,eAAe,yBAAyB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OAAkC,CAAC;AAEpF,+EAA+E;AAC/E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,+BAA+B;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mark of a window where Chromium's own touch emulation runs (`forgebook dev --touch`): its pages see real touch,
|
|
3
|
+
* so the catalogue's simulated touch stays off there. Shared by the window that sets it (`@forgebook/testing/touch`)
|
|
4
|
+
* and the frame that reads it (`touchLayer.ts`).
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
/** The window property the touch window defines before any page script runs. */
|
|
9
|
+
export const REAL_TOUCH_FLAG = "__forgebookRealTouch";
|
|
10
|
+
/**
|
|
11
|
+
* Whether a window runs Chromium's real touch emulation.
|
|
12
|
+
*
|
|
13
|
+
* @param view - the window.
|
|
14
|
+
*/
|
|
15
|
+
export const isRealTouchWindow = (view) => REAL_TOUCH_FLAG in view;
|
|
16
|
+
//# sourceMappingURL=realTouch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realTouch.js","sourceRoot":"","sources":["../../src/realTouch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import { type ReactNode } from "react";
|
|
15
15
|
import { type TreeComponent, type TreeStory } from "../storyTree.ts";
|
|
16
16
|
import { type ViewState } from "../viewState.ts";
|
|
17
|
+
import { type TouchOverrides } from "./storyTouch.ts";
|
|
17
18
|
import { type UsedInProps } from "./UsedIn.tsx";
|
|
18
19
|
import { type PageScroll } from "./useScrollMemory.ts";
|
|
19
20
|
/** The component page's props. */
|
|
@@ -22,6 +23,10 @@ export type ComponentPageProps = {
|
|
|
22
23
|
readonly component: TreeComponent;
|
|
23
24
|
/** The view. */
|
|
24
25
|
readonly view: ViewState;
|
|
26
|
+
/** What the user chose for each story marked for a phone. */
|
|
27
|
+
readonly touchOverrides: TouchOverrides;
|
|
28
|
+
/** Called when the user turns a story's finger on or off. */
|
|
29
|
+
readonly onTouchChange: (storyId: string, isTouch: boolean) => void;
|
|
25
30
|
/** The frame page's address. */
|
|
26
31
|
readonly frameUrl: string;
|
|
27
32
|
/** The address of a story's page, for its link. */
|
|
@@ -50,5 +55,5 @@ export type ComponentPageProps = {
|
|
|
50
55
|
*
|
|
51
56
|
* @param props - the component, the view, its loaders and how to open a story.
|
|
52
57
|
*/
|
|
53
|
-
export declare const ComponentPage: ({ component, view, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background, header, scroll, usedIn }: ComponentPageProps) => ReactNode;
|
|
58
|
+
export declare const ComponentPage: ({ component, view, touchOverrides, onTouchChange, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background, header, scroll, usedIn }: ComponentPageProps) => ReactNode;
|
|
54
59
|
//# sourceMappingURL=ComponentPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentPage.d.ts","sourceRoot":"","sources":["../../../src/shell/ComponentPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,OAAO,CAAC;AAKlE,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComponentPage.d.ts","sourceRoot":"","sources":["../../../src/shell/ComponentPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,OAAO,CAAC;AAKlE,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM3D,OAAO,EAAkB,KAAK,cAAc,EAAe,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAOxD,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AAGxE,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC;IAC9C,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,4GAA4G;IAC5G,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxD,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxD,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxD,wGAAwG;IACxG,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,gHAAgH;IAChH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC1D,CAAC;AAyCF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,0JAgB3B,kBAAkB,KAAG,SA0GvB,CAAC"}
|
|
@@ -21,6 +21,7 @@ import { CodeText } from "./CodeText.js";
|
|
|
21
21
|
import { useCatalogue } from "./catalogueContext.js";
|
|
22
22
|
import { Example } from "./Example.js";
|
|
23
23
|
import { PackageHtml } from "./PackageHtml.js";
|
|
24
|
+
import { storyTouchesOf, touchedView } from "./storyTouch.js";
|
|
24
25
|
import { STRINGS } from "./strings.js";
|
|
25
26
|
import { UsedIn } from "./UsedIn.js";
|
|
26
27
|
import { useComponentDocs } from "./useComponentDocs.js";
|
|
@@ -59,7 +60,7 @@ const Prose = ({ page }) => {
|
|
|
59
60
|
*
|
|
60
61
|
* @param props - the component, the view, its loaders and how to open a story.
|
|
61
62
|
*/
|
|
62
|
-
export const ComponentPage = ({ component, view, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background, header, scroll, usedIn }) => {
|
|
63
|
+
export const ComponentPage = ({ component, view, touchOverrides, onTouchChange, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background, header, scroll, usedIn }) => {
|
|
63
64
|
const pageRef = useRef(null);
|
|
64
65
|
const docs = useComponentDocs(loadDocs);
|
|
65
66
|
const code = useStoryCode(loadCode);
|
|
@@ -73,6 +74,8 @@ export const ComponentPage = ({ component, view, frameUrl, hrefOf, onOpen, loadD
|
|
|
73
74
|
const frameView = useLoadedView(view.sheets, view);
|
|
74
75
|
const catalogue = useCatalogue();
|
|
75
76
|
const { switches } = catalogue;
|
|
77
|
+
// each story marked for a phone with its own finger: its frame gets it in place of the toolbar's Touch
|
|
78
|
+
const touches = useMemo(() => storyTouchesOf(component.stories, touchOverrides), [component, touchOverrides]);
|
|
76
79
|
const exampleIds = useMemo(() => examples.map((story) => story.id), [examples]);
|
|
77
80
|
const queue = useFrameQueue(exampleIds, pageRef);
|
|
78
81
|
const { heights, settled } = useFrameMessages({
|
|
@@ -80,14 +83,17 @@ export const ComponentPage = ({ component, view, frameUrl, hrefOf, onOpen, loadD
|
|
|
80
83
|
queue.markReady(message.storyId);
|
|
81
84
|
setStoryArgs((current) => new Map(current).set(message.storyId, message.args));
|
|
82
85
|
const send = (shellMessage) => frame.postMessage(shellMessage, window.location.origin);
|
|
83
|
-
send({
|
|
86
|
+
send({
|
|
87
|
+
type: "forgebook:view",
|
|
88
|
+
view: touchedView(liveView(view), message.storyId, touches, catalogue.touch)
|
|
89
|
+
});
|
|
84
90
|
send({ type: "forgebook:tools", tools: view.tools });
|
|
85
91
|
},
|
|
86
92
|
onCall: () => undefined,
|
|
87
93
|
// a frame that failed is over too: its place in the queue goes to the next one
|
|
88
94
|
onFailed: queue.markReady
|
|
89
95
|
});
|
|
90
|
-
useLiveView(pageRef, view, true);
|
|
96
|
+
useLiveView(pageRef, view, true, { touches, choice: catalogue.touch });
|
|
91
97
|
useScrollMemory(pageRef, scroll);
|
|
92
98
|
const componentDocs = docs.status === "ready" ? docs.value : undefined;
|
|
93
99
|
const context = {
|
|
@@ -98,6 +104,8 @@ export const ComponentPage = ({ component, view, frameUrl, hrefOf, onOpen, loadD
|
|
|
98
104
|
onOpen,
|
|
99
105
|
frameView,
|
|
100
106
|
switches,
|
|
107
|
+
touches,
|
|
108
|
+
onTouchChange,
|
|
101
109
|
heights,
|
|
102
110
|
settled,
|
|
103
111
|
code,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentPage.js","sourceRoot":"","sources":["../../../src/shell/ComponentPage.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAkB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAsC,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAgB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAmB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComponentPage.js","sourceRoot":"","sources":["../../../src/shell/ComponentPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlRow.d.ts","sourceRoot":"","sources":["../../../src/shell/ControlRow.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ControlRow.d.ts","sourceRoot":"","sources":["../../../src/shell/ControlRow.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD,OAAO,EAAE,KAAK,cAAc,EAAgC,MAAM,sBAAsB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,uGAYxB,cAAc,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,KAAG,SAmEH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ControlKeyField } from "./ControlKeyField.js";
|
|
3
|
+
import { InfoTip } from "./InfoTip.js";
|
|
3
4
|
import { Icon } from "./icons.js";
|
|
4
5
|
import { STRINGS } from "./strings.js";
|
|
5
6
|
import { controlLabel, ToolbarControl } from "./ToolbarControl.js";
|
|
@@ -22,6 +23,8 @@ export const ControlRow = ({ each, index, count, isDragged, isMoved, isChanged,
|
|
|
22
23
|
layout.move(control.id, target);
|
|
23
24
|
onAnnounce(STRINGS.controlMoved(label, target + 1, count));
|
|
24
25
|
};
|
|
25
|
-
|
|
26
|
+
// a switch's note (the touch simulation's limits): an info button beside its value
|
|
27
|
+
const description = control.kind === "switch" ? control.switch.description : undefined;
|
|
28
|
+
return (_jsxs("li", { className: "forgebook-arrange", "data-control": control.id, "data-pinned": isPinned ? "" : undefined, "data-dragged": isDragged ? "" : undefined, "data-moved": isMoved ? "" : undefined, children: [_jsx("button", { type: "button", className: "forgebook-arrange__handle", "aria-label": STRINGS.moveControl(label), "aria-describedby": hintId, onPointerDown: (event) => onGrab(event, control.id), onKeyDown: step, children: _jsx(Icon, { name: "grip", size: 14 }) }), _jsxs("span", { className: "forgebook-popover__label", children: [label, isChanged ? (_jsx("span", { className: "forgebook-dot", role: "img", "aria-label": STRINGS.controlChanged(label) })) : null] }), _jsxs("div", { className: "forgebook-arrange__control", children: [_jsx(ToolbarControl, { control: control, form: "row", ...context }), description === undefined ? null : _jsx(InfoTip, { note: description, about: label })] }), _jsx(ControlKeyField, { label: label, shortcut: layout.keys[control.id], onKeyChange: (key) => layout.setKey(control.id, key) }), _jsx("button", { type: "button", className: "forgebook-icon-button", "aria-label": STRINGS.pinControl(label), title: isMoved ? STRINGS.pinnedNoRoom : STRINGS.pinControl(label), "aria-pressed": isPinned, onClick: () => layout.pin(control.id, !isPinned), children: _jsx(Icon, { name: "pin", size: 14 }) }), _jsx("button", { type: "button", className: "forgebook-icon-button", "aria-label": STRINGS.hideControl(label), title: STRINGS.hideControl(label), onClick: () => layout.hide(control.id, true), children: _jsx(Icon, { name: "eyeOff", size: 14 }) })] }));
|
|
26
29
|
};
|
|
27
30
|
//# sourceMappingURL=ControlRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlRow.js","sourceRoot":"","sources":["../../../src/shell/ControlRow.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAa,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAuB,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAGzF,uDAAuD;AACvD,MAAM,WAAW,GAAqC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,UAAU,EACV,GAAG,OAAO,EAcX,EAAa,EAAE;IACd,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,KAAuC,EAAQ,EAAE;QAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;QAC9B,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK;YAAE,OAAO;QAC1D,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAChC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IACF,OAAO,CACL,cACE,SAAS,EAAC,mBAAmB,kBACf,OAAO,CAAC,EAAE,iBACX,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,kBACxB,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,gBAC5B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aAEpC,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,2BAA2B,gBACzB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,sBACpB,MAAM,EACxB,aAAa,EAAE,CAAC,KAAsC,EAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,EAC1F,SAAS,EAAE,IAAI,YAEf,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,EAAE,GAAI,GACvB,EACT,gBAAM,SAAS,EAAC,0BAA0B,aACvC,KAAK,EACL,SAAS,CAAC,CAAC,CAAC,CACX,eAAM,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,KAAK,gBAAa,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAI,CACzF,CAAC,CAAC,CAAC,IAAI,IACH,EACP,
|
|
1
|
+
{"version":3,"file":"ControlRow.js","sourceRoot":"","sources":["../../../src/shell/ControlRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import type { PanelArgs } from "../messages.ts";
|
|
|
10
10
|
import type { TreeComponent, TreeStory } from "../storyTree.ts";
|
|
11
11
|
import type { ViewSwitch } from "../switches.ts";
|
|
12
12
|
import { type ViewState } from "../viewState.ts";
|
|
13
|
+
import { type StoryTouches } from "./storyTouch.ts";
|
|
13
14
|
import type { Loaded } from "./useLoaded.ts";
|
|
14
15
|
/** What every example of the page shares: the frames' address, view and reports, the code, how to open a story. */
|
|
15
16
|
export type ExampleContext = {
|
|
@@ -27,6 +28,10 @@ export type ExampleContext = {
|
|
|
27
28
|
readonly frameView: ViewState;
|
|
28
29
|
/** The catalogue's switches, for the frames' addresses. */
|
|
29
30
|
readonly switches: readonly ViewSwitch[];
|
|
31
|
+
/** The stories marked for a phone, each with its own finger. */
|
|
32
|
+
readonly touches: StoryTouches;
|
|
33
|
+
/** Called when the user turns a story's finger on or off. */
|
|
34
|
+
readonly onTouchChange: (storyId: string, isTouch: boolean) => void;
|
|
30
35
|
/** Each frame's reported height, by its address. */
|
|
31
36
|
readonly heights: ReadonlyMap<string, number>;
|
|
32
37
|
/** The addresses of the frames that finished loading. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Example.d.ts","sourceRoot":"","sources":["../../../src/shell/Example.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"Example.d.ts","sourceRoot":"","sources":["../../../src/shell/Example.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAqC,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AAE3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS/D,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,iBAAiB,CAAC;AAKjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQ7C,mHAAmH;AACnH,MAAM,MAAM,cAAc,GAAG;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC;IAC9C,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;IACzC,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC;IAChD,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AA0NF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,mDAMrB,cAAc,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1D,KAAG,SA+EH,CAAC"}
|
|
@@ -3,14 +3,17 @@ import { useId, useState } from "react";
|
|
|
3
3
|
import { frameAddress } from "../viewState.js";
|
|
4
4
|
import { BoxWidthControl, useBoxWidth } from "./BoxWidth.js";
|
|
5
5
|
import { CodeText } from "./CodeText.js";
|
|
6
|
+
import { useCatalogue } from "./catalogueContext.js";
|
|
6
7
|
import { useCodeWriter } from "./codeWriter.js";
|
|
7
8
|
import { FrameView } from "./FrameView.js";
|
|
8
9
|
import { Icon } from "./icons.js";
|
|
9
10
|
import { StageViewport } from "./StageViewport.js";
|
|
10
11
|
import { StoryCodeBlock, storyCodeText } from "./StoryCodeBlock.js";
|
|
12
|
+
import { touchedView } from "./storyTouch.js";
|
|
11
13
|
import { STRINGS } from "./strings.js";
|
|
12
14
|
import { useCopy } from "./useCopy.js";
|
|
13
15
|
import { useFullPage } from "./useFullPage.js";
|
|
16
|
+
import { useLoadedView } from "./useLiveView.js";
|
|
14
17
|
/** The height of a frame before its story reports its own, in CSS px. */
|
|
15
18
|
const FALLBACK_HEIGHT = 160;
|
|
16
19
|
/** The demo's height before its story reports its own, in CSS px: the demo is the page's first, larger frame. */
|
|
@@ -52,13 +55,23 @@ const ExampleHead = ({ story, context }) => (_jsxs("header", { className: "forge
|
|
|
52
55
|
* @param props - the box's state over the page.
|
|
53
56
|
*/
|
|
54
57
|
const FullPageSlot = ({ full }) => (_jsxs(_Fragment, { children: [_jsx("div", { ref: full.slotRef, className: "forgebook-example__slot", style: { height: full.slotHeight } }), _jsx("div", { ref: full.shadeRef, className: "forgebook-full-shade", "aria-hidden": "true", onClick: () => full.toggle() })] }));
|
|
58
|
+
/**
|
|
59
|
+
* The Touch toggle of a story marked for a phone: on, the story is touched with a simulated finger whatever the
|
|
60
|
+
* toolbar's Touch switch says.
|
|
61
|
+
*
|
|
62
|
+
* @param props - the story, whether its finger is on, and how to change it.
|
|
63
|
+
*/
|
|
64
|
+
const TouchToggle = ({ story, isTouch, onTouchChange }) => (_jsxs("label", { className: "forgebook-example__touch", children: [_jsx("input", { type: "checkbox", role: "switch", "aria-checked": isTouch, "aria-label": STRINGS.touchNamed(story.name), className: "forgebook-switch", checked: isTouch, onChange: (event) => onTouchChange(story.id, event.currentTarget.checked) }), STRINGS.touch] }));
|
|
55
65
|
/**
|
|
56
66
|
* An example's bar: its code shown or hidden, the story's width while its box fills the page, its box filling the page
|
|
57
67
|
* or back in its place, and its story opened on its own page.
|
|
58
68
|
*
|
|
59
69
|
* @param props - the story, what every example shares, its code's state and its box's state over the page.
|
|
60
70
|
*/
|
|
61
|
-
const ExampleBar = ({ story, context, hasCode, isCodeShown, onCodeShownChange, codeId, full, boxWidth }) =>
|
|
71
|
+
const ExampleBar = ({ story, context, hasCode, isCodeShown, onCodeShownChange, codeId, full, boxWidth }) => {
|
|
72
|
+
const isTouch = context.touches.get(story.id);
|
|
73
|
+
return (_jsxs("div", { className: "forgebook-example__bar", children: [hasCode ? (_jsxs("button", { type: "button", className: "forgebook-example__toggle", "aria-expanded": isCodeShown, "aria-controls": codeId, onClick: () => onCodeShownChange(!isCodeShown), children: [_jsx(Icon, { name: "chevronRight", size: 12 }), isCodeShown ? STRINGS.hideCode : STRINGS.showCode] })) : null, isTouch === undefined ? null : (_jsx(TouchToggle, { story: story, isTouch: isTouch, onTouchChange: context.onTouchChange })), _jsx(BoxWidthControl, { boxWidth: boxWidth }), _jsxs("button", { type: "button", className: "forgebook-example__full", "aria-label": full.isFull ? STRINGS.backToPlaceNamed(story.name) : STRINGS.fillPageNamed(story.name), onClick: (event) => full.toggle(event), children: [_jsx(Icon, { name: full.isFull ? "collapse" : "expand", size: 12 }), full.isFull ? STRINGS.backToPlace : STRINGS.fillPage] }), _jsxs(StoryLink, { story: story, hrefOf: context.hrefOf, onOpen: context.onOpen, className: "forgebook-example__open", label: STRINGS.openStoryNamed(story.name), children: [STRINGS.openStory, _jsx(Icon, { name: "external", size: 12 })] })] }));
|
|
74
|
+
};
|
|
62
75
|
/**
|
|
63
76
|
* One example: its title and description (the demo has none: it opens the page), its story in a frame, and a bar
|
|
64
77
|
* that shows its code and opens the story on its own page.
|
|
@@ -70,6 +83,9 @@ export const Example = ({ story, isDemo, isMounted, observe, ...context }) => {
|
|
|
70
83
|
const [isCodeShown, setIsCodeShown] = useState(false);
|
|
71
84
|
const codeId = useId();
|
|
72
85
|
const full = useFullPage();
|
|
86
|
+
const { touch } = useCatalogue();
|
|
87
|
+
// the frame loads with the story's finger as it is then; a change after reaches it live, keeping the story's state
|
|
88
|
+
const loadedView = useLoadedView(context.frameView.sheets, touchedView(context.frameView, story.id, context.touches, touch));
|
|
73
89
|
const boxWidth = useBoxWidth(full.isOver, context.view.width);
|
|
74
90
|
// the story's measured height when there is one; a guess otherwise, larger for the demo; never below the height its
|
|
75
91
|
// scene needs, which its frame has from the start
|
|
@@ -82,7 +98,7 @@ export const Example = ({ story, isDemo, isMounted, observe, ...context }) => {
|
|
|
82
98
|
args: context.argsOf(story.id)
|
|
83
99
|
}
|
|
84
100
|
: undefined;
|
|
85
|
-
return (_jsxs("article", { ref: observe, className: "forgebook-example", "data-demo": isDemo ? "" : undefined, "aria-label": isDemo ? STRINGS.frameTitle(context.component.name, story.name) : story.name, children: [isDemo ? null : _jsx(ExampleHead, { story: story, context: context }), full.isOver ? _jsx(FullPageSlot, { full: full }) : null, _jsxs("div", { ref: full.boxRef, className: "forgebook-example__box", "data-full": full.isOver ? "" : undefined, ...(full.isFull ? { role: "dialog", "aria-label": story.name } : {}), children: [_jsx("div", { ref: full.stageRef, className: "forgebook-example__stage", children: _jsx(StageViewport, { width: boxWidth.width, onWidthChange: boxWidth.onWidthChange, onShownWidthChange: boxWidth.onShownWidthChange, background: context.background, children: isMounted ? (_jsx(FrameView, { title: STRINGS.frameTitle(context.component.name, story.name), address: frameAddress(context.frameUrl, story.id,
|
|
101
|
+
return (_jsxs("article", { ref: observe, className: "forgebook-example", "data-demo": isDemo ? "" : undefined, "aria-label": isDemo ? STRINGS.frameTitle(context.component.name, story.name) : story.name, children: [isDemo ? null : _jsx(ExampleHead, { story: story, context: context }), full.isOver ? _jsx(FullPageSlot, { full: full }) : null, _jsxs("div", { ref: full.boxRef, className: "forgebook-example__box", "data-full": full.isOver ? "" : undefined, ...(full.isFull ? { role: "dialog", "aria-label": story.name } : {}), children: [_jsx("div", { ref: full.stageRef, className: "forgebook-example__stage", children: _jsx(StageViewport, { width: boxWidth.width, onWidthChange: boxWidth.onWidthChange, onShownWidthChange: boxWidth.onShownWidthChange, background: context.background, children: isMounted ? (_jsx(FrameView, { title: STRINGS.frameTitle(context.component.name, story.name), address: frameAddress(context.frameUrl, story.id, loadedView, context.switches), heights: context.heights, settled: context.settled, fallbackHeight: fallbackHeight,
|
|
86
102
|
// over the page, the story fills the room it has
|
|
87
103
|
sceneHeight: sceneHeightOf(story, full.stageHeight) })) : (_jsx("div", { className: "forgebook-frame-placeholder", style: { height: fallbackHeight } })) }) }), _jsx(ExampleBar, { story: story, context: context, hasCode: source !== undefined, isCodeShown: isCodeShown, onCodeShownChange: setIsCodeShown, codeId: codeId, full: full, boxWidth: boxWidth }), source === undefined ? null : _jsx(ExampleCode, { id: codeId, source: source, isShown: isCodeShown })] })] }));
|
|
88
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Example.js","sourceRoot":"","sources":["../../../src/shell/Example.tsx"],"names":[],"mappings":";AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"Example.js","sourceRoot":"","sources":["../../../src/shell/Example.tsx"],"names":[],"mappings":"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"}
|