@aussieljk/forkbook 0.0.0-stage → 0.0.1-2

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 (598) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +77 -2
  3. package/assets/addon-vitest/templates/vitest.config.4.template.ts +36 -0
  4. package/assets/browser/favicon-wrapper.svg +46 -0
  5. package/assets/browser/favicon.svg +1 -0
  6. package/assets/browser/nunito-sans-bold-italic.woff2 +0 -0
  7. package/assets/browser/nunito-sans-bold.woff2 +0 -0
  8. package/assets/browser/nunito-sans-italic.woff2 +0 -0
  9. package/assets/browser/nunito-sans-regular.woff2 +0 -0
  10. package/assets/builder-vite/iframe.html +99 -0
  11. package/assets/create/rendererAssets/.eslintrc.json +16 -0
  12. package/assets/create/rendererAssets/common/Configure.mdx +388 -0
  13. package/assets/create/rendererAssets/common/assets/accessibility.png +0 -0
  14. package/assets/create/rendererAssets/common/assets/accessibility.svg +1 -0
  15. package/assets/create/rendererAssets/common/assets/addon-library.png +0 -0
  16. package/assets/create/rendererAssets/common/assets/assets.png +0 -0
  17. package/assets/create/rendererAssets/common/assets/avif-test-image.avif +0 -0
  18. package/assets/create/rendererAssets/common/assets/context.png +0 -0
  19. package/assets/create/rendererAssets/common/assets/discord.svg +1 -0
  20. package/assets/create/rendererAssets/common/assets/docs.png +0 -0
  21. package/assets/create/rendererAssets/common/assets/figma-plugin.png +0 -0
  22. package/assets/create/rendererAssets/common/assets/github.svg +1 -0
  23. package/assets/create/rendererAssets/common/assets/share.png +0 -0
  24. package/assets/create/rendererAssets/common/assets/styling.png +0 -0
  25. package/assets/create/rendererAssets/common/assets/testing.png +0 -0
  26. package/assets/create/rendererAssets/common/assets/theming.png +0 -0
  27. package/assets/create/rendererAssets/common/assets/tutorials.svg +1 -0
  28. package/assets/create/rendererAssets/common/assets/youtube.svg +1 -0
  29. package/assets/create/rendererAssets/common/button.css +30 -0
  30. package/assets/create/rendererAssets/common/header.css +32 -0
  31. package/assets/create/rendererAssets/common/page.css +68 -0
  32. package/assets/create/templates/react-native/index.expo.js +20 -0
  33. package/assets/create/templates/react-native/index.js +25 -0
  34. package/assets/docs/addon-backgrounds.gif +0 -0
  35. package/assets/docs/addon-controls-args-annotated.png +0 -0
  36. package/assets/docs/addon-controls-args-background-color.png +0 -0
  37. package/assets/docs/addon-controls-args-background-string.png +0 -0
  38. package/assets/docs/addon-controls-args-docs.png +0 -0
  39. package/assets/docs/addon-controls-args-logging.png +0 -0
  40. package/assets/docs/addon-controls-args-no-annotation.png +0 -0
  41. package/assets/docs/addon-controls-args-reflow-slider.png +0 -0
  42. package/assets/docs/addon-controls-args-reflow.png +0 -0
  43. package/assets/docs/addon-controls-args-template.png +0 -0
  44. package/assets/docs/addon-controls-expanded.png +0 -0
  45. package/assets/docs/addon-controls-hero.gif +0 -0
  46. package/assets/docs/addon-controls-install.png +0 -0
  47. package/assets/docs/hero.gif +0 -0
  48. package/assets/docs/highlight.png +0 -0
  49. package/assets/docs/message-reference.png +0 -0
  50. package/assets/docs/viewport.png +0 -0
  51. package/assets/react-native/metro-env.d.ts +69 -0
  52. package/assets/server/addon.tsconfig.json +6 -0
  53. package/assets/server/base-preview-body.html +116 -0
  54. package/assets/server/base-preview-head.html +494 -0
  55. package/assets/server/openBrowser.applescript +94 -0
  56. package/assets/server/template.ejs +87 -0
  57. package/dist/.build-stamp +0 -0
  58. package/dist/_browser-chunks/Color-PCLE2J36.js +1025 -0
  59. package/dist/_browser-chunks/DocsRenderer-JXND3PVQ.js +10 -0
  60. package/dist/_browser-chunks/WithTooltip-XSQFTBMB.js +1619 -0
  61. package/dist/_browser-chunks/chunk-2JDQ35OA.js +247 -0
  62. package/dist/_browser-chunks/chunk-2JT76G3E.js +104 -0
  63. package/dist/_browser-chunks/chunk-2MEPHP35.js +17 -0
  64. package/dist/_browser-chunks/chunk-2SCZVUKW.js +24 -0
  65. package/dist/_browser-chunks/chunk-46Z7NGAS.js +41 -0
  66. package/dist/_browser-chunks/chunk-4ATQOMJB.js +30 -0
  67. package/dist/_browser-chunks/chunk-52CW7FF7.js +49 -0
  68. package/dist/_browser-chunks/chunk-5I7E4GMO.js +62 -0
  69. package/dist/_browser-chunks/chunk-5P4QA6MY.js +20 -0
  70. package/dist/_browser-chunks/chunk-5WMXI5GW.js +816 -0
  71. package/dist/_browser-chunks/chunk-66OCZ54D.js +2604 -0
  72. package/dist/_browser-chunks/chunk-6SXYJQST.js +253 -0
  73. package/dist/_browser-chunks/chunk-AYRF6EJB.js +36 -0
  74. package/dist/_browser-chunks/chunk-B4AUNNU4.js +156 -0
  75. package/dist/_browser-chunks/chunk-BCP2FFXF.js +369 -0
  76. package/dist/_browser-chunks/chunk-C3D4HEFY.js +3396 -0
  77. package/dist/_browser-chunks/chunk-CFAOWGL7.js +43 -0
  78. package/dist/_browser-chunks/chunk-CFWWCCZV.js +223 -0
  79. package/dist/_browser-chunks/chunk-CNED6RYH.js +18 -0
  80. package/dist/_browser-chunks/chunk-DRQKCCAG.js +136 -0
  81. package/dist/_browser-chunks/chunk-ECQ75MKQ.js +0 -0
  82. package/dist/_browser-chunks/chunk-EIYAKDGP.js +302 -0
  83. package/dist/_browser-chunks/chunk-ENKK74N4.js +12 -0
  84. package/dist/_browser-chunks/chunk-FENFYI4X.js +698 -0
  85. package/dist/_browser-chunks/chunk-FJGWSWL5.js +155 -0
  86. package/dist/_browser-chunks/chunk-FVSEPWWX.js +2810 -0
  87. package/dist/_browser-chunks/chunk-GNZY6LOW.js +10116 -0
  88. package/dist/_browser-chunks/chunk-IE4ULIOQ.js +14 -0
  89. package/dist/_browser-chunks/chunk-IMSF75WX.js +42 -0
  90. package/dist/_browser-chunks/chunk-IWQGIXJS.js +14 -0
  91. package/dist/_browser-chunks/chunk-JMC7AIKT.js +108 -0
  92. package/dist/_browser-chunks/chunk-JPUOQJUI.js +8 -0
  93. package/dist/_browser-chunks/chunk-JSBKXXXF.js +218 -0
  94. package/dist/_browser-chunks/chunk-JWSKPMPC.js +73 -0
  95. package/dist/_browser-chunks/chunk-JYVGARBG.js +2943 -0
  96. package/dist/_browser-chunks/chunk-KBK7GKBN.js +35 -0
  97. package/dist/_browser-chunks/chunk-KQ7CRO2B.js +108 -0
  98. package/dist/_browser-chunks/chunk-LAWXTSXK.js +18 -0
  99. package/dist/_browser-chunks/chunk-LE2LTDW3.js +14 -0
  100. package/dist/_browser-chunks/chunk-LEVSOOLQ.js +48 -0
  101. package/dist/_browser-chunks/chunk-LV5PIKV4.js +93 -0
  102. package/dist/_browser-chunks/chunk-MDOL7KML.js +56 -0
  103. package/dist/_browser-chunks/chunk-MFMDGWP6.js +34 -0
  104. package/dist/_browser-chunks/chunk-MLBOOZL4.js +67 -0
  105. package/dist/_browser-chunks/chunk-NQUD4B7H.js +91 -0
  106. package/dist/_browser-chunks/chunk-NULBREPZ.js +43 -0
  107. package/dist/_browser-chunks/chunk-NZMVUW5T.js +7 -0
  108. package/dist/_browser-chunks/chunk-OD6IBQCC.js +117 -0
  109. package/dist/_browser-chunks/chunk-ODVJ3XZJ.js +157 -0
  110. package/dist/_browser-chunks/chunk-OQWFVDIN.js +386 -0
  111. package/dist/_browser-chunks/chunk-OVH3USFB.js +20 -0
  112. package/dist/_browser-chunks/chunk-OZZPSYQR.js +14 -0
  113. package/dist/_browser-chunks/chunk-P6PK47TQ.js +1970 -0
  114. package/dist/_browser-chunks/chunk-PFRNG3UC.js +22 -0
  115. package/dist/_browser-chunks/chunk-PJSMZ27A.js +13 -0
  116. package/dist/_browser-chunks/chunk-QC4HFS6K.js +41 -0
  117. package/dist/_browser-chunks/chunk-QDXFODK4.js +274 -0
  118. package/dist/_browser-chunks/chunk-RBCHTR7C.js +28 -0
  119. package/dist/_browser-chunks/chunk-RMYQ3QN3.js +294 -0
  120. package/dist/_browser-chunks/chunk-RNTIV5CE.js +411 -0
  121. package/dist/_browser-chunks/chunk-RSPAQWVJ.js +80 -0
  122. package/dist/_browser-chunks/chunk-S6TK43XQ.js +836 -0
  123. package/dist/_browser-chunks/chunk-SC67XZST.js +18 -0
  124. package/dist/_browser-chunks/chunk-SFVA4SBT.js +683 -0
  125. package/dist/_browser-chunks/chunk-SZYFOQMT.js +25 -0
  126. package/dist/_browser-chunks/chunk-TBJCJXK4.js +18 -0
  127. package/dist/_browser-chunks/chunk-UMDO3KB7.js +205 -0
  128. package/dist/_browser-chunks/chunk-V2G23FV7.js +11 -0
  129. package/dist/_browser-chunks/chunk-V5M7Q4HT.js +88 -0
  130. package/dist/_browser-chunks/chunk-W5M6NPS3.js +198 -0
  131. package/dist/_browser-chunks/chunk-W7NE2JXW.js +84 -0
  132. package/dist/_browser-chunks/chunk-WGVAAM43.js +1110 -0
  133. package/dist/_browser-chunks/chunk-WHQRNHXD.js +8 -0
  134. package/dist/_browser-chunks/chunk-WOSOWBCA.js +12 -0
  135. package/dist/_browser-chunks/chunk-WZ7KR7SH.js +85 -0
  136. package/dist/_browser-chunks/chunk-YEKO6BHJ.js +20 -0
  137. package/dist/_browser-chunks/chunk-YI2IBIQS.js +7 -0
  138. package/dist/_browser-chunks/chunk-YTIT5NA5.js +1966 -0
  139. package/dist/_browser-chunks/chunk-ZEHRUHTA.js +6 -0
  140. package/dist/_browser-chunks/chunk-ZTQ5MEJ5.js +203 -0
  141. package/dist/_browser-chunks/matchers-YLBYSYAF.js +1263 -0
  142. package/dist/_browser-chunks/react-dom-client-4OHE3QDV.js +9 -0
  143. package/dist/_node-chunks/attached-runtime-I2G4WLJI.js +282 -0
  144. package/dist/_node-chunks/builder-manager-VVHYQXCH.js +1661 -0
  145. package/dist/_node-chunks/chunk-2BUPBPFB.js +82 -0
  146. package/dist/_node-chunks/chunk-2DSIDINN.js +884 -0
  147. package/dist/_node-chunks/chunk-2RU7BKEW.js +23 -0
  148. package/dist/_node-chunks/chunk-34EO2PUT.js +26 -0
  149. package/dist/_node-chunks/chunk-3BKIBF5S.js +3008 -0
  150. package/dist/_node-chunks/chunk-3SDUYDXH.js +98 -0
  151. package/dist/_node-chunks/chunk-3T4ZSNPH.js +662 -0
  152. package/dist/_node-chunks/chunk-3W7F2B7P.js +79 -0
  153. package/dist/_node-chunks/chunk-3Y6AAY5H.js +80 -0
  154. package/dist/_node-chunks/chunk-42UWAGPW.js +1193 -0
  155. package/dist/_node-chunks/chunk-4FEANXWU.js +1986 -0
  156. package/dist/_node-chunks/chunk-5DQFEZEA.js +40 -0
  157. package/dist/_node-chunks/chunk-6KEHV53S.js +1218 -0
  158. package/dist/_node-chunks/chunk-6LMWA44H.js +3837 -0
  159. package/dist/_node-chunks/chunk-6YKBRP72.js +20 -0
  160. package/dist/_node-chunks/chunk-7GUDZVRQ.js +110 -0
  161. package/dist/_node-chunks/chunk-B5J7Q7J4.js +21 -0
  162. package/dist/_node-chunks/chunk-BS2WMZMR.js +90 -0
  163. package/dist/_node-chunks/chunk-BSKFCWQD.js +47 -0
  164. package/dist/_node-chunks/chunk-BXVYT7SB.js +36 -0
  165. package/dist/_node-chunks/chunk-CCOTJ4FC.js +688 -0
  166. package/dist/_node-chunks/chunk-CQKMLL5J.js +33 -0
  167. package/dist/_node-chunks/chunk-CXRU72ET.js +63 -0
  168. package/dist/_node-chunks/chunk-DC7DKR5K.js +20 -0
  169. package/dist/_node-chunks/chunk-DHJFTB4K.js +25 -0
  170. package/dist/_node-chunks/chunk-DUR55DJJ.js +1094 -0
  171. package/dist/_node-chunks/chunk-E6YESGLX.js +7032 -0
  172. package/dist/_node-chunks/chunk-EHUNOMDD.js +52345 -0
  173. package/dist/_node-chunks/chunk-ET7PWEO7.js +298 -0
  174. package/dist/_node-chunks/chunk-EWOX7HPJ.js +20 -0
  175. package/dist/_node-chunks/chunk-F3ZFKBHY.js +844 -0
  176. package/dist/_node-chunks/chunk-FK7KGTV7.js +26 -0
  177. package/dist/_node-chunks/chunk-FPZB5OI7.js +35 -0
  178. package/dist/_node-chunks/chunk-FW2HQUBQ.js +25 -0
  179. package/dist/_node-chunks/chunk-FY6UXW6G.js +11 -0
  180. package/dist/_node-chunks/chunk-GEFQN7K3.js +499 -0
  181. package/dist/_node-chunks/chunk-GRBLDJCR.js +989 -0
  182. package/dist/_node-chunks/chunk-H32DYT6P.js +87 -0
  183. package/dist/_node-chunks/chunk-H4PPVMP5.js +23 -0
  184. package/dist/_node-chunks/chunk-HMP2G23X.js +25 -0
  185. package/dist/_node-chunks/chunk-ICPBH3E7.js +59 -0
  186. package/dist/_node-chunks/chunk-IDEL2J23.js +23 -0
  187. package/dist/_node-chunks/chunk-IK4FGZLR.js +223 -0
  188. package/dist/_node-chunks/chunk-JDXXX6LB.js +68 -0
  189. package/dist/_node-chunks/chunk-JGGFYIG5.js +5468 -0
  190. package/dist/_node-chunks/chunk-JPAZLYJ3.js +29 -0
  191. package/dist/_node-chunks/chunk-JZOO7GGC.js +48 -0
  192. package/dist/_node-chunks/chunk-KISMCCP5.js +4744 -0
  193. package/dist/_node-chunks/chunk-LCK4ZQKG.js +115 -0
  194. package/dist/_node-chunks/chunk-LO56I6E2.js +132 -0
  195. package/dist/_node-chunks/chunk-LXBD4UL4.js +104 -0
  196. package/dist/_node-chunks/chunk-MA24JW6C.js +7162 -0
  197. package/dist/_node-chunks/chunk-MK2KYAI6.js +5414 -0
  198. package/dist/_node-chunks/chunk-NDWKJ4CL.js +2102 -0
  199. package/dist/_node-chunks/chunk-NIBT7XDZ.js +168 -0
  200. package/dist/_node-chunks/chunk-NPO45IMH.js +33 -0
  201. package/dist/_node-chunks/chunk-OISX4AGQ.js +414 -0
  202. package/dist/_node-chunks/chunk-OUW6R7C3.js +26 -0
  203. package/dist/_node-chunks/chunk-OWNFOGTA.js +194 -0
  204. package/dist/_node-chunks/chunk-Q7QNUM5H.js +49 -0
  205. package/dist/_node-chunks/chunk-QEQLR22M.js +1877 -0
  206. package/dist/_node-chunks/chunk-RRN2V55B.js +45 -0
  207. package/dist/_node-chunks/chunk-RWFIFGO5.js +144 -0
  208. package/dist/_node-chunks/chunk-RXNJDRGO.js +209 -0
  209. package/dist/_node-chunks/chunk-RZMQ7S3L.js +92 -0
  210. package/dist/_node-chunks/chunk-SIEXZVCR.js +51 -0
  211. package/dist/_node-chunks/chunk-SLWQNBGO.js +2034 -0
  212. package/dist/_node-chunks/chunk-SVTBJ7Q3.js +35 -0
  213. package/dist/_node-chunks/chunk-SWO5CDYU.js +32 -0
  214. package/dist/_node-chunks/chunk-TD5PLLQG.js +121 -0
  215. package/dist/_node-chunks/chunk-TEQGGSP7.js +33 -0
  216. package/dist/_node-chunks/chunk-TFCEV2XX.js +155 -0
  217. package/dist/_node-chunks/chunk-TFEWM4E3.js +1073 -0
  218. package/dist/_node-chunks/chunk-TINO74G5.js +21 -0
  219. package/dist/_node-chunks/chunk-TNJIXE37.js +40 -0
  220. package/dist/_node-chunks/chunk-TWI4GVH7.js +19 -0
  221. package/dist/_node-chunks/chunk-U5W53R2J.js +1011 -0
  222. package/dist/_node-chunks/chunk-UBOGWBEA.js +148 -0
  223. package/dist/_node-chunks/chunk-UMUBKI6E.js +3787 -0
  224. package/dist/_node-chunks/chunk-UVINFLGY.js +56 -0
  225. package/dist/_node-chunks/chunk-V2DY426G.js +1133 -0
  226. package/dist/_node-chunks/chunk-VLOXOXXE.js +45 -0
  227. package/dist/_node-chunks/chunk-W4OMYLSP.js +1297 -0
  228. package/dist/_node-chunks/chunk-WAXVSN3O.js +18 -0
  229. package/dist/_node-chunks/chunk-WCULS5TP.js +3767 -0
  230. package/dist/_node-chunks/chunk-WNZ2UMFM.js +153 -0
  231. package/dist/_node-chunks/chunk-WZJF2OUH.js +74 -0
  232. package/dist/_node-chunks/chunk-XGIUVY52.js +611 -0
  233. package/dist/_node-chunks/chunk-XHL2LVBM.js +415 -0
  234. package/dist/_node-chunks/chunk-XI6B6P47.js +59 -0
  235. package/dist/_node-chunks/chunk-XLP2ZKXV.js +60 -0
  236. package/dist/_node-chunks/chunk-YCMRA6RX.js +95 -0
  237. package/dist/_node-chunks/chunk-YZFWBA5L.js +2700 -0
  238. package/dist/_node-chunks/chunk-ZMAMXQKP.js +4731 -0
  239. package/dist/_node-chunks/chunk-ZWBCQ4MJ.js +110 -0
  240. package/dist/_node-chunks/dist-VTSTZKUB.js +16 -0
  241. package/dist/_node-chunks/globby-OEMHPBFY.js +2884 -0
  242. package/dist/_node-chunks/jiti-NFX6UU74.js +3848 -0
  243. package/dist/_node-chunks/lib-MDVARD7W.js +366 -0
  244. package/dist/_node-chunks/local-runtime-NTKIN2QT.js +78 -0
  245. package/dist/_node-chunks/mdx-plugin-MWISDWDQ.js +5680 -0
  246. package/dist/_node-chunks/monorepo-LIRFMQXE.js +121 -0
  247. package/dist/_node-chunks/monorepo-optimized-tests-relaxed-limits-no-story-deletion-CPDW4XTW.js +121 -0
  248. package/dist/_node-chunks/optimized-tests-HDOLR3EY.js +22 -0
  249. package/dist/_node-chunks/pattern-copy-play-EKHIUAU2.js +807 -0
  250. package/dist/_node-chunks/postinstallAddon-GYGMWDL6.js +20 -0
  251. package/dist/_node-chunks/rehype-external-links-BUN3HUCO.js +121 -0
  252. package/dist/_node-chunks/rehype-slug-PLADX223.js +52 -0
  253. package/dist/_node-chunks/relaxed-limits-GBHW6KIQ.js +117 -0
  254. package/dist/_node-chunks/run-KDTIZNSY.js +103 -0
  255. package/dist/_node-chunks/run-NL66VTNR.js +4532 -0
  256. package/dist/_node-chunks/session-id-KIIVOQLR.js +23 -0
  257. package/dist/_node-chunks/setup-MGC7BQO6.js +278 -0
  258. package/dist/_node-chunks/vitest.config.4.template-JH2THZFG.js +54 -0
  259. package/dist/actions/decorator.d.ts +7 -0
  260. package/dist/actions/decorator.js +43 -0
  261. package/dist/actions/index.d.ts +67 -0
  262. package/dist/actions/index.js +28 -0
  263. package/dist/addon-a11y/index.d.ts +52 -0
  264. package/dist/addon-a11y/index.js +16 -0
  265. package/dist/addon-a11y/manager.js +1429 -0
  266. package/dist/addon-a11y/preset.js +18 -0
  267. package/dist/addon-a11y/preview.d.ts +17 -0
  268. package/dist/addon-a11y/preview.js +15 -0
  269. package/dist/addon-docs/blocks.d.ts +1061 -0
  270. package/dist/addon-docs/blocks.js +2461 -0
  271. package/dist/addon-docs/index.d.ts +236 -0
  272. package/dist/addon-docs/index.js +16 -0
  273. package/dist/addon-docs/manager.js +90 -0
  274. package/dist/addon-docs/mdx-react-shim.d.ts +1 -0
  275. package/dist/addon-docs/mdx-react-shim.js +2 -0
  276. package/dist/addon-docs/preset.js +378 -0
  277. package/dist/addon-docs/preview.d.ts +4 -0
  278. package/dist/addon-docs/preview.js +7 -0
  279. package/dist/addon-links/index.d.ts +22 -0
  280. package/dist/addon-links/index.js +20 -0
  281. package/dist/addon-links/manager.js +14 -0
  282. package/dist/addon-links/preview.d.ts +6 -0
  283. package/dist/addon-links/preview.js +9 -0
  284. package/dist/addon-links/react/index.d.ts +25 -0
  285. package/dist/addon-links/react/index.js +52 -0
  286. package/dist/addon-mcp/preset.js +1345 -0
  287. package/dist/addon-mcp/preview.js +29 -0
  288. package/dist/addon-mcp/tools/preview-stories/preview-stories-app-script.js +1153 -0
  289. package/dist/addon-ondevice-actions/index.d.ts +4 -0
  290. package/dist/addon-ondevice-actions/index.js +7 -0
  291. package/dist/addon-ondevice-actions/register.js +7 -0
  292. package/dist/addon-ondevice-controls/index.d.ts +6 -0
  293. package/dist/addon-ondevice-controls/index.js +14 -0
  294. package/dist/addon-ondevice-controls/register.js +10 -0
  295. package/dist/addon-pseudo-states/index.d.ts +35 -0
  296. package/dist/addon-pseudo-states/index.js +15 -0
  297. package/dist/addon-pseudo-states/manager.js +53 -0
  298. package/dist/addon-pseudo-states/preview.d.ts +9 -0
  299. package/dist/addon-pseudo-states/preview.js +10 -0
  300. package/dist/addon-themes/index.d.ts +80 -0
  301. package/dist/addon-themes/index.js +104 -0
  302. package/dist/addon-themes/manager.js +97 -0
  303. package/dist/addon-themes/postinstall.js +33 -0
  304. package/dist/addon-themes/preview.d.ts +6 -0
  305. package/dist/addon-themes/preview.js +8 -0
  306. package/dist/addon-vitest/constants.d.ts +132 -0
  307. package/dist/addon-vitest/constants.js +66 -0
  308. package/dist/addon-vitest/index.d.ts +4 -0
  309. package/dist/addon-vitest/index.js +8 -0
  310. package/dist/addon-vitest/manager.js +665 -0
  311. package/dist/addon-vitest/node/coverage-reporter.js +1284 -0
  312. package/dist/addon-vitest/node/vitest.js +674 -0
  313. package/dist/addon-vitest/postinstall.js +24 -0
  314. package/dist/addon-vitest/preset.js +943 -0
  315. package/dist/addon-vitest/vitest-plugin/global-setup.js +162 -0
  316. package/dist/addon-vitest/vitest-plugin/index.d.ts +56 -0
  317. package/dist/addon-vitest/vitest-plugin/index.js +463 -0
  318. package/dist/addon-vitest/vitest-plugin/setup-file-with-project-annotations.js +9 -0
  319. package/dist/addon-vitest/vitest-plugin/setup-file.browser.4.js +20 -0
  320. package/dist/addon-vitest/vitest-plugin/setup-file.js +50 -0
  321. package/dist/addon-vitest/vitest-plugin/test-utils.js +128 -0
  322. package/dist/babel/index.d.ts +2301 -0
  323. package/dist/babel/index.js +61 -0
  324. package/dist/backgrounds/index.d.ts +6 -0
  325. package/dist/backgrounds/index.js +15 -0
  326. package/dist/bin/core.js +1705 -0
  327. package/dist/bin/dispatcher.js +43 -0
  328. package/dist/bin/loader.js +115 -0
  329. package/dist/builder-vite/index.d.ts +50 -0
  330. package/dist/builder-vite/index.js +245 -0
  331. package/dist/builder-vite/preset.js +27 -0
  332. package/dist/channels/index.d.ts +2 -0
  333. package/dist/channels/index.js +352 -0
  334. package/dist/chunk-B2t1tGRh.d.ts +284 -0
  335. package/dist/chunk-BCoJQE-f.d.ts +602 -0
  336. package/dist/chunk-BGkgZp-H.d.ts +214 -0
  337. package/dist/chunk-BTVrWliM.d.ts +115 -0
  338. package/dist/chunk-BXLImeLy.d.ts +197 -0
  339. package/dist/chunk-BfBzpgct.d.ts +916 -0
  340. package/dist/chunk-Bpi2tz-6.d.ts +511 -0
  341. package/dist/chunk-BxWufQms.d.ts +142 -0
  342. package/dist/chunk-C-bavsOH.d.ts +34 -0
  343. package/dist/chunk-C2p5r3Vt.d.ts +13001 -0
  344. package/dist/chunk-C6PAgHLT.d.ts +12 -0
  345. package/dist/chunk-CMeX4WRe.d.ts +179 -0
  346. package/dist/chunk-Ct9xd6IM.d.ts +65 -0
  347. package/dist/chunk-CwQKNaYL.d.ts +15 -0
  348. package/dist/chunk-D7DwV41f.d.ts +3622 -0
  349. package/dist/chunk-DEVFdzxR.d.ts +253 -0
  350. package/dist/chunk-DaVb55-_.d.ts +124 -0
  351. package/dist/chunk-DgRNfmj_.d.ts +40 -0
  352. package/dist/chunk-DoIGKY33.d.ts +666 -0
  353. package/dist/chunk-Dr3R0DXk.d.ts +40 -0
  354. package/dist/chunk-DtHByo32.d.ts +55 -0
  355. package/dist/chunk-Dw1z1Pki.d.ts +933 -0
  356. package/dist/chunk-DzuY9DXg.d.ts +79 -0
  357. package/dist/chunk-FjDVzZTj.d.ts +62 -0
  358. package/dist/chunk-Kt1tW-D1.d.ts +59 -0
  359. package/dist/chunk-XP8oHzpE.d.ts +6 -0
  360. package/dist/chunk-gCX81nOr.d.ts +61 -0
  361. package/dist/chunk-pcFXCimE.d.ts +741 -0
  362. package/dist/cli/index.d.ts +1174 -0
  363. package/dist/cli/index.js +5613 -0
  364. package/dist/cli/skills/content/index.d.ts +72 -0
  365. package/dist/cli/skills/content/index.js +335 -0
  366. package/dist/cli/tools/sdk/child-host.d.ts +61 -0
  367. package/dist/cli/tools/sdk/child-host.js +131 -0
  368. package/dist/cli/tools/sdk/index.d.ts +137 -0
  369. package/dist/cli/tools/sdk/index.js +44 -0
  370. package/dist/cli-commands/bin/index.js +25 -0
  371. package/dist/client-logger/index.d.ts +31 -0
  372. package/dist/client-logger/index.js +63 -0
  373. package/dist/common/index.d.ts +1103 -0
  374. package/dist/common/index.js +364 -0
  375. package/dist/components/index.d.ts +1924 -0
  376. package/dist/components/index.js +13759 -0
  377. package/dist/core-events/index.d.ts +155 -0
  378. package/dist/core-events/index.js +136 -0
  379. package/dist/core-server/index.d.ts +2200 -0
  380. package/dist/core-server/index.js +4165 -0
  381. package/dist/core-server/presets/common-manager.css +170 -0
  382. package/dist/core-server/presets/common-manager.js +4168 -0
  383. package/dist/core-server/presets/common-override-preset.js +81 -0
  384. package/dist/core-server/presets/common-preset.js +2187 -0
  385. package/dist/create/bin/index.js +23 -0
  386. package/dist/create/index.js +25 -0
  387. package/dist/csf/csf-utils.d.ts +2 -0
  388. package/dist/csf/csf-utils.js +19 -0
  389. package/dist/csf/index.d.ts +7 -0
  390. package/dist/csf/index.js +2142 -0
  391. package/dist/csf-tools/index.d.ts +1157 -0
  392. package/dist/csf-tools/index.js +736 -0
  393. package/dist/docs-tools/index.d.ts +197 -0
  394. package/dist/docs-tools/index.js +61 -0
  395. package/dist/highlight/index.d.ts +10 -0
  396. package/dist/highlight/index.js +15 -0
  397. package/dist/instrumenter/index.d.ts +113 -0
  398. package/dist/instrumenter/index.js +2595 -0
  399. package/dist/manager/_manager-chunks/globals-runtime-8HkdnU2F.js +6144 -0
  400. package/dist/manager/_manager-chunks/globals-runtime-BIKBO23x.js +3389 -0
  401. package/dist/manager/_manager-chunks/globals-runtime-BdGkqNEt.js +45 -0
  402. package/dist/manager/_manager-chunks/globals-runtime-BmphMP6z.js +1190 -0
  403. package/dist/manager/_manager-chunks/globals-runtime-BvM-NY2g.js +13307 -0
  404. package/dist/manager/_manager-chunks/globals-runtime-C02fvgcd.js +9243 -0
  405. package/dist/manager/_manager-chunks/globals-runtime-DkAPXCvc.js +9766 -0
  406. package/dist/manager/_manager-chunks/globals-runtime-DpNYC-qi.js +5564 -0
  407. package/dist/manager/_manager-chunks/globals-runtime-DtcOnYHR.js +5357 -0
  408. package/dist/manager/_manager-chunks/globals-runtime-DwFqpqya.js +722 -0
  409. package/dist/manager/_manager-chunks/globals-runtime-FC201B7s.js +6837 -0
  410. package/dist/manager/_manager-chunks/globals-runtime-Rp_zjGnh.js +121 -0
  411. package/dist/manager/_manager-chunks/globals-runtime-ZHrQFa3-.js +10463 -0
  412. package/dist/manager/_manager-chunks/globals-runtime-eLPTIfX-.js +7759 -0
  413. package/dist/manager/_manager-chunks/globals-runtime-qKvCZHFY.js +4468 -0
  414. package/dist/manager/_manager-chunks/globals-runtime-sGpNlIJ1.js +5102 -0
  415. package/dist/manager/_manager-chunks/runtime-B1L9TH89.js +452 -0
  416. package/dist/manager/_manager-chunks/runtime-BK0zF7FN.js +22 -0
  417. package/dist/manager/_manager-chunks/runtime-BhkT2CXl.js +1408 -0
  418. package/dist/manager/_manager-chunks/runtime-Bly6WJLN.js +998 -0
  419. package/dist/manager/_manager-chunks/runtime-D0UOWx0U.js +979 -0
  420. package/dist/manager/_manager-chunks/runtime-D94Vq3oR.js +4014 -0
  421. package/dist/manager/_manager-chunks/runtime-DMig8mT7.js +77 -0
  422. package/dist/manager/_manager-chunks/runtime-EITvVbkG.js +46 -0
  423. package/dist/manager/_manager-chunks/runtime-cp5pazY2.js +8936 -0
  424. package/dist/manager/_manager-chunks/runtime-eDVAYF7N.js +6860 -0
  425. package/dist/manager/_manager-chunks/runtime-i-PDAHLR.js +2493 -0
  426. package/dist/manager/globals-runtime.js +2 -0
  427. package/dist/manager/globals.d.ts +23 -0
  428. package/dist/manager/globals.js +26 -0
  429. package/dist/manager/manager-stores.d.ts +2 -0
  430. package/dist/manager/manager-stores.js +19 -0
  431. package/dist/manager/runtime.js +2 -0
  432. package/dist/manager-api/index.d.ts +2 -0
  433. package/dist/manager-api/index.js +3257 -0
  434. package/dist/manager-errors.d.ts +89 -0
  435. package/dist/manager-errors.js +20 -0
  436. package/dist/mcp/index.d.ts +270 -0
  437. package/dist/mcp/index.js +305 -0
  438. package/dist/mocking-utils/index.d.ts +689 -0
  439. package/dist/mocking-utils/index.js +521 -0
  440. package/dist/mocking-utils/mocker-runtime.js +1254 -0
  441. package/dist/nextjs-vite/config/preview.js +3 -0
  442. package/dist/nextjs-vite/export-mocks/cache/index.d.ts +25 -0
  443. package/dist/nextjs-vite/export-mocks/cache/index.js +29 -0
  444. package/dist/nextjs-vite/export-mocks/headers/index.d.ts +37 -0
  445. package/dist/nextjs-vite/export-mocks/headers/index.js +54 -0
  446. package/dist/nextjs-vite/export-mocks/link/index.d.ts +9 -0
  447. package/dist/nextjs-vite/export-mocks/link/index.js +59 -0
  448. package/dist/nextjs-vite/export-mocks/navigation/index.d.ts +28 -0
  449. package/dist/nextjs-vite/export-mocks/navigation/index.js +58 -0
  450. package/dist/nextjs-vite/export-mocks/router/index.d.ts +34 -0
  451. package/dist/nextjs-vite/export-mocks/router/index.js +63 -0
  452. package/dist/nextjs-vite/index.d.ts +92 -0
  453. package/dist/nextjs-vite/index.js +58 -0
  454. package/dist/nextjs-vite/node/index.d.ts +6 -0
  455. package/dist/nextjs-vite/node/index.js +20 -0
  456. package/dist/nextjs-vite/preset.js +648 -0
  457. package/dist/nextjs-vite/preview.d.ts +20 -0
  458. package/dist/nextjs-vite/preview.js +11 -0
  459. package/dist/nextjs-vite/vite-plugin/index.d.ts +6 -0
  460. package/dist/nextjs-vite/vite-plugin/index.js +19 -0
  461. package/dist/nextjs-vite-plugin/index.d.ts +28 -0
  462. package/dist/nextjs-vite-plugin/index.js +923 -0
  463. package/dist/nextjs-vite-plugin/mocks/storybook.global.js +29 -0
  464. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-context.js +8 -0
  465. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-default-loader.js +23 -0
  466. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-image.js +28 -0
  467. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-legacy-image.js +17 -0
  468. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/cache/index.js +29 -0
  469. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/dynamic/index.js +40 -0
  470. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/headers/index.js +55 -0
  471. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/link/index.js +63 -0
  472. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/navigation/index.js +71 -0
  473. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/router/index.js +74 -0
  474. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/rsc/server-only.js +7 -0
  475. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/safe-stable-stringify/index.js +13 -0
  476. package/dist/nextjs-vite-plugin/plugins/next-mocks/compatibility/draft-mode.compat.js +7 -0
  477. package/dist/node-logger/index.d.ts +495 -0
  478. package/dist/node-logger/index.js +42 -0
  479. package/dist/oxc-parser/index.d.ts +99 -0
  480. package/dist/oxc-parser/index.js +275 -0
  481. package/dist/oxc-parser/worker.js +37 -0
  482. package/dist/preview/_chunks/runtime-BIzIdDbb.js +10263 -0
  483. package/dist/preview/_chunks/runtime-BTPtVY1p.js +1102 -0
  484. package/dist/preview/_chunks/runtime-BZSnICCg.js +8484 -0
  485. package/dist/preview/_chunks/runtime-BdGkqNEt.js +45 -0
  486. package/dist/preview/_chunks/runtime-BwSxqk3t.js +63 -0
  487. package/dist/preview/_chunks/runtime-CqHxptiK.js +6143 -0
  488. package/dist/preview/_chunks/runtime-CsV4HZPV.js +5064 -0
  489. package/dist/preview/_chunks/runtime-CxZK_Ln3.js +284 -0
  490. package/dist/preview/_chunks/runtime-DZToXfvO.js +9767 -0
  491. package/dist/preview/_chunks/runtime-DrTjJkPY.js +3872 -0
  492. package/dist/preview/_chunks/runtime-DuHdxMFA.js +387 -0
  493. package/dist/preview/_chunks/runtime-iXdo8CR8.js +3635 -0
  494. package/dist/preview/_chunks/runtime-q3wt0e_N.js +6838 -0
  495. package/dist/preview/globals.d.ts +16 -0
  496. package/dist/preview/globals.js +20 -0
  497. package/dist/preview/runtime.js +6 -0
  498. package/dist/preview-api/index.d.ts +4 -0
  499. package/dist/preview-api/index.js +147 -0
  500. package/dist/preview-errors.d.ts +186 -0
  501. package/dist/preview-errors.js +56 -0
  502. package/dist/react/docgen/docgen-worker.js +38 -0
  503. package/dist/react/entry-preview-argtypes.js +9 -0
  504. package/dist/react/entry-preview-docs.js +12 -0
  505. package/dist/react/entry-preview-rsc.js +11 -0
  506. package/dist/react/entry-preview.js +21 -0
  507. package/dist/react/index.d.ts +119 -0
  508. package/dist/react/index.js +26 -0
  509. package/dist/react/preset.js +301 -0
  510. package/dist/react/preview.d.ts +2 -0
  511. package/dist/react/preview.js +11 -0
  512. package/dist/react-native/bin/get-stories.js +34 -0
  513. package/dist/react-native/index.d.ts +160 -0
  514. package/dist/react-native/index.js +1547 -0
  515. package/dist/react-native/metro/node.d.ts +83 -0
  516. package/dist/react-native/metro/node.js +21 -0
  517. package/dist/react-native/metro/withStorybook.d.ts +2269 -0
  518. package/dist/react-native/metro/withStorybook.js +138 -0
  519. package/dist/react-native/preview.d.ts +6 -0
  520. package/dist/react-native/preview.js +20 -0
  521. package/dist/react-native/scripts/generate.d.ts +22 -0
  522. package/dist/react-native/scripts/generate.js +18 -0
  523. package/dist/react-native/stub.js +20 -0
  524. package/dist/react-native-theming/index.d.ts +175 -0
  525. package/dist/react-native-theming/index.js +2591 -0
  526. package/dist/react-native-ui/index.d.ts +130 -0
  527. package/dist/react-native-ui/index.js +1448 -0
  528. package/dist/react-native-ui-common/index.d.ts +230 -0
  529. package/dist/react-native-ui-common/index.js +514 -0
  530. package/dist/react-vite/index.d.ts +4 -0
  531. package/dist/react-vite/index.js +8 -0
  532. package/dist/react-vite/node/index.d.ts +6 -0
  533. package/dist/react-vite/node/index.js +20 -0
  534. package/dist/react-vite/preset.d.ts +6 -0
  535. package/dist/react-vite/preset.js +21 -0
  536. package/dist/router/index.d.ts +141 -0
  537. package/dist/router/index.js +1217 -0
  538. package/dist/server-errors.d.ts +2 -0
  539. package/dist/server-errors.js +149 -0
  540. package/dist/shared/open-service/index.d.ts +3 -0
  541. package/dist/shared/open-service/index.js +115 -0
  542. package/dist/shared/open-service/services/docgen/worker/docgen-worker.js +75 -0
  543. package/dist/shared/open-service/toolsets/docs/public.d.ts +1296 -0
  544. package/dist/shared/open-service/toolsets/docs/public.js +991 -0
  545. package/dist/telemetry/index.d.ts +314 -0
  546. package/dist/telemetry/index.js +103 -0
  547. package/dist/test/index.d.ts +158 -0
  548. package/dist/test/index.js +19421 -0
  549. package/dist/theming/create.d.ts +15 -0
  550. package/dist/theming/create.js +11 -0
  551. package/dist/theming/index.d.ts +54 -0
  552. package/dist/theming/index.js +511 -0
  553. package/dist/types/index.d.ts +2 -0
  554. package/dist/types/index.js +48 -0
  555. package/dist/viewport/index.d.ts +275 -0
  556. package/dist/viewport/index.js +21 -0
  557. package/package.json +1054 -4
  558. package/template/nextjs-vite/cli/.eslintrc.json +6 -0
  559. package/template/nextjs-vite/cli/js/Button.jsx +42 -0
  560. package/template/nextjs-vite/cli/js/Button.stories.js +49 -0
  561. package/template/nextjs-vite/cli/js/Configure.mdx +470 -0
  562. package/template/nextjs-vite/cli/js/Header.jsx +58 -0
  563. package/template/nextjs-vite/cli/js/Header.stories.js +30 -0
  564. package/template/nextjs-vite/cli/js/Page.jsx +68 -0
  565. package/template/nextjs-vite/cli/js/Page.stories.js +28 -0
  566. package/template/nextjs-vite/cli/ts/Button.stories.ts +54 -0
  567. package/template/nextjs-vite/cli/ts/Button.tsx +39 -0
  568. package/template/nextjs-vite/cli/ts/Configure.mdx +446 -0
  569. package/template/nextjs-vite/cli/ts/Header.stories.ts +34 -0
  570. package/template/nextjs-vite/cli/ts/Header.tsx +54 -0
  571. package/template/nextjs-vite/cli/ts/Page.stories.ts +33 -0
  572. package/template/nextjs-vite/cli/ts/Page.tsx +73 -0
  573. package/template/react/cli/.eslintrc.json +5 -0
  574. package/template/react/cli/js/Button.jsx +39 -0
  575. package/template/react/cli/js/Button.stories.js +49 -0
  576. package/template/react/cli/js/Header.jsx +56 -0
  577. package/template/react/cli/js/Header.stories.js +29 -0
  578. package/template/react/cli/js/Page.jsx +69 -0
  579. package/template/react/cli/js/Page.stories.js +28 -0
  580. package/template/react/cli/ts/Button.stories.ts +54 -0
  581. package/template/react/cli/ts/Button.tsx +37 -0
  582. package/template/react/cli/ts/Header.stories.ts +34 -0
  583. package/template/react/cli/ts/Header.tsx +56 -0
  584. package/template/react/cli/ts/Page.stories.ts +33 -0
  585. package/template/react/cli/ts/Page.tsx +73 -0
  586. package/template/react-vite/cli/.eslintrc.json +5 -0
  587. package/template/react-vite/cli/js/Button.jsx +39 -0
  588. package/template/react-vite/cli/js/Button.stories.js +49 -0
  589. package/template/react-vite/cli/js/Header.jsx +56 -0
  590. package/template/react-vite/cli/js/Header.stories.js +29 -0
  591. package/template/react-vite/cli/js/Page.jsx +69 -0
  592. package/template/react-vite/cli/js/Page.stories.js +28 -0
  593. package/template/react-vite/cli/ts/Button.stories.ts +54 -0
  594. package/template/react-vite/cli/ts/Button.tsx +37 -0
  595. package/template/react-vite/cli/ts/Header.stories.ts +34 -0
  596. package/template/react-vite/cli/ts/Header.tsx +56 -0
  597. package/template/react-vite/cli/ts/Page.stories.ts +33 -0
  598. package/template/react-vite/cli/ts/Page.tsx +73 -0
