@fivepixels-js/react 0.2.8 → 0.2.10
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/THIRD_PARTY_NOTICES.md +29 -0
- package/dist/components/icons/Icons.d.ts +6 -0
- package/dist/components/icons/Icons.d.ts.map +1 -1
- package/dist/components/icons/Icons.js +7 -0
- package/dist/components/icons/Icons.js.map +1 -1
- package/dist/components/overlay/DeviceFrameArtwork.d.ts +10 -0
- package/dist/components/overlay/DeviceFrameArtwork.d.ts.map +1 -0
- package/dist/components/overlay/DeviceFrameArtwork.js +112 -0
- package/dist/components/overlay/DeviceFrameArtwork.js.map +1 -0
- package/dist/components/overlay/DevicePreviewChrome.d.ts +2 -0
- package/dist/components/overlay/DevicePreviewChrome.d.ts.map +1 -0
- package/dist/components/overlay/DevicePreviewChrome.js +475 -0
- package/dist/components/overlay/DevicePreviewChrome.js.map +1 -0
- package/dist/components/overlay/DevicePreviewQrCard.d.ts +18 -0
- package/dist/components/overlay/DevicePreviewQrCard.d.ts.map +1 -0
- package/dist/components/overlay/DevicePreviewQrCard.js +94 -0
- package/dist/components/overlay/DevicePreviewQrCard.js.map +1 -0
- package/dist/components/overlay/DeviceStatusBar.d.ts +13 -0
- package/dist/components/overlay/DeviceStatusBar.d.ts.map +1 -0
- package/dist/components/overlay/DeviceStatusBar.js +168 -0
- package/dist/components/overlay/DeviceStatusBar.js.map +1 -0
- package/dist/components/overlay/FloatingPinRail.d.ts.map +1 -1
- package/dist/components/overlay/FloatingPinRail.js +44 -23
- package/dist/components/overlay/FloatingPinRail.js.map +1 -1
- package/dist/components/panel/ReportControlPanel.d.ts.map +1 -1
- package/dist/components/panel/ReportControlPanel.js +13 -6
- package/dist/components/panel/ReportControlPanel.js.map +1 -1
- package/dist/components/report/FivePixels.d.ts.map +1 -1
- package/dist/components/report/FivePixels.js +5 -0
- package/dist/components/report/FivePixels.js.map +1 -1
- package/dist/components/report/ReportView.d.ts +1 -1
- package/dist/components/report/ReportView.d.ts.map +1 -1
- package/dist/components/report/ReportView.js +19 -3
- package/dist/components/report/ReportView.js.map +1 -1
- package/dist/components/ui/FloatingWindow.d.ts +47 -0
- package/dist/components/ui/FloatingWindow.d.ts.map +1 -0
- package/dist/components/ui/FloatingWindow.js +259 -0
- package/dist/components/ui/FloatingWindow.js.map +1 -0
- package/dist/constants/devicePreview.d.ts +137 -0
- package/dist/constants/devicePreview.d.ts.map +1 -0
- package/dist/constants/devicePreview.js +501 -0
- package/dist/constants/devicePreview.js.map +1 -0
- package/dist/constants/motionClasses.d.ts +2 -0
- package/dist/constants/motionClasses.d.ts.map +1 -1
- package/dist/constants/motionClasses.js +2 -0
- package/dist/constants/motionClasses.js.map +1 -1
- package/dist/constants/overlayChrome.d.ts +13 -0
- package/dist/constants/overlayChrome.d.ts.map +1 -0
- package/dist/constants/overlayChrome.js +13 -0
- package/dist/constants/overlayChrome.js.map +1 -0
- package/dist/hooks/report/assembleReportContextValue.d.ts +15 -0
- package/dist/hooks/report/assembleReportContextValue.d.ts.map +1 -1
- package/dist/hooks/report/assembleReportContextValue.js +15 -0
- package/dist/hooks/report/assembleReportContextValue.js.map +1 -1
- package/dist/hooks/report/useReportDraftSession.d.ts.map +1 -1
- package/dist/hooks/report/useReportDraftSession.js +11 -6
- package/dist/hooks/report/useReportDraftSession.js.map +1 -1
- package/dist/hooks/report/useReportMarkers.d.ts.map +1 -1
- package/dist/hooks/report/useReportMarkers.js +19 -18
- package/dist/hooks/report/useReportMarkers.js.map +1 -1
- package/dist/hooks/report/useReportPanelShell.d.ts +15 -0
- package/dist/hooks/report/useReportPanelShell.d.ts.map +1 -1
- package/dist/hooks/report/useReportPanelShell.js +18 -1
- package/dist/hooks/report/useReportPanelShell.js.map +1 -1
- package/dist/hooks/report/useReportState.d.ts +15 -0
- package/dist/hooks/report/useReportState.d.ts.map +1 -1
- package/dist/hooks/useCurrentPathname.d.ts.map +1 -1
- package/dist/hooks/useCurrentPathname.js +10 -1
- package/dist/hooks/useCurrentPathname.js.map +1 -1
- package/dist/hooks/useDevicePreviewPreference.d.ts +17 -0
- package/dist/hooks/useDevicePreviewPreference.d.ts.map +1 -0
- package/dist/hooks/useDevicePreviewPreference.js +127 -0
- package/dist/hooks/useDevicePreviewPreference.js.map +1 -0
- package/dist/hooks/useOverlayChrome.d.ts +16 -0
- package/dist/hooks/useOverlayChrome.d.ts.map +1 -0
- package/dist/hooks/useOverlayChrome.js +131 -0
- package/dist/hooks/useOverlayChrome.js.map +1 -0
- package/dist/hooks/usePanelAutoRefresh.d.ts +1 -1
- package/dist/hooks/usePanelDock.d.ts +2 -0
- package/dist/hooks/usePanelDock.d.ts.map +1 -1
- package/dist/hooks/usePanelDock.js +22 -0
- package/dist/hooks/usePanelDock.js.map +1 -1
- package/dist/hooks/usePinnedFeedbackPreference.d.ts +3 -1
- package/dist/hooks/usePinnedFeedbackPreference.d.ts.map +1 -1
- package/dist/hooks/usePinnedFeedbackPreference.js +11 -1
- package/dist/hooks/usePinnedFeedbackPreference.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +44 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +44 -0
- package/dist/i18n/ko.js.map +1 -1
- package/dist/i18n/types.d.ts +44 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/providers/reportContext.d.ts +76 -1
- package/dist/providers/reportContext.d.ts.map +1 -1
- package/dist/providers/reportContextPartitions.d.ts +1 -1
- package/dist/providers/reportContextPartitions.d.ts.map +1 -1
- package/dist/providers/reportContextPartitions.js +15 -0
- package/dist/providers/reportContextPartitions.js.map +1 -1
- package/dist/styles/reportStylesheet.d.ts +1 -1
- package/dist/styles/reportStylesheet.d.ts.map +1 -1
- package/dist/styles/reportStylesheet.js +1 -1
- package/dist/styles/reportStylesheet.js.map +1 -1
- package/dist/types/pinnedFeedback.d.ts +7 -0
- package/dist/types/pinnedFeedback.d.ts.map +1 -1
- package/dist/types/pinnedFeedback.js.map +1 -1
- package/dist/utils/marker/coordinates.d.ts.map +1 -1
- package/dist/utils/marker/coordinates.js +41 -23
- package/dist/utils/marker/coordinates.js.map +1 -1
- package/dist/utils/marker/locateFeedback.d.ts.map +1 -1
- package/dist/utils/marker/locateFeedback.js +6 -3
- package/dist/utils/marker/locateFeedback.js.map +1 -1
- package/dist/utils/marker/targetSelector.d.ts.map +1 -1
- package/dist/utils/marker/targetSelector.js +6 -10
- package/dist/utils/marker/targetSelector.js.map +1 -1
- package/dist/utils/mention/elementMentions.d.ts.map +1 -1
- package/dist/utils/mention/elementMentions.js +9 -16
- package/dist/utils/mention/elementMentions.js.map +1 -1
- package/dist/utils/overlay/devicePreviewCapture.d.ts +52 -0
- package/dist/utils/overlay/devicePreviewCapture.d.ts.map +1 -0
- package/dist/utils/overlay/devicePreviewCapture.js +167 -0
- package/dist/utils/overlay/devicePreviewCapture.js.map +1 -0
- package/dist/utils/overlay/devicePreviewFrame.d.ts +31 -0
- package/dist/utils/overlay/devicePreviewFrame.d.ts.map +1 -0
- package/dist/utils/overlay/devicePreviewFrame.js +149 -0
- package/dist/utils/overlay/devicePreviewFrame.js.map +1 -0
- package/dist/utils/overlay/edgeDock.d.ts +47 -0
- package/dist/utils/overlay/edgeDock.d.ts.map +1 -0
- package/dist/utils/overlay/edgeDock.js +144 -0
- package/dist/utils/overlay/edgeDock.js.map +1 -0
- package/dist/utils/overlay/floatingWindowStack.d.ts +6 -0
- package/dist/utils/overlay/floatingWindowStack.d.ts.map +1 -0
- package/dist/utils/overlay/floatingWindowStack.js +17 -0
- package/dist/utils/overlay/floatingWindowStack.js.map +1 -0
- package/dist/utils/overlay/pageDocumentBridge.d.ts +43 -0
- package/dist/utils/overlay/pageDocumentBridge.d.ts.map +1 -0
- package/dist/utils/overlay/pageDocumentBridge.js +208 -0
- package/dist/utils/overlay/pageDocumentBridge.js.map +1 -0
- package/dist/utils/pinned/pinnedFeedback.d.ts.map +1 -1
- package/dist/utils/pinned/pinnedFeedback.js +5 -2
- package/dist/utils/pinned/pinnedFeedback.js.map +1 -1
- package/dist/utils/probe/pickProbeSession.d.ts.map +1 -1
- package/dist/utils/probe/pickProbeSession.js +3 -1
- package/dist/utils/probe/pickProbeSession.js.map +1 -1
- package/dist/utils/qr/devicePreviewShareUrl.d.ts +13 -0
- package/dist/utils/qr/devicePreviewShareUrl.d.ts.map +1 -0
- package/dist/utils/qr/devicePreviewShareUrl.js +53 -0
- package/dist/utils/qr/devicePreviewShareUrl.js.map +1 -0
- package/dist/utils/qr/encodeQrSvg.d.ts +13 -0
- package/dist/utils/qr/encodeQrSvg.d.ts.map +1 -0
- package/dist/utils/qr/encodeQrSvg.js +31 -0
- package/dist/utils/qr/encodeQrSvg.js.map +1 -0
- package/dist/utils/shared/dom.d.ts.map +1 -1
- package/dist/utils/shared/dom.js +34 -29
- package/dist/utils/shared/dom.js.map +1 -1
- package/dist/utils/shared/pathname.d.ts.map +1 -1
- package/dist/utils/shared/pathname.js +13 -0
- package/dist/utils/shared/pathname.js.map +1 -1
- package/dist/vendor/nayuki/qrcodegen.d.ts +94 -0
- package/dist/vendor/nayuki/qrcodegen.d.ts.map +1 -0
- package/dist/vendor/nayuki/qrcodegen.js +836 -0
- package/dist/vendor/nayuki/qrcodegen.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { useReportPreferences, useReportSession } from "../../providers/reportContext.js";
|
|
4
|
+
import { DEVICE_PREVIEW_BRAND_ORDER, DEVICE_PREVIEW_SCALE_OPTIONS, formatDevicePreviewScale, getDevicePreviewLayoutSize, getDevicePreviewPreset, getDevicePreviewPresetsByBrand, getEmptyBezel, scaleDeviceChrome, } from "../../constants/devicePreview.js";
|
|
5
|
+
import { PanelOptionSwitch } from "../../components/panel/PanelOptionSwitch.js";
|
|
6
|
+
import { FloatingWindow } from "../../components/ui/FloatingWindow.js";
|
|
7
|
+
import { buildDevicePreviewCaptureFilename, captureDevicePreview, downloadCanvasPng, getDevicePreviewCaptureLayout, } from "../../utils/overlay/devicePreviewCapture.js";
|
|
8
|
+
import { DEVICE_PREVIEW_FRAME_NAME, DEVICE_PREVIEW_HOST_STYLE_ID, HTML_DEVICE_PREVIEW_ACTIVE_CLASS, buildDevicePreviewHostStyle, clearGuestStatusBarStyle, closeDevicePreviewAndSyncGuestUrl, getGuestCaptureRoot, getGuestDocument, getGuestWindow, isGuestDocumentReady, isInsideDevicePreviewFrame, readGuestContentMetrics, syncGuestStatusBarStyle, } from "../../utils/overlay/devicePreviewFrame.js";
|
|
9
|
+
import { clearPageDocumentBridge, notifyPageDocumentBridge, setPageDocumentBridge, } from "../../utils/overlay/pageDocumentBridge.js";
|
|
10
|
+
import { DeviceFrameArtwork } from "./DeviceFrameArtwork.js";
|
|
11
|
+
import { DevicePreviewQrCard } from "./DevicePreviewQrCard.js";
|
|
12
|
+
import { DeviceStatusBar, getDeviceStatusBarHeight } from "./DeviceStatusBar.js";
|
|
13
|
+
const DEVICE_PREVIEW_BAR_STORAGE_KEY = "fivepixels:device-preview-bar-position:v1";
|
|
14
|
+
const FLOATING_BAR_RESERVE = 88;
|
|
15
|
+
function readDevicePreviewBarPosition() {
|
|
16
|
+
const fallback = getDefaultDevicePreviewBarPosition();
|
|
17
|
+
if (typeof window === "undefined") {
|
|
18
|
+
return fallback;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const raw = window.localStorage.getItem(DEVICE_PREVIEW_BAR_STORAGE_KEY);
|
|
22
|
+
if (!raw) {
|
|
23
|
+
return fallback;
|
|
24
|
+
}
|
|
25
|
+
const parsed = JSON.parse(raw);
|
|
26
|
+
if (typeof parsed.left === "number" && Number.isFinite(parsed.left) && typeof parsed.top === "number" && Number.isFinite(parsed.top)) {
|
|
27
|
+
return { left: parsed.left, top: parsed.top };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Ignore storage failures.
|
|
32
|
+
}
|
|
33
|
+
return fallback;
|
|
34
|
+
}
|
|
35
|
+
function getDefaultDevicePreviewBarPosition() {
|
|
36
|
+
if (typeof window === "undefined") {
|
|
37
|
+
return { left: 80, top: 640 };
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
left: Math.max(16, window.innerWidth - 240),
|
|
41
|
+
top: Math.max(16, window.innerHeight - 420),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function persistDevicePreviewBarPosition(position) {
|
|
45
|
+
try {
|
|
46
|
+
window.localStorage.setItem(DEVICE_PREVIEW_BAR_STORAGE_KEY, JSON.stringify(position));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Ignore storage failures.
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const RULER_WIDTH = 44;
|
|
53
|
+
const RULER_GAP = 6;
|
|
54
|
+
const RULER_MAJOR_STEP = 100;
|
|
55
|
+
const RULER_MINOR_STEP = 50;
|
|
56
|
+
const LABEL_RESERVE = 34;
|
|
57
|
+
const DEVICE_PREVIEW_CANVAS_GRID = 16;
|
|
58
|
+
/** Host document (html/body) is outside ThemeScope — resolve token hex by appearance. */
|
|
59
|
+
const DEVICE_PREVIEW_HOST_CANVAS = {
|
|
60
|
+
light: {
|
|
61
|
+
background: "#f5f5f5", // --adaptive-black100
|
|
62
|
+
line: "rgba(0, 0, 0, 0.04)",
|
|
63
|
+
screen: "#ffffff", // --adaptive-background
|
|
64
|
+
},
|
|
65
|
+
dark: {
|
|
66
|
+
background: "#1F2125",
|
|
67
|
+
line: "rgba(255, 255, 255, 0.04)",
|
|
68
|
+
screen: "#17171c", // --adaptive-background
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
function buildDevicePreviewCanvasStyle(hostCanvas) {
|
|
72
|
+
return {
|
|
73
|
+
backgroundColor: hostCanvas.background,
|
|
74
|
+
backgroundImage: `linear-gradient(${hostCanvas.line} 1px, transparent 1px), linear-gradient(90deg, ${hostCanvas.line} 1px, transparent 1px)`,
|
|
75
|
+
backgroundSize: `${DEVICE_PREVIEW_CANVAS_GRID}px ${DEVICE_PREVIEW_CANVAS_GRID}px`,
|
|
76
|
+
backgroundAttachment: "fixed",
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function buildRulerTicks(scrollY, clientHeight, scrollHeight) {
|
|
80
|
+
const start = Math.floor(scrollY / RULER_MINOR_STEP) * RULER_MINOR_STEP;
|
|
81
|
+
const end = Math.ceil((scrollY + clientHeight) / RULER_MINOR_STEP) * RULER_MINOR_STEP;
|
|
82
|
+
const ticks = [];
|
|
83
|
+
for (let documentY = Math.max(0, start); documentY <= Math.min(scrollHeight, end + RULER_MINOR_STEP); documentY += RULER_MINOR_STEP) {
|
|
84
|
+
ticks.push({
|
|
85
|
+
documentY,
|
|
86
|
+
major: documentY % RULER_MAJOR_STEP === 0,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return ticks;
|
|
90
|
+
}
|
|
91
|
+
function resolveCenteredLayout(args) {
|
|
92
|
+
const { layoutWidth, layoutHeight, bezelTop, bezelRight, bezelBottom, bezelLeft, viewportWidth, viewportHeight, fitToViewport } = args;
|
|
93
|
+
const availableWidth = Math.max(240, viewportWidth - 24);
|
|
94
|
+
const availableHeight = Math.max(240, viewportHeight - FLOATING_BAR_RESERVE - LABEL_RESERVE);
|
|
95
|
+
// Logical screen stays at the selected device × user scale — never shrink for the viewport.
|
|
96
|
+
const screenWidth = Math.max(1, Math.round(layoutWidth));
|
|
97
|
+
const screenHeight = Math.max(1, Math.round(layoutHeight));
|
|
98
|
+
const bezel = {
|
|
99
|
+
top: Math.max(0, Math.round(bezelTop)),
|
|
100
|
+
right: Math.max(0, Math.round(bezelRight)),
|
|
101
|
+
bottom: Math.max(0, Math.round(bezelBottom)),
|
|
102
|
+
left: Math.max(0, Math.round(bezelLeft)),
|
|
103
|
+
};
|
|
104
|
+
const frameWidth = screenWidth + bezel.left + bezel.right;
|
|
105
|
+
const frameHeight = screenHeight + bezel.top + bezel.bottom;
|
|
106
|
+
// Optional visual-only shrink; CSS size / container queries stay at the real device width.
|
|
107
|
+
const fitScale = fitToViewport ? Math.min(1, availableWidth / frameWidth, availableHeight / frameHeight) : 1;
|
|
108
|
+
const visualFrameWidth = frameWidth * fitScale;
|
|
109
|
+
const visualFrameHeight = frameHeight * fitScale;
|
|
110
|
+
const visualScreenWidth = screenWidth * fitScale;
|
|
111
|
+
const visualScreenHeight = screenHeight * fitScale;
|
|
112
|
+
const frameLeft = Math.round((viewportWidth - visualFrameWidth) / 2);
|
|
113
|
+
const frameTop = Math.round((availableHeight - visualFrameHeight) / 2 + LABEL_RESERVE / 2);
|
|
114
|
+
const screenLeft = frameLeft + bezel.left * fitScale;
|
|
115
|
+
const screenTop = frameTop + bezel.top * fitScale;
|
|
116
|
+
return {
|
|
117
|
+
fitScale,
|
|
118
|
+
screenWidth,
|
|
119
|
+
screenHeight,
|
|
120
|
+
visualScreenWidth,
|
|
121
|
+
visualScreenHeight,
|
|
122
|
+
frameWidth,
|
|
123
|
+
frameHeight,
|
|
124
|
+
visualFrameWidth,
|
|
125
|
+
visualFrameHeight,
|
|
126
|
+
frameLeft,
|
|
127
|
+
frameTop,
|
|
128
|
+
screenLeft,
|
|
129
|
+
screenTop,
|
|
130
|
+
bezel,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function DevicePreviewFloatingBar({ captureState, onCapture, onClose, }) {
|
|
134
|
+
const { messages, devicePreviewDeviceId, setDevicePreviewDeviceId, devicePreviewScale, setDevicePreviewScale, devicePreviewImageEnabled, setDevicePreviewImageEnabled, devicePreviewFitToViewport, setDevicePreviewFitToViewport, devicePreviewStatusBarEnabled, setDevicePreviewStatusBarEnabled, } = useReportPreferences();
|
|
135
|
+
const [position, setPosition] = useState(() => readDevicePreviewBarPosition());
|
|
136
|
+
const [mode, setMode] = useState("normal");
|
|
137
|
+
const captureLabel = captureState === "capturing"
|
|
138
|
+
? messages.settings.devicePreviewCaptureCapturingLabel
|
|
139
|
+
: captureState === "saved"
|
|
140
|
+
? messages.settings.devicePreviewCaptureSavedLabel
|
|
141
|
+
: captureState === "failed"
|
|
142
|
+
? messages.settings.devicePreviewCaptureFailedLabel
|
|
143
|
+
: messages.settings.devicePreviewCaptureLabel;
|
|
144
|
+
const selectClassName = "h-[30px] w-full rounded-[8px] border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-black50)] px-[8px] text-[11px] font-semibold text-[var(--adaptive-black900)] outline-none focus:border-[var(--adaptive-blue500)]";
|
|
145
|
+
const handlePositionChange = useCallback((next) => {
|
|
146
|
+
setPosition(next);
|
|
147
|
+
persistDevicePreviewBarPosition(next);
|
|
148
|
+
}, []);
|
|
149
|
+
return (_jsx(FloatingWindow, { dataChrome: "device-preview-toolbar", role: "toolbar", ariaLabel: messages.settings.devicePreviewFloatingAriaLabel, position: position, onPositionChange: handlePositionChange, mode: mode, onModeChange: setMode, width: 220, minWidth: 200, minHeight: 160, resizable: true, resizeAriaLabel: messages.marker.resizeAriaLabel, contentClassName: "px-[12px] pb-[12px]", controls: {
|
|
150
|
+
onClose,
|
|
151
|
+
closeAriaLabel: messages.marker.windowCloseAriaLabel,
|
|
152
|
+
minimizeAriaLabel: messages.marker.windowMinimizeAriaLabel,
|
|
153
|
+
maximizeAriaLabel: messages.marker.windowMaximizeAriaLabel,
|
|
154
|
+
restoreAriaLabel: messages.marker.windowRestoreAriaLabel,
|
|
155
|
+
moreAriaLabel: messages.marker.windowControlsMoreAriaLabel,
|
|
156
|
+
}, title: _jsx("span", { className: "truncate text-[12px] font-bold text-[var(--adaptive-black900)]", children: messages.settings.devicePreviewFloatingAriaLabel }), children: _jsxs("div", { className: "flex w-full flex-col gap-[10px]", children: [_jsxs("label", { className: "flex flex-col gap-[3px]", children: [_jsx("span", { className: "text-[9px] font-semibold text-[var(--adaptive-black500)]", children: messages.settings.devicePreviewDeviceLabel }), _jsx("select", { value: devicePreviewDeviceId, onChange: (event) => setDevicePreviewDeviceId(event.target.value), "aria-label": messages.settings.devicePreviewDeviceAriaLabel, className: selectClassName, children: DEVICE_PREVIEW_BRAND_ORDER.map((brand) => (_jsx("optgroup", { label: brand === "apple"
|
|
157
|
+
? messages.settings.devicePreviewBrandApple
|
|
158
|
+
: brand === "samsung"
|
|
159
|
+
? messages.settings.devicePreviewBrandSamsung
|
|
160
|
+
: brand === "google"
|
|
161
|
+
? messages.settings.devicePreviewBrandGoogle
|
|
162
|
+
: messages.settings.devicePreviewBrandDesktop, children: getDevicePreviewPresetsByBrand(brand).map((option) => (_jsxs("option", { value: option.id, children: [option.label, " (", option.width, "\u00D7", option.height, ")"] }, option.id))) }, brand))) })] }), _jsxs("label", { className: "flex flex-col gap-[3px]", children: [_jsx("span", { className: "text-[9px] font-semibold text-[var(--adaptive-black500)]", children: messages.settings.devicePreviewScaleLabel }), _jsx("select", { value: String(devicePreviewScale), onChange: (event) => setDevicePreviewScale(Number(event.target.value)), "aria-label": messages.settings.devicePreviewScaleAriaLabel, className: selectClassName, children: DEVICE_PREVIEW_SCALE_OPTIONS.map((scale) => (_jsx("option", { value: String(scale), children: formatDevicePreviewScale(scale) }, scale))) })] }), _jsxs("div", { className: "flex flex-col gap-[3px]", children: [_jsx("span", { className: "text-[9px] font-semibold text-[var(--adaptive-black500)]", children: messages.settings.devicePreviewImageLabel }), _jsx(PanelOptionSwitch, { options: [
|
|
163
|
+
{ value: "off", label: messages.settings.devicePreviewImageOff },
|
|
164
|
+
{ value: "on", label: messages.settings.devicePreviewImageOn },
|
|
165
|
+
], value: devicePreviewImageEnabled ? "on" : "off", onChange: (value) => setDevicePreviewImageEnabled(value === "on"), ariaLabel: messages.settings.devicePreviewImageAriaLabel })] }), _jsxs("div", { className: "flex flex-col gap-[3px]", children: [_jsx("span", { className: "text-[9px] font-semibold text-[var(--adaptive-black500)]", children: messages.settings.devicePreviewFitViewportLabel }), _jsx(PanelOptionSwitch, { options: [
|
|
166
|
+
{ value: "off", label: messages.settings.devicePreviewFitViewportOff },
|
|
167
|
+
{ value: "on", label: messages.settings.devicePreviewFitViewportOn },
|
|
168
|
+
], value: devicePreviewFitToViewport ? "on" : "off", onChange: (value) => setDevicePreviewFitToViewport(value === "on"), ariaLabel: messages.settings.devicePreviewFitViewportAriaLabel })] }), _jsxs("div", { className: "flex flex-col gap-[3px]", children: [_jsx("span", { className: "text-[9px] font-semibold text-[var(--adaptive-black500)]", children: messages.settings.devicePreviewStatusBarLabel }), _jsx(PanelOptionSwitch, { options: [
|
|
169
|
+
{ value: "off", label: messages.settings.devicePreviewStatusBarOff },
|
|
170
|
+
{ value: "on", label: messages.settings.devicePreviewStatusBarOn },
|
|
171
|
+
], value: devicePreviewStatusBarEnabled ? "on" : "off", onChange: (value) => setDevicePreviewStatusBarEnabled(value === "on"), ariaLabel: messages.settings.devicePreviewStatusBarAriaLabel })] }), _jsx("button", { type: "button", onClick: onCapture, disabled: captureState === "capturing", "aria-label": messages.settings.devicePreviewCaptureAriaLabel, className: "h-[28px] rounded-[8px] border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-black50)] px-[8px] text-[10px] font-semibold text-[var(--adaptive-black900)] hover:bg-[var(--adaptive-black100)] disabled:opacity-60", children: captureLabel })] }) }));
|
|
172
|
+
}
|
|
173
|
+
export function DevicePreviewChrome() {
|
|
174
|
+
const { devicePreviewUiOpen, devicePreviewDeviceId, devicePreviewScale, devicePreviewImageEnabled, devicePreviewFitToViewport, devicePreviewStatusBarEnabled, resolvedPanelAppearance, messages, setDevicePreviewUiOpen, } = useReportPreferences();
|
|
175
|
+
const { mode } = useReportSession();
|
|
176
|
+
const isPreviewGuest = isInsideDevicePreviewFrame();
|
|
177
|
+
const preset = useMemo(() => getDevicePreviewPreset(devicePreviewDeviceId), [devicePreviewDeviceId]);
|
|
178
|
+
const layout = useMemo(() => getDevicePreviewLayoutSize(preset, devicePreviewScale), [preset, devicePreviewScale]);
|
|
179
|
+
const chrome = useMemo(() => {
|
|
180
|
+
if (!devicePreviewImageEnabled) {
|
|
181
|
+
return {
|
|
182
|
+
frameRadius: 0,
|
|
183
|
+
screenRadius: 0,
|
|
184
|
+
bezel: getEmptyBezel(),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
return scaleDeviceChrome(preset, devicePreviewScale);
|
|
188
|
+
}, [devicePreviewImageEnabled, preset, devicePreviewScale]);
|
|
189
|
+
const hostCanvas = DEVICE_PREVIEW_HOST_CANVAS[resolvedPanelAppearance === "dark" ? "dark" : "light"];
|
|
190
|
+
const canvasStyle = useMemo(() => buildDevicePreviewCanvasStyle(hostCanvas), [hostCanvas]);
|
|
191
|
+
const stageRef = useRef(null);
|
|
192
|
+
const statusBarRef = useRef(null);
|
|
193
|
+
const iframeRef = useRef(null);
|
|
194
|
+
const captureResetTimerRef = useRef(null);
|
|
195
|
+
const [captureState, setCaptureState] = useState("idle");
|
|
196
|
+
const [frameLoadState, setFrameLoadState] = useState("loading");
|
|
197
|
+
const [frameSrc] = useState(() => (typeof window === "undefined" ? "" : window.location.href));
|
|
198
|
+
const [metrics, setMetrics] = useState(() => typeof window === "undefined"
|
|
199
|
+
? {
|
|
200
|
+
scrollY: 0,
|
|
201
|
+
scrollHeight: 800,
|
|
202
|
+
clientHeight: 800,
|
|
203
|
+
left: 0,
|
|
204
|
+
top: 0,
|
|
205
|
+
width: 390,
|
|
206
|
+
viewportWidth: 1280,
|
|
207
|
+
viewportHeight: 800,
|
|
208
|
+
}
|
|
209
|
+
: readGuestContentMetrics(null, layout.width));
|
|
210
|
+
const centered = useMemo(() => resolveCenteredLayout({
|
|
211
|
+
layoutWidth: layout.width,
|
|
212
|
+
layoutHeight: layout.height,
|
|
213
|
+
bezelTop: chrome.bezel.top,
|
|
214
|
+
bezelRight: chrome.bezel.right,
|
|
215
|
+
bezelBottom: chrome.bezel.bottom,
|
|
216
|
+
bezelLeft: chrome.bezel.left,
|
|
217
|
+
viewportWidth: metrics.viewportWidth || (typeof window !== "undefined" ? window.innerWidth : 1280),
|
|
218
|
+
viewportHeight: metrics.viewportHeight || (typeof window !== "undefined" ? window.innerHeight : 800),
|
|
219
|
+
fitToViewport: devicePreviewFitToViewport,
|
|
220
|
+
}), [layout.width, layout.height, chrome.bezel, metrics.viewportWidth, metrics.viewportHeight, devicePreviewFitToViewport]);
|
|
221
|
+
const statusBarHeight = useMemo(() => (devicePreviewStatusBarEnabled ? getDeviceStatusBarHeight(preset, centered.screenWidth) : 0), [devicePreviewStatusBarEnabled, preset, centered.screenWidth]);
|
|
222
|
+
const handleCapture = useCallback(async () => {
|
|
223
|
+
if (captureState === "capturing") {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const contentRoot = getGuestCaptureRoot(iframeRef.current);
|
|
227
|
+
if (captureResetTimerRef.current !== null) {
|
|
228
|
+
window.clearTimeout(captureResetTimerRef.current);
|
|
229
|
+
captureResetTimerRef.current = null;
|
|
230
|
+
}
|
|
231
|
+
setCaptureState("capturing");
|
|
232
|
+
try {
|
|
233
|
+
if (!contentRoot) {
|
|
234
|
+
throw new Error("Device preview content is missing.");
|
|
235
|
+
}
|
|
236
|
+
const layout = getDevicePreviewCaptureLayout({
|
|
237
|
+
screenWidth: centered.screenWidth,
|
|
238
|
+
screenHeight: centered.screenHeight,
|
|
239
|
+
bezel: chrome.bezel,
|
|
240
|
+
deviceImageEnabled: devicePreviewImageEnabled,
|
|
241
|
+
});
|
|
242
|
+
const canvas = await captureDevicePreview({
|
|
243
|
+
contentRoot,
|
|
244
|
+
chromeStage: stageRef.current,
|
|
245
|
+
statusBarLayer: statusBarRef.current,
|
|
246
|
+
deviceImageEnabled: devicePreviewImageEnabled,
|
|
247
|
+
statusBarEnabled: devicePreviewStatusBarEnabled,
|
|
248
|
+
layout,
|
|
249
|
+
background: hostCanvas.screen,
|
|
250
|
+
});
|
|
251
|
+
await downloadCanvasPng(canvas, buildDevicePreviewCaptureFilename({
|
|
252
|
+
deviceId: preset.id,
|
|
253
|
+
width: centered.screenWidth,
|
|
254
|
+
height: centered.screenHeight,
|
|
255
|
+
}));
|
|
256
|
+
setCaptureState("saved");
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
setCaptureState("failed");
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
captureResetTimerRef.current = window.setTimeout(() => {
|
|
263
|
+
setCaptureState("idle");
|
|
264
|
+
captureResetTimerRef.current = null;
|
|
265
|
+
}, 1600);
|
|
266
|
+
}
|
|
267
|
+
}, [
|
|
268
|
+
captureState,
|
|
269
|
+
centered.screenHeight,
|
|
270
|
+
centered.screenWidth,
|
|
271
|
+
chrome.bezel,
|
|
272
|
+
devicePreviewImageEnabled,
|
|
273
|
+
devicePreviewStatusBarEnabled,
|
|
274
|
+
hostCanvas.screen,
|
|
275
|
+
preset.id,
|
|
276
|
+
]);
|
|
277
|
+
useEffect(() => {
|
|
278
|
+
return () => {
|
|
279
|
+
if (captureResetTimerRef.current !== null) {
|
|
280
|
+
window.clearTimeout(captureResetTimerRef.current);
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
}, []);
|
|
284
|
+
const handleClose = useCallback(() => {
|
|
285
|
+
closeDevicePreviewAndSyncGuestUrl(iframeRef.current, () => setDevicePreviewUiOpen(false));
|
|
286
|
+
}, [setDevicePreviewUiOpen]);
|
|
287
|
+
const handleFrameLoad = useCallback(() => {
|
|
288
|
+
const iframe = iframeRef.current;
|
|
289
|
+
if (!isGuestDocumentReady(iframe)) {
|
|
290
|
+
setFrameLoadState("blocked");
|
|
291
|
+
clearPageDocumentBridge();
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
setFrameLoadState("ready");
|
|
295
|
+
setPageDocumentBridge({ iframe, fitScale: centered.fitScale });
|
|
296
|
+
syncGuestStatusBarStyle(getGuestDocument(iframe), statusBarHeight);
|
|
297
|
+
setMetrics(readGuestContentMetrics(iframe, centered.screenWidth));
|
|
298
|
+
notifyPageDocumentBridge();
|
|
299
|
+
iframe?.focus();
|
|
300
|
+
}, [centered.fitScale, centered.screenWidth, statusBarHeight]);
|
|
301
|
+
useEffect(() => {
|
|
302
|
+
if (!devicePreviewUiOpen || frameLoadState !== "ready") {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
setPageDocumentBridge({ iframe: iframeRef.current, fitScale: centered.fitScale });
|
|
306
|
+
}, [centered.fitScale, devicePreviewUiOpen, frameLoadState]);
|
|
307
|
+
useEffect(() => {
|
|
308
|
+
if (!devicePreviewUiOpen || frameLoadState !== "ready") {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const guestWindow = getGuestWindow(iframeRef.current);
|
|
312
|
+
if (!guestWindow) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const notify = () => notifyPageDocumentBridge();
|
|
316
|
+
const originalPushState = guestWindow.history.pushState.bind(guestWindow.history);
|
|
317
|
+
const originalReplaceState = guestWindow.history.replaceState.bind(guestWindow.history);
|
|
318
|
+
guestWindow.addEventListener("popstate", notify);
|
|
319
|
+
guestWindow.history.pushState = (...args) => {
|
|
320
|
+
originalPushState(...args);
|
|
321
|
+
notify();
|
|
322
|
+
};
|
|
323
|
+
guestWindow.history.replaceState = (...args) => {
|
|
324
|
+
originalReplaceState(...args);
|
|
325
|
+
notify();
|
|
326
|
+
};
|
|
327
|
+
return () => {
|
|
328
|
+
guestWindow.removeEventListener("popstate", notify);
|
|
329
|
+
guestWindow.history.pushState = originalPushState;
|
|
330
|
+
guestWindow.history.replaceState = originalReplaceState;
|
|
331
|
+
};
|
|
332
|
+
}, [devicePreviewUiOpen, frameLoadState, frameSrc]);
|
|
333
|
+
useEffect(() => {
|
|
334
|
+
if (!devicePreviewUiOpen) {
|
|
335
|
+
clearPageDocumentBridge();
|
|
336
|
+
document.documentElement.classList.remove(HTML_DEVICE_PREVIEW_ACTIVE_CLASS);
|
|
337
|
+
document.getElementById(DEVICE_PREVIEW_HOST_STYLE_ID)?.remove();
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
document.documentElement.classList.add(HTML_DEVICE_PREVIEW_ACTIVE_CLASS);
|
|
341
|
+
let style = document.getElementById(DEVICE_PREVIEW_HOST_STYLE_ID);
|
|
342
|
+
if (!style) {
|
|
343
|
+
style = document.createElement("style");
|
|
344
|
+
style.id = DEVICE_PREVIEW_HOST_STYLE_ID;
|
|
345
|
+
document.documentElement.append(style);
|
|
346
|
+
}
|
|
347
|
+
style.textContent = buildDevicePreviewHostStyle({
|
|
348
|
+
background: hostCanvas.background,
|
|
349
|
+
line: hostCanvas.line,
|
|
350
|
+
gridSize: DEVICE_PREVIEW_CANVAS_GRID,
|
|
351
|
+
});
|
|
352
|
+
const sync = () => setMetrics(readGuestContentMetrics(iframeRef.current, centered.screenWidth));
|
|
353
|
+
sync();
|
|
354
|
+
requestAnimationFrame(sync);
|
|
355
|
+
return () => {
|
|
356
|
+
document.documentElement.classList.remove(HTML_DEVICE_PREVIEW_ACTIVE_CLASS);
|
|
357
|
+
style?.remove();
|
|
358
|
+
clearPageDocumentBridge();
|
|
359
|
+
};
|
|
360
|
+
}, [devicePreviewUiOpen, centered.screenWidth, hostCanvas.background, hostCanvas.line]);
|
|
361
|
+
useEffect(() => {
|
|
362
|
+
if (!devicePreviewUiOpen) {
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
const iframe = iframeRef.current;
|
|
366
|
+
syncGuestStatusBarStyle(getGuestDocument(iframe), statusBarHeight);
|
|
367
|
+
return () => {
|
|
368
|
+
clearGuestStatusBarStyle(getGuestDocument(iframe));
|
|
369
|
+
};
|
|
370
|
+
}, [devicePreviewUiOpen, statusBarHeight, frameLoadState]);
|
|
371
|
+
useEffect(() => {
|
|
372
|
+
if (!devicePreviewUiOpen) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
const sync = () => setMetrics(readGuestContentMetrics(iframeRef.current, centered.screenWidth));
|
|
376
|
+
const iframe = iframeRef.current;
|
|
377
|
+
const guestWindow = getGuestWindow(iframe);
|
|
378
|
+
guestWindow?.addEventListener("scroll", sync, { passive: true });
|
|
379
|
+
guestWindow?.addEventListener("resize", sync);
|
|
380
|
+
window.addEventListener("resize", sync);
|
|
381
|
+
const resizeObserver = typeof ResizeObserver === "undefined" || !iframe ? null : new ResizeObserver(() => sync());
|
|
382
|
+
if (iframe) {
|
|
383
|
+
resizeObserver?.observe(iframe);
|
|
384
|
+
}
|
|
385
|
+
return () => {
|
|
386
|
+
guestWindow?.removeEventListener("scroll", sync);
|
|
387
|
+
guestWindow?.removeEventListener("resize", sync);
|
|
388
|
+
window.removeEventListener("resize", sync);
|
|
389
|
+
resizeObserver?.disconnect();
|
|
390
|
+
};
|
|
391
|
+
}, [devicePreviewUiOpen, centered.screenWidth, centered.screenHeight, frameLoadState]);
|
|
392
|
+
if (!devicePreviewUiOpen || isPreviewGuest) {
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
const screenLeft = metrics.left || centered.screenLeft;
|
|
396
|
+
const screenTop = metrics.top || centered.screenTop;
|
|
397
|
+
const screenWidth = centered.screenWidth;
|
|
398
|
+
const screenHeight = centered.screenHeight;
|
|
399
|
+
const visualScreenHeight = centered.visualScreenHeight;
|
|
400
|
+
const frameLeft = centered.frameLeft;
|
|
401
|
+
const frameTop = centered.frameTop;
|
|
402
|
+
const ticks = buildRulerTicks(metrics.scrollY, metrics.clientHeight || screenHeight, Math.max(metrics.scrollHeight, screenHeight));
|
|
403
|
+
const visualBezelLeft = centered.bezel.left * centered.fitScale;
|
|
404
|
+
const actualFrameLeft = screenLeft - visualBezelLeft;
|
|
405
|
+
const rulerLeft = actualFrameLeft >= RULER_WIDTH + RULER_GAP
|
|
406
|
+
? actualFrameLeft - RULER_WIDTH - RULER_GAP
|
|
407
|
+
: Math.max(0, actualFrameLeft - RULER_WIDTH);
|
|
408
|
+
const visualStatusBarHeight = statusBarHeight * centered.fitScale;
|
|
409
|
+
const rulerTop = screenTop + visualStatusBarHeight;
|
|
410
|
+
const rulerHeight = Math.max(0, visualScreenHeight - visualStatusBarHeight);
|
|
411
|
+
const contentScrollY = Math.max(0, metrics.scrollY - statusBarHeight);
|
|
412
|
+
const scrollLabel = messages.settings.devicePreviewScrollLabel(contentScrollY);
|
|
413
|
+
const stageTransform = {
|
|
414
|
+
transform: `scale(${centered.fitScale})`,
|
|
415
|
+
transformOrigin: "top left",
|
|
416
|
+
};
|
|
417
|
+
const qrGap = 16;
|
|
418
|
+
const qrLeft = frameLeft + centered.visualFrameWidth + qrGap;
|
|
419
|
+
const qrMaxWidth = Math.max(0, metrics.viewportWidth - qrLeft - 12);
|
|
420
|
+
const showQrCard = qrMaxWidth >= 140;
|
|
421
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "pointer-events-none fixed inset-0 z-[999997]", "data-fivepixels-device-preview": "", children: [_jsx("div", { className: "absolute left-0 right-0 top-0", style: { ...canvasStyle, height: Math.max(0, frameTop) } }), _jsx("div", { className: "absolute bottom-0 left-0 right-0", style: { ...canvasStyle, top: frameTop + centered.visualFrameHeight } }), _jsx("div", { className: "absolute left-0", style: {
|
|
422
|
+
...canvasStyle,
|
|
423
|
+
top: frameTop,
|
|
424
|
+
height: centered.visualFrameHeight,
|
|
425
|
+
width: Math.max(0, frameLeft),
|
|
426
|
+
} }), _jsx("div", { className: "absolute right-0", style: {
|
|
427
|
+
...canvasStyle,
|
|
428
|
+
top: frameTop,
|
|
429
|
+
height: centered.visualFrameHeight,
|
|
430
|
+
width: Math.max(0, metrics.viewportWidth - frameLeft - centered.visualFrameWidth),
|
|
431
|
+
} }), _jsx("iframe", { ref: iframeRef, name: DEVICE_PREVIEW_FRAME_NAME, title: messages.settings.devicePreviewIframeTitle, src: frameSrc, onLoad: handleFrameLoad, "data-fivepixels-device-preview-frame": "", tabIndex: -1, className: `${mode === "report" ? "pointer-events-none" : "pointer-events-auto"} absolute z-[1] border-0`, style: {
|
|
432
|
+
left: centered.screenLeft,
|
|
433
|
+
top: centered.screenTop,
|
|
434
|
+
width: screenWidth,
|
|
435
|
+
height: screenHeight,
|
|
436
|
+
transform: `scale(${centered.fitScale})`,
|
|
437
|
+
transformOrigin: "top left",
|
|
438
|
+
borderRadius: devicePreviewImageEnabled ? chrome.screenRadius : 0,
|
|
439
|
+
background: hostCanvas.screen,
|
|
440
|
+
overflow: "hidden",
|
|
441
|
+
} }), frameLoadState === "blocked" ? (_jsx("div", { className: "pointer-events-none absolute z-[2] flex items-center justify-center px-[16px] text-center text-[12px] font-semibold text-[var(--adaptive-black900)]", style: {
|
|
442
|
+
left: centered.screenLeft,
|
|
443
|
+
top: centered.screenTop,
|
|
444
|
+
width: centered.visualScreenWidth,
|
|
445
|
+
height: centered.visualScreenHeight,
|
|
446
|
+
}, children: messages.settings.devicePreviewIframeBlocked })) : null, _jsxs("div", { ref: stageRef, className: "absolute z-[3]", "data-fivepixels-device-preview-stage": "", style: {
|
|
447
|
+
left: frameLeft,
|
|
448
|
+
top: frameTop,
|
|
449
|
+
width: centered.frameWidth,
|
|
450
|
+
height: centered.frameHeight,
|
|
451
|
+
...stageTransform,
|
|
452
|
+
}, children: [devicePreviewImageEnabled ? (_jsx(DeviceFrameArtwork, { preset: preset, chrome: chrome, screenWidth: screenWidth, screenHeight: screenHeight })) : (_jsx("div", { className: "absolute border border-[var(--adaptive-border-subtle)] bg-transparent", "data-fivepixels-skip-capture": "", style: {
|
|
453
|
+
left: centered.bezel.left,
|
|
454
|
+
top: centered.bezel.top,
|
|
455
|
+
width: screenWidth,
|
|
456
|
+
height: screenHeight,
|
|
457
|
+
} })), devicePreviewStatusBarEnabled ? (_jsx("div", { ref: statusBarRef, className: "absolute z-[1] overflow-hidden", style: {
|
|
458
|
+
left: centered.bezel.left,
|
|
459
|
+
top: centered.bezel.top,
|
|
460
|
+
width: screenWidth,
|
|
461
|
+
height: screenHeight,
|
|
462
|
+
borderRadius: devicePreviewImageEnabled ? chrome.screenRadius : 0,
|
|
463
|
+
}, children: _jsx(DeviceStatusBar, { preset: preset, width: screenWidth, appearance: resolvedPanelAppearance === "dark" ? "dark" : "light", showCutout: devicePreviewImageEnabled }) })) : null] }), _jsxs("div", { className: "absolute overflow-hidden border-r border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-neutralTintOpacity900)] text-[var(--adaptive-black900)] backdrop-blur-[4px]", "data-fivepixels-skip-capture": "", style: { left: rulerLeft, top: rulerTop, width: RULER_WIDTH, height: rulerHeight, borderRadius: 6 }, children: [_jsx("div", { className: "absolute inset-x-0 top-0 z-[1] border-b border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-neutralTintOpacity900)] px-[4px] py-[6px] text-center text-[9px] font-semibold leading-tight text-[var(--adaptive-black900)]", children: scrollLabel }), ticks.map((tick) => {
|
|
464
|
+
const top = (tick.documentY - metrics.scrollY - statusBarHeight) * centered.fitScale;
|
|
465
|
+
if (top < 0 || top > rulerHeight) {
|
|
466
|
+
return null;
|
|
467
|
+
}
|
|
468
|
+
const labelY = Math.max(0, tick.documentY - statusBarHeight);
|
|
469
|
+
return (_jsxs("div", { className: "absolute right-0 flex items-center", style: { top, height: 0 }, children: [_jsx("span", { className: `mr-[3px] text-[8px] tabular-nums ${tick.major ? "font-semibold text-[var(--adaptive-black900)]" : "text-[var(--adaptive-black500)]"}`, children: tick.major ? labelY : "" }), _jsx("span", { className: `block bg-[var(--adaptive-black500)] ${tick.major ? "h-[1px] w-[12px]" : "h-[1px] w-[7px]"}` })] }, tick.documentY));
|
|
470
|
+
})] })] }), showQrCard ? (_jsx(DevicePreviewQrCard, { left: qrLeft,
|
|
471
|
+
// top={Math.max(8, frameTop)}
|
|
472
|
+
// top={Math.max(8, frameTop)}
|
|
473
|
+
maxWidth: qrMaxWidth, title: messages.settings.devicePreviewQrTitle, hintLocalhost: messages.settings.devicePreviewQrHintLocalhost, urlInputLabel: messages.settings.devicePreviewQrUrlInputLabel, urlInputPlaceholder: messages.settings.devicePreviewQrUrlInputPlaceholder, urlInputAriaLabel: messages.settings.devicePreviewQrUrlInputAriaLabel, invalidUrlMessage: messages.settings.devicePreviewQrInvalidUrl, emptyUrlMessage: messages.settings.devicePreviewQrEmptyUrl, copyLabel: messages.settings.devicePreviewQrCopyLabel, copiedLabel: messages.settings.devicePreviewQrCopiedLabel, copyAriaLabel: messages.settings.devicePreviewQrCopyAriaLabel, qrAriaLabel: messages.settings.devicePreviewQrAriaLabel })) : null, _jsx(DevicePreviewFloatingBar, { captureState: captureState, onCapture: () => void handleCapture(), onClose: handleClose })] }));
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=DevicePreviewChrome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevicePreviewChrome.js","sourceRoot":"","sources":["../../../src/components/overlay/DevicePreviewChrome.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type DevicePreviewQrCardProps = {
|
|
2
|
+
left: number;
|
|
3
|
+
maxWidth: number;
|
|
4
|
+
title: string;
|
|
5
|
+
hintLocalhost: string;
|
|
6
|
+
urlInputLabel: string;
|
|
7
|
+
urlInputPlaceholder: string;
|
|
8
|
+
urlInputAriaLabel: string;
|
|
9
|
+
invalidUrlMessage: string;
|
|
10
|
+
emptyUrlMessage: string;
|
|
11
|
+
copyLabel: string;
|
|
12
|
+
copiedLabel: string;
|
|
13
|
+
copyAriaLabel: string;
|
|
14
|
+
qrAriaLabel: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function DevicePreviewQrCard({ left, maxWidth, title, hintLocalhost, urlInputLabel, urlInputPlaceholder, urlInputAriaLabel, invalidUrlMessage, emptyUrlMessage, copyLabel, copiedLabel, copyAriaLabel, qrAriaLabel, }: DevicePreviewQrCardProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=DevicePreviewQrCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevicePreviewQrCard.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/DevicePreviewQrCard.tsx"],"names":[],"mappings":"AAkCA,KAAK,wBAAwB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAChC,IAAI,EAEJ,QAAQ,EACR,KAAK,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,GACd,EAAE,wBAAwB,+BAmJ1B"}
|