@fivepixels-js/react 0.2.7 → 0.2.9

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.
Files changed (311) hide show
  1. package/THIRD_PARTY_NOTICES.md +29 -0
  2. package/dist/components/icons/Icons.d.ts +9 -0
  3. package/dist/components/icons/Icons.d.ts.map +1 -1
  4. package/dist/components/icons/Icons.js +12 -0
  5. package/dist/components/icons/Icons.js.map +1 -1
  6. package/dist/components/overlay/DeviceFrameArtwork.d.ts +10 -0
  7. package/dist/components/overlay/DeviceFrameArtwork.d.ts.map +1 -0
  8. package/dist/components/overlay/DeviceFrameArtwork.js +112 -0
  9. package/dist/components/overlay/DeviceFrameArtwork.js.map +1 -0
  10. package/dist/components/overlay/DevicePreviewChrome.d.ts +2 -0
  11. package/dist/components/overlay/DevicePreviewChrome.d.ts.map +1 -0
  12. package/dist/components/overlay/DevicePreviewChrome.js +523 -0
  13. package/dist/components/overlay/DevicePreviewChrome.js.map +1 -0
  14. package/dist/components/overlay/DevicePreviewQrCard.d.ts +18 -0
  15. package/dist/components/overlay/DevicePreviewQrCard.d.ts.map +1 -0
  16. package/dist/components/overlay/DevicePreviewQrCard.js +94 -0
  17. package/dist/components/overlay/DevicePreviewQrCard.js.map +1 -0
  18. package/dist/components/overlay/DeviceStatusBar.d.ts +13 -0
  19. package/dist/components/overlay/DeviceStatusBar.d.ts.map +1 -0
  20. package/dist/components/overlay/DeviceStatusBar.js +168 -0
  21. package/dist/components/overlay/DeviceStatusBar.js.map +1 -0
  22. package/dist/components/overlay/DotWaveOverlay.d.ts.map +1 -1
  23. package/dist/components/overlay/DotWaveOverlay.js +3 -1
  24. package/dist/components/overlay/DotWaveOverlay.js.map +1 -1
  25. package/dist/components/overlay/FloatingPinRail.d.ts.map +1 -1
  26. package/dist/components/overlay/FloatingPinRail.js +47 -27
  27. package/dist/components/overlay/FloatingPinRail.js.map +1 -1
  28. package/dist/components/overlay/PickTargetContextMenu.js +1 -1
  29. package/dist/components/overlay/PickTargetContextMenu.js.map +1 -1
  30. package/dist/components/overlay/PickTargetHoverTooltip.d.ts.map +1 -1
  31. package/dist/components/overlay/PickTargetHoverTooltip.js +5 -2
  32. package/dist/components/overlay/PickTargetHoverTooltip.js.map +1 -1
  33. package/dist/components/panel/AppearanceThemePicker.d.ts +3 -1
  34. package/dist/components/panel/AppearanceThemePicker.d.ts.map +1 -1
  35. package/dist/components/panel/AppearanceThemePicker.js +7 -6
  36. package/dist/components/panel/AppearanceThemePicker.js.map +1 -1
  37. package/dist/components/panel/DiscreteScaleDial.d.ts.map +1 -1
  38. package/dist/components/panel/DiscreteScaleDial.js +7 -11
  39. package/dist/components/panel/DiscreteScaleDial.js.map +1 -1
  40. package/dist/components/panel/MarkerShapePicker.d.ts +4 -2
  41. package/dist/components/panel/MarkerShapePicker.d.ts.map +1 -1
  42. package/dist/components/panel/MarkerShapePicker.js +10 -13
  43. package/dist/components/panel/MarkerShapePicker.js.map +1 -1
  44. package/dist/components/panel/MarkerSizePreview.d.ts +4 -2
  45. package/dist/components/panel/MarkerSizePreview.d.ts.map +1 -1
  46. package/dist/components/panel/MarkerSizePreview.js +19 -21
  47. package/dist/components/panel/MarkerSizePreview.js.map +1 -1
  48. package/dist/components/panel/PanelAutoRefreshControl.js +1 -1
  49. package/dist/components/panel/PanelAutoRefreshControl.js.map +1 -1
  50. package/dist/components/panel/PanelDropdownMenu.js +1 -1
  51. package/dist/components/panel/PanelDropdownMenu.js.map +1 -1
  52. package/dist/components/panel/PanelKeyGate.d.ts.map +1 -1
  53. package/dist/components/panel/PanelKeyGate.js +7 -2
  54. package/dist/components/panel/PanelKeyGate.js.map +1 -1
  55. package/dist/components/panel/PanelMarkerDisplayControls.d.ts +3 -8
  56. package/dist/components/panel/PanelMarkerDisplayControls.d.ts.map +1 -1
  57. package/dist/components/panel/PanelMarkerDisplayControls.js +4 -4
  58. package/dist/components/panel/PanelMarkerDisplayControls.js.map +1 -1
  59. package/dist/components/panel/PanelOnboarding.d.ts.map +1 -1
  60. package/dist/components/panel/PanelOnboarding.js +26 -5
  61. package/dist/components/panel/PanelOnboarding.js.map +1 -1
  62. package/dist/components/panel/PanelProjectFooter.js +1 -1
  63. package/dist/components/panel/PanelProjectFooter.js.map +1 -1
  64. package/dist/components/panel/PanelRoleSwitch.js +1 -1
  65. package/dist/components/panel/PanelRoleSwitch.js.map +1 -1
  66. package/dist/components/panel/PanelSettings.d.ts.map +1 -1
  67. package/dist/components/panel/PanelSettings.js +54 -11
  68. package/dist/components/panel/PanelSettings.js.map +1 -1
  69. package/dist/components/panel/PanelStatusBanner.d.ts +26 -0
  70. package/dist/components/panel/PanelStatusBanner.d.ts.map +1 -0
  71. package/dist/components/panel/PanelStatusBanner.js +11 -0
  72. package/dist/components/panel/PanelStatusBanner.js.map +1 -0
  73. package/dist/components/panel/PanelStatusBannerStack.d.ts +5 -0
  74. package/dist/components/panel/PanelStatusBannerStack.d.ts.map +1 -0
  75. package/dist/components/panel/PanelStatusBannerStack.js +129 -0
  76. package/dist/components/panel/PanelStatusBannerStack.js.map +1 -0
  77. package/dist/components/panel/ReportControlPanel.d.ts.map +1 -1
  78. package/dist/components/panel/ReportControlPanel.js +8 -8
  79. package/dist/components/panel/ReportControlPanel.js.map +1 -1
  80. package/dist/components/panel/ReportDraftForm.js +2 -2
  81. package/dist/components/panel/ReportDraftForm.js.map +1 -1
  82. package/dist/components/panel/ReportFeedbackList.js +2 -2
  83. package/dist/components/panel/ReportFeedbackList.js.map +1 -1
  84. package/dist/components/panel/ThemePreviewSkeleton.d.ts +3 -1
  85. package/dist/components/panel/ThemePreviewSkeleton.d.ts.map +1 -1
  86. package/dist/components/panel/ThemePreviewSkeleton.js +60 -18
  87. package/dist/components/panel/ThemePreviewSkeleton.js.map +1 -1
  88. package/dist/components/panel/feedback/CaseAssigneeInfo.d.ts.map +1 -1
  89. package/dist/components/panel/feedback/CaseAssigneeInfo.js +1 -1
  90. package/dist/components/panel/feedback/CaseAssigneeInfo.js.map +1 -1
  91. package/dist/components/panel/feedback/DraftComposerToolbar.js +1 -1
  92. package/dist/components/panel/feedback/DraftComposerToolbar.js.map +1 -1
  93. package/dist/components/panel/feedback/FeedbackComposer.d.ts +2 -1
  94. package/dist/components/panel/feedback/FeedbackComposer.d.ts.map +1 -1
  95. package/dist/components/panel/feedback/FeedbackComposer.js +7 -6
  96. package/dist/components/panel/feedback/FeedbackComposer.js.map +1 -1
  97. package/dist/components/panel/feedback/FeedbackHoverCard.d.ts.map +1 -1
  98. package/dist/components/panel/feedback/FeedbackHoverCard.js +18 -9
  99. package/dist/components/panel/feedback/FeedbackHoverCard.js.map +1 -1
  100. package/dist/components/panel/feedback/FeedbackThread.d.ts.map +1 -1
  101. package/dist/components/panel/feedback/FeedbackThread.js +9 -9
  102. package/dist/components/panel/feedback/FeedbackThread.js.map +1 -1
  103. package/dist/components/panel/feedback/MentionComposerInput.d.ts.map +1 -1
  104. package/dist/components/panel/feedback/MentionComposerInput.js +1 -1
  105. package/dist/components/panel/feedback/MentionComposerInput.js.map +1 -1
  106. package/dist/components/panel/feedback/QuestionThreadGroup.d.ts +3 -2
  107. package/dist/components/panel/feedback/QuestionThreadGroup.d.ts.map +1 -1
  108. package/dist/components/panel/feedback/QuestionThreadGroup.js +2 -2
  109. package/dist/components/panel/feedback/QuestionThreadGroup.js.map +1 -1
  110. package/dist/components/panel/feedback/ThreadAuthorMeta.d.ts +5 -1
  111. package/dist/components/panel/feedback/ThreadAuthorMeta.d.ts.map +1 -1
  112. package/dist/components/panel/feedback/ThreadAuthorMeta.js +4 -2
  113. package/dist/components/panel/feedback/ThreadAuthorMeta.js.map +1 -1
  114. package/dist/components/panel/feedback/ThreadChildReply.d.ts +3 -2
  115. package/dist/components/panel/feedback/ThreadChildReply.d.ts.map +1 -1
  116. package/dist/components/panel/feedback/ThreadChildReply.js +2 -2
  117. package/dist/components/panel/feedback/ThreadChildReply.js.map +1 -1
  118. package/dist/components/point/MarkerCaseSidebar.d.ts.map +1 -1
  119. package/dist/components/point/MarkerCaseSidebar.js +8 -5
  120. package/dist/components/point/MarkerCaseSidebar.js.map +1 -1
  121. package/dist/components/point/MarkerFeedbackWindow.d.ts.map +1 -1
  122. package/dist/components/point/MarkerFeedbackWindow.js +13 -5
  123. package/dist/components/point/MarkerFeedbackWindow.js.map +1 -1
  124. package/dist/components/point/MarkerReplyBadge.d.ts +9 -0
  125. package/dist/components/point/MarkerReplyBadge.d.ts.map +1 -0
  126. package/dist/components/point/MarkerReplyBadge.js +14 -0
  127. package/dist/components/point/MarkerReplyBadge.js.map +1 -0
  128. package/dist/components/point/MarkerShapeGlyph.d.ts +20 -0
  129. package/dist/components/point/MarkerShapeGlyph.d.ts.map +1 -0
  130. package/dist/components/point/MarkerShapeGlyph.js +17 -0
  131. package/dist/components/point/MarkerShapeGlyph.js.map +1 -0
  132. package/dist/components/point/ReportDraftMarker.d.ts.map +1 -1
  133. package/dist/components/point/ReportDraftMarker.js +8 -3
  134. package/dist/components/point/ReportDraftMarker.js.map +1 -1
  135. package/dist/components/point/ReportMarkersLayer.d.ts.map +1 -1
  136. package/dist/components/point/ReportMarkersLayer.js +67 -48
  137. package/dist/components/point/ReportMarkersLayer.js.map +1 -1
  138. package/dist/components/report/ReportView.d.ts.map +1 -1
  139. package/dist/components/report/ReportView.js +13 -3
  140. package/dist/components/report/ReportView.js.map +1 -1
  141. package/dist/components/ui/FloatingWindow.d.ts +46 -0
  142. package/dist/components/ui/FloatingWindow.d.ts.map +1 -0
  143. package/dist/components/ui/FloatingWindow.js +183 -0
  144. package/dist/components/ui/FloatingWindow.js.map +1 -0
  145. package/dist/components/ui/IconTooltipButton.js +1 -1
  146. package/dist/components/ui/IconTooltipButton.js.map +1 -1
  147. package/dist/constants/accentColors.d.ts +32 -0
  148. package/dist/constants/accentColors.d.ts.map +1 -0
  149. package/dist/constants/accentColors.js +32 -0
  150. package/dist/constants/accentColors.js.map +1 -0
  151. package/dist/constants/appearance.d.ts +1 -1
  152. package/dist/constants/appearance.js +2 -2
  153. package/dist/constants/appearance.js.map +1 -1
  154. package/dist/constants/devicePreview.d.ts +137 -0
  155. package/dist/constants/devicePreview.d.ts.map +1 -0
  156. package/dist/constants/devicePreview.js +501 -0
  157. package/dist/constants/devicePreview.js.map +1 -0
  158. package/dist/constants/feedbackStatus.d.ts.map +1 -1
  159. package/dist/constants/feedbackStatus.js +8 -7
  160. package/dist/constants/feedbackStatus.js.map +1 -1
  161. package/dist/constants/markerAppearance.d.ts +24 -9
  162. package/dist/constants/markerAppearance.d.ts.map +1 -1
  163. package/dist/constants/markerAppearance.js +67 -16
  164. package/dist/constants/markerAppearance.js.map +1 -1
  165. package/dist/constants/markerShapePaths.d.ts +64 -0
  166. package/dist/constants/markerShapePaths.d.ts.map +1 -0
  167. package/dist/constants/markerShapePaths.js +63 -0
  168. package/dist/constants/markerShapePaths.js.map +1 -0
  169. package/dist/constants/markerShapeRegistry.d.ts +18 -0
  170. package/dist/constants/markerShapeRegistry.d.ts.map +1 -0
  171. package/dist/constants/markerShapeRegistry.js +35 -0
  172. package/dist/constants/markerShapeRegistry.js.map +1 -0
  173. package/dist/constants/motionClasses.d.ts +2 -0
  174. package/dist/constants/motionClasses.d.ts.map +1 -1
  175. package/dist/constants/motionClasses.js +2 -0
  176. package/dist/constants/motionClasses.js.map +1 -1
  177. package/dist/constants/overlayChrome.d.ts +13 -0
  178. package/dist/constants/overlayChrome.d.ts.map +1 -0
  179. package/dist/constants/overlayChrome.js +13 -0
  180. package/dist/constants/overlayChrome.js.map +1 -0
  181. package/dist/constants/report.d.ts +1 -1
  182. package/dist/constants/report.d.ts.map +1 -1
  183. package/dist/constants/report.js +3 -1
  184. package/dist/constants/report.js.map +1 -1
  185. package/dist/hooks/report/assembleReportContextValue.d.ts +21 -0
  186. package/dist/hooks/report/assembleReportContextValue.d.ts.map +1 -1
  187. package/dist/hooks/report/assembleReportContextValue.js +21 -0
  188. package/dist/hooks/report/assembleReportContextValue.js.map +1 -1
  189. package/dist/hooks/report/useReportMarkers.d.ts.map +1 -1
  190. package/dist/hooks/report/useReportMarkers.js +7 -1
  191. package/dist/hooks/report/useReportMarkers.js.map +1 -1
  192. package/dist/hooks/report/useReportPanelShell.d.ts +20 -0
  193. package/dist/hooks/report/useReportPanelShell.d.ts.map +1 -1
  194. package/dist/hooks/report/useReportPanelShell.js +31 -12
  195. package/dist/hooks/report/useReportPanelShell.js.map +1 -1
  196. package/dist/hooks/report/useReportState.d.ts +21 -0
  197. package/dist/hooks/report/useReportState.d.ts.map +1 -1
  198. package/dist/hooks/useDetachedMarkerVisibilityPreference.d.ts +8 -0
  199. package/dist/hooks/useDetachedMarkerVisibilityPreference.d.ts.map +1 -0
  200. package/dist/hooks/useDetachedMarkerVisibilityPreference.js +49 -0
  201. package/dist/hooks/useDetachedMarkerVisibilityPreference.js.map +1 -0
  202. package/dist/hooks/useDevicePreviewPreference.d.ts +17 -0
  203. package/dist/hooks/useDevicePreviewPreference.d.ts.map +1 -0
  204. package/dist/hooks/useDevicePreviewPreference.js +123 -0
  205. package/dist/hooks/useDevicePreviewPreference.js.map +1 -0
  206. package/dist/hooks/useMarkerAppearancePreference.d.ts +2 -1
  207. package/dist/hooks/useMarkerAppearancePreference.d.ts.map +1 -1
  208. package/dist/hooks/useMarkerAppearancePreference.js +9 -1
  209. package/dist/hooks/useMarkerAppearancePreference.js.map +1 -1
  210. package/dist/hooks/useNativeHover.d.ts.map +1 -1
  211. package/dist/hooks/useNativeHover.js +18 -6
  212. package/dist/hooks/useNativeHover.js.map +1 -1
  213. package/dist/hooks/useOverlayChrome.d.ts +16 -0
  214. package/dist/hooks/useOverlayChrome.d.ts.map +1 -0
  215. package/dist/hooks/useOverlayChrome.js +131 -0
  216. package/dist/hooks/useOverlayChrome.js.map +1 -0
  217. package/dist/hooks/usePanelDock.d.ts +2 -0
  218. package/dist/hooks/usePanelDock.d.ts.map +1 -1
  219. package/dist/hooks/usePanelDock.js +22 -0
  220. package/dist/hooks/usePanelDock.js.map +1 -1
  221. package/dist/hooks/usePinnedFeedbackPreference.d.ts +3 -1
  222. package/dist/hooks/usePinnedFeedbackPreference.d.ts.map +1 -1
  223. package/dist/hooks/usePinnedFeedbackPreference.js +11 -1
  224. package/dist/hooks/usePinnedFeedbackPreference.js.map +1 -1
  225. package/dist/i18n/en.d.ts.map +1 -1
  226. package/dist/i18n/en.js +84 -8
  227. package/dist/i18n/en.js.map +1 -1
  228. package/dist/i18n/ko.d.ts.map +1 -1
  229. package/dist/i18n/ko.js +89 -13
  230. package/dist/i18n/ko.js.map +1 -1
  231. package/dist/i18n/types.d.ts +77 -1
  232. package/dist/i18n/types.d.ts.map +1 -1
  233. package/dist/providers/reportContext.d.ts +106 -1
  234. package/dist/providers/reportContext.d.ts.map +1 -1
  235. package/dist/providers/reportContextPartitions.d.ts +1 -1
  236. package/dist/providers/reportContextPartitions.d.ts.map +1 -1
  237. package/dist/providers/reportContextPartitions.js +21 -0
  238. package/dist/providers/reportContextPartitions.js.map +1 -1
  239. package/dist/styles/reportStylesheet.d.ts +1 -1
  240. package/dist/styles/reportStylesheet.d.ts.map +1 -1
  241. package/dist/styles/reportStylesheet.js +1 -1
  242. package/dist/styles/reportStylesheet.js.map +1 -1
  243. package/dist/types/pinnedFeedback.d.ts +7 -0
  244. package/dist/types/pinnedFeedback.d.ts.map +1 -1
  245. package/dist/types/pinnedFeedback.js.map +1 -1
  246. package/dist/utils/feedback/feedbackThread.d.ts +4 -0
  247. package/dist/utils/feedback/feedbackThread.d.ts.map +1 -1
  248. package/dist/utils/feedback/feedbackThread.js +20 -0
  249. package/dist/utils/feedback/feedbackThread.js.map +1 -1
  250. package/dist/utils/marker/markerContext.d.ts +5 -1
  251. package/dist/utils/marker/markerContext.d.ts.map +1 -1
  252. package/dist/utils/marker/markerContext.js +18 -15
  253. package/dist/utils/marker/markerContext.js.map +1 -1
  254. package/dist/utils/marker/markerRuntime.d.ts +1 -0
  255. package/dist/utils/marker/markerRuntime.d.ts.map +1 -1
  256. package/dist/utils/marker/markerRuntime.js +8 -5
  257. package/dist/utils/marker/markerRuntime.js.map +1 -1
  258. package/dist/utils/marker/markerShape.d.ts +13 -7
  259. package/dist/utils/marker/markerShape.d.ts.map +1 -1
  260. package/dist/utils/marker/markerShape.js +25 -45
  261. package/dist/utils/marker/markerShape.js.map +1 -1
  262. package/dist/utils/overlay/devicePreviewCapture.d.ts +51 -0
  263. package/dist/utils/overlay/devicePreviewCapture.d.ts.map +1 -0
  264. package/dist/utils/overlay/devicePreviewCapture.js +156 -0
  265. package/dist/utils/overlay/devicePreviewCapture.js.map +1 -0
  266. package/dist/utils/overlay/edgeDock.d.ts +47 -0
  267. package/dist/utils/overlay/edgeDock.d.ts.map +1 -0
  268. package/dist/utils/overlay/edgeDock.js +144 -0
  269. package/dist/utils/overlay/edgeDock.js.map +1 -0
  270. package/dist/utils/overlay/floatingWindowStack.d.ts +6 -0
  271. package/dist/utils/overlay/floatingWindowStack.d.ts.map +1 -0
  272. package/dist/utils/overlay/floatingWindowStack.js +17 -0
  273. package/dist/utils/overlay/floatingWindowStack.js.map +1 -0
  274. package/dist/utils/panel/formatStatCount.js +1 -1
  275. package/dist/utils/panel/formatStatCount.js.map +1 -1
  276. package/dist/utils/panel/panelRoleStats.d.ts +3 -5
  277. package/dist/utils/panel/panelRoleStats.d.ts.map +1 -1
  278. package/dist/utils/panel/panelRoleStats.js +26 -54
  279. package/dist/utils/panel/panelRoleStats.js.map +1 -1
  280. package/dist/utils/panel/panelTypography.d.ts +2 -2
  281. package/dist/utils/panel/panelTypography.d.ts.map +1 -1
  282. package/dist/utils/panel/panelTypography.js +2 -2
  283. package/dist/utils/panel/panelTypography.js.map +1 -1
  284. package/dist/utils/pinned/pinnedFeedback.d.ts.map +1 -1
  285. package/dist/utils/pinned/pinnedFeedback.js +5 -2
  286. package/dist/utils/pinned/pinnedFeedback.js.map +1 -1
  287. package/dist/utils/qr/devicePreviewShareUrl.d.ts +13 -0
  288. package/dist/utils/qr/devicePreviewShareUrl.d.ts.map +1 -0
  289. package/dist/utils/qr/devicePreviewShareUrl.js +53 -0
  290. package/dist/utils/qr/devicePreviewShareUrl.js.map +1 -0
  291. package/dist/utils/qr/encodeQrSvg.d.ts +13 -0
  292. package/dist/utils/qr/encodeQrSvg.d.ts.map +1 -0
  293. package/dist/utils/qr/encodeQrSvg.js +31 -0
  294. package/dist/utils/qr/encodeQrSvg.js.map +1 -0
  295. package/dist/utils/report/reportVisual.d.ts +2 -1
  296. package/dist/utils/report/reportVisual.d.ts.map +1 -1
  297. package/dist/utils/report/reportVisual.js +4 -4
  298. package/dist/utils/report/reportVisual.js.map +1 -1
  299. package/dist/utils/shared/format.d.ts +15 -0
  300. package/dist/utils/shared/format.d.ts.map +1 -1
  301. package/dist/utils/shared/format.js +71 -0
  302. package/dist/utils/shared/format.js.map +1 -1
  303. package/dist/vendor/nayuki/qrcodegen.d.ts +94 -0
  304. package/dist/vendor/nayuki/qrcodegen.d.ts.map +1 -0
  305. package/dist/vendor/nayuki/qrcodegen.js +836 -0
  306. package/dist/vendor/nayuki/qrcodegen.js.map +1 -0
  307. package/package.json +7 -2
  308. package/dist/components/panel/ProbeEditModeBanner.d.ts +0 -2
  309. package/dist/components/panel/ProbeEditModeBanner.d.ts.map +0 -1
  310. package/dist/components/panel/ProbeEditModeBanner.js +0 -23
  311. package/dist/components/panel/ProbeEditModeBanner.js.map +0 -1