@@ -0,0 +1,2142 @@
1
+ import {
2
+ selectSnippetForStory,
3
+ selectWarningForStory
4
+ } from "../_browser-chunks/chunk-SZYFOQMT.js";
5
+ import {
6
+ PARAM_KEY as PARAM_KEY3,
7
+ PARAM_KEY2 as PARAM_KEY4,
8
+ docgenServiceDef
9
+ } from "../_browser-chunks/chunk-NQUD4B7H.js";
10
+ import {
11
+ combineTags,
12
+ isExportStory,
13
+ parseKind,
14
+ sanitize,
15
+ storyNameFromExport,
16
+ toId,
17
+ toTestId
18
+ } from "../_browser-chunks/chunk-NULBREPZ.js";
19
+ import {
20
+ composeConfigs,
21
+ composeStory,
22
+ mountDestructured,
23
+ normalizeArrays,
24
+ normalizeProjectAnnotations,
25
+ registerService
26
+ } from "../_browser-chunks/chunk-C3D4HEFY.js";
27
+ import {
28
+ invariant
29
+ } from "../_browser-chunks/chunk-IWQGIXJS.js";
30
+ import "../_browser-chunks/chunk-FENFYI4X.js";
31
+ import "../_browser-chunks/chunk-WZ7KR7SH.js";
32
+ import {
33
+ Tag
34
+ } from "../_browser-chunks/chunk-CFAOWGL7.js";
35
+ import "../_browser-chunks/chunk-YTIT5NA5.js";
36
+ import "../_browser-chunks/chunk-OD6IBQCC.js";
37
+ import "../_browser-chunks/chunk-QC4HFS6K.js";
38
+ import "../_browser-chunks/chunk-6SXYJQST.js";
39
+ import "../_browser-chunks/chunk-SFVA4SBT.js";
40
+ import "../_browser-chunks/chunk-DRQKCCAG.js";
41
+ import {
42
+ shouldSkipStoryDocsEmit
43
+ } from "../_browser-chunks/chunk-66OCZ54D.js";
44
+ import {
45
+ combineParameters
46
+ } from "../_browser-chunks/chunk-ODVJ3XZJ.js";
47
+ import "../_browser-chunks/chunk-2JDQ35OA.js";
48
+ import "../_browser-chunks/chunk-IE4ULIOQ.js";
49
+ import "../_browser-chunks/chunk-B4AUNNU4.js";
50
+ import "../_browser-chunks/chunk-NZMVUW5T.js";
51
+ import "../_browser-chunks/chunk-JWSKPMPC.js";
52
+ import "../_browser-chunks/chunk-JPUOQJUI.js";
53
+ import {
54
+ PARAM_KEY
55
+ } from "../_browser-chunks/chunk-QDXFODK4.js";
56
+ import "../_browser-chunks/chunk-RSPAQWVJ.js";
57
+ import "../_browser-chunks/chunk-V5M7Q4HT.js";
58
+ import "../_browser-chunks/chunk-SC67XZST.js";
59
+ import {
60
+ HIGHLIGHT,
61
+ HIGHLIGHT_MENU_CLICK,
62
+ MAX_Z_INDEX,
63
+ MIN_TOUCH_AREA_SIZE,
64
+ REMOVE_HIGHLIGHT,
65
+ RESET_HIGHLIGHT,
66
+ SCROLL_INTO_VIEW
67
+ } from "../_browser-chunks/chunk-WOSOWBCA.js";
68
+ import "../_browser-chunks/chunk-ECQ75MKQ.js";
69
+ import {
70
+ action
71
+ } from "../_browser-chunks/chunk-LV5PIKV4.js";
72
+ import "../_browser-chunks/chunk-V2G23FV7.js";
73
+ import {
74
+ DEFAULT_BACKGROUNDS,
75
+ PARAM_KEY as PARAM_KEY2
76
+ } from "../_browser-chunks/chunk-LAWXTSXK.js";
77
+ import {
78
+ __commonJS,
79
+ __export,
80
+ __toESM
81
+ } from "../_browser-chunks/chunk-IMSF75WX.js";
82
+
83
+ // ../../node_modules/@ngard/tiny-isequal/index.js
84
+ var require_tiny_isequal = __commonJS({
85
+ "../../node_modules/@ngard/tiny-isequal/index.js"(exports) {
86
+ Object.defineProperty(exports, "__esModule", { value: !0 }), exports.isEqual = /* @__PURE__ */ (function() {
87
+ var e = Object.prototype.toString, r = Object.getPrototypeOf, t = Object.getOwnPropertySymbols ? function(e2) {
88
+ return Object.keys(e2).concat(Object.getOwnPropertySymbols(e2));
89
+ } : Object.keys;
90
+ return function(n, a) {
91
+ return (function n2(a2, c, u) {
92
+ var i, s, l, o = e.call(a2), f = e.call(c);
93
+ if (a2 === c) return !0;
94
+ if (a2 == null || c == null) return !1;
95
+ if (u.indexOf(a2) > -1 && u.indexOf(c) > -1) return !0;
96
+ if (u.push(a2, c), o != f || (i = t(a2), s = t(c), i.length != s.length || i.some(function(e2) {
97
+ return !n2(a2[e2], c[e2], u);
98
+ }))) return !1;
99
+ switch (o.slice(8, -1)) {
100
+ case "Symbol":
101
+ return a2.valueOf() == c.valueOf();
102
+ case "Date":
103
+ case "Number":
104
+ return +a2 == +c || +a2 != +a2 && +c != +c;
105
+ case "RegExp":
106
+ case "Function":
107
+ case "String":
108
+ case "Boolean":
109
+ return "" + a2 == "" + c;
110
+ case "Set":
111
+ case "Map":
112
+ i = a2.entries(), s = c.entries();
113
+ do
114
+ if (!n2((l = i.next()).value, s.next().value, u)) return !1;
115
+ while (!l.done);
116
+ return !0;
117
+ case "ArrayBuffer":
118
+ a2 = new Uint8Array(a2), c = new Uint8Array(c);
119
+ case "DataView":
120
+ a2 = new Uint8Array(a2.buffer), c = new Uint8Array(c.buffer);
121
+ case "Float32Array":
122
+ case "Float64Array":
123
+ case "Int8Array":
124
+ case "Int16Array":
125
+ case "Int32Array":
126
+ case "Uint8Array":
127
+ case "Uint16Array":
128
+ case "Uint32Array":
129
+ case "Uint8ClampedArray":
130
+ case "Arguments":
131
+ case "Array":
132
+ if (a2.length != c.length) return !1;
133
+ for (l = 0; l < a2.length; l++) if ((l in a2 || l in c) && (l in a2 != l in c || !n2(a2[l], c[l], u))) return !1;
134
+ return !0;
135
+ case "Object":
136
+ return n2(r(a2), r(c), u);
137
+ default:
138
+ return !1;
139
+ }
140
+ })(n, a, []);
141
+ };
142
+ })();
143
+ }
144
+ });
145
+
146
+ // src/csf/includeConditionalArg.ts
147
+ var import_tiny_isequal = __toESM(require_tiny_isequal(), 1), count = (vals) => vals.map((v2) => typeof v2 < "u").filter(Boolean).length, testValue = (cond, value) => {
148
+ let { exists, eq, neq, truthy } = cond;
149
+ if (count([exists, eq, neq, truthy]) > 1)
150
+ throw new Error(`Invalid conditional test ${JSON.stringify({ exists, eq, neq })}`);
151
+ if (typeof eq < "u")
152
+ return (0, import_tiny_isequal.isEqual)(value, eq);
153
+ if (typeof neq < "u")
154
+ return !(0, import_tiny_isequal.isEqual)(value, neq);
155
+ if (typeof exists < "u") {
156
+ let valueExists = typeof value < "u";
157
+ return exists ? valueExists : !valueExists;
158
+ }
159
+ return (typeof truthy > "u" ? !0 : truthy) ? !!value : !value;
160
+ }, includeConditionalArg = (argType, args, globals) => {
161
+ if (!argType.if)
162
+ return !0;
163
+ let { arg, global: global5 } = argType.if;
164
+ if (count([arg, global5]) !== 1)
165
+ throw new Error(`Invalid conditional value ${JSON.stringify({ arg, global: global5 })}`);
166
+ let value = arg ? args[arg] : globals[global5];
167
+ return testValue(argType.if, value);
168
+ };
169
+
170
+ // src/csf/csf-factories.ts
171
+ import { combineTags as combineTags2 } from "@aussieljk/forkbook/internal/csf";
172
+
173
+ // src/actions/preview.ts
174
+ import { definePreviewAddon } from "@aussieljk/forkbook/internal/csf";
175
+
176
+ // src/actions/addArgs.ts
177
+ var addArgs_exports = {};
178
+ __export(addArgs_exports, {
179
+ argsEnhancers: () => argsEnhancers
180
+ });
181
+
182
+ // src/actions/addArgsHelpers.ts
183
+ var isInInitialArgs = (name, initialArgs) => typeof initialArgs[name] > "u" && !(name in initialArgs), inferActionsFromArgTypesRegex = (context) => {
184
+ let {
185
+ initialArgs,
186
+ argTypes,
187
+ id,
188
+ parameters: { actions }
189
+ } = context;
190
+ if (!actions || actions.disable || !actions.argTypesRegex || !argTypes)
191
+ return {};
192
+ let argTypesRegex = new RegExp(actions.argTypesRegex);
193
+ return Object.entries(argTypes).filter(
194
+ ([name]) => !!argTypesRegex.test(name)
195
+ ).reduce((acc, [name, argType]) => (isInInitialArgs(name, initialArgs) && (acc[name] = action(name, { implicit: !0, id })), acc), {});
196
+ }, addActionsFromArgTypes = (context) => {
197
+ let {
198
+ initialArgs,
199
+ argTypes,
200
+ parameters: { actions }
201
+ } = context;
202
+ return actions?.disable || !argTypes ? {} : Object.entries(argTypes).filter(([name, argType]) => !!argType.action).reduce((acc, [name, argType]) => (isInInitialArgs(name, initialArgs) && (acc[name] = action(typeof argType.action == "string" ? argType.action : name)), acc), {});
203
+ };
204
+
205
+ // src/actions/addArgs.ts
206
+ var argsEnhancers = [
207
+ addActionsFromArgTypes,
208
+ inferActionsFromArgTypesRegex
209
+ ];
210
+
211
+ // src/actions/loaders.ts
212
+ var loaders_exports = {};
213
+ __export(loaders_exports, {
214
+ loaders: () => loaders
215
+ });
216
+ import { onMockCall } from "@aussieljk/forkbook/test";
217
+ var subscribed = !1, logActionsWhenMockCalled = (context) => {
218
+ let { parameters: parameters2 } = context;
219
+ parameters2?.actions?.disable || subscribed || (onMockCall((mock, args) => {
220
+ let name = mock.getMockName();
221
+ name !== "spy" && name !== "vi.fn()" && (!/^next\/.*::/.test(name) || [
222
+ "next/router::useRouter()",
223
+ "next/navigation::useRouter()",
224
+ "next/navigation::redirect",
225
+ "next/link::Link",
226
+ "next/cache::",
227
+ "next/headers::cookies().set",
228
+ "next/headers::cookies().delete",
229
+ "next/headers::headers().set",
230
+ "next/headers::headers().delete"
231
+ ].some((prefix) => name.startsWith(prefix))) && action(name)(args);
232
+ }), subscribed = !0);
233
+ }, loaders = [logActionsWhenMockCalled];
234
+
235
+ // src/actions/preview.ts
236
+ var preview_default = () => definePreviewAddon({
237
+ ...addArgs_exports,
238
+ ...loaders_exports
239
+ });
240
+
241
+ // src/backgrounds/preview.ts
242
+ import { definePreviewAddon as definePreviewAddon2 } from "@aussieljk/forkbook/internal/csf";
243
+
244
+ // src/backgrounds/decorator.ts
245
+ import { useEffect } from "@aussieljk/forkbook/preview-api";
246
+
247
+ // src/backgrounds/utils.ts
248
+ var { document: document2 } = globalThis, isReduceMotionEnabled = () => globalThis?.matchMedia ? !!globalThis.matchMedia("(prefers-reduced-motion: reduce)")?.matches : !1, clearStyles = (selector) => {
249
+ (Array.isArray(selector) ? selector : [selector]).forEach(clearStyle);
250
+ }, clearStyle = (selector) => {
251
+ if (!document2)
252
+ return;
253
+ let element = document2.getElementById(selector);
254
+ element && element.parentElement && element.parentElement.removeChild(element);
255
+ }, addGridStyle = (selector, css) => {
256
+ if (!document2)
257
+ return;
258
+ let existingStyle = document2.getElementById(selector);
259
+ if (existingStyle)
260
+ existingStyle.innerHTML !== css && (existingStyle.innerHTML = css);
261
+ else {
262
+ let style = document2.createElement("style");
263
+ style.setAttribute("id", selector), style.innerHTML = css, document2.head.appendChild(style);
264
+ }
265
+ }, addBackgroundStyle = (selector, css, storyId) => {
266
+ if (!document2)
267
+ return;
268
+ let existingStyle = document2.getElementById(selector);
269
+ if (existingStyle)
270
+ existingStyle.innerHTML !== css && (existingStyle.innerHTML = css);
271
+ else {
272
+ let style = document2.createElement("style");
273
+ style.setAttribute("id", selector), style.innerHTML = css;
274
+ let gridStyleSelector = `addon-backgrounds-grid${storyId ? `-docs-${storyId}` : ""}`, existingGridStyle = document2.getElementById(gridStyleSelector);
275
+ existingGridStyle ? existingGridStyle.parentElement?.insertBefore(style, existingGridStyle) : document2.head.appendChild(style);
276
+ }
277
+ };
278
+
279
+ // src/backgrounds/decorator.ts
280
+ var defaultGrid = {
281
+ cellSize: 100,
282
+ cellAmount: 10,
283
+ opacity: 0.8
284
+ }, BG_SELECTOR_BASE = "addon-backgrounds", GRID_SELECTOR_BASE = "addon-backgrounds-grid", transitionStyle = isReduceMotionEnabled() ? "" : "transition: background-color 0.3s;", withBackgroundAndGrid = (StoryFn, context) => {
285
+ let { globals = {}, parameters: parameters2 = {}, viewMode, id } = context, {
286
+ options = DEFAULT_BACKGROUNDS,
287
+ disable,
288
+ grid = defaultGrid
289
+ } = parameters2[PARAM_KEY2] || {}, data = globals[PARAM_KEY2] || {}, backgroundName = typeof data == "string" ? data : data?.value, item = backgroundName ? options[backgroundName] : void 0, value = typeof item == "string" ? item : item?.value || "transparent", showGrid = typeof data == "string" ? !1 : data.grid || !1, shownBackground = !!item && !disable, backgroundSelector = viewMode === "docs" ? `#anchor--${id} .docs-story, #anchor--primary--${id} .docs-story` : ".sb-show-main", gridSelector = viewMode === "docs" ? `#anchor--${id} .docs-story, #anchor--primary--${id} .docs-story` : ".sb-show-main", isLayoutPadded = parameters2.layout === void 0 || parameters2.layout === "padded", defaultOffset = viewMode === "docs" ? 20 : isLayoutPadded ? 16 : 0, { cellAmount, cellSize, opacity, offsetX = defaultOffset, offsetY = defaultOffset } = grid, backgroundSelectorId = viewMode === "docs" ? `${BG_SELECTOR_BASE}-docs-${id}` : `${BG_SELECTOR_BASE}-color`, backgroundTarget = viewMode === "docs" ? id : null;
290
+ useEffect(() => {
291
+ let backgroundStyles = `
292
+ ${backgroundSelector} {
293
+ background: ${value} !important;
294
+ ${transitionStyle}
295
+ }`;
296
+ if (!shownBackground) {
297
+ clearStyles(backgroundSelectorId);
298
+ return;
299
+ }
300
+ addBackgroundStyle(backgroundSelectorId, backgroundStyles, backgroundTarget);
301
+ }, [backgroundSelector, backgroundSelectorId, backgroundTarget, shownBackground, value]);
302
+ let gridSelectorId = viewMode === "docs" ? `${GRID_SELECTOR_BASE}-docs-${id}` : `${GRID_SELECTOR_BASE}`;
303
+ return useEffect(() => {
304
+ if (!showGrid) {
305
+ clearStyles(gridSelectorId);
306
+ return;
307
+ }
308
+ let gridSize = [
309
+ `${cellSize * cellAmount}px ${cellSize * cellAmount}px`,
310
+ `${cellSize * cellAmount}px ${cellSize * cellAmount}px`,
311
+ `${cellSize}px ${cellSize}px`,
312
+ `${cellSize}px ${cellSize}px`
313
+ ].join(", "), gridStyles = `
314
+ ${gridSelector} {
315
+ background-size: ${gridSize} !important;
316
+ background-position: ${offsetX}px ${offsetY}px, ${offsetX}px ${offsetY}px, ${offsetX}px ${offsetY}px, ${offsetX}px ${offsetY}px !important;
317
+ background-blend-mode: difference !important;
318
+ background-image: linear-gradient(rgba(130, 130, 130, ${opacity}) 1px, transparent 1px),
319
+ linear-gradient(90deg, rgba(130, 130, 130, ${opacity}) 1px, transparent 1px),
320
+ linear-gradient(rgba(130, 130, 130, ${opacity / 2}) 1px, transparent 1px),
321
+ linear-gradient(90deg, rgba(130, 130, 130, ${opacity / 2}) 1px, transparent 1px) !important;
322
+ }
323
+ `;
324
+ addGridStyle(gridSelectorId, gridStyles);
325
+ }, [cellAmount, cellSize, gridSelector, gridSelectorId, showGrid, offsetX, offsetY, opacity]), StoryFn();
326
+ };
327
+
328
+ // src/backgrounds/preview.ts
329
+ var decorators = globalThis.FEATURES?.backgrounds ? [withBackgroundAndGrid] : [], parameters = {
330
+ [PARAM_KEY2]: {
331
+ grid: {
332
+ cellSize: 20,
333
+ opacity: 0.5,
334
+ cellAmount: 5
335
+ },
336
+ disable: !1
337
+ }
338
+ }, initialGlobals = {
339
+ [PARAM_KEY2]: { value: void 0, grid: !1 }
340
+ }, preview_default2 = () => definePreviewAddon2({
341
+ decorators,
342
+ parameters,
343
+ initialGlobals
344
+ });
345
+
346
+ // src/component-testing/preview.ts
347
+ import { definePreviewAddon as definePreviewAddon3 } from "@aussieljk/forkbook/internal/csf";
348
+ import { instrument } from "@aussieljk/forkbook/internal/instrumenter";
349
+ var { step } = instrument(
350
+ {
351
+ // It seems like the label is unused, but the instrumenter has access to it
352
+ // The context will be bounded later in StoryRender, so that the user can write just:
353
+ // await step("label", (context) => {
354
+ // // labeled step
355
+ // });
356
+ step: async (label, play, context) => play(context)
357
+ },
358
+ { intercept: !0 }
359
+ ), preview_default3 = () => definePreviewAddon3({
360
+ parameters: {
361
+ throwPlayFunctionExceptions: !1
362
+ },
363
+ runStep: step
364
+ });
365
+
366
+ // src/core-server/utils/ghost-stories/test-annotations.ts
367
+ import { definePreviewAddon as definePreviewAddon4 } from "@aussieljk/forkbook/internal/csf";
368
+ var isEmptyRender = (element) => {
369
+ let style = getComputedStyle(element), rect = element.getBoundingClientRect();
370
+ return !(rect.width > 0 && rect.height > 0 && style.visibility !== "hidden" && Number(style.opacity) > 0 && style.display !== "none");
371
+ }, afterEach = async ({ reporting, canvasElement, globals }) => {
372
+ try {
373
+ if (!globals.renderAnalysis?.enabled)
374
+ return;
375
+ let emptyRender = isEmptyRender(canvasElement.firstElementChild ?? canvasElement);
376
+ emptyRender && reporting.addReport({
377
+ type: "render-analysis",
378
+ version: 1,
379
+ result: {
380
+ emptyRender
381
+ },
382
+ status: "warning"
383
+ });
384
+ } catch {
385
+ }
386
+ }, test_annotations_default = () => definePreviewAddon4({ afterEach });
387
+
388
+ // src/highlight/preview.ts
389
+ import { definePreviewAddon as definePreviewAddon5 } from "@aussieljk/forkbook/internal/csf";
390
+ import { addons } from "@aussieljk/forkbook/preview-api";
391
+
392
+ // src/highlight/useHighlights.ts
393
+ import { logger } from "@aussieljk/forkbook/internal/client-logger";
394
+ import { STORY_RENDER_PHASE_CHANGED } from "@aussieljk/forkbook/internal/core-events";
395
+
396
+ // src/highlight/icons.ts
397
+ var iconPaths = {
398
+ chevronLeft: [
399
+ "M9.10355 10.1464C9.29882 10.3417 9.29882 10.6583 9.10355 10.8536C8.90829 11.0488 8.59171 11.0488 8.39645 10.8536L4.89645 7.35355C4.70118 7.15829 4.70118 6.84171 4.89645 6.64645L8.39645 3.14645C8.59171 2.95118 8.90829 2.95118 9.10355 3.14645C9.29882 3.34171 9.29882 3.65829 9.10355 3.85355L5.95711 7L9.10355 10.1464Z"
400
+ ],
401
+ chevronRight: [
402
+ "M4.89645 10.1464C4.70118 10.3417 4.70118 10.6583 4.89645 10.8536C5.09171 11.0488 5.40829 11.0488 5.60355 10.8536L9.10355 7.35355C9.29882 7.15829 9.29882 6.84171 9.10355 6.64645L5.60355 3.14645C5.40829 2.95118 5.09171 2.95118 4.89645 3.14645C4.70118 3.34171 4.70118 3.65829 4.89645 3.85355L8.04289 7L4.89645 10.1464Z"
403
+ ],
404
+ info: [
405
+ "M7 5.5a.5.5 0 01.5.5v4a.5.5 0 01-1 0V6a.5.5 0 01.5-.5zM7 4.5A.75.75 0 107 3a.75.75 0 000 1.5z",
406
+ "M7 14A7 7 0 107 0a7 7 0 000 14zm0-1A6 6 0 107 1a6 6 0 000 12z"
407
+ ],
408
+ shareAlt: [
409
+ "M2 1.004a1 1 0 00-1 1v10a1 1 0 001 1h10a1 1 0 001-1v-4.5a.5.5 0 00-1 0v4.5H2v-10h4.5a.5.5 0 000-1H2z",
410
+ "M7.354 7.357L12 2.711v1.793a.5.5 0 001 0v-3a.5.5 0 00-.5-.5h-3a.5.5 0 100 1h1.793L6.646 6.65a.5.5 0 10.708.707z"
411
+ ]
412
+ };
413
+
414
+ // src/highlight/utils.ts
415
+ var svgElements = "svg,path,rect,circle,line,polyline,polygon,ellipse,text".split(","), createElement = (type, props = {}, children) => {
416
+ let element = svgElements.includes(type) ? document.createElementNS("http://www.w3.org/2000/svg", type) : document.createElement(type);
417
+ return Object.entries(props).forEach(([key, val]) => {
418
+ /[A-Z]/.test(key) ? (key === "onClick" && (element.addEventListener("click", val), element.addEventListener("keydown", (e) => {
419
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), val());
420
+ })), key === "onMouseEnter" && element.addEventListener("mouseenter", val), key === "onMouseLeave" && element.addEventListener("mouseleave", val)) : element.setAttribute(key, val);
421
+ }), children?.forEach((child) => {
422
+ if (!(child == null || child === !1))
423
+ try {
424
+ element.appendChild(child);
425
+ } catch {
426
+ element.appendChild(document.createTextNode(String(child)));
427
+ }
428
+ }), element;
429
+ }, createIcon = (name) => iconPaths[name] && createElement(
430
+ "svg",
431
+ { width: "14", height: "14", viewBox: "0 0 14 14", xmlns: "http://www.w3.org/2000/svg" },
432
+ iconPaths[name].map(
433
+ (d) => createElement("path", {
434
+ fill: "currentColor",
435
+ "fill-rule": "evenodd",
436
+ "clip-rule": "evenodd",
437
+ d
438
+ })
439
+ )
440
+ ), normalizeOptions = (options) => {
441
+ let { menu, ...rest } = options;
442
+ return {
443
+ priority: 0,
444
+ styles: {
445
+ outline: "2px dashed #029cfd"
446
+ },
447
+ ...rest,
448
+ menu: Array.isArray(menu) ? menu.every(Array.isArray) ? menu : [menu] : void 0
449
+ };
450
+ }, isFunction = (obj) => obj instanceof Function, state = /* @__PURE__ */ new Map(), listeners = /* @__PURE__ */ new Map(), teardowns = /* @__PURE__ */ new Map(), useStore = (initialValue) => {
451
+ let key = /* @__PURE__ */ Symbol();
452
+ return listeners.set(key, []), state.set(key, initialValue), { get: () => state.get(key), set: (update) => {
453
+ let current = state.get(key), next = isFunction(update) ? update(current) : update;
454
+ next !== current && (state.set(key, next), listeners.get(key)?.forEach((listener) => {
455
+ teardowns.get(listener)?.(), teardowns.set(listener, listener(next));
456
+ }));
457
+ }, subscribe: (listener) => (listeners.get(key)?.push(listener), () => {
458
+ let list = listeners.get(key);
459
+ list && listeners.set(
460
+ key,
461
+ list.filter((l) => l !== listener)
462
+ );
463
+ }), teardown: () => {
464
+ listeners.get(key)?.forEach((listener) => {
465
+ teardowns.get(listener)?.(), teardowns.delete(listener);
466
+ }), listeners.delete(key), state.delete(key);
467
+ } };
468
+ }, mapElements = (highlights) => {
469
+ let root = document.getElementById("storybook-root"), map = /* @__PURE__ */ new Map();
470
+ for (let highlight of highlights) {
471
+ let { priority = 0 } = highlight;
472
+ for (let selector of highlight.selectors) {
473
+ let elements = [
474
+ ...document.querySelectorAll(
475
+ // Elements matching the selector, excluding storybook elements and their descendants.
476
+ // Necessary to find portaled elements (e.g. children of `body`).
477
+ `:is(${selector}):not([id^="storybook-"], [id^="storybook-"] *, [class^="sb-"], [class^="sb-"] *)`
478
+ ),
479
+ // Elements matching the selector inside the storybook root, as these were excluded above.
480
+ ...root?.querySelectorAll(selector) || []
481
+ ];
482
+ for (let element of elements) {
483
+ let existing = map.get(element);
484
+ (!existing || existing.priority <= priority) && map.set(element, {
485
+ ...highlight,
486
+ priority,
487
+ selectors: Array.from(new Set((existing?.selectors || []).concat(selector)))
488
+ });
489
+ }
490
+ }
491
+ }
492
+ return map;
493
+ }, mapBoxes = (elements) => Array.from(elements.entries()).map(([element, { id, selectors, styles, hoverStyles, focusStyles, menu }]) => {
494
+ let { top, left, width, height } = element.getBoundingClientRect(), { position } = getComputedStyle(element);
495
+ return {
496
+ element,
497
+ id,
498
+ selectors,
499
+ styles,
500
+ hoverStyles,
501
+ focusStyles,
502
+ menu,
503
+ top: position === "fixed" ? top : top + window.scrollY,
504
+ left: position === "fixed" ? left : left + window.scrollX,
505
+ width,
506
+ height
507
+ };
508
+ }).sort((a, b) => b.width * b.height - a.width * a.height), isOverMenu = (menuElement, coordinates) => {
509
+ let menu = menuElement.getBoundingClientRect(), { x, y } = coordinates;
510
+ return menu?.top && menu?.left && x >= menu.left && x <= menu.left + menu.width && y >= menu.top && y <= menu.top + menu.height;
511
+ }, isTargeted = (box, boxElement, coordinates) => {
512
+ if (!boxElement || !coordinates)
513
+ return !1;
514
+ let { left, top, width, height } = box;
515
+ height < MIN_TOUCH_AREA_SIZE && (top = top - Math.round((MIN_TOUCH_AREA_SIZE - height) / 2), height = MIN_TOUCH_AREA_SIZE), width < MIN_TOUCH_AREA_SIZE && (left = left - Math.round((MIN_TOUCH_AREA_SIZE - width) / 2), width = MIN_TOUCH_AREA_SIZE), boxElement.style.position === "fixed" && (left += window.scrollX, top += window.scrollY);
516
+ let { x, y } = coordinates;
517
+ return x >= left && x <= left + width && y >= top && y <= top + height;
518
+ }, keepInViewport = (element, targetCoordinates, options = {}) => {
519
+ let { x, y } = targetCoordinates, { margin = 5, topOffset = 0, centered = !1 } = options, { scrollX, scrollY, innerHeight: windowHeight, innerWidth: windowWidth } = window, top = Math.min(
520
+ element.style.position === "fixed" ? y - scrollY : y,
521
+ windowHeight - element.clientHeight - margin - topOffset + scrollY
522
+ ), leftOffset = centered ? element.clientWidth / 2 : 0, left = element.style.position === "fixed" ? Math.max(Math.min(x - scrollX, windowWidth - leftOffset - margin), leftOffset + margin) : Math.max(
523
+ Math.min(x, windowWidth - leftOffset - margin + scrollX),
524
+ leftOffset + margin + scrollX
525
+ );
526
+ Object.assign(element.style, {
527
+ ...left !== x && { left: `${left}px` },
528
+ ...top !== y && { top: `${top}px` }
529
+ });
530
+ }, showPopover = (element) => {
531
+ window.HTMLElement.prototype.hasOwnProperty("showPopover") && element.showPopover();
532
+ }, hidePopover = (element) => {
533
+ window.HTMLElement.prototype.hasOwnProperty("showPopover") && element.hidePopover();
534
+ }, getEventDetails = (target) => ({
535
+ top: target.top,
536
+ left: target.left,
537
+ width: target.width,
538
+ height: target.height,
539
+ selectors: target.selectors,
540
+ element: {
541
+ localName: target.element.localName,
542
+ tagName: target.element.tagName
543
+ }
544
+ });
545
+
546
+ // src/highlight/useHighlights.ts
547
+ var menuId = "storybook-highlights-menu", rootId = "storybook-highlights-root", storybookRootId = "storybook-root", useHighlights = (channel) => {
548
+ if (globalThis.__STORYBOOK_HIGHLIGHT_INITIALIZED)
549
+ return;
550
+ globalThis.__STORYBOOK_HIGHLIGHT_INITIALIZED = !0;
551
+ let { document: document3 } = globalThis, highlights = useStore([]), elements = useStore(/* @__PURE__ */ new Map()), boxes = useStore([]), clickCoords = useStore(), hoverCoords = useStore(), targets = useStore([]), hovered = useStore([]), focused = useStore(), selected = useStore(), root = document3.getElementById(rootId);
552
+ highlights.subscribe(() => {
553
+ root || (root = createElement("div", { id: rootId }), document3.body.appendChild(root));
554
+ }), highlights.subscribe((value) => {
555
+ let storybookRoot = document3.getElementById(storybookRootId) ?? document3.body;
556
+ elements.set(mapElements(value));
557
+ let observer = new MutationObserver((records) => {
558
+ records.some((record2) => !root?.contains(record2.target)) && elements.set(mapElements(value));
559
+ });
560
+ return observer.observe(storybookRoot, { subtree: !0, childList: !0 }), () => {
561
+ observer.disconnect();
562
+ };
563
+ }), elements.subscribe((value) => {
564
+ let updateBoxes = () => requestAnimationFrame(() => boxes.set(mapBoxes(value))), observer = new ResizeObserver(updateBoxes);
565
+ observer.observe(document3.body), Array.from(value.keys()).forEach((element) => observer.observe(element));
566
+ let scrollers = Array.from(document3.body.querySelectorAll("*")).filter((el) => {
567
+ let { overflow, overflowX, overflowY } = window.getComputedStyle(el);
568
+ return ["auto", "scroll"].some((o) => [overflow, overflowX, overflowY].includes(o));
569
+ });
570
+ return scrollers.forEach((element) => element.addEventListener("scroll", updateBoxes)), () => {
571
+ observer.disconnect(), scrollers.forEach((element) => element.removeEventListener("scroll", updateBoxes));
572
+ };
573
+ }), elements.subscribe((value) => {
574
+ let sticky = Array.from(value.keys()).filter(({ style }) => style.position === "sticky"), updateBoxes = () => requestAnimationFrame(() => {
575
+ boxes.set(
576
+ (current) => current.map((box) => {
577
+ if (sticky.includes(box.element)) {
578
+ let { top, left } = box.element.getBoundingClientRect();
579
+ return { ...box, top: top + window.scrollY, left: left + window.scrollX };
580
+ }
581
+ return box;
582
+ })
583
+ );
584
+ });
585
+ return document3.addEventListener("scroll", updateBoxes), () => document3.removeEventListener("scroll", updateBoxes);
586
+ }), elements.subscribe((value) => {
587
+ targets.set((t) => t.filter(({ element }) => value.has(element)));
588
+ }), targets.subscribe((value) => {
589
+ value.length ? (selected.set((s) => value.some((t) => t.element === s?.element) ? s : void 0), focused.set((s) => value.some((t) => t.element === s?.element) ? s : void 0)) : (selected.set(void 0), focused.set(void 0), clickCoords.set(void 0));
590
+ });
591
+ let styleElementByHighlight = new Map(/* @__PURE__ */ new Map());
592
+ highlights.subscribe((value) => {
593
+ value.forEach(({ keyframes }) => {
594
+ if (keyframes) {
595
+ let style = styleElementByHighlight.get(keyframes);
596
+ style || (style = document3.createElement("style"), style.setAttribute("data-highlight", "keyframes"), styleElementByHighlight.set(keyframes, style), document3.head.appendChild(style)), style.innerHTML = keyframes;
597
+ }
598
+ }), styleElementByHighlight.forEach((style, keyframes) => {
599
+ value.some((v2) => v2.keyframes === keyframes) || (style.remove(), styleElementByHighlight.delete(keyframes));
600
+ });
601
+ });
602
+ let boxElementByTargetElement = new Map(/* @__PURE__ */ new Map());
603
+ boxes.subscribe((value) => {
604
+ value.forEach((box) => {
605
+ let boxElement = boxElementByTargetElement.get(box.element);
606
+ if (root && !boxElement) {
607
+ let props = {
608
+ popover: "manual",
609
+ "data-highlight-dimensions": `w${box.width.toFixed(0)}h${box.height.toFixed(0)}`,
610
+ "data-highlight-coordinates": `x${box.left.toFixed(0)}y${box.top.toFixed(0)}`
611
+ };
612
+ boxElement = root.appendChild(
613
+ createElement("div", props, [createElement("div")])
614
+ ), boxElementByTargetElement.set(box.element, boxElement);
615
+ }
616
+ }), boxElementByTargetElement.forEach((box, element) => {
617
+ value.some(({ element: e }) => e === element) || (box.remove(), boxElementByTargetElement.delete(element));
618
+ });
619
+ }), boxes.subscribe((value) => {
620
+ let targetable = value.filter((box) => box.menu);
621
+ if (!targetable.length)
622
+ return;
623
+ let onClick = (event) => {
624
+ requestAnimationFrame(() => {
625
+ let menu = document3.getElementById(menuId), coords = { x: event.pageX, y: event.pageY };
626
+ if (menu && !isOverMenu(menu, coords)) {
627
+ let results = targetable.filter((box) => {
628
+ let boxElement = boxElementByTargetElement.get(box.element);
629
+ return isTargeted(box, boxElement, coords);
630
+ });
631
+ clickCoords.set(results.length ? coords : void 0), targets.set(results);
632
+ }
633
+ });
634
+ };
635
+ return document3.addEventListener("click", onClick), () => document3.removeEventListener("click", onClick);
636
+ });
637
+ let updateHovered = () => {
638
+ let menu = document3.getElementById(menuId), coords = hoverCoords.get();
639
+ !coords || menu && isOverMenu(menu, coords) || hovered.set((current) => {
640
+ let update = boxes.get().filter((box) => {
641
+ let boxElement = boxElementByTargetElement.get(box.element);
642
+ return isTargeted(box, boxElement, coords);
643
+ }), existing = current.filter((box) => update.includes(box)), additions = update.filter((box) => !current.includes(box)), hasRemovals = current.length - existing.length;
644
+ return additions.length || hasRemovals ? [...existing, ...additions] : current;
645
+ });
646
+ };
647
+ hoverCoords.subscribe(updateHovered), boxes.subscribe(updateHovered);
648
+ let updateBoxStyles = () => {
649
+ let selectedElement = selected.get(), targetElements = selectedElement ? [selectedElement] : targets.get(), focusedElement = targetElements.length === 1 ? targetElements[0] : focused.get(), isMenuOpen = clickCoords.get() !== void 0;
650
+ boxes.get().forEach((box) => {
651
+ let boxElement = boxElementByTargetElement.get(box.element);
652
+ if (boxElement) {
653
+ let isFocused = focusedElement === box, isHovered = isMenuOpen ? focusedElement ? isFocused : targetElements.includes(box) : hovered.get()?.includes(box);
654
+ Object.assign(boxElement.style, {
655
+ animation: "none",
656
+ background: "transparent",
657
+ border: "none",
658
+ boxSizing: "border-box",
659
+ outline: "none",
660
+ outlineOffset: "0px",
661
+ ...box.styles,
662
+ ...isHovered ? box.hoverStyles : {},
663
+ ...isFocused ? box.focusStyles : {},
664
+ position: getComputedStyle(box.element).position === "fixed" ? "fixed" : "absolute",
665
+ zIndex: MAX_Z_INDEX - 10,
666
+ top: `${box.top}px`,
667
+ left: `${box.left}px`,
668
+ width: `${box.width}px`,
669
+ height: `${box.height}px`,
670
+ margin: 0,
671
+ padding: 0,
672
+ cursor: box.menu && isHovered ? "pointer" : "default",
673
+ pointerEvents: box.menu ? "auto" : "none",
674
+ display: "flex",
675
+ alignItems: "center",
676
+ justifyContent: "center",
677
+ overflow: "visible"
678
+ }), Object.assign(boxElement.children[0].style, {
679
+ width: "100%",
680
+ height: "100%",
681
+ minHeight: `${MIN_TOUCH_AREA_SIZE}px`,
682
+ minWidth: `${MIN_TOUCH_AREA_SIZE}px`,
683
+ boxSizing: "content-box",
684
+ padding: boxElement.style.outlineWidth || "0px"
685
+ }), showPopover(boxElement);
686
+ }
687
+ });
688
+ };
689
+ boxes.subscribe(updateBoxStyles), targets.subscribe(updateBoxStyles), hovered.subscribe(updateBoxStyles), focused.subscribe(updateBoxStyles), selected.subscribe(updateBoxStyles);
690
+ let renderMenu = () => {
691
+ if (!root)
692
+ return;
693
+ let menu = document3.getElementById(menuId);
694
+ if (menu)
695
+ menu.innerHTML = "";
696
+ else {
697
+ let props = { id: menuId, popover: "manual" };
698
+ menu = root.appendChild(createElement("div", props)), root.appendChild(
699
+ createElement("style", {}, [
700
+ `
701
+ #${menuId} {
702
+ position: absolute;
703
+ z-index: ${MAX_Z_INDEX};
704
+ width: 300px;
705
+ padding: 0px;
706
+ margin: 15px 0 0 0;
707
+ transform: translateX(-50%);
708
+ font-family: "Nunito Sans", -apple-system, ".SFNSText-Regular", "San Francisco", BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
709
+ font-size: 12px;
710
+ background: white;
711
+ border: none;
712
+ border-radius: 6px;
713
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.05), 0 5px 15px 0 rgba(0, 0, 0, 0.1);
714
+ color: #2E3438;
715
+ }
716
+ #${menuId} ul {
717
+ list-style: none;
718
+ margin: 0;
719
+ padding: 0;
720
+ }
721
+ #${menuId} > ul {
722
+ max-height: 300px;
723
+ overflow-y: auto;
724
+ padding: 4px 0;
725
+ }
726
+ #${menuId} li {
727
+ padding: 0 4px;
728
+ margin: 0;
729
+ }
730
+ #${menuId} li > :not(ul) {
731
+ display: flex;
732
+ padding: 8px;
733
+ margin: 0;
734
+ align-items: center;
735
+ gap: 8px;
736
+ border-radius: 4px;
737
+ }
738
+ #${menuId} button {
739
+ width: 100%;
740
+ border: 0;
741
+ background: transparent;
742
+ color: inherit;
743
+ text-align: left;
744
+ font-family: inherit;
745
+ font-size: inherit;
746
+ }
747
+ #${menuId} button:focus-visible {
748
+ outline-color: #029CFD;
749
+ }
750
+ #${menuId} button:hover {
751
+ background: rgba(2, 156, 253, 0.07);
752
+ color: #029CFD;
753
+ cursor: pointer;
754
+ }
755
+ #${menuId} li code {
756
+ white-space: nowrap;
757
+ overflow: hidden;
758
+ text-overflow: ellipsis;
759
+ line-height: 16px;
760
+ font-size: 11px;
761
+ }
762
+ #${menuId} li svg {
763
+ flex-shrink: 0;
764
+ margin: 1px;
765
+ color: #73828C;
766
+ }
767
+ #${menuId} li > button:hover svg, #${menuId} li > button:focus-visible svg {
768
+ color: #029CFD;
769
+ }
770
+ #${menuId} .element-list li svg {
771
+ display: none;
772
+ }
773
+ #${menuId} li.selectable svg, #${menuId} li.selected svg {
774
+ display: block;
775
+ }
776
+ #${menuId} .menu-list {
777
+ border-top: 1px solid rgba(38, 85, 115, 0.15);
778
+ }
779
+ #${menuId} .menu-list > li:not(:last-child) {
780
+ padding-bottom: 4px;
781
+ margin-bottom: 4px;
782
+ border-bottom: 1px solid rgba(38, 85, 115, 0.15);
783
+ }
784
+ #${menuId} .menu-items, #${menuId} .menu-items li {
785
+ padding: 0;
786
+ }
787
+ #${menuId} .menu-item {
788
+ display: flex;
789
+ }
790
+ #${menuId} .menu-item-content {
791
+ display: flex;
792
+ flex-direction: column;
793
+ flex-grow: 1;
794
+ }
795
+ `
796
+ ])
797
+ );
798
+ }
799
+ let selectedElement = selected.get(), elementList = selectedElement ? [selectedElement] : targets.get();
800
+ if (elementList.length && (menu.style.position = getComputedStyle(elementList[0].element).position === "fixed" ? "fixed" : "absolute", menu.appendChild(
801
+ createElement(
802
+ "ul",
803
+ { class: "element-list" },
804
+ elementList.map((target) => {
805
+ let selectable = elementList.length > 1 && !!target.menu?.some(
806
+ (group) => group.some(
807
+ (item) => !item.selectors || item.selectors.some((s) => target.selectors.includes(s))
808
+ )
809
+ ), props = selectable ? {
810
+ class: "selectable",
811
+ onClick: () => selected.set(target),
812
+ onMouseEnter: () => focused.set(target),
813
+ onMouseLeave: () => focused.set(void 0)
814
+ } : selectedElement ? { class: "selected", onClick: () => selected.set(void 0) } : {}, asButton = selectable || selectedElement;
815
+ return createElement("li", props, [
816
+ createElement(asButton ? "button" : "div", asButton ? { type: "button" } : {}, [
817
+ selectedElement ? createIcon("chevronLeft") : null,
818
+ createElement("code", {}, [target.element.outerHTML]),
819
+ selectable ? createIcon("chevronRight") : null
820
+ ])
821
+ ]);
822
+ })
823
+ )
824
+ )), selected.get() || targets.get().length === 1) {
825
+ let target = selected.get() || targets.get()[0], menuGroups = target.menu?.filter(
826
+ (group) => group.some(
827
+ (item) => !item.selectors || item.selectors.some((s) => target.selectors.includes(s))
828
+ )
829
+ );
830
+ menuGroups?.length && menu.appendChild(
831
+ createElement(
832
+ "ul",
833
+ { class: "menu-list" },
834
+ menuGroups.map(
835
+ (menuItems) => createElement("li", {}, [
836
+ createElement(
837
+ "ul",
838
+ { class: "menu-items" },
839
+ menuItems.map(({ id, title, description, iconLeft, iconRight, clickable }) => {
840
+ let onClick = clickable && (() => channel.emit(HIGHLIGHT_MENU_CLICK, target.id, id, getEventDetails(target)));
841
+ return createElement("li", {}, [
842
+ createElement(
843
+ onClick ? "button" : "div",
844
+ onClick ? { class: "menu-item", type: "button", onClick } : { class: "menu-item" },
845
+ [
846
+ iconLeft ? createIcon(iconLeft) : null,
847
+ createElement("div", { class: "menu-item-content" }, [
848
+ createElement(description ? "strong" : "span", {}, [title]),
849
+ description && createElement("span", {}, [description])
850
+ ]),
851
+ iconRight ? createIcon(iconRight) : null
852
+ ]
853
+ )
854
+ ]);
855
+ })
856
+ )
857
+ ])
858
+ )
859
+ )
860
+ );
861
+ }
862
+ let coords = clickCoords.get();
863
+ coords ? (Object.assign(menu.style, {
864
+ display: "block",
865
+ left: `${menu.style.position === "fixed" ? coords.x - window.scrollX : coords.x}px`,
866
+ top: `${menu.style.position === "fixed" ? coords.y - window.scrollY : coords.y}px`
867
+ }), showPopover(menu), requestAnimationFrame(() => keepInViewport(menu, coords, { topOffset: 15, centered: !0 }))) : (hidePopover(menu), Object.assign(menu.style, { display: "none" }));
868
+ };
869
+ targets.subscribe(renderMenu), selected.subscribe(renderMenu);
870
+ let addHighlight = (highlight) => {
871
+ let info = highlight && normalizeOptions(highlight);
872
+ if (typeof info?.id != "string" || !info.id) {
873
+ logger.warn("Ignoring highlight without an id", highlight);
874
+ return;
875
+ }
876
+ highlights.set((value) => {
877
+ let others = value.filter((h) => h.id !== info.id);
878
+ return info.selectors?.length ? [...others, info] : others;
879
+ });
880
+ }, removeHighlight = (id) => {
881
+ id && highlights.set((value) => value.filter((h) => h.id !== id));
882
+ }, resetState = () => {
883
+ highlights.set([]), elements.set(/* @__PURE__ */ new Map()), boxes.set([]), clickCoords.set(void 0), hoverCoords.set(void 0), targets.set([]), hovered.set([]), focused.set(void 0), selected.set(void 0);
884
+ }, removeTimeout, scrollIntoView = (target, options) => {
885
+ let id = "scrollIntoView-highlight";
886
+ clearTimeout(removeTimeout), removeHighlight(id);
887
+ let element = document3.querySelector(target);
888
+ if (!element) {
889
+ logger.warn(`Cannot scroll into view: ${target} not found`);
890
+ return;
891
+ }
892
+ element.scrollIntoView({ behavior: "smooth", block: "center", ...options });
893
+ let keyframeName = `kf-${Math.random().toString(36).substring(2, 15)}`;
894
+ highlights.set((value) => [
895
+ ...value,
896
+ {
897
+ id,
898
+ priority: 1e3,
899
+ selectors: [target],
900
+ styles: {
901
+ outline: "2px solid #1EA7FD",
902
+ outlineOffset: "-1px",
903
+ animation: `${keyframeName} 3s linear forwards`
904
+ },
905
+ keyframes: `@keyframes ${keyframeName} {
906
+ 0% { outline: 2px solid #1EA7FD; }
907
+ 20% { outline: 2px solid #1EA7FD00; }
908
+ 40% { outline: 2px solid #1EA7FD; }
909
+ 60% { outline: 2px solid #1EA7FD00; }
910
+ 80% { outline: 2px solid #1EA7FD; }
911
+ 100% { outline: 2px solid #1EA7FD00; }
912
+ }`
913
+ }
914
+ ]), removeTimeout = setTimeout(() => removeHighlight(id), 3500);
915
+ }, onMouseMove = (event) => {
916
+ requestAnimationFrame(() => hoverCoords.set({ x: event.pageX, y: event.pageY }));
917
+ };
918
+ document3.body.addEventListener("mousemove", onMouseMove), channel.on(HIGHLIGHT, addHighlight), channel.on(REMOVE_HIGHLIGHT, removeHighlight), channel.on(RESET_HIGHLIGHT, resetState), channel.on(SCROLL_INTO_VIEW, scrollIntoView), channel.on(STORY_RENDER_PHASE_CHANGED, ({ newPhase }) => {
919
+ newPhase === "loading" && resetState();
920
+ });
921
+ };
922
+
923
+ // src/highlight/preview.ts
924
+ globalThis?.FEATURES?.highlight && addons?.ready && addons.ready().then(useHighlights);
925
+ var preview_default4 = () => definePreviewAddon5({});
926
+
927
+ // src/measure/preview.ts
928
+ import { definePreviewAddon as definePreviewAddon6 } from "@aussieljk/forkbook/internal/csf";
929
+
930
+ // src/measure/withMeasure.ts
931
+ import { useEffect as useEffect2 } from "@aussieljk/forkbook/preview-api";
932
+
933
+ // src/measure/box-model/canvas.ts
934
+ import { global } from "@storybook/global";
935
+ function getDocumentWidthAndHeight() {
936
+ let container = global.document.documentElement, height = Math.max(container.scrollHeight, container.offsetHeight);
937
+ return { width: Math.max(container.scrollWidth, container.offsetWidth), height };
938
+ }
939
+ function createCanvas() {
940
+ let canvas = global.document.createElement("canvas");
941
+ canvas.id = "storybook-addon-measure";
942
+ let context = canvas.getContext("2d");
943
+ invariant(context != null);
944
+ let { width, height } = getDocumentWidthAndHeight();
945
+ return setCanvasWidthAndHeight(canvas, context, { width, height }), canvas.style.position = "absolute", canvas.style.left = "0", canvas.style.top = "0", canvas.style.zIndex = "2147483647", canvas.style.pointerEvents = "none", global.document.body.appendChild(canvas), { canvas, context, width, height };
946
+ }
947
+ function setCanvasWidthAndHeight(canvas, context, { width, height }) {
948
+ canvas.style.width = `${width}px`, canvas.style.height = `${height}px`;
949
+ let scale = global.window.devicePixelRatio;
950
+ canvas.width = Math.floor(width * scale), canvas.height = Math.floor(height * scale), context.scale(scale, scale);
951
+ }
952
+ var state2 = {};
953
+ function init() {
954
+ state2.canvas || (state2 = createCanvas());
955
+ }
956
+ function clear() {
957
+ state2.context && state2.context.clearRect(0, 0, state2.width ?? 0, state2.height ?? 0);
958
+ }
959
+ function draw(callback) {
960
+ clear(), callback(state2.context);
961
+ }
962
+ function rescale() {
963
+ invariant(state2.canvas, "Canvas should exist in the state."), invariant(state2.context, "Context should exist in the state."), setCanvasWidthAndHeight(state2.canvas, state2.context, { width: 0, height: 0 });
964
+ let { width, height } = getDocumentWidthAndHeight();
965
+ setCanvasWidthAndHeight(state2.canvas, state2.context, { width, height }), state2.width = width, state2.height = height;
966
+ }
967
+ function destroy() {
968
+ state2.canvas && (clear(), state2.canvas.parentNode?.removeChild(state2.canvas), state2 = {});
969
+ }
970
+
971
+ // src/measure/box-model/visualizer.ts
972
+ import { global as global2 } from "@storybook/global";
973
+
974
+ // src/measure/box-model/labels.ts
975
+ var colors = {
976
+ margin: "#f6b26b",
977
+ border: "#ffe599",
978
+ padding: "#93c47d",
979
+ content: "#6fa8dc",
980
+ text: "#232020"
981
+ }, labelPadding = 6;
982
+ function roundedRect(context, { x, y, w, h, r }) {
983
+ x = x - w / 2, y = y - h / 2, w < 2 * r && (r = w / 2), h < 2 * r && (r = h / 2), context.beginPath(), context.moveTo(x + r, y), context.arcTo(x + w, y, x + w, y + h, r), context.arcTo(x + w, y + h, x, y + h, r), context.arcTo(x, y + h, x, y, r), context.arcTo(x, y, x + w, y, r), context.closePath();
984
+ }
985
+ function positionCoordinate(position, { padding, border, width, height, top, left }) {
986
+ let contentWidth = width - border.left - border.right - padding.left - padding.right, contentHeight = height - padding.top - padding.bottom - border.top - border.bottom, x = left + border.left + padding.left, y = top + border.top + padding.top;
987
+ return position === "top" ? x += contentWidth / 2 : position === "right" ? (x += contentWidth, y += contentHeight / 2) : position === "bottom" ? (x += contentWidth / 2, y += contentHeight) : position === "left" ? y += contentHeight / 2 : position === "center" && (x += contentWidth / 2, y += contentHeight / 2), { x, y };
988
+ }
989
+ function offset(type, position, { margin, border, padding }, labelPaddingSize, external) {
990
+ let shift = (dir) => 0, offsetX = 0, offsetY = 0, locationMultiplier = external ? 1 : 0.5, labelPaddingShift = external ? labelPaddingSize * 2 : 0;
991
+ return type === "padding" ? shift = (dir) => padding[dir] * locationMultiplier + labelPaddingShift : type === "border" ? shift = (dir) => padding[dir] + border[dir] * locationMultiplier + labelPaddingShift : type === "margin" && (shift = (dir) => padding[dir] + border[dir] + margin[dir] * locationMultiplier + labelPaddingShift), position === "top" ? offsetY = -shift("top") : position === "right" ? offsetX = shift("right") : position === "bottom" ? offsetY = shift("bottom") : position === "left" && (offsetX = -shift("left")), { offsetX, offsetY };
992
+ }
993
+ function collide(a, b) {
994
+ return Math.abs(a.x - b.x) < Math.abs(a.w + b.w) / 2 && Math.abs(a.y - b.y) < Math.abs(a.h + b.h) / 2;
995
+ }
996
+ function overlapAdjustment(position, currentRect, prevRect) {
997
+ return position === "top" ? currentRect.y = prevRect.y - prevRect.h - labelPadding : position === "right" ? currentRect.x = prevRect.x + prevRect.w / 2 + labelPadding + currentRect.w / 2 : position === "bottom" ? currentRect.y = prevRect.y + prevRect.h + labelPadding : position === "left" && (currentRect.x = prevRect.x - prevRect.w / 2 - labelPadding - currentRect.w / 2), { x: currentRect.x, y: currentRect.y };
998
+ }
999
+ function textWithRect(context, type, { x, y, w, h }, text) {
1000
+ return roundedRect(context, { x, y, w, h, r: 3 }), context.fillStyle = `${colors[type]}dd`, context.fill(), context.strokeStyle = colors[type], context.stroke(), context.fillStyle = colors.text, context.fillText(text, x, y), roundedRect(context, { x, y, w, h, r: 3 }), context.fillStyle = `${colors[type]}dd`, context.fill(), context.strokeStyle = colors[type], context.stroke(), context.fillStyle = colors.text, context.fillText(text, x, y), { x, y, w, h };
1001
+ }
1002
+ function configureText(context, text) {
1003
+ context.font = "600 12px monospace", context.textBaseline = "middle", context.textAlign = "center";
1004
+ let metrics = context.measureText(text), actualHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent, w = metrics.width + labelPadding * 2, h = actualHeight + labelPadding * 2;
1005
+ return { w, h };
1006
+ }
1007
+ function drawLabel(context, measurements, { type, position = "center", text }, prevRect, external = !1) {
1008
+ let { x, y } = positionCoordinate(position, measurements), { offsetX, offsetY } = offset(type, position, measurements, labelPadding + 1, external);
1009
+ x += offsetX, y += offsetY;
1010
+ let { w, h } = configureText(context, text);
1011
+ if (prevRect && collide({ x, y, w, h }, prevRect)) {
1012
+ let adjusted = overlapAdjustment(position, { x, y, w, h }, prevRect);
1013
+ x = adjusted.x, y = adjusted.y;
1014
+ }
1015
+ return textWithRect(context, type, { x, y, w, h }, text);
1016
+ }
1017
+ function floatingOffset(alignment, { w, h }) {
1018
+ let deltaW = w * 0.5 + labelPadding, deltaH = h * 0.5 + labelPadding;
1019
+ return {
1020
+ offsetX: (alignment.x === "left" ? -1 : 1) * deltaW,
1021
+ offsetY: (alignment.y === "top" ? -1 : 1) * deltaH
1022
+ };
1023
+ }
1024
+ function drawFloatingLabel(context, measurements, { type, text }) {
1025
+ let { floatingAlignment: floatingAlignment2, extremities } = measurements, x = extremities[floatingAlignment2.x], y = extremities[floatingAlignment2.y], { w, h } = configureText(context, text), { offsetX, offsetY } = floatingOffset(floatingAlignment2, {
1026
+ w,
1027
+ h
1028
+ });
1029
+ return x += offsetX, y += offsetY, textWithRect(context, type, { x, y, w, h }, text);
1030
+ }
1031
+ function drawStack(context, measurements, stack, external) {
1032
+ let rects = [];
1033
+ stack.forEach((l, idx) => {
1034
+ let rect = external && l.position === "center" ? drawFloatingLabel(context, measurements, l) : drawLabel(context, measurements, l, rects[idx - 1], external);
1035
+ rects[idx] = rect;
1036
+ });
1037
+ }
1038
+ function labelStacks(context, measurements, labels, externalLabels) {
1039
+ let stacks = labels.reduce((acc, l) => (Object.prototype.hasOwnProperty.call(acc, l.position) || (acc[l.position] = []), acc[l.position]?.push(l), acc), {});
1040
+ stacks.top && drawStack(context, measurements, stacks.top, externalLabels), stacks.right && drawStack(context, measurements, stacks.right, externalLabels), stacks.bottom && drawStack(context, measurements, stacks.bottom, externalLabels), stacks.left && drawStack(context, measurements, stacks.left, externalLabels), stacks.center && drawStack(context, measurements, stacks.center, externalLabels);
1041
+ }
1042
+
1043
+ // src/measure/box-model/visualizer.ts
1044
+ var colors2 = {
1045
+ margin: "#f6b26ba8",
1046
+ border: "#ffe599a8",
1047
+ padding: "#93c47d8c",
1048
+ content: "#6fa8dca8"
1049
+ }, SMALL_NODE_SIZE = 30;
1050
+ function pxToNumber(px) {
1051
+ return parseInt(px.replace("px", ""), 10);
1052
+ }
1053
+ function round(value) {
1054
+ return Number.isInteger(value) ? value : value.toFixed(2);
1055
+ }
1056
+ function filterZeroValues(labels) {
1057
+ return labels.filter((l) => l.text !== 0 && l.text !== "0");
1058
+ }
1059
+ function floatingAlignment(extremities) {
1060
+ let windowExtremities = {
1061
+ top: global2.window.scrollY,
1062
+ bottom: global2.window.scrollY + global2.window.innerHeight,
1063
+ left: global2.window.scrollX,
1064
+ right: global2.window.scrollX + global2.window.innerWidth
1065
+ }, distances = {
1066
+ top: Math.abs(windowExtremities.top - extremities.top),
1067
+ bottom: Math.abs(windowExtremities.bottom - extremities.bottom),
1068
+ left: Math.abs(windowExtremities.left - extremities.left),
1069
+ right: Math.abs(windowExtremities.right - extremities.right)
1070
+ };
1071
+ return {
1072
+ x: distances.left > distances.right ? "left" : "right",
1073
+ y: distances.top > distances.bottom ? "top" : "bottom"
1074
+ };
1075
+ }
1076
+ function measureElement(element) {
1077
+ let style = global2.getComputedStyle(element), { top, left, right, bottom, width, height } = element.getBoundingClientRect(), {
1078
+ marginTop,
1079
+ marginBottom,
1080
+ marginLeft,
1081
+ marginRight,
1082
+ paddingTop,
1083
+ paddingBottom,
1084
+ paddingLeft,
1085
+ paddingRight,
1086
+ borderBottomWidth,
1087
+ borderTopWidth,
1088
+ borderLeftWidth,
1089
+ borderRightWidth
1090
+ } = style;
1091
+ top = top + global2.window.scrollY, left = left + global2.window.scrollX, bottom = bottom + global2.window.scrollY, right = right + global2.window.scrollX;
1092
+ let margin = {
1093
+ top: pxToNumber(marginTop),
1094
+ bottom: pxToNumber(marginBottom),
1095
+ left: pxToNumber(marginLeft),
1096
+ right: pxToNumber(marginRight)
1097
+ }, padding = {
1098
+ top: pxToNumber(paddingTop),
1099
+ bottom: pxToNumber(paddingBottom),
1100
+ left: pxToNumber(paddingLeft),
1101
+ right: pxToNumber(paddingRight)
1102
+ }, border = {
1103
+ top: pxToNumber(borderTopWidth),
1104
+ bottom: pxToNumber(borderBottomWidth),
1105
+ left: pxToNumber(borderLeftWidth),
1106
+ right: pxToNumber(borderRightWidth)
1107
+ }, extremities = {
1108
+ top: top - margin.top,
1109
+ bottom: bottom + margin.bottom,
1110
+ left: left - margin.left,
1111
+ right: right + margin.right
1112
+ };
1113
+ return {
1114
+ margin,
1115
+ padding,
1116
+ border,
1117
+ top,
1118
+ left,
1119
+ bottom,
1120
+ right,
1121
+ width,
1122
+ height,
1123
+ extremities,
1124
+ floatingAlignment: floatingAlignment(extremities)
1125
+ };
1126
+ }
1127
+ function drawMargin(context, { margin, width, height, top, left, bottom, right }) {
1128
+ let marginHeight = height + margin.bottom + margin.top;
1129
+ context.fillStyle = colors2.margin, context.fillRect(left, top - margin.top, width, margin.top), context.fillRect(right, top - margin.top, margin.right, marginHeight), context.fillRect(left, bottom, width, margin.bottom), context.fillRect(left - margin.left, top - margin.top, margin.left, marginHeight);
1130
+ let marginLabels = [
1131
+ {
1132
+ type: "margin",
1133
+ text: round(margin.top),
1134
+ position: "top"
1135
+ },
1136
+ {
1137
+ type: "margin",
1138
+ text: round(margin.right),
1139
+ position: "right"
1140
+ },
1141
+ {
1142
+ type: "margin",
1143
+ text: round(margin.bottom),
1144
+ position: "bottom"
1145
+ },
1146
+ {
1147
+ type: "margin",
1148
+ text: round(margin.left),
1149
+ position: "left"
1150
+ }
1151
+ ];
1152
+ return filterZeroValues(marginLabels);
1153
+ }
1154
+ function drawPadding(context, { padding, border, width, height, top, left, bottom, right }) {
1155
+ let paddingWidth = width - border.left - border.right, paddingHeight = height - padding.top - padding.bottom - border.top - border.bottom;
1156
+ context.fillStyle = colors2.padding, context.fillRect(left + border.left, top + border.top, paddingWidth, padding.top), context.fillRect(
1157
+ right - padding.right - border.right,
1158
+ top + padding.top + border.top,
1159
+ padding.right,
1160
+ paddingHeight
1161
+ ), context.fillRect(
1162
+ left + border.left,
1163
+ bottom - padding.bottom - border.bottom,
1164
+ paddingWidth,
1165
+ padding.bottom
1166
+ ), context.fillRect(left + border.left, top + padding.top + border.top, padding.left, paddingHeight);
1167
+ let paddingLabels = [
1168
+ {
1169
+ type: "padding",
1170
+ text: padding.top,
1171
+ position: "top"
1172
+ },
1173
+ {
1174
+ type: "padding",
1175
+ text: padding.right,
1176
+ position: "right"
1177
+ },
1178
+ {
1179
+ type: "padding",
1180
+ text: padding.bottom,
1181
+ position: "bottom"
1182
+ },
1183
+ {
1184
+ type: "padding",
1185
+ text: padding.left,
1186
+ position: "left"
1187
+ }
1188
+ ];
1189
+ return filterZeroValues(paddingLabels);
1190
+ }
1191
+ function drawBorder(context, { border, width, height, top, left, bottom, right }) {
1192
+ let borderHeight = height - border.top - border.bottom;
1193
+ context.fillStyle = colors2.border, context.fillRect(left, top, width, border.top), context.fillRect(left, bottom - border.bottom, width, border.bottom), context.fillRect(left, top + border.top, border.left, borderHeight), context.fillRect(right - border.right, top + border.top, border.right, borderHeight);
1194
+ let borderLabels = [
1195
+ {
1196
+ type: "border",
1197
+ text: border.top,
1198
+ position: "top"
1199
+ },
1200
+ {
1201
+ type: "border",
1202
+ text: border.right,
1203
+ position: "right"
1204
+ },
1205
+ {
1206
+ type: "border",
1207
+ text: border.bottom,
1208
+ position: "bottom"
1209
+ },
1210
+ {
1211
+ type: "border",
1212
+ text: border.left,
1213
+ position: "left"
1214
+ }
1215
+ ];
1216
+ return filterZeroValues(borderLabels);
1217
+ }
1218
+ function drawContent(context, { padding, border, width, height, top, left }) {
1219
+ let contentWidth = width - border.left - border.right - padding.left - padding.right, contentHeight = height - padding.top - padding.bottom - border.top - border.bottom;
1220
+ return context.fillStyle = colors2.content, context.fillRect(
1221
+ left + border.left + padding.left,
1222
+ top + border.top + padding.top,
1223
+ contentWidth,
1224
+ contentHeight
1225
+ ), [
1226
+ {
1227
+ type: "content",
1228
+ position: "center",
1229
+ text: `${round(contentWidth)} x ${round(contentHeight)}`
1230
+ }
1231
+ ];
1232
+ }
1233
+ function drawBoxModel(element) {
1234
+ return (context) => {
1235
+ if (element && context) {
1236
+ let measurements = measureElement(element), marginLabels = drawMargin(context, measurements), paddingLabels = drawPadding(context, measurements), borderLabels = drawBorder(context, measurements), contentLabels = drawContent(context, measurements), externalLabels = measurements.width <= SMALL_NODE_SIZE * 3 || measurements.height <= SMALL_NODE_SIZE;
1237
+ labelStacks(
1238
+ context,
1239
+ measurements,
1240
+ [...contentLabels, ...paddingLabels, ...borderLabels, ...marginLabels],
1241
+ externalLabels
1242
+ );
1243
+ }
1244
+ };
1245
+ }
1246
+ function drawSelectedElement(element) {
1247
+ draw(drawBoxModel(element));
1248
+ }
1249
+
1250
+ // src/measure/util.ts
1251
+ import { global as global3 } from "@storybook/global";
1252
+ var deepElementFromPoint = (x, y) => {
1253
+ let element = global3.document.elementFromPoint(x, y), crawlShadows = (node) => {
1254
+ if (node && node.shadowRoot) {
1255
+ let nestedElement = node.shadowRoot.elementFromPoint(x, y);
1256
+ return node.isEqualNode(nestedElement) ? node : nestedElement.shadowRoot ? crawlShadows(nestedElement) : nestedElement;
1257
+ }
1258
+ return node;
1259
+ };
1260
+ return crawlShadows(element) || element;
1261
+ };
1262
+
1263
+ // src/measure/withMeasure.ts
1264
+ var nodeAtPointerRef, pointer = { x: 0, y: 0 };
1265
+ function findAndDrawElement(x, y) {
1266
+ nodeAtPointerRef = deepElementFromPoint(x, y), drawSelectedElement(nodeAtPointerRef);
1267
+ }
1268
+ var withMeasure = (StoryFn, context) => {
1269
+ let { measureEnabled } = context.globals || {}, measureActive = measureEnabled && !context.parameters?.measure?.disable;
1270
+ return useEffect2(() => {
1271
+ if (typeof globalThis.document > "u")
1272
+ return;
1273
+ let onPointerMove = (event) => {
1274
+ window.requestAnimationFrame(() => {
1275
+ event.stopPropagation(), pointer.x = event.clientX, pointer.y = event.clientY;
1276
+ });
1277
+ };
1278
+ return globalThis.document.addEventListener("pointermove", onPointerMove), () => {
1279
+ globalThis.document.removeEventListener("pointermove", onPointerMove);
1280
+ };
1281
+ }, []), useEffect2(() => {
1282
+ let onPointerOver = (event) => {
1283
+ window.requestAnimationFrame(() => {
1284
+ event.stopPropagation(), findAndDrawElement(event.clientX, event.clientY);
1285
+ });
1286
+ }, onResize = () => {
1287
+ window.requestAnimationFrame(() => {
1288
+ rescale();
1289
+ });
1290
+ };
1291
+ return context.viewMode === "story" && measureActive && (globalThis.document.addEventListener("pointerover", onPointerOver), init(), globalThis.window.addEventListener("resize", onResize), findAndDrawElement(pointer.x, pointer.y)), () => {
1292
+ globalThis.window.removeEventListener("resize", onResize), destroy();
1293
+ };
1294
+ }, [measureActive, context.viewMode]), StoryFn();
1295
+ };
1296
+
1297
+ // src/measure/preview.ts
1298
+ var decorators2 = globalThis.FEATURES?.measure ? [withMeasure] : [], initialGlobals2 = {
1299
+ [PARAM_KEY3]: !1
1300
+ }, preview_default5 = () => definePreviewAddon6({
1301
+ decorators: decorators2,
1302
+ initialGlobals: initialGlobals2
1303
+ });
1304
+
1305
+ // src/outline/preview.ts
1306
+ import { definePreviewAddon as definePreviewAddon7 } from "@aussieljk/forkbook/internal/csf";
1307
+
1308
+ // src/outline/withOutline.ts
1309
+ import { useEffect as useEffect3, useMemo } from "@aussieljk/forkbook/preview-api";
1310
+
1311
+ // src/outline/helpers.ts
1312
+ import { global as global4 } from "@storybook/global";
1313
+ var clearStyles2 = (selector) => {
1314
+ (Array.isArray(selector) ? selector : [selector]).forEach(clearStyle2);
1315
+ }, clearStyle2 = (input) => {
1316
+ let selector = typeof input == "string" ? input : input.join(""), element = global4.document.getElementById(selector);
1317
+ element && element.parentElement && element.parentElement.removeChild(element);
1318
+ }, addOutlineStyles = (selector, css) => {
1319
+ let existingStyle = global4.document.getElementById(selector);
1320
+ if (existingStyle)
1321
+ existingStyle.innerHTML !== css && (existingStyle.innerHTML = css);
1322
+ else {
1323
+ let style = global4.document.createElement("style");
1324
+ style.setAttribute("id", selector), style.innerHTML = css, global4.document.head.appendChild(style);
1325
+ }
1326
+ };
1327
+
1328
+ // src/outline/outlineCSS.ts
1329
+ import { dedent } from "ts-dedent";
1330
+ function outlineCSS(selector) {
1331
+ return dedent`
1332
+ ${selector} body {
1333
+ outline: 1px solid #2980b9 !important;
1334
+ }
1335
+
1336
+ ${selector} article {
1337
+ outline: 1px solid #3498db !important;
1338
+ }
1339
+
1340
+ ${selector} nav {
1341
+ outline: 1px solid #0088c3 !important;
1342
+ }
1343
+
1344
+ ${selector} aside {
1345
+ outline: 1px solid #33a0ce !important;
1346
+ }
1347
+
1348
+ ${selector} section {
1349
+ outline: 1px solid #66b8da !important;
1350
+ }
1351
+
1352
+ ${selector} header {
1353
+ outline: 1px solid #99cfe7 !important;
1354
+ }
1355
+
1356
+ ${selector} footer {
1357
+ outline: 1px solid #cce7f3 !important;
1358
+ }
1359
+
1360
+ ${selector} h1 {
1361
+ outline: 1px solid #162544 !important;
1362
+ }
1363
+
1364
+ ${selector} h2 {
1365
+ outline: 1px solid #314e6e !important;
1366
+ }
1367
+
1368
+ ${selector} h3 {
1369
+ outline: 1px solid #3e5e85 !important;
1370
+ }
1371
+
1372
+ ${selector} h4 {
1373
+ outline: 1px solid #449baf !important;
1374
+ }
1375
+
1376
+ ${selector} h5 {
1377
+ outline: 1px solid #c7d1cb !important;
1378
+ }
1379
+
1380
+ ${selector} h6 {
1381
+ outline: 1px solid #4371d0 !important;
1382
+ }
1383
+
1384
+ ${selector} main {
1385
+ outline: 1px solid #2f4f90 !important;
1386
+ }
1387
+
1388
+ ${selector} address {
1389
+ outline: 1px solid #1a2c51 !important;
1390
+ }
1391
+
1392
+ ${selector} div {
1393
+ outline: 1px solid #036cdb !important;
1394
+ }
1395
+
1396
+ ${selector} p {
1397
+ outline: 1px solid #ac050b !important;
1398
+ }
1399
+
1400
+ ${selector} hr {
1401
+ outline: 1px solid #ff063f !important;
1402
+ }
1403
+
1404
+ ${selector} pre {
1405
+ outline: 1px solid #850440 !important;
1406
+ }
1407
+
1408
+ ${selector} blockquote {
1409
+ outline: 1px solid #f1b8e7 !important;
1410
+ }
1411
+
1412
+ ${selector} ol {
1413
+ outline: 1px solid #ff050c !important;
1414
+ }
1415
+
1416
+ ${selector} ul {
1417
+ outline: 1px solid #d90416 !important;
1418
+ }
1419
+
1420
+ ${selector} li {
1421
+ outline: 1px solid #d90416 !important;
1422
+ }
1423
+
1424
+ ${selector} dl {
1425
+ outline: 1px solid #fd3427 !important;
1426
+ }
1427
+
1428
+ ${selector} dt {
1429
+ outline: 1px solid #ff0043 !important;
1430
+ }
1431
+
1432
+ ${selector} dd {
1433
+ outline: 1px solid #e80174 !important;
1434
+ }
1435
+
1436
+ ${selector} figure {
1437
+ outline: 1px solid #ff00bb !important;
1438
+ }
1439
+
1440
+ ${selector} figcaption {
1441
+ outline: 1px solid #bf0032 !important;
1442
+ }
1443
+
1444
+ ${selector} table {
1445
+ outline: 1px solid #00cc99 !important;
1446
+ }
1447
+
1448
+ ${selector} caption {
1449
+ outline: 1px solid #37ffc4 !important;
1450
+ }
1451
+
1452
+ ${selector} thead {
1453
+ outline: 1px solid #98daca !important;
1454
+ }
1455
+
1456
+ ${selector} tbody {
1457
+ outline: 1px solid #64a7a0 !important;
1458
+ }
1459
+
1460
+ ${selector} tfoot {
1461
+ outline: 1px solid #22746b !important;
1462
+ }
1463
+
1464
+ ${selector} tr {
1465
+ outline: 1px solid #86c0b2 !important;
1466
+ }
1467
+
1468
+ ${selector} th {
1469
+ outline: 1px solid #a1e7d6 !important;
1470
+ }
1471
+
1472
+ ${selector} td {
1473
+ outline: 1px solid #3f5a54 !important;
1474
+ }
1475
+
1476
+ ${selector} col {
1477
+ outline: 1px solid #6c9a8f !important;
1478
+ }
1479
+
1480
+ ${selector} colgroup {
1481
+ outline: 1px solid #6c9a9d !important;
1482
+ }
1483
+
1484
+ ${selector} button {
1485
+ outline: 1px solid #da8301 !important;
1486
+ }
1487
+
1488
+ ${selector} datalist {
1489
+ outline: 1px solid #c06000 !important;
1490
+ }
1491
+
1492
+ ${selector} fieldset {
1493
+ outline: 1px solid #d95100 !important;
1494
+ }
1495
+
1496
+ ${selector} form {
1497
+ outline: 1px solid #d23600 !important;
1498
+ }
1499
+
1500
+ ${selector} input {
1501
+ outline: 1px solid #fca600 !important;
1502
+ }
1503
+
1504
+ ${selector} keygen {
1505
+ outline: 1px solid #b31e00 !important;
1506
+ }
1507
+
1508
+ ${selector} label {
1509
+ outline: 1px solid #ee8900 !important;
1510
+ }
1511
+
1512
+ ${selector} legend {
1513
+ outline: 1px solid #de6d00 !important;
1514
+ }
1515
+
1516
+ ${selector} meter {
1517
+ outline: 1px solid #e8630c !important;
1518
+ }
1519
+
1520
+ ${selector} optgroup {
1521
+ outline: 1px solid #b33600 !important;
1522
+ }
1523
+
1524
+ ${selector} option {
1525
+ outline: 1px solid #ff8a00 !important;
1526
+ }
1527
+
1528
+ ${selector} output {
1529
+ outline: 1px solid #ff9619 !important;
1530
+ }
1531
+
1532
+ ${selector} progress {
1533
+ outline: 1px solid #e57c00 !important;
1534
+ }
1535
+
1536
+ ${selector} select {
1537
+ outline: 1px solid #e26e0f !important;
1538
+ }
1539
+
1540
+ ${selector} textarea {
1541
+ outline: 1px solid #cc5400 !important;
1542
+ }
1543
+
1544
+ ${selector} details {
1545
+ outline: 1px solid #33848f !important;
1546
+ }
1547
+
1548
+ ${selector} summary {
1549
+ outline: 1px solid #60a1a6 !important;
1550
+ }
1551
+
1552
+ ${selector} command {
1553
+ outline: 1px solid #438da1 !important;
1554
+ }
1555
+
1556
+ ${selector} menu {
1557
+ outline: 1px solid #449da6 !important;
1558
+ }
1559
+
1560
+ ${selector} del {
1561
+ outline: 1px solid #bf0000 !important;
1562
+ }
1563
+
1564
+ ${selector} ins {
1565
+ outline: 1px solid #400000 !important;
1566
+ }
1567
+
1568
+ ${selector} img {
1569
+ outline: 1px solid #22746b !important;
1570
+ }
1571
+
1572
+ ${selector} iframe {
1573
+ outline: 1px solid #64a7a0 !important;
1574
+ }
1575
+
1576
+ ${selector} embed {
1577
+ outline: 1px solid #98daca !important;
1578
+ }
1579
+
1580
+ ${selector} object {
1581
+ outline: 1px solid #00cc99 !important;
1582
+ }
1583
+
1584
+ ${selector} param {
1585
+ outline: 1px solid #37ffc4 !important;
1586
+ }
1587
+
1588
+ ${selector} video {
1589
+ outline: 1px solid #6ee866 !important;
1590
+ }
1591
+
1592
+ ${selector} audio {
1593
+ outline: 1px solid #027353 !important;
1594
+ }
1595
+
1596
+ ${selector} source {
1597
+ outline: 1px solid #012426 !important;
1598
+ }
1599
+
1600
+ ${selector} canvas {
1601
+ outline: 1px solid #a2f570 !important;
1602
+ }
1603
+
1604
+ ${selector} track {
1605
+ outline: 1px solid #59a600 !important;
1606
+ }
1607
+
1608
+ ${selector} map {
1609
+ outline: 1px solid #7be500 !important;
1610
+ }
1611
+
1612
+ ${selector} area {
1613
+ outline: 1px solid #305900 !important;
1614
+ }
1615
+
1616
+ ${selector} a {
1617
+ outline: 1px solid #ff62ab !important;
1618
+ }
1619
+
1620
+ ${selector} em {
1621
+ outline: 1px solid #800b41 !important;
1622
+ }
1623
+
1624
+ ${selector} strong {
1625
+ outline: 1px solid #ff1583 !important;
1626
+ }
1627
+
1628
+ ${selector} i {
1629
+ outline: 1px solid #803156 !important;
1630
+ }
1631
+
1632
+ ${selector} b {
1633
+ outline: 1px solid #cc1169 !important;
1634
+ }
1635
+
1636
+ ${selector} u {
1637
+ outline: 1px solid #ff0430 !important;
1638
+ }
1639
+
1640
+ ${selector} s {
1641
+ outline: 1px solid #f805e3 !important;
1642
+ }
1643
+
1644
+ ${selector} small {
1645
+ outline: 1px solid #d107b2 !important;
1646
+ }
1647
+
1648
+ ${selector} abbr {
1649
+ outline: 1px solid #4a0263 !important;
1650
+ }
1651
+
1652
+ ${selector} q {
1653
+ outline: 1px solid #240018 !important;
1654
+ }
1655
+
1656
+ ${selector} cite {
1657
+ outline: 1px solid #64003c !important;
1658
+ }
1659
+
1660
+ ${selector} dfn {
1661
+ outline: 1px solid #b4005a !important;
1662
+ }
1663
+
1664
+ ${selector} sub {
1665
+ outline: 1px solid #dba0c8 !important;
1666
+ }
1667
+
1668
+ ${selector} sup {
1669
+ outline: 1px solid #cc0256 !important;
1670
+ }
1671
+
1672
+ ${selector} time {
1673
+ outline: 1px solid #d6606d !important;
1674
+ }
1675
+
1676
+ ${selector} code {
1677
+ outline: 1px solid #e04251 !important;
1678
+ }
1679
+
1680
+ ${selector} kbd {
1681
+ outline: 1px solid #5e001f !important;
1682
+ }
1683
+
1684
+ ${selector} samp {
1685
+ outline: 1px solid #9c0033 !important;
1686
+ }
1687
+
1688
+ ${selector} var {
1689
+ outline: 1px solid #d90047 !important;
1690
+ }
1691
+
1692
+ ${selector} mark {
1693
+ outline: 1px solid #ff0053 !important;
1694
+ }
1695
+
1696
+ ${selector} bdi {
1697
+ outline: 1px solid #bf3668 !important;
1698
+ }
1699
+
1700
+ ${selector} bdo {
1701
+ outline: 1px solid #6f1400 !important;
1702
+ }
1703
+
1704
+ ${selector} ruby {
1705
+ outline: 1px solid #ff7b93 !important;
1706
+ }
1707
+
1708
+ ${selector} rt {
1709
+ outline: 1px solid #ff2f54 !important;
1710
+ }
1711
+
1712
+ ${selector} rp {
1713
+ outline: 1px solid #803e49 !important;
1714
+ }
1715
+
1716
+ ${selector} span {
1717
+ outline: 1px solid #cc2643 !important;
1718
+ }
1719
+
1720
+ ${selector} br {
1721
+ outline: 1px solid #db687d !important;
1722
+ }
1723
+
1724
+ ${selector} wbr {
1725
+ outline: 1px solid #db175b !important;
1726
+ }`;
1727
+ }
1728
+
1729
+ // src/outline/withOutline.ts
1730
+ var withOutline = (StoryFn, context) => {
1731
+ let globals = context.globals || {}, isActive = !context.parameters?.[PARAM_KEY4]?.disable && [!0, "true"].includes(globals[PARAM_KEY4]), isInDocs = context.viewMode === "docs", outlineStyles = useMemo(() => outlineCSS(isInDocs ? '[data-story-block="true"]' : ".sb-show-main"), [context]);
1732
+ return useEffect3(() => {
1733
+ let selectorId = isInDocs ? `addon-outline-docs-${context.id}` : "addon-outline";
1734
+ return isActive ? addOutlineStyles(selectorId, outlineStyles) : clearStyles2(selectorId), () => {
1735
+ clearStyles2(selectorId);
1736
+ };
1737
+ }, [isActive, outlineStyles, context]), StoryFn();
1738
+ };
1739
+
1740
+ // src/outline/preview.ts
1741
+ var decorators3 = globalThis.FEATURES?.outline ? [withOutline] : [], initialGlobals3 = {
1742
+ [PARAM_KEY4]: !1
1743
+ }, preview_default6 = () => definePreviewAddon7({ decorators: decorators3, initialGlobals: initialGlobals3 });
1744
+
1745
+ // src/shared/open-service/services/docgen/preview.ts
1746
+ import { definePreviewAddon as definePreviewAddon8 } from "@aussieljk/forkbook/internal/csf";
1747
+ var preview_default7 = () => definePreviewAddon8({
1748
+ beforeAll: () => {
1749
+ globalThis.FEATURES?.docgenServer && registerService(docgenServiceDef);
1750
+ }
1751
+ });
1752
+
1753
+ // src/shared/open-service/services/story-docs/preview.ts
1754
+ import { definePreviewAddon as definePreviewAddon9 } from "@aussieljk/forkbook/internal/csf";
1755
+
1756
+ // src/shared/open-service/services/story-docs/definition.ts
1757
+ import * as v from "valibot";
1758
+ import { defineService } from "@aussieljk/forkbook/open-service";
1759
+
1760
+ // src/shared/open-service/services/story-docs/paths.ts
1761
+ function storyDocsQueryStaticPath(id) {
1762
+ return `${id}.json`;
1763
+ }
1764
+
1765
+ // src/shared/open-service/services/story-docs/definition.ts
1766
+ var storyDocsInputSchema = v.object({ id: v.string() }), storyDocsErrorSchema = v.object({
1767
+ name: v.string(),
1768
+ message: v.string()
1769
+ }), storyDocSchema = v.object({
1770
+ id: v.string(),
1771
+ name: v.string(),
1772
+ snippet: v.optional(v.string()),
1773
+ description: v.optional(v.string()),
1774
+ summary: v.optional(v.string()),
1775
+ warning: v.optional(v.string()),
1776
+ error: v.optional(storyDocsErrorSchema)
1777
+ }), storyDocsPayloadSchema = v.object({
1778
+ id: v.string(),
1779
+ name: v.string(),
1780
+ path: v.string(),
1781
+ import: v.optional(v.string()),
1782
+ stories: v.record(v.string(), storyDocSchema),
1783
+ error: v.optional(storyDocsErrorSchema)
1784
+ }), storyDocsOutputSchema = v.optional(storyDocsPayloadSchema), storyDocsServiceDef = defineService({
1785
+ id: "core/story-docs",
1786
+ internal: !0,
1787
+ description: "Story documentation (snippets, descriptions, imports) keyed by component id.",
1788
+ initialState: { components: {} },
1789
+ queries: {
1790
+ storyDocs: {
1791
+ description: "Returns the story-docs payload for one component id, or undefined when not loaded.",
1792
+ input: storyDocsInputSchema,
1793
+ output: storyDocsOutputSchema,
1794
+ handler: (input, ctx) => Object.hasOwn(ctx.self.state.components, input.id) ? ctx.self.state.components[input.id] : void 0,
1795
+ load: async (input, ctx) => {
1796
+ await ctx.self.commands.extractStoryDocs(input);
1797
+ },
1798
+ staticPath: (input) => storyDocsQueryStaticPath(input.id)
1799
+ },
1800
+ storyDocsForAllComponents: {
1801
+ description: "Returns story-docs payloads for every component in the story index.",
1802
+ input: v.void(),
1803
+ output: v.record(v.string(), storyDocsPayloadSchema),
1804
+ handler: (_input, ctx) => ctx.self.state.components,
1805
+ load: async (_input, ctx) => {
1806
+ await ctx.self.commands.extractAllStoryDocs(void 0);
1807
+ }
1808
+ }
1809
+ },
1810
+ commands: {
1811
+ extractStoryDocs: {
1812
+ description: "Resolves the story entry for a component id, runs the registered provider chain, writes the result into state, and returns it (or undefined when no provider produced story docs).",
1813
+ input: storyDocsInputSchema,
1814
+ output: storyDocsOutputSchema
1815
+ },
1816
+ extractAllStoryDocs: {
1817
+ description: "Extracts story docs for every component id in the story index by invoking `extractStoryDocs` for each.",
1818
+ input: v.undefined(),
1819
+ output: v.void()
1820
+ }
1821
+ }
1822
+ });
1823
+
1824
+ // src/shared/open-service/services/story-docs/story-docs-source-before-each.ts
1825
+ import { logger as logger2 } from "@aussieljk/forkbook/internal/client-logger";
1826
+ import { emitTransformCode, getService } from "@aussieljk/forkbook/preview-api";
1827
+ function storyDocsSourceBeforeEach(context) {
1828
+ if (!globalThis.FEATURES?.docgenServer || shouldSkipStoryDocsEmit(context.parameters))
1829
+ return;
1830
+ let service = (() => {
1831
+ try {
1832
+ return getService("core/story-docs", { internal: !0 });
1833
+ } catch {
1834
+ return;
1835
+ }
1836
+ })();
1837
+ if (!service)
1838
+ return;
1839
+ let storyId = context.id, componentId = storyId.split("--")[0], cancelled = !1, codePanelSnippetPromise = service.queries.storyDocs.loaded({ id: componentId }).then((payload) => {
1840
+ if (cancelled)
1841
+ return;
1842
+ let snippet = selectSnippetForStory(payload, storyId), source = snippet ?? context.parameters?.docs?.source?.originalSource;
1843
+ if (source === void 0)
1844
+ return;
1845
+ let warning = selectWarningForStory(payload, storyId);
1846
+ return emitTransformCode(
1847
+ source,
1848
+ context,
1849
+ snippet === void 0 && warning ? `${warning} Showing the story source instead.` : warning
1850
+ );
1851
+ }).catch((error) => {
1852
+ logger2.debug(`Story docs snippet for ${storyId} unavailable: ${String(error)}`);
1853
+ });
1854
+ return () => (cancelled = !0, codePanelSnippetPromise);
1855
+ }
1856
+
1857
+ // src/shared/open-service/services/story-docs/preview.ts
1858
+ var preview_default8 = () => "FEATURES" in globalThis && globalThis.FEATURES?.docgenServer ? definePreviewAddon9({
1859
+ beforeAll: () => {
1860
+ registerService(storyDocsServiceDef);
1861
+ },
1862
+ beforeEach: storyDocsSourceBeforeEach
1863
+ }) : definePreviewAddon9({});
1864
+
1865
+ // src/test/preview.ts
1866
+ import { definePreviewAddon as definePreviewAddon10 } from "@aussieljk/forkbook/internal/csf";
1867
+ import { instrument as instrument2 } from "@aussieljk/forkbook/internal/instrumenter";
1868
+ import {
1869
+ clearAllMocks,
1870
+ fn,
1871
+ isMockFunction,
1872
+ resetAllMocks,
1873
+ restoreAllMocks,
1874
+ uninstrumentedUserEvent,
1875
+ within
1876
+ } from "@aussieljk/forkbook/test";
1877
+ var resetAllMocksLoader = ({ parameters: parameters2 }) => {
1878
+ parameters2?.test?.mockReset === !0 ? resetAllMocks() : parameters2?.test?.clearMocks === !0 ? clearAllMocks() : parameters2?.test?.restoreMocks !== !1 && restoreAllMocks();
1879
+ }, traverseArgs = (value, depth = 0, key) => {
1880
+ if (depth > 5 || value == null)
1881
+ return value;
1882
+ if (isMockFunction(value))
1883
+ return key && value.mockName(key), value;
1884
+ if (typeof value == "function" && "isAction" in value && value.isAction && !("implicit" in value && value.implicit)) {
1885
+ let mock = fn(value);
1886
+ return key && mock.mockName(key), mock;
1887
+ }
1888
+ if (Array.isArray(value)) {
1889
+ depth++;
1890
+ for (let i = 0; i < value.length; i++)
1891
+ Object.getOwnPropertyDescriptor(value, i)?.writable && (value[i] = traverseArgs(value[i], depth));
1892
+ return value;
1893
+ }
1894
+ if (typeof value == "object" && value.constructor === Object) {
1895
+ depth++;
1896
+ for (let [k, v2] of Object.entries(value))
1897
+ Object.getOwnPropertyDescriptor(value, k)?.writable && (value[k] = traverseArgs(v2, depth, k));
1898
+ return value;
1899
+ }
1900
+ return value;
1901
+ }, nameSpiesAndWrapActionsInSpies = ({ initialArgs }) => {
1902
+ traverseArgs(initialArgs);
1903
+ }, patchedFocus = !1, enhanceContext = async (context) => {
1904
+ globalThis.HTMLElement && context.canvasElement instanceof globalThis.HTMLElement && (context.canvas = within(context.canvasElement));
1905
+ try {
1906
+ let clipboard = globalThis.window?.navigator?.clipboard;
1907
+ if (clipboard && (context.userEvent = instrument2(
1908
+ { userEvent: uninstrumentedUserEvent.setup() },
1909
+ {
1910
+ intercept: !0,
1911
+ getKeys: (obj) => Object.keys(obj).filter((key) => key !== "eventWrapper")
1912
+ }
1913
+ ).userEvent, Object.defineProperty(globalThis.window.navigator, "clipboard", {
1914
+ get: () => clipboard,
1915
+ configurable: !0
1916
+ }), !patchedFocus)) {
1917
+ let originalFocus = HTMLElement.prototype.focus, currentFocus = HTMLElement.prototype.focus, noopFocus = () => {
1918
+ }, focusingElements = /* @__PURE__ */ new Set();
1919
+ Object.defineProperties(HTMLElement.prototype, {
1920
+ focus: {
1921
+ configurable: !0,
1922
+ set: (newFocus) => {
1923
+ currentFocus = newFocus;
1924
+ },
1925
+ get() {
1926
+ if (this === HTMLElement.prototype)
1927
+ return currentFocus;
1928
+ let browsingContext;
1929
+ try {
1930
+ browsingContext = this.ownerDocument?.defaultView;
1931
+ } catch {
1932
+ return currentFocus;
1933
+ }
1934
+ return browsingContext ? focusingElements.has(this) ? originalFocus : (focusingElements.add(this), setTimeout(() => focusingElements.delete(this), 0), currentFocus) : noopFocus;
1935
+ }
1936
+ }
1937
+ }), patchedFocus = !0;
1938
+ }
1939
+ } catch {
1940
+ }
1941
+ }, preview_default9 = () => definePreviewAddon10({
1942
+ loaders: [resetAllMocksLoader, nameSpiesAndWrapActionsInSpies, enhanceContext]
1943
+ });
1944
+
1945
+ // src/viewport/preview.ts
1946
+ import { definePreviewAddon as definePreviewAddon11 } from "@aussieljk/forkbook/internal/csf";
1947
+ var initialGlobals4 = {
1948
+ [PARAM_KEY]: { value: void 0, isRotated: !1 }
1949
+ }, preview_default10 = () => definePreviewAddon11({
1950
+ initialGlobals: initialGlobals4
1951
+ });
1952
+
1953
+ // src/csf/core-annotations.ts
1954
+ var CORE_ANNOTATIONS_COMPOSED = /* @__PURE__ */ Symbol.for("storybook.internal.composedWithCoreAnnotations");
1955
+ function markAsComposedWithCoreAnnotations(annotations) {
1956
+ return Object.defineProperty(annotations, CORE_ANNOTATIONS_COMPOSED, {
1957
+ value: !0,
1958
+ enumerable: !1,
1959
+ configurable: !0,
1960
+ writable: !0
1961
+ }), annotations;
1962
+ }
1963
+ function hasCoreAnnotations(annotations) {
1964
+ return annotations != null && typeof annotations == "object" && annotations[CORE_ANNOTATIONS_COMPOSED] === !0;
1965
+ }
1966
+ function getCoreAnnotations() {
1967
+ return [
1968
+ // @ts-expect-error CJS fallback
1969
+ (preview_default5.default ?? preview_default5)(),
1970
+ // @ts-expect-error CJS fallback
1971
+ (preview_default2.default ?? preview_default2)(),
1972
+ // @ts-expect-error CJS fallback
1973
+ (preview_default4.default ?? preview_default4)(),
1974
+ // @ts-expect-error CJS fallback
1975
+ (preview_default6.default ?? preview_default6)(),
1976
+ // @ts-expect-error CJS fallback
1977
+ (preview_default10.default ?? preview_default10)(),
1978
+ // @ts-expect-error CJS fallback
1979
+ (preview_default.default ?? preview_default)(),
1980
+ // @ts-expect-error CJS fallback
1981
+ (preview_default3.default ?? preview_default3)(),
1982
+ // @ts-expect-error CJS fallback
1983
+ (preview_default9.default ?? preview_default9)(),
1984
+ // @ts-expect-error CJS fallback
1985
+ (test_annotations_default.default ?? test_annotations_default)(),
1986
+ // @ts-expect-error CJS fallback
1987
+ (preview_default7.default ?? preview_default7)(),
1988
+ // @ts-expect-error CJS fallback
1989
+ (preview_default8.default ?? preview_default8)()
1990
+ ];
1991
+ }
1992
+
1993
+ // src/csf/csf-factories.ts
1994
+ function definePreview(input) {
1995
+ let composed, preview = {
1996
+ _tag: "Preview",
1997
+ input,
1998
+ get composed() {
1999
+ if (composed)
2000
+ return composed;
2001
+ let { addons: addons2, ...rest } = input;
2002
+ return composed = markAsComposedWithCoreAnnotations(
2003
+ normalizeProjectAnnotations(
2004
+ composeConfigs([...getCoreAnnotations(), ...addons2 ?? [], rest])
2005
+ )
2006
+ ), composed;
2007
+ },
2008
+ type() {
2009
+ return this;
2010
+ },
2011
+ meta(meta) {
2012
+ return defineMeta(
2013
+ meta,
2014
+ this
2015
+ );
2016
+ }
2017
+ };
2018
+ return globalThis.globalProjectAnnotations = preview.composed, preview;
2019
+ }
2020
+ function definePreviewAddon12(preview) {
2021
+ return preview;
2022
+ }
2023
+ function isPreview(input) {
2024
+ return input != null && typeof input == "object" && "_tag" in input && input?._tag === "Preview";
2025
+ }
2026
+ function isMeta(input) {
2027
+ return input != null && typeof input == "object" && "_tag" in input && input?._tag === "Meta";
2028
+ }
2029
+ function defineMeta(input, preview) {
2030
+ return {
2031
+ _tag: "Meta",
2032
+ input: {
2033
+ ...input,
2034
+ parameters: { ...input.parameters, csfFactory: !0 }
2035
+ },
2036
+ preview,
2037
+ type() {
2038
+ return this;
2039
+ },
2040
+ story(story = {}) {
2041
+ return defineStory(typeof story == "function" ? { render: story } : story, this);
2042
+ }
2043
+ };
2044
+ }
2045
+ function isStory(input) {
2046
+ return input != null && typeof input == "object" && "_tag" in input && input?._tag === "Story";
2047
+ }
2048
+ function defineStory(input, meta) {
2049
+ let composed, compose = () => (composed || (composed = composeStory(
2050
+ input,
2051
+ meta.input,
2052
+ void 0,
2053
+ meta.preview.composed
2054
+ )), composed), __children = [];
2055
+ return {
2056
+ _tag: "Story",
2057
+ input,
2058
+ meta,
2059
+ __compose: compose,
2060
+ __children,
2061
+ get composed() {
2062
+ let composed2 = compose(), { args, argTypes, parameters: parameters2, id, tags, globals, storyName: name } = composed2;
2063
+ return { args, argTypes, parameters: parameters2, id, tags, name, globals };
2064
+ },
2065
+ get play() {
2066
+ return input.play ?? meta.input?.play ?? (async () => {
2067
+ });
2068
+ },
2069
+ async run(context) {
2070
+ await compose().run(context);
2071
+ },
2072
+ test(name, overridesOrTestFn, testFn) {
2073
+ let annotations = typeof overridesOrTestFn != "function" ? overridesOrTestFn : {}, testFunction = typeof overridesOrTestFn != "function" ? testFn : overridesOrTestFn, play = mountDestructured(this.play) || mountDestructured(testFunction) ? (
2074
+ // mount needs to be explicitly destructured
2075
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2076
+ async ({ mount, context }) => {
2077
+ await this.play?.(context), await testFunction(context);
2078
+ }
2079
+ ) : async (context) => {
2080
+ await this.play?.(context), await testFunction(context);
2081
+ }, test = this.extend({
2082
+ ...annotations,
2083
+ name,
2084
+ tags: [Tag.TEST_FN, `!${Tag.AUTODOCS}`, ...annotations.tags ?? []],
2085
+ play
2086
+ });
2087
+ return __children.push(test), test;
2088
+ },
2089
+ extend(input2) {
2090
+ return defineStory(
2091
+ {
2092
+ ...this.input,
2093
+ ...input2,
2094
+ args: { ...this.input.args || {}, ...input2.args },
2095
+ argTypes: combineParameters(this.input.argTypes, input2.argTypes),
2096
+ afterEach: [
2097
+ ...normalizeArrays(this.input?.afterEach ?? []),
2098
+ ...normalizeArrays(input2.afterEach ?? [])
2099
+ ],
2100
+ beforeEach: [
2101
+ ...normalizeArrays(this.input?.beforeEach ?? []),
2102
+ ...normalizeArrays(input2.beforeEach ?? [])
2103
+ ],
2104
+ decorators: [
2105
+ ...normalizeArrays(this.input?.decorators ?? []),
2106
+ ...normalizeArrays(input2.decorators ?? [])
2107
+ ],
2108
+ globals: { ...this.input.globals, ...input2.globals },
2109
+ loaders: [
2110
+ ...normalizeArrays(this.input?.loaders ?? []),
2111
+ ...normalizeArrays(input2.loaders ?? [])
2112
+ ],
2113
+ parameters: combineParameters(this.input.parameters, input2.parameters),
2114
+ tags: combineTags2(...this.input.tags ?? [], ...input2.tags ?? [])
2115
+ },
2116
+ this.meta
2117
+ );
2118
+ }
2119
+ };
2120
+ }
2121
+ function getStoryChildren(story) {
2122
+ return "__children" in story ? story.__children : [];
2123
+ }
2124
+ export {
2125
+ combineTags,
2126
+ definePreview,
2127
+ definePreviewAddon12 as definePreviewAddon,
2128
+ getCoreAnnotations,
2129
+ getStoryChildren,
2130
+ hasCoreAnnotations,
2131
+ includeConditionalArg,
2132
+ isExportStory,
2133
+ isMeta,
2134
+ isPreview,
2135
+ isStory,
2136
+ markAsComposedWithCoreAnnotations,
2137
+ parseKind,
2138
+ sanitize,
2139
+ storyNameFromExport,
2140
+ toId,
2141
+ toTestId
2142
+ };