@@ -0,0 +1,523 @@
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 } 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 { DeviceFrameArtwork } from "./DeviceFrameArtwork.js";
9
+ import { DevicePreviewQrCard } from "./DevicePreviewQrCard.js";
10
+ import { DeviceStatusBar, getDeviceStatusBarHeight } from "./DeviceStatusBar.js";
11
+ const DEVICE_PREVIEW_BAR_STORAGE_KEY = "fivepixels:device-preview-bar-position:v1";
12
+ const FLOATING_BAR_RESERVE = 88;
13
+ function readDevicePreviewBarPosition() {
14
+ const fallback = getDefaultDevicePreviewBarPosition();
15
+ if (typeof window === "undefined") {
16
+ return fallback;
17
+ }
18
+ try {
19
+ const raw = window.localStorage.getItem(DEVICE_PREVIEW_BAR_STORAGE_KEY);
20
+ if (!raw) {
21
+ return fallback;
22
+ }
23
+ const parsed = JSON.parse(raw);
24
+ if (typeof parsed.left === "number" && Number.isFinite(parsed.left) && typeof parsed.top === "number" && Number.isFinite(parsed.top)) {
25
+ return { left: parsed.left, top: parsed.top };
26
+ }
27
+ }
28
+ catch {
29
+ // Ignore storage failures.
30
+ }
31
+ return fallback;
32
+ }
33
+ function getDefaultDevicePreviewBarPosition() {
34
+ if (typeof window === "undefined") {
35
+ return { left: 80, top: 640 };
36
+ }
37
+ return {
38
+ left: Math.max(16, window.innerWidth - 240),
39
+ top: Math.max(16, window.innerHeight - 420),
40
+ };
41
+ }
42
+ function persistDevicePreviewBarPosition(position) {
43
+ try {
44
+ window.localStorage.setItem(DEVICE_PREVIEW_BAR_STORAGE_KEY, JSON.stringify(position));
45
+ }
46
+ catch {
47
+ // Ignore storage failures.
48
+ }
49
+ }
50
+ const HOST_STYLE_ID = "fivepixels-device-preview-host-style";
51
+ const HTML_ACTIVE_CLASS = "fivepixels-device-preview-active";
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 getPreviewContentRoot() {
80
+ if (typeof document === "undefined") {
81
+ return null;
82
+ }
83
+ return document.getElementById("root");
84
+ }
85
+ function readContentMetrics(fallbackWidth) {
86
+ const root = getPreviewContentRoot();
87
+ const rect = root?.getBoundingClientRect();
88
+ return {
89
+ scrollY: Math.round(root?.scrollTop ?? 0),
90
+ scrollHeight: Math.round(root?.scrollHeight ?? 0),
91
+ clientHeight: Math.round(root?.clientHeight ?? 0),
92
+ left: Math.round(rect?.left ?? Math.max(0, (window.innerWidth - fallbackWidth) / 2)),
93
+ top: Math.round(rect?.top ?? 0),
94
+ width: Math.round(rect?.width ?? Math.min(fallbackWidth, window.innerWidth)),
95
+ viewportWidth: window.innerWidth,
96
+ viewportHeight: window.innerHeight,
97
+ };
98
+ }
99
+ function buildRulerTicks(scrollY, clientHeight, scrollHeight) {
100
+ const start = Math.floor(scrollY / RULER_MINOR_STEP) * RULER_MINOR_STEP;
101
+ const end = Math.ceil((scrollY + clientHeight) / RULER_MINOR_STEP) * RULER_MINOR_STEP;
102
+ const ticks = [];
103
+ for (let documentY = Math.max(0, start); documentY <= Math.min(scrollHeight, end + RULER_MINOR_STEP); documentY += RULER_MINOR_STEP) {
104
+ ticks.push({
105
+ documentY,
106
+ major: documentY % RULER_MAJOR_STEP === 0,
107
+ });
108
+ }
109
+ return ticks;
110
+ }
111
+ function resolveCenteredLayout(args) {
112
+ const { layoutWidth, layoutHeight, bezelTop, bezelRight, bezelBottom, bezelLeft, viewportWidth, viewportHeight, fitToViewport } = args;
113
+ const availableWidth = Math.max(240, viewportWidth - 24);
114
+ const availableHeight = Math.max(240, viewportHeight - FLOATING_BAR_RESERVE - LABEL_RESERVE);
115
+ // Logical screen stays at the selected device × user scale — never shrink for the viewport.
116
+ const screenWidth = Math.max(1, Math.round(layoutWidth));
117
+ const screenHeight = Math.max(1, Math.round(layoutHeight));
118
+ const bezel = {
119
+ top: Math.max(0, Math.round(bezelTop)),
120
+ right: Math.max(0, Math.round(bezelRight)),
121
+ bottom: Math.max(0, Math.round(bezelBottom)),
122
+ left: Math.max(0, Math.round(bezelLeft)),
123
+ };
124
+ const frameWidth = screenWidth + bezel.left + bezel.right;
125
+ const frameHeight = screenHeight + bezel.top + bezel.bottom;
126
+ // Optional visual-only shrink; CSS size / container queries stay at the real device width.
127
+ const fitScale = fitToViewport ? Math.min(1, availableWidth / frameWidth, availableHeight / frameHeight) : 1;
128
+ const visualFrameWidth = frameWidth * fitScale;
129
+ const visualFrameHeight = frameHeight * fitScale;
130
+ const visualScreenWidth = screenWidth * fitScale;
131
+ const visualScreenHeight = screenHeight * fitScale;
132
+ const frameLeft = Math.round((viewportWidth - visualFrameWidth) / 2);
133
+ const frameTop = Math.round((availableHeight - visualFrameHeight) / 2 + LABEL_RESERVE / 2);
134
+ const screenLeft = frameLeft + bezel.left * fitScale;
135
+ const screenTop = frameTop + bezel.top * fitScale;
136
+ return {
137
+ fitScale,
138
+ screenWidth,
139
+ screenHeight,
140
+ visualScreenWidth,
141
+ visualScreenHeight,
142
+ frameWidth,
143
+ frameHeight,
144
+ visualFrameWidth,
145
+ visualFrameHeight,
146
+ frameLeft,
147
+ frameTop,
148
+ screenLeft,
149
+ screenTop,
150
+ bezel,
151
+ };
152
+ }
153
+ function clearRootInlineStyles(root) {
154
+ const props = [
155
+ "max-width",
156
+ "width",
157
+ "height",
158
+ "max-height",
159
+ "min-height",
160
+ "margin",
161
+ "margin-top",
162
+ "margin-left",
163
+ "margin-right",
164
+ "margin-bottom",
165
+ "overflow",
166
+ "overflow-x",
167
+ "overflow-y",
168
+ "overscroll-behavior",
169
+ "container-type",
170
+ "container-name",
171
+ "background",
172
+ "position",
173
+ "z-index",
174
+ "box-sizing",
175
+ "padding",
176
+ "padding-top",
177
+ "border-radius",
178
+ "transform",
179
+ "transform-origin",
180
+ ];
181
+ for (const prop of props) {
182
+ root.style.removeProperty(prop);
183
+ }
184
+ }
185
+ function DevicePreviewFloatingBar({ captureState, onCapture, }) {
186
+ const { messages, devicePreviewDeviceId, setDevicePreviewDeviceId, devicePreviewScale, setDevicePreviewScale, devicePreviewImageEnabled, setDevicePreviewImageEnabled, devicePreviewFitToViewport, setDevicePreviewFitToViewport, devicePreviewStatusBarEnabled, setDevicePreviewStatusBarEnabled, setDevicePreviewUiOpen, } = useReportPreferences();
187
+ const [position, setPosition] = useState(() => readDevicePreviewBarPosition());
188
+ const [mode, setMode] = useState("normal");
189
+ const captureLabel = captureState === "capturing"
190
+ ? messages.settings.devicePreviewCaptureCapturingLabel
191
+ : captureState === "saved"
192
+ ? messages.settings.devicePreviewCaptureSavedLabel
193
+ : captureState === "failed"
194
+ ? messages.settings.devicePreviewCaptureFailedLabel
195
+ : messages.settings.devicePreviewCaptureLabel;
196
+ 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)]";
197
+ const handlePositionChange = useCallback((next) => {
198
+ setPosition(next);
199
+ persistDevicePreviewBarPosition(next);
200
+ }, []);
201
+ 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: {
202
+ onClose: () => setDevicePreviewUiOpen(false),
203
+ closeAriaLabel: messages.marker.windowCloseAriaLabel,
204
+ minimizeAriaLabel: messages.marker.windowMinimizeAriaLabel,
205
+ maximizeAriaLabel: messages.marker.windowMaximizeAriaLabel,
206
+ restoreAriaLabel: messages.marker.windowRestoreAriaLabel,
207
+ }, 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"
208
+ ? messages.settings.devicePreviewBrandApple
209
+ : brand === "samsung"
210
+ ? messages.settings.devicePreviewBrandSamsung
211
+ : brand === "google"
212
+ ? messages.settings.devicePreviewBrandGoogle
213
+ : 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: [
214
+ { value: "off", label: messages.settings.devicePreviewImageOff },
215
+ { value: "on", label: messages.settings.devicePreviewImageOn },
216
+ ], 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: [
217
+ { value: "off", label: messages.settings.devicePreviewFitViewportOff },
218
+ { value: "on", label: messages.settings.devicePreviewFitViewportOn },
219
+ ], 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: [
220
+ { value: "off", label: messages.settings.devicePreviewStatusBarOff },
221
+ { value: "on", label: messages.settings.devicePreviewStatusBarOn },
222
+ ], 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 })] }) }));
223
+ }
224
+ export function DevicePreviewChrome() {
225
+ const { devicePreviewUiOpen, devicePreviewDeviceId, devicePreviewScale, devicePreviewImageEnabled, devicePreviewFitToViewport, devicePreviewStatusBarEnabled, resolvedPanelAppearance, messages, } = useReportPreferences();
226
+ const preset = useMemo(() => getDevicePreviewPreset(devicePreviewDeviceId), [devicePreviewDeviceId]);
227
+ const layout = useMemo(() => getDevicePreviewLayoutSize(preset, devicePreviewScale), [preset, devicePreviewScale]);
228
+ const chrome = useMemo(() => {
229
+ if (!devicePreviewImageEnabled) {
230
+ return {
231
+ frameRadius: 0,
232
+ screenRadius: 0,
233
+ bezel: getEmptyBezel(),
234
+ };
235
+ }
236
+ return scaleDeviceChrome(preset, devicePreviewScale);
237
+ }, [devicePreviewImageEnabled, preset, devicePreviewScale]);
238
+ const hostCanvas = DEVICE_PREVIEW_HOST_CANVAS[resolvedPanelAppearance === "dark" ? "dark" : "light"];
239
+ const canvasStyle = useMemo(() => buildDevicePreviewCanvasStyle(hostCanvas), [hostCanvas]);
240
+ const stageRef = useRef(null);
241
+ const statusBarRef = useRef(null);
242
+ const captureResetTimerRef = useRef(null);
243
+ const [captureState, setCaptureState] = useState("idle");
244
+ const [metrics, setMetrics] = useState(() => typeof window === "undefined"
245
+ ? {
246
+ scrollY: 0,
247
+ scrollHeight: 800,
248
+ clientHeight: 800,
249
+ left: 0,
250
+ top: 0,
251
+ width: 390,
252
+ viewportWidth: 1280,
253
+ viewportHeight: 800,
254
+ }
255
+ : readContentMetrics(layout.width));
256
+ const centered = useMemo(() => resolveCenteredLayout({
257
+ layoutWidth: layout.width,
258
+ layoutHeight: layout.height,
259
+ bezelTop: chrome.bezel.top,
260
+ bezelRight: chrome.bezel.right,
261
+ bezelBottom: chrome.bezel.bottom,
262
+ bezelLeft: chrome.bezel.left,
263
+ viewportWidth: metrics.viewportWidth || (typeof window !== "undefined" ? window.innerWidth : 1280),
264
+ viewportHeight: metrics.viewportHeight || (typeof window !== "undefined" ? window.innerHeight : 800),
265
+ fitToViewport: devicePreviewFitToViewport,
266
+ }), [layout.width, layout.height, chrome.bezel, metrics.viewportWidth, metrics.viewportHeight, devicePreviewFitToViewport]);
267
+ const statusBarHeight = useMemo(() => (devicePreviewStatusBarEnabled ? getDeviceStatusBarHeight(preset, centered.screenWidth) : 0), [devicePreviewStatusBarEnabled, preset, centered.screenWidth]);
268
+ const handleCapture = useCallback(async () => {
269
+ if (captureState === "capturing") {
270
+ return;
271
+ }
272
+ const contentRoot = getPreviewContentRoot();
273
+ if (captureResetTimerRef.current !== null) {
274
+ window.clearTimeout(captureResetTimerRef.current);
275
+ captureResetTimerRef.current = null;
276
+ }
277
+ setCaptureState("capturing");
278
+ try {
279
+ if (!contentRoot) {
280
+ throw new Error("Device preview content is missing.");
281
+ }
282
+ const layout = getDevicePreviewCaptureLayout({
283
+ screenWidth: centered.screenWidth,
284
+ screenHeight: centered.screenHeight,
285
+ bezel: chrome.bezel,
286
+ deviceImageEnabled: devicePreviewImageEnabled,
287
+ });
288
+ const canvas = await captureDevicePreview({
289
+ contentRoot,
290
+ chromeStage: stageRef.current,
291
+ statusBarLayer: statusBarRef.current,
292
+ deviceImageEnabled: devicePreviewImageEnabled,
293
+ statusBarEnabled: devicePreviewStatusBarEnabled,
294
+ layout,
295
+ background: hostCanvas.screen,
296
+ });
297
+ await downloadCanvasPng(canvas, buildDevicePreviewCaptureFilename({
298
+ deviceId: preset.id,
299
+ width: centered.screenWidth,
300
+ height: centered.screenHeight,
301
+ }));
302
+ setCaptureState("saved");
303
+ }
304
+ catch {
305
+ setCaptureState("failed");
306
+ }
307
+ finally {
308
+ captureResetTimerRef.current = window.setTimeout(() => {
309
+ setCaptureState("idle");
310
+ captureResetTimerRef.current = null;
311
+ }, 1600);
312
+ }
313
+ }, [
314
+ captureState,
315
+ centered.screenHeight,
316
+ centered.screenWidth,
317
+ chrome.bezel,
318
+ devicePreviewImageEnabled,
319
+ devicePreviewStatusBarEnabled,
320
+ hostCanvas.screen,
321
+ preset.id,
322
+ ]);
323
+ useEffect(() => {
324
+ return () => {
325
+ if (captureResetTimerRef.current !== null) {
326
+ window.clearTimeout(captureResetTimerRef.current);
327
+ }
328
+ };
329
+ }, []);
330
+ useEffect(() => {
331
+ if (!devicePreviewUiOpen) {
332
+ document.documentElement.classList.remove(HTML_ACTIVE_CLASS);
333
+ document.getElementById(HOST_STYLE_ID)?.remove();
334
+ const root = getPreviewContentRoot();
335
+ if (root) {
336
+ clearRootInlineStyles(root);
337
+ }
338
+ return;
339
+ }
340
+ document.documentElement.classList.add(HTML_ACTIVE_CLASS);
341
+ let style = document.getElementById(HOST_STYLE_ID);
342
+ if (!style) {
343
+ style = document.createElement("style");
344
+ style.id = HOST_STYLE_ID;
345
+ document.documentElement.append(style);
346
+ }
347
+ style.textContent = `
348
+ html.${HTML_ACTIVE_CLASS},
349
+ html.${HTML_ACTIVE_CLASS} body {
350
+ height: 100% !important;
351
+ max-height: 100% !important;
352
+ overflow: hidden !important;
353
+ background-color: ${hostCanvas.background} !important;
354
+ background-image: linear-gradient(${hostCanvas.line} 1px, transparent 1px), linear-gradient(90deg, ${hostCanvas.line} 1px, transparent 1px) !important;
355
+ background-size: ${DEVICE_PREVIEW_CANVAS_GRID}px ${DEVICE_PREVIEW_CANVAS_GRID}px !important;
356
+ }
357
+
358
+ html.${HTML_ACTIVE_CLASS} #fivepixels-root {
359
+ position: fixed !important;
360
+ inset: 0 !important;
361
+ width: 100vw !important;
362
+ height: 100vh !important;
363
+ max-width: none !important;
364
+ max-height: none !important;
365
+ margin: 0 !important;
366
+ pointer-events: none !important;
367
+ z-index: 2147483646 !important;
368
+ }
369
+
370
+ html.${HTML_ACTIVE_CLASS} #root .pulse-board,
371
+ html.${HTML_ACTIVE_CLASS} #root .pulse-sidebar,
372
+ html.${HTML_ACTIVE_CLASS} #root .pulse-main {
373
+ height: auto !important;
374
+ min-height: 100% !important;
375
+ max-height: none !important;
376
+ overflow: visible !important;
377
+ }
378
+
379
+ html.${HTML_ACTIVE_CLASS} #root .pulse-content {
380
+ height: auto !important;
381
+ max-height: none !important;
382
+ overflow: visible !important;
383
+ flex: none !important;
384
+ }
385
+ `;
386
+ const root = getPreviewContentRoot();
387
+ if (root) {
388
+ // Logical CSS size = selected device resolution (× user scale). Viewport fit uses transform only.
389
+ root.style.setProperty("max-width", `${centered.screenWidth}px`, "important");
390
+ root.style.setProperty("width", `${centered.screenWidth}px`, "important");
391
+ root.style.setProperty("height", `${centered.screenHeight}px`, "important");
392
+ root.style.setProperty("max-height", `${centered.screenHeight}px`, "important");
393
+ root.style.setProperty("min-height", "0px", "important");
394
+ root.style.setProperty("margin-left", `${centered.screenLeft}px`, "important");
395
+ root.style.setProperty("margin-right", "0", "important");
396
+ root.style.setProperty("margin-top", `${centered.screenTop}px`, "important");
397
+ root.style.setProperty("margin-bottom", "0", "important");
398
+ root.style.setProperty("padding-top", `${statusBarHeight}px`, "important");
399
+ root.style.setProperty("overflow-x", "hidden", "important");
400
+ root.style.setProperty("overflow-y", "auto", "important");
401
+ root.style.setProperty("overscroll-behavior", "contain", "important");
402
+ root.style.setProperty("container-type", "inline-size", "important");
403
+ root.style.setProperty("container-name", "fivepixels-device-preview", "important");
404
+ root.style.setProperty("background", hostCanvas.screen, "important");
405
+ root.style.setProperty("position", "relative", "important");
406
+ root.style.setProperty("z-index", "0", "important");
407
+ root.style.setProperty("box-sizing", "border-box", "important");
408
+ root.style.setProperty("border-radius", devicePreviewImageEnabled ? `${Math.max(0, Math.round(chrome.screenRadius))}px` : "0px", "important");
409
+ root.style.setProperty("transform", `scale(${centered.fitScale})`, "important");
410
+ root.style.setProperty("transform-origin", "top left", "important");
411
+ }
412
+ const sync = () => setMetrics(readContentMetrics(centered.screenWidth));
413
+ sync();
414
+ requestAnimationFrame(sync);
415
+ return () => {
416
+ document.documentElement.classList.remove(HTML_ACTIVE_CLASS);
417
+ style?.remove();
418
+ if (root) {
419
+ clearRootInlineStyles(root);
420
+ }
421
+ };
422
+ }, [
423
+ devicePreviewUiOpen,
424
+ devicePreviewImageEnabled,
425
+ devicePreviewStatusBarEnabled,
426
+ statusBarHeight,
427
+ centered.screenWidth,
428
+ centered.screenHeight,
429
+ centered.screenLeft,
430
+ centered.screenTop,
431
+ centered.fitScale,
432
+ chrome.screenRadius,
433
+ hostCanvas.background,
434
+ hostCanvas.line,
435
+ hostCanvas.screen,
436
+ ]);
437
+ useEffect(() => {
438
+ if (!devicePreviewUiOpen) {
439
+ return;
440
+ }
441
+ const sync = () => setMetrics(readContentMetrics(centered.screenWidth));
442
+ const root = getPreviewContentRoot();
443
+ root?.addEventListener("scroll", sync, { passive: true });
444
+ window.addEventListener("resize", sync);
445
+ const resizeObserver = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(() => sync());
446
+ if (root) {
447
+ resizeObserver?.observe(root);
448
+ }
449
+ return () => {
450
+ root?.removeEventListener("scroll", sync);
451
+ window.removeEventListener("resize", sync);
452
+ resizeObserver?.disconnect();
453
+ };
454
+ }, [devicePreviewUiOpen, centered.screenWidth, centered.screenHeight]);
455
+ if (!devicePreviewUiOpen) {
456
+ return null;
457
+ }
458
+ const screenLeft = metrics.left || centered.screenLeft;
459
+ const screenTop = metrics.top || centered.screenTop;
460
+ const screenWidth = centered.screenWidth;
461
+ const screenHeight = centered.screenHeight;
462
+ const visualScreenHeight = centered.visualScreenHeight;
463
+ const frameLeft = centered.frameLeft;
464
+ const frameTop = centered.frameTop;
465
+ const ticks = buildRulerTicks(metrics.scrollY, metrics.clientHeight || screenHeight, Math.max(metrics.scrollHeight, screenHeight));
466
+ const visualBezelLeft = centered.bezel.left * centered.fitScale;
467
+ const actualFrameLeft = screenLeft - visualBezelLeft;
468
+ const rulerLeft = actualFrameLeft >= RULER_WIDTH + RULER_GAP
469
+ ? actualFrameLeft - RULER_WIDTH - RULER_GAP
470
+ : Math.max(0, actualFrameLeft - RULER_WIDTH);
471
+ const visualStatusBarHeight = statusBarHeight * centered.fitScale;
472
+ const rulerTop = screenTop + visualStatusBarHeight;
473
+ const rulerHeight = Math.max(0, visualScreenHeight - visualStatusBarHeight);
474
+ const contentScrollY = Math.max(0, metrics.scrollY - statusBarHeight);
475
+ const scrollLabel = messages.settings.devicePreviewScrollLabel(contentScrollY);
476
+ const stageTransform = {
477
+ transform: `scale(${centered.fitScale})`,
478
+ transformOrigin: "top left",
479
+ };
480
+ const qrGap = 16;
481
+ const qrLeft = frameLeft + centered.visualFrameWidth + qrGap;
482
+ const qrMaxWidth = Math.max(0, metrics.viewportWidth - qrLeft - 12);
483
+ const showQrCard = qrMaxWidth >= 140;
484
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "pointer-events-none fixed inset-0 z-[999997]", "aria-hidden": true, "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: {
485
+ ...canvasStyle,
486
+ top: frameTop,
487
+ height: centered.visualFrameHeight,
488
+ width: Math.max(0, frameLeft),
489
+ } }), _jsx("div", { className: "absolute right-0", style: {
490
+ ...canvasStyle,
491
+ top: frameTop,
492
+ height: centered.visualFrameHeight,
493
+ width: Math.max(0, metrics.viewportWidth - frameLeft - centered.visualFrameWidth),
494
+ } }), _jsxs("div", { ref: stageRef, className: "absolute z-[3]", "data-fivepixels-device-preview-stage": "", style: {
495
+ left: frameLeft,
496
+ top: frameTop,
497
+ width: centered.frameWidth,
498
+ height: centered.frameHeight,
499
+ ...stageTransform,
500
+ }, 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: {
501
+ left: centered.bezel.left,
502
+ top: centered.bezel.top,
503
+ width: screenWidth,
504
+ height: screenHeight,
505
+ } })), devicePreviewStatusBarEnabled ? (_jsx("div", { ref: statusBarRef, className: "absolute z-[1] overflow-hidden", style: {
506
+ left: centered.bezel.left,
507
+ top: centered.bezel.top,
508
+ width: screenWidth,
509
+ height: screenHeight,
510
+ borderRadius: devicePreviewImageEnabled ? chrome.screenRadius : 0,
511
+ }, 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) => {
512
+ const top = (tick.documentY - metrics.scrollY - statusBarHeight) * centered.fitScale;
513
+ if (top < 0 || top > rulerHeight) {
514
+ return null;
515
+ }
516
+ const labelY = Math.max(0, tick.documentY - statusBarHeight);
517
+ 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));
518
+ })] })] }), showQrCard ? (_jsx(DevicePreviewQrCard, { left: qrLeft,
519
+ // top={Math.max(8, frameTop)}
520
+ // top={Math.max(8, frameTop)}
521
+ 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() })] }));
522
+ }
523
+ //# 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"}