@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,2943 @@
1
+ import {
2
+ getControlId,
3
+ getControlSetterButtonId
4
+ } from "./chunk-PJSMZ27A.js";
5
+ import {
6
+ EmptyBlock
7
+ } from "./chunk-PFRNG3UC.js";
8
+ import {
9
+ clsx
10
+ } from "./chunk-CNED6RYH.js";
11
+ import {
12
+ uniq
13
+ } from "./chunk-4ATQOMJB.js";
14
+ import {
15
+ cloneDeep,
16
+ pickBy
17
+ } from "./chunk-2JDQ35OA.js";
18
+
19
+ // src/addon-docs/blocks/controls/Boolean.tsx
20
+ import { useCallback } from "react";
21
+ import { Button } from "@aussieljk/forkbook/internal/components";
22
+
23
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Boolean.module.css
24
+ var id = "core/src/addon-docs/blocks/controls/Boolean.module.css";
25
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id}"]`)) {
26
+ let style = document.createElement("style");
27
+ style.setAttribute("data-sb-css", id), style.textContent = ".sb-JOY8zW-label{white-space:nowrap;background:var(--sb-boolean-background);border-radius:3em;align-items:center;margin-bottom:8px;padding:1px;line-height:18px;display:inline-block;position:relative;&[aria-disabled=true]{opacity:.5;& input{cursor:not-allowed}}@media (forced-colors:active){background:buttonface;outline:1px solid buttontext}&:focus-within{outline:1px solid var(--sb-color-secondary);outline-offset:1px;@media (forced-colors:active){outline-offset:1px;outline:1px solid highlight}}& input{white-space:nowrap;clip:rect(0, 0, 0, 0);clip-path:inset(50%);appearance:none;cursor:pointer;background:0 0;border:0;border-radius:3em;width:1px;height:1px;margin:-1px;padding:0;position:absolute;top:0;left:0;overflow:hidden}& span{text-align:center;font-size:var(--sb-size-s1);font-weight:var(--sb-weight-bold);cursor:pointer;user-select:none;color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .5));background:0 0;border-radius:3em;padding:7px 15px;line-height:1;transition:all .1s ease-out;display:inline-block;&:active{box-shadow:rgb(from var(--sb-app-border-color) r g b / calc(alpha + .05)) 0 0 0 2px inset;color:rgb(from var(--sb-app-border-color) r g b / calc(alpha + 1))}&:first-of-type{padding-right:8px}&:last-of-type{padding-left:8px}@media (forced-colors:active){color:buttontext;box-shadow:none}}& input:checked~span:last-of-type,& input:not(:checked)~span:first-of-type{background:var(--sb-boolean-selected-background);box-shadow:rgb(from var(--sb-app-border-color) r g b / calc(alpha + .1)) 0 0 2px;color:var(--sb-color-default-text);padding:7px 15px;@media (forced-colors:active){forced-color-adjust:none;color:highlighttext;box-shadow:none;background:highlight;outline:1px solid buttontext}}}:where([data-sb-theme=dark]) .sb-JOY8zW-label{& input:checked~span:last-of-type,& input:not(:checked)~span:first-of-type{box-shadow:var(--sb-app-border-color) 0 0 0 1px}}", document.head.appendChild(style);
28
+ }
29
+ var Boolean_default = { label: "sb-JOY8zW-label" };
30
+
31
+ // src/addon-docs/blocks/controls/Boolean.tsx
32
+ import { jsx, jsxs } from "react/jsx-runtime";
33
+ var parse = (value) => value === "true", BooleanControl = ({
34
+ name,
35
+ storyId,
36
+ controlsId,
37
+ value,
38
+ onChange,
39
+ onBlur,
40
+ onFocus,
41
+ argType,
42
+ required
43
+ }) => {
44
+ let onSetFalse = useCallback(() => onChange(!1), [onChange]), readonly = !!argType?.table?.readonly;
45
+ if (value === void 0)
46
+ return jsx(
47
+ Button,
48
+ {
49
+ ariaLabel: !1,
50
+ variant: "outline",
51
+ size: "medium",
52
+ id: getControlSetterButtonId(name, storyId, controlsId),
53
+ onClick: onSetFalse,
54
+ disabled: readonly,
55
+ children: "Set boolean"
56
+ }
57
+ );
58
+ let controlId = getControlId(name, storyId, controlsId), parsedValue = typeof value == "string" ? parse(value) : value;
59
+ return jsxs("label", { className: Boolean_default.label, "aria-disabled": readonly, htmlFor: controlId, "aria-label": name, children: [
60
+ jsx(
61
+ "input",
62
+ {
63
+ id: controlId,
64
+ type: "checkbox",
65
+ onChange: (e2) => onChange(e2.target.checked),
66
+ checked: parsedValue,
67
+ role: "switch",
68
+ disabled: readonly,
69
+ "aria-required": required || void 0,
70
+ name,
71
+ onBlur,
72
+ onFocus
73
+ }
74
+ ),
75
+ jsx("span", { "aria-hidden": "true", children: "False" }),
76
+ jsx("span", { "aria-hidden": "true", children: "True" })
77
+ ] });
78
+ };
79
+
80
+ // src/addon-docs/blocks/controls/Date.tsx
81
+ import { useEffect, useRef, useState } from "react";
82
+ import { Form } from "@aussieljk/forkbook/internal/components";
83
+
84
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Date.module.css
85
+ var id2 = "core/src/addon-docs/blocks/controls/Date.module.css";
86
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id2}"]`)) {
87
+ let style = document.createElement("style");
88
+ style.setAttribute("data-sb-css", id2), style.textContent = ".sb-_bdHva-input{&[readonly]{background:var(--sb-color-lighter)}&::-webkit-calendar-picker-indicator{opacity:.5;height:12px}}:where([data-sb-theme=dark]) .sb-_bdHva-input{&[readonly]{background:0 0}&::-webkit-calendar-picker-indicator{filter:invert()}}.sb-_bdHva-fieldset{border:0;flex:1;gap:10px;margin-inline:0;padding:0;display:flex;& div:first-of-type{flex:4}& div:last-of-type{flex:3}}", document.head.appendChild(style);
89
+ }
90
+ var Date_default = { fieldset: "sb-_bdHva-fieldset", input: "sb-_bdHva-input" };
91
+
92
+ // src/addon-docs/blocks/controls/Date.tsx
93
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
94
+ var parseDate = (value) => {
95
+ let [year, month, day] = value.split("-"), result = /* @__PURE__ */ new Date();
96
+ return result.setFullYear(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10)), result;
97
+ }, parseTime = (value) => {
98
+ let [hours, minutes] = value.split(":"), result = /* @__PURE__ */ new Date();
99
+ return result.setHours(parseInt(hours, 10)), result.setMinutes(parseInt(minutes, 10)), result;
100
+ }, formatDate = (value) => {
101
+ let date = new Date(value), year = `000${date.getFullYear()}`.slice(-4), month = `0${date.getMonth() + 1}`.slice(-2), day = `0${date.getDate()}`.slice(-2);
102
+ return `${year}-${month}-${day}`;
103
+ }, formatTime = (value) => {
104
+ let date = new Date(value), hours = `0${date.getHours()}`.slice(-2), minutes = `0${date.getMinutes()}`.slice(-2);
105
+ return `${hours}:${minutes}`;
106
+ }, DateControl = ({
107
+ name,
108
+ storyId,
109
+ controlsId,
110
+ value,
111
+ onChange,
112
+ onFocus,
113
+ onBlur,
114
+ argType,
115
+ required
116
+ }) => {
117
+ let [valid, setValid] = useState(!0), dateRef = useRef(), timeRef = useRef(), readonly = !!argType?.table?.readonly;
118
+ useEffect(() => {
119
+ valid !== !1 && (dateRef && dateRef.current && (dateRef.current.value = value ? formatDate(value) : ""), timeRef && timeRef.current && (timeRef.current.value = value ? formatTime(value) : ""));
120
+ }, [value]);
121
+ let onDateChange = (e2) => {
122
+ if (!e2.target.value)
123
+ return onChange();
124
+ let parsed = parseDate(e2.target.value), result = new Date(value ?? "");
125
+ result.setFullYear(parsed.getFullYear(), parsed.getMonth(), parsed.getDate());
126
+ let time = result.getTime();
127
+ time && onChange(time), setValid(!!time);
128
+ }, onTimeChange = (e2) => {
129
+ if (!e2.target.value)
130
+ return onChange();
131
+ let parsed = parseTime(e2.target.value), result = new Date(value ?? "");
132
+ result.setHours(parsed.getHours()), result.setMinutes(parsed.getMinutes());
133
+ let time = result.getTime();
134
+ time && onChange(time), setValid(!!time);
135
+ }, controlId = getControlId(name, storyId, controlsId);
136
+ return jsxs2("fieldset", { className: Date_default.fieldset, children: [
137
+ jsx2("legend", { className: "sb-sr-only", children: name }),
138
+ jsx2("label", { htmlFor: `${controlId}-date`, className: "sb-sr-only", children: "Date" }),
139
+ jsx2(
140
+ Form.Input,
141
+ {
142
+ className: Date_default.input,
143
+ type: "date",
144
+ max: "9999-12-31",
145
+ ref: dateRef,
146
+ id: `${controlId}-date`,
147
+ name: `${controlId}-date`,
148
+ readOnly: readonly,
149
+ "aria-required": required || void 0,
150
+ onChange: onDateChange,
151
+ onFocus,
152
+ onBlur
153
+ }
154
+ ),
155
+ jsx2("label", { htmlFor: `${controlId}-time`, className: "sb-sr-only", children: "Time" }),
156
+ jsx2(
157
+ Form.Input,
158
+ {
159
+ className: Date_default.input,
160
+ type: "time",
161
+ id: `${controlId}-time`,
162
+ name: `${controlId}-time`,
163
+ ref: timeRef,
164
+ onChange: onTimeChange,
165
+ readOnly: readonly,
166
+ "aria-required": required || void 0,
167
+ onFocus,
168
+ onBlur
169
+ }
170
+ ),
171
+ valid ? null : jsx2("div", { children: "invalid" })
172
+ ] });
173
+ };
174
+
175
+ // src/addon-docs/blocks/controls/Number.tsx
176
+ import { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
177
+ import { Button as Button2, Form as Form2 } from "@aussieljk/forkbook/internal/components";
178
+
179
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Number.module.css
180
+ var id3 = "core/src/addon-docs/blocks/controls/Number.module.css";
181
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id3}"]`)) {
182
+ let style = document.createElement("style");
183
+ style.setAttribute("data-sb-css", id3), style.textContent = ".sb-7MwCMq-wrapper{display:flex}.sb-7MwCMq-input{background:var(--sb-color-lighter)}:where([data-sb-theme=dark]) .sb-7MwCMq-input{background:0 0}", document.head.appendChild(style);
184
+ }
185
+ var Number_default = { wrapper: "sb-7MwCMq-wrapper", input: "sb-7MwCMq-input" };
186
+
187
+ // src/addon-docs/blocks/controls/Number.tsx
188
+ import { jsx as jsx3 } from "react/jsx-runtime";
189
+ var parse2 = (value) => {
190
+ let result = parseFloat(value);
191
+ return Number.isNaN(result) ? void 0 : result;
192
+ }, format = (value) => value != null ? String(value) : "", NumberControl = ({
193
+ name,
194
+ storyId,
195
+ controlsId,
196
+ value,
197
+ onChange,
198
+ min,
199
+ max,
200
+ step,
201
+ onBlur,
202
+ onFocus,
203
+ argType,
204
+ required
205
+ }) => {
206
+ let [inputValue, setInputValue] = useState2(typeof value == "number" ? value : ""), [forceVisible, setForceVisible] = useState2(!1), [parseError, setParseError] = useState2(null), readonly = !!argType?.table?.readonly, handleChange = useCallback2(
207
+ (event) => {
208
+ setInputValue(event.target.value);
209
+ let result = parseFloat(event.target.value);
210
+ if (Number.isNaN(result))
211
+ setParseError(new Error(`'${event.target.value}' is not a number`));
212
+ else {
213
+ let finalValue = result;
214
+ typeof min == "number" && finalValue < min && (finalValue = min), typeof max == "number" && finalValue > max && (finalValue = max), onChange(finalValue), setParseError(null), finalValue !== result && setInputValue(String(finalValue));
215
+ }
216
+ },
217
+ [onChange, setParseError, min, max]
218
+ ), onForceVisible = useCallback2(() => {
219
+ setInputValue("0"), onChange(0), setForceVisible(!0);
220
+ }, [setForceVisible]), htmlElRef = useRef2(null);
221
+ return useEffect2(() => {
222
+ forceVisible && htmlElRef.current && htmlElRef.current.select();
223
+ }, [forceVisible]), useEffect2(() => {
224
+ let newInputValue = typeof value == "number" ? value : "";
225
+ inputValue !== newInputValue && setInputValue(newInputValue);
226
+ }, [value]), value === void 0 ? jsx3(
227
+ Button2,
228
+ {
229
+ ariaLabel: !1,
230
+ variant: "outline",
231
+ size: "medium",
232
+ id: getControlSetterButtonId(name, storyId, controlsId),
233
+ onClick: onForceVisible,
234
+ disabled: readonly,
235
+ children: "Set number"
236
+ }
237
+ ) : jsx3("label", { className: Number_default.wrapper, children: jsx3(
238
+ Form2.Input,
239
+ {
240
+ className: Number_default.input,
241
+ ref: htmlElRef,
242
+ id: getControlId(name, storyId, controlsId),
243
+ type: "number",
244
+ onChange: handleChange,
245
+ size: "flex",
246
+ placeholder: "Edit number...",
247
+ value: inputValue,
248
+ valid: parseError ? "error" : void 0,
249
+ autoFocus: forceVisible,
250
+ "aria-required": required || void 0,
251
+ readOnly: readonly,
252
+ name,
253
+ min,
254
+ max,
255
+ step,
256
+ onFocus,
257
+ onBlur
258
+ }
259
+ ) });
260
+ };
261
+
262
+ // src/addon-docs/blocks/controls/options/Checkbox.tsx
263
+ import { useEffect as useEffect3, useState as useState3 } from "react";
264
+ import { logger } from "@aussieljk/forkbook/internal/client-logger";
265
+
266
+ // src/addon-docs/blocks/controls/options/helpers.ts
267
+ var selectedKey = (value, options) => {
268
+ let entry = options && Object.entries(options).find(([_key, val]) => val === value);
269
+ return entry ? entry[0] : void 0;
270
+ }, selectedKeys = (value, options) => value && options ? Object.entries(options).filter((entry) => value.includes(entry[1])).map((entry) => entry[0]) : [], selectedValues = (keys, options) => keys && options && keys.map((key) => options[key]);
271
+
272
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/options/Options.module.css
273
+ var id4 = "core/src/addon-docs/blocks/controls/options/Options.module.css";
274
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id4}"]`)) {
275
+ let style = document.createElement("style");
276
+ style.setAttribute("data-sb-css", id4), style.textContent = ".sb-OmlZtW-wrapper{border:none;flex-direction:column;align-items:flex-start;gap:8px;margin-inline:0;padding:0;display:flex;& label{display:flex}&[data-inline]{flex-flow:wrap;gap:15px;& label{display:inline-flex}}}.sb-OmlZtW-label{cursor:pointer;align-items:center;line-height:20px;& input{cursor:pointer;margin:0;margin-right:6px}&[data-readonly]{cursor:not-allowed;& input{cursor:not-allowed}& .sb-OmlZtW-text{opacity:.5}}}", document.head.appendChild(style);
277
+ }
278
+ var Options_default = { text: "sb-OmlZtW-text", label: "sb-OmlZtW-label", wrapper: "sb-OmlZtW-wrapper" };
279
+
280
+ // src/addon-docs/blocks/controls/options/Checkbox.tsx
281
+ import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
282
+ var CheckboxControl = ({
283
+ name,
284
+ storyId,
285
+ controlsId,
286
+ options,
287
+ value,
288
+ onChange,
289
+ isInline,
290
+ argType,
291
+ required
292
+ }) => {
293
+ if (!options)
294
+ return logger.warn(`Checkbox with no options: ${name}`), jsx4(Fragment, { children: "-" });
295
+ let initial = selectedKeys(value || [], options), [selected, setSelected] = useState3(initial), readonly = !!argType?.table?.readonly, handleChange = (e2) => {
296
+ let option = e2.target.value, updated = [...selected];
297
+ updated.includes(option) ? updated.splice(updated.indexOf(option), 1) : updated.push(option), onChange(selectedValues(updated, options)), setSelected(updated);
298
+ };
299
+ useEffect3(() => {
300
+ setSelected(selectedKeys(value || [], options));
301
+ }, [value]);
302
+ let controlId = getControlId(name, storyId, controlsId);
303
+ return jsxs3("fieldset", { className: Options_default.wrapper, "data-inline": isInline || void 0, children: [
304
+ jsxs3("legend", { className: "sb-sr-only", children: [
305
+ name,
306
+ required ? " (required)" : ""
307
+ ] }),
308
+ Object.keys(options).map((key, index) => {
309
+ let id18 = `${controlId}-${index}`;
310
+ return jsxs3(
311
+ "label",
312
+ {
313
+ className: Options_default.label,
314
+ htmlFor: id18,
315
+ "data-readonly": readonly || void 0,
316
+ children: [
317
+ jsx4(
318
+ "input",
319
+ {
320
+ type: "checkbox",
321
+ disabled: readonly,
322
+ id: id18,
323
+ name: id18,
324
+ value: key,
325
+ onChange: handleChange,
326
+ checked: selected?.includes(key)
327
+ }
328
+ ),
329
+ jsx4("span", { className: Options_default.text, children: key })
330
+ ]
331
+ },
332
+ id18
333
+ );
334
+ })
335
+ ] });
336
+ };
337
+
338
+ // src/addon-docs/blocks/controls/options/Radio.tsx
339
+ import { logger as logger2 } from "@aussieljk/forkbook/internal/client-logger";
340
+ import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
341
+ var RadioControl = ({
342
+ name,
343
+ storyId,
344
+ controlsId,
345
+ options,
346
+ value,
347
+ onChange,
348
+ isInline,
349
+ argType,
350
+ required
351
+ }) => {
352
+ if (!options)
353
+ return logger2.warn(`Radio with no options: ${name}`), jsx5(Fragment2, { children: "-" });
354
+ let selection = selectedKey(value, options), controlId = getControlId(name, storyId, controlsId), readonly = !!argType?.table?.readonly;
355
+ return jsxs4("fieldset", { className: Options_default.wrapper, "data-inline": isInline || void 0, children: [
356
+ jsxs4("legend", { className: "sb-sr-only", children: [
357
+ name,
358
+ required ? " (required)" : ""
359
+ ] }),
360
+ Object.keys(options).map((key, index) => {
361
+ let id18 = `${controlId}-${index}`;
362
+ return jsxs4(
363
+ "label",
364
+ {
365
+ className: Options_default.label,
366
+ htmlFor: id18,
367
+ "data-readonly": readonly || void 0,
368
+ children: [
369
+ jsx5(
370
+ "input",
371
+ {
372
+ type: "radio",
373
+ id: id18,
374
+ name: controlId,
375
+ disabled: readonly,
376
+ value: key,
377
+ onChange: (e2) => onChange(options[e2.currentTarget.value]),
378
+ checked: key === selection
379
+ }
380
+ ),
381
+ jsx5("span", { className: Options_default.text, children: key })
382
+ ]
383
+ },
384
+ id18
385
+ );
386
+ })
387
+ ] });
388
+ };
389
+
390
+ // src/addon-docs/blocks/controls/options/Select.tsx
391
+ import { logger as logger3 } from "@aussieljk/forkbook/internal/client-logger";
392
+ import { ChevronSmallDownIcon } from "@storybook/icons";
393
+
394
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/options/Select.module.css
395
+ var id5 = "core/src/addon-docs/blocks/controls/options/Select.module.css";
396
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id5}"]`)) {
397
+ let style = document.createElement("style");
398
+ style.setAttribute("data-sb-css", id5), style.textContent = ".sb-2JMgSq-select{appearance:none;font-size:inherit;box-sizing:border-box;width:100%;color:var(--sb-input-color,inherit);background:var(--sb-input-background);border-radius:var(--sb-input-border-radius);box-shadow:var(--sb-input-border) 0 0 0 1px inset;font-size:calc(var(--sb-size-s2) - 1px);border:0;margin:0;padding:6px 10px;line-height:20px;display:block;position:relative;&:focus{box-shadow:var(--sb-color-secondary) 0 0 0 1px inset;outline:none}&[disabled]{cursor:not-allowed;opacity:.5}&::placeholder{color:var(--sb-text-muted-color)}&[multiple]{padding:0;overflow:auto;& option{margin-left:1px;margin-right:1px;padding:6px 10px;display:block;&:hover{background:var(--sb-background-hoverable)}&:checked{color:var(--sb-color-secondary);font-weight:var(--sb-weight-bold);background:0 0}}}}.sb-2JMgSq-wrapper{vertical-align:top;width:100%;line-height:normal;display:inline-block;position:relative;overflow:hidden;& svg{z-index:1;pointer-events:none;height:12px;fill:var(--sb-text-muted-color);margin-top:-6px;position:absolute;top:50%;right:12px;& path{fill:var(--sb-text-muted-color)}}}", document.head.appendChild(style);
399
+ }
400
+ var Select_default = { wrapper: "sb-2JMgSq-wrapper", select: "sb-2JMgSq-select" };
401
+
402
+ // src/addon-docs/blocks/controls/options/Select.tsx
403
+ import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
404
+ var NO_SELECTION = "Choose option...", SingleSelect = ({
405
+ name,
406
+ storyId,
407
+ controlsId,
408
+ value,
409
+ options,
410
+ onChange,
411
+ argType,
412
+ required
413
+ }) => {
414
+ let handleChange = (e2) => {
415
+ onChange(options[e2.currentTarget.value]);
416
+ }, selection = selectedKey(value, options) || NO_SELECTION, controlId = getControlId(name, storyId, controlsId), readonly = !!argType?.table?.readonly;
417
+ return jsxs5("span", { className: Select_default.wrapper, children: [
418
+ jsx6(ChevronSmallDownIcon, {}),
419
+ jsx6("label", { htmlFor: controlId, className: "sb-sr-only", children: name }),
420
+ jsxs5(
421
+ "select",
422
+ {
423
+ className: Select_default.select,
424
+ disabled: readonly,
425
+ id: controlId,
426
+ value: selection,
427
+ onChange: handleChange,
428
+ "aria-required": required || void 0,
429
+ children: [
430
+ jsx6("option", { disabled: selection === NO_SELECTION, children: NO_SELECTION }, "no-selection"),
431
+ Object.keys(options).map((key) => jsx6("option", { value: key, children: key }, key))
432
+ ]
433
+ }
434
+ )
435
+ ] });
436
+ }, MultiSelect = ({
437
+ name,
438
+ storyId,
439
+ controlsId,
440
+ value,
441
+ options,
442
+ onChange,
443
+ argType,
444
+ required
445
+ }) => {
446
+ let handleChange = (e2) => {
447
+ let selection2 = Array.from(e2.currentTarget.options).filter((option) => option.selected).map((option) => option.value);
448
+ onChange(selectedValues(selection2, options));
449
+ }, selection = selectedKeys(value, options), controlId = getControlId(name, storyId, controlsId), readonly = !!argType?.table?.readonly;
450
+ return jsxs5("span", { className: Select_default.wrapper, children: [
451
+ jsx6("label", { htmlFor: controlId, className: "sb-sr-only", children: name }),
452
+ jsx6(
453
+ "select",
454
+ {
455
+ className: Select_default.select,
456
+ disabled: readonly,
457
+ id: controlId,
458
+ multiple: !0,
459
+ value: selection,
460
+ onChange: handleChange,
461
+ "aria-required": required || void 0,
462
+ children: Object.keys(options).map((key) => jsx6("option", { value: key, children: key }, key))
463
+ }
464
+ )
465
+ ] });
466
+ }, SelectControl = (props) => {
467
+ let { name, options } = props;
468
+ return options ? props.isMulti ? jsx6(MultiSelect, { ...props }) : jsx6(SingleSelect, { ...props }) : (logger3.warn(`Select with no options: ${name}`), jsx6(Fragment3, { children: "-" }));
469
+ };
470
+
471
+ // src/addon-docs/blocks/controls/options/Options.tsx
472
+ import { jsx as jsx7 } from "react/jsx-runtime";
473
+ var normalizeOptions = (options, labels) => Array.isArray(options) ? options.reduce((acc, item) => {
474
+ let label = labels != null && !Array.isArray(labels) && typeof labels[item] == "string" ? labels[item] : String(item);
475
+ return acc[label] = item, acc;
476
+ }, {}) : options, Controls = {
477
+ check: CheckboxControl,
478
+ "inline-check": CheckboxControl,
479
+ radio: RadioControl,
480
+ "inline-radio": RadioControl,
481
+ select: SelectControl,
482
+ "multi-select": SelectControl
483
+ }, OptionsControl = (props) => {
484
+ let { type = "select", labels, argType } = props, normalized = {
485
+ ...props,
486
+ argType,
487
+ options: argType ? normalizeOptions(argType.options, labels) : {},
488
+ isInline: type.includes("inline"),
489
+ isMulti: type.includes("multi")
490
+ }, Control = Controls[type];
491
+ if (Control)
492
+ return jsx7(Control, { ...normalized });
493
+ throw new Error(`Unknown options type: ${type}`);
494
+ };
495
+
496
+ // src/addon-docs/blocks/controls/Object.tsx
497
+ import { useCallback as useCallback3, useEffect as useEffect4, useMemo, useRef as useRef3, useState as useState4 } from "react";
498
+ import { Button as Button3, Form as Form3, ToggleButton } from "@aussieljk/forkbook/internal/components";
499
+ import { AddIcon, EditIcon, SubtractIcon } from "@storybook/icons";
500
+
501
+ // src/addon-docs/blocks/controls/react-editable-json-tree/index.tsx
502
+ import { Component as Component2 } from "react";
503
+
504
+ // src/addon-docs/blocks/controls/react-editable-json-tree/JsonNodes.tsx
505
+ import { Component, cloneElement } from "react";
506
+
507
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/react-editable-json-tree/JsonNodeAccordion.module.css
508
+ var id6 = "core/src/addon-docs/blocks/controls/react-editable-json-tree/JsonNodeAccordion.module.css";
509
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id6}"]`)) {
510
+ let style = document.createElement("style");
511
+ style.setAttribute("data-sb-css", id6), style.textContent = '.sb-dnyE6G-container{position:relative;&:hover{&>.rejt-accordion-button:after{background:var(--sb-color-secondary)}&>.rejt-accordion-region>:is(.rejt-plus-menu,.rejt-minus-menu){opacity:1}}}.sb-dnyE6G-trigger{color:var(--sb-color-secondary);background:0 0;border:none;margin-right:3px;padding:0;line-height:22px;&:after{content:"";opacity:.1;background:0 0;border-radius:4px;width:100%;height:22px;margin-left:-1rem;padding-right:20px;transition:background .2s;display:block;position:absolute;top:0}&:before{content:"";position:absolute}&[aria-expanded=true]:before{border-top:3px solid #9999;border-left:3px solid #0000;border-right:3px solid #0000;top:10px;left:-10px}&[aria-expanded=false]:before{border-top:3px solid #0000;border-bottom:3px solid #0000;border-left:3px solid #9999;top:8px;left:-8px}}.sb-dnyE6G-region{display:inline}', document.head.appendChild(style);
512
+ }
513
+ var JsonNodeAccordion_default = { region: "sb-dnyE6G-region", container: "sb-dnyE6G-container", trigger: "sb-dnyE6G-trigger" };
514
+
515
+ // src/addon-docs/blocks/controls/react-editable-json-tree/JsonNodeAccordion.tsx
516
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
517
+ function JsonNodeAccordion({
518
+ children,
519
+ name,
520
+ collapsed,
521
+ keyPath,
522
+ deep,
523
+ className,
524
+ ...props
525
+ }) {
526
+ let accordionKey = `${keyPath.at(-1) ?? "root"}-${name}-${deep}`, ids = {
527
+ trigger: `${accordionKey}-trigger`,
528
+ region: `${accordionKey}-region`
529
+ }, Container = keyPath.length > 0 ? "li" : "div";
530
+ return jsxs6(Container, { className: JsonNodeAccordion_default.container, children: [
531
+ jsxs6(
532
+ "button",
533
+ {
534
+ type: "button",
535
+ "aria-expanded": !collapsed,
536
+ id: ids.trigger,
537
+ "aria-controls": ids.region,
538
+ className: clsx(JsonNodeAccordion_default.trigger, "rejt-accordion-button", className),
539
+ ...props,
540
+ children: [
541
+ name,
542
+ " :"
543
+ ]
544
+ }
545
+ ),
546
+ jsx8(
547
+ "div",
548
+ {
549
+ role: "group",
550
+ id: ids.region,
551
+ "aria-labelledby": ids.trigger,
552
+ className: clsx(JsonNodeAccordion_default.region, "rejt-accordion-region"),
553
+ children
554
+ }
555
+ )
556
+ ] });
557
+ }
558
+
559
+ // src/addon-docs/blocks/controls/react-editable-json-tree/types/dataTypes.ts
560
+ var ERROR = "Error", OBJECT = "Object", ARRAY = "Array", STRING = "String", NUMBER = "Number", BOOLEAN = "Boolean", DATE = "Date", NULL = "Null", UNDEFINED = "Undefined", FUNCTION = "Function", SYMBOL = "Symbol";
561
+
562
+ // src/addon-docs/blocks/controls/react-editable-json-tree/types/deltaTypes.ts
563
+ var ADD_DELTA_TYPE = "ADD_DELTA_TYPE", REMOVE_DELTA_TYPE = "REMOVE_DELTA_TYPE", UPDATE_DELTA_TYPE = "UPDATE_DELTA_TYPE";
564
+
565
+ // src/addon-docs/blocks/controls/react-editable-json-tree/types/inputUsageTypes.ts
566
+ var VALUE = "value";
567
+
568
+ // src/addon-docs/blocks/controls/react-editable-json-tree/utils/objectTypes.ts
569
+ function getObjectType(obj) {
570
+ return obj !== null && typeof obj == "object" && !Array.isArray(obj) && typeof obj[Symbol.iterator] == "function" ? "Iterable" : Object.prototype.toString.call(obj).slice(8, -1);
571
+ }
572
+ function isComponentWillChange(oldValue, newValue) {
573
+ let oldType = getObjectType(oldValue), newType = getObjectType(newValue);
574
+ return (oldType === "Function" || newType === "Function") && newType !== oldType;
575
+ }
576
+
577
+ // src/addon-docs/blocks/controls/react-editable-json-tree/JsonNodes.tsx
578
+ import { Fragment as Fragment4, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
579
+ var JsonAddValue = class extends Component {
580
+ constructor(props) {
581
+ super(props), this.state = {
582
+ inputRefKey: null,
583
+ inputRefValue: null
584
+ }, this.refInputValue = this.refInputValue.bind(this), this.refInputKey = this.refInputKey.bind(this), this.onKeydown = this.onKeydown.bind(this), this.onSubmit = this.onSubmit.bind(this);
585
+ }
586
+ componentDidMount() {
587
+ let { inputRefKey, inputRefValue } = this.state, { onlyValue } = this.props;
588
+ inputRefKey && typeof inputRefKey.focus == "function" && inputRefKey.focus(), onlyValue && inputRefValue && typeof inputRefValue.focus == "function" && inputRefValue.focus();
589
+ }
590
+ onKeydown(event) {
591
+ if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || event.repeat)
592
+ return;
593
+ let { inputRefKey, inputRefValue } = this.state, { addButtonElement, handleCancel } = this.props;
594
+ [inputRefKey, inputRefValue, addButtonElement].some(
595
+ (elm) => elm === event.target
596
+ ) && ((event.code === "Enter" || event.key === "Enter") && (event.preventDefault(), this.onSubmit()), (event.code === "Escape" || event.key === "Escape") && (event.preventDefault(), handleCancel()));
597
+ }
598
+ onSubmit() {
599
+ let { handleAdd, onlyValue, onSubmitValueParser, keyPath, deep } = this.props, { inputRefKey, inputRefValue } = this.state, result = {};
600
+ if (!onlyValue) {
601
+ if (!inputRefKey.value)
602
+ return;
603
+ result.key = inputRefKey.value;
604
+ }
605
+ result.newValue = onSubmitValueParser(!1, keyPath, deep, result.key, inputRefValue.value), handleAdd(result);
606
+ }
607
+ refInputKey(node) {
608
+ this.state.inputRefKey = node;
609
+ }
610
+ refInputValue(node) {
611
+ this.state.inputRefValue = node;
612
+ }
613
+ render() {
614
+ let {
615
+ handleCancel,
616
+ onlyValue,
617
+ addButtonElement,
618
+ cancelButtonElement,
619
+ inputElementGenerator,
620
+ keyPath,
621
+ deep
622
+ } = this.props, addButtonElementLayout = addButtonElement && cloneElement(addButtonElement, {
623
+ onClick: this.onSubmit
624
+ }), cancelButtonElementLayout = cancelButtonElement && cloneElement(cancelButtonElement, {
625
+ onClick: handleCancel
626
+ }), inputElementValue = inputElementGenerator(VALUE, keyPath, deep), inputElementValueLayout = cloneElement(inputElementValue, {
627
+ placeholder: "Value",
628
+ ref: this.refInputValue,
629
+ onKeyDown: this.onKeydown
630
+ }), inputElementKeyLayout = null;
631
+ if (!onlyValue) {
632
+ let inputElementKey = inputElementGenerator("key", keyPath, deep);
633
+ inputElementKeyLayout = cloneElement(inputElementKey, {
634
+ placeholder: "Key",
635
+ ref: this.refInputKey,
636
+ onKeyDown: this.onKeydown
637
+ });
638
+ }
639
+ return jsxs7("span", { className: "rejt-add-value-node", children: [
640
+ inputElementKeyLayout,
641
+ inputElementValueLayout,
642
+ addButtonElementLayout,
643
+ cancelButtonElementLayout
644
+ ] });
645
+ }
646
+ };
647
+ JsonAddValue.defaultProps = {
648
+ onlyValue: !1,
649
+ addButtonElement: jsx9("button", { children: "+" }),
650
+ cancelButtonElement: jsx9("button", { children: "c" })
651
+ };
652
+ var JsonArray = class extends Component {
653
+ constructor(props) {
654
+ super(props);
655
+ let keyPath = [...props.keyPath || [], props.name];
656
+ this.state = {
657
+ data: props.data,
658
+ name: props.name,
659
+ keyPath: keyPath ?? [],
660
+ deep: props.deep ?? 0,
661
+ nextDeep: (props.deep ?? 0) + 1,
662
+ collapsed: props.isCollapsed(keyPath, props.deep ?? 0, props.data),
663
+ addFormVisible: !1
664
+ }, this.handleCollapseMode = this.handleCollapseMode.bind(this), this.handleRemoveItem = this.handleRemoveItem.bind(this), this.handleAddMode = this.handleAddMode.bind(this), this.handleAddValueAdd = this.handleAddValueAdd.bind(this), this.handleAddValueCancel = this.handleAddValueCancel.bind(this), this.handleEditValue = this.handleEditValue.bind(this), this.onChildUpdate = this.onChildUpdate.bind(this), this.renderCollapsed = this.renderCollapsed.bind(this), this.renderNotCollapsed = this.renderNotCollapsed.bind(this);
665
+ }
666
+ static getDerivedStateFromProps(props, state) {
667
+ return props.data !== state.data ? { data: props.data } : null;
668
+ }
669
+ onChildUpdate(childKey, childData) {
670
+ let { data, keyPath = [] } = this.state;
671
+ data[childKey] = childData, this.setState({
672
+ data
673
+ });
674
+ let { onUpdate } = this.props, size = keyPath.length;
675
+ onUpdate(keyPath[size - 1], data);
676
+ }
677
+ handleAddMode() {
678
+ this.setState({
679
+ addFormVisible: !0
680
+ });
681
+ }
682
+ handleCollapseMode() {
683
+ this.setState((state) => ({
684
+ collapsed: !state.collapsed
685
+ }));
686
+ }
687
+ handleRemoveItem(index) {
688
+ return () => {
689
+ let { beforeRemoveAction, logger: logger4 } = this.props, { data, keyPath, nextDeep: deep } = this.state, oldValue = data[index];
690
+ (beforeRemoveAction || Promise.resolve.bind(Promise))(index, keyPath, deep, oldValue).then(() => {
691
+ let deltaUpdateResult = {
692
+ keyPath,
693
+ deep,
694
+ key: index,
695
+ oldValue,
696
+ type: REMOVE_DELTA_TYPE
697
+ };
698
+ data.splice(index, 1), this.setState({ data });
699
+ let { onUpdate, onDeltaUpdate } = this.props;
700
+ onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate(deltaUpdateResult);
701
+ }).catch(logger4.error);
702
+ };
703
+ }
704
+ handleAddValueAdd({ newValue }) {
705
+ let { data, keyPath = [], nextDeep: deep } = this.state, { beforeAddAction, logger: logger4 } = this.props, key = data.length;
706
+ (beforeAddAction || Promise.resolve.bind(Promise))(key, keyPath, deep, newValue).then(() => {
707
+ data[key] = newValue, this.setState({
708
+ data
709
+ }), this.handleAddValueCancel();
710
+ let { onUpdate, onDeltaUpdate } = this.props;
711
+ onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate({
712
+ type: ADD_DELTA_TYPE,
713
+ keyPath,
714
+ deep,
715
+ key,
716
+ newValue
717
+ });
718
+ }).catch(logger4.error);
719
+ }
720
+ handleAddValueCancel() {
721
+ this.setState({
722
+ addFormVisible: !1
723
+ });
724
+ }
725
+ handleEditValue({ key, value }) {
726
+ return new Promise((resolve, reject) => {
727
+ let { beforeUpdateAction } = this.props, { data, keyPath, nextDeep: deep } = this.state, oldValue = data[key];
728
+ (beforeUpdateAction || Promise.resolve.bind(Promise))(key, keyPath, deep, oldValue, value).then(() => {
729
+ data[key] = value, this.setState({
730
+ data
731
+ });
732
+ let { onUpdate, onDeltaUpdate } = this.props;
733
+ onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate({
734
+ type: UPDATE_DELTA_TYPE,
735
+ keyPath,
736
+ deep,
737
+ key,
738
+ newValue: value,
739
+ oldValue
740
+ }), resolve(void 0);
741
+ }).catch(reject);
742
+ });
743
+ }
744
+ renderCollapsed() {
745
+ let { name, data, keyPath, deep } = this.state, { handleRemove, readOnly, dataType, minusMenuElement } = this.props, isReadOnly = readOnly(name, data, keyPath, deep, dataType), removeItemButton = minusMenuElement && cloneElement(minusMenuElement, {
746
+ onClick: handleRemove,
747
+ className: "rejt-minus-menu",
748
+ "aria-label": `remove the array '${String(name)}'`
749
+ });
750
+ return jsxs7(Fragment4, { children: [
751
+ jsxs7("span", { className: "rejt-collapsed-value", children: [
752
+ "[...] ",
753
+ data.length,
754
+ " ",
755
+ data.length === 1 ? "item" : "items"
756
+ ] }),
757
+ !isReadOnly && removeItemButton
758
+ ] });
759
+ }
760
+ renderNotCollapsed() {
761
+ let { name, data, keyPath, deep, addFormVisible, nextDeep } = this.state, {
762
+ isCollapsed,
763
+ handleRemove,
764
+ onDeltaUpdate,
765
+ readOnly,
766
+ dataType,
767
+ addButtonElement,
768
+ cancelButtonElement,
769
+ inputElementGenerator,
770
+ textareaElementGenerator,
771
+ minusMenuElement,
772
+ plusMenuElement,
773
+ beforeRemoveAction,
774
+ beforeAddAction,
775
+ beforeUpdateAction,
776
+ logger: logger4,
777
+ onSubmitValueParser
778
+ } = this.props, isReadOnly = readOnly(name, data, keyPath, deep, dataType), addItemButton = plusMenuElement && cloneElement(plusMenuElement, {
779
+ onClick: this.handleAddMode,
780
+ className: "rejt-plus-menu",
781
+ "aria-label": `add a new item to the '${String(name)}' array`
782
+ }), removeItemButton = minusMenuElement && cloneElement(minusMenuElement, {
783
+ onClick: handleRemove,
784
+ className: "rejt-minus-menu",
785
+ "aria-label": `remove the array '${String(name)}'`
786
+ });
787
+ return jsxs7(Fragment4, { children: [
788
+ jsx9("span", { className: "rejt-not-collapsed-delimiter", children: "[" }),
789
+ !addFormVisible && addItemButton,
790
+ jsx9("ul", { className: "rejt-not-collapsed-list", children: data.map((item, index) => jsx9(
791
+ JsonNode,
792
+ {
793
+ name: index.toString(),
794
+ data: item,
795
+ keyPath,
796
+ deep: nextDeep,
797
+ isCollapsed,
798
+ handleRemove: this.handleRemoveItem(index),
799
+ handleUpdateValue: this.handleEditValue,
800
+ onUpdate: this.onChildUpdate,
801
+ onDeltaUpdate,
802
+ readOnly,
803
+ addButtonElement,
804
+ cancelButtonElement,
805
+ inputElementGenerator,
806
+ textareaElementGenerator,
807
+ minusMenuElement,
808
+ plusMenuElement,
809
+ beforeRemoveAction,
810
+ beforeAddAction,
811
+ beforeUpdateAction,
812
+ logger: logger4,
813
+ onSubmitValueParser
814
+ },
815
+ index
816
+ )) }),
817
+ !isReadOnly && addFormVisible && jsx9("div", { className: "rejt-add-form", children: jsx9(
818
+ JsonAddValue,
819
+ {
820
+ handleAdd: this.handleAddValueAdd,
821
+ handleCancel: this.handleAddValueCancel,
822
+ onlyValue: !0,
823
+ addButtonElement,
824
+ cancelButtonElement,
825
+ inputElementGenerator,
826
+ keyPath,
827
+ deep,
828
+ onSubmitValueParser
829
+ }
830
+ ) }),
831
+ jsx9("span", { className: "rejt-not-collapsed-delimiter", children: "]" }),
832
+ !isReadOnly && removeItemButton
833
+ ] });
834
+ }
835
+ render() {
836
+ let { name, collapsed, keyPath, deep } = this.state, value = collapsed ? this.renderCollapsed() : this.renderNotCollapsed();
837
+ return jsx9(
838
+ JsonNodeAccordion,
839
+ {
840
+ name,
841
+ collapsed,
842
+ deep,
843
+ keyPath,
844
+ onClick: this.handleCollapseMode,
845
+ children: value
846
+ }
847
+ );
848
+ }
849
+ };
850
+ JsonArray.defaultProps = {
851
+ keyPath: [],
852
+ deep: 0,
853
+ minusMenuElement: jsx9("span", { children: " - " }),
854
+ plusMenuElement: jsx9("span", { children: " + " })
855
+ };
856
+ var JsonFunctionValue = class extends Component {
857
+ constructor(props) {
858
+ super(props);
859
+ let keyPath = [...props.keyPath || [], props.name];
860
+ this.state = {
861
+ value: props.value,
862
+ name: props.name,
863
+ keyPath: keyPath ?? [],
864
+ deep: props.deep ?? 0,
865
+ editEnabled: !1,
866
+ inputRef: null
867
+ }, this.handleEditMode = this.handleEditMode.bind(this), this.refInput = this.refInput.bind(this), this.handleCancelEdit = this.handleCancelEdit.bind(this), this.handleEdit = this.handleEdit.bind(this), this.onKeydown = this.onKeydown.bind(this);
868
+ }
869
+ static getDerivedStateFromProps(props, state) {
870
+ return props.value !== state.value ? { value: props.value } : null;
871
+ }
872
+ componentDidUpdate() {
873
+ let { editEnabled, inputRef, name, value, keyPath, deep } = this.state, { readOnly, dataType } = this.props, readOnlyResult = readOnly(name, value, keyPath, deep, dataType);
874
+ editEnabled && !readOnlyResult && typeof inputRef.focus == "function" && inputRef.focus();
875
+ }
876
+ onKeydown(event) {
877
+ let { inputRef } = this.state;
878
+ event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || event.repeat || inputRef !== event.target || ((event.code === "Enter" || event.key === "Enter") && (event.preventDefault(), this.handleEdit()), (event.code === "Escape" || event.key === "Escape") && (event.preventDefault(), this.handleCancelEdit()));
879
+ }
880
+ handleEdit() {
881
+ let { handleUpdateValue, originalValue, logger: logger4, onSubmitValueParser, keyPath } = this.props, { inputRef, name, deep } = this.state;
882
+ if (!inputRef)
883
+ return;
884
+ let newValue = onSubmitValueParser(!0, keyPath, deep, name, inputRef.value), result = {
885
+ value: newValue,
886
+ key: name
887
+ };
888
+ (handleUpdateValue || Promise.resolve.bind(Promise))(result).then(() => {
889
+ isComponentWillChange(originalValue, newValue) || this.handleCancelEdit();
890
+ }).catch(logger4.error);
891
+ }
892
+ handleEditMode() {
893
+ this.setState({
894
+ editEnabled: !0
895
+ });
896
+ }
897
+ refInput(node) {
898
+ this.state.inputRef = node;
899
+ }
900
+ handleCancelEdit() {
901
+ this.setState({
902
+ editEnabled: !1
903
+ });
904
+ }
905
+ render() {
906
+ let { name, value, editEnabled, keyPath, deep } = this.state, {
907
+ handleRemove,
908
+ originalValue,
909
+ readOnly,
910
+ dataType,
911
+ textareaElementGenerator,
912
+ minusMenuElement,
913
+ keyPath: comeFromKeyPath = []
914
+ } = this.props, result = null, minusElement = null, resultOnlyResult = readOnly(name, originalValue, keyPath, deep, dataType);
915
+ if (editEnabled && !resultOnlyResult) {
916
+ let textareaElement = textareaElementGenerator(
917
+ VALUE,
918
+ comeFromKeyPath,
919
+ deep,
920
+ name,
921
+ originalValue,
922
+ dataType
923
+ ), textareaElementLayout = cloneElement(textareaElement, {
924
+ ref: this.refInput,
925
+ defaultValue: value,
926
+ onKeyDown: this.onKeydown
927
+ });
928
+ result = jsx9("span", { className: "rejt-edit-form", children: textareaElementLayout }), minusElement = null;
929
+ } else {
930
+ result = jsx9("span", { className: "rejt-value", onClick: resultOnlyResult ? void 0 : this.handleEditMode, children: value });
931
+ let parentPropertyName = comeFromKeyPath.at(-1), minusMenuLayout = minusMenuElement && cloneElement(minusMenuElement, {
932
+ onClick: handleRemove,
933
+ className: "rejt-minus-menu",
934
+ "aria-label": `remove the function '${String(name)}'${String(parentPropertyName) ? ` from '${String(parentPropertyName)}'` : ""}`
935
+ });
936
+ minusElement = resultOnlyResult ? null : minusMenuLayout;
937
+ }
938
+ return jsxs7("li", { className: "rejt-value-node", children: [
939
+ jsxs7("span", { className: "rejt-name", children: [
940
+ name,
941
+ " : "
942
+ ] }),
943
+ result,
944
+ minusElement
945
+ ] });
946
+ }
947
+ };
948
+ JsonFunctionValue.defaultProps = {
949
+ keyPath: [],
950
+ deep: 0,
951
+ handleUpdateValue: () => {
952
+ },
953
+ cancelButtonElement: jsx9("button", { children: "c" }),
954
+ minusMenuElement: jsx9("span", { children: " - " })
955
+ };
956
+ var JsonNode = class extends Component {
957
+ constructor(props) {
958
+ super(props), this.state = {
959
+ data: props.data,
960
+ name: props.name,
961
+ keyPath: props.keyPath ?? [],
962
+ deep: props.deep ?? 0
963
+ };
964
+ }
965
+ static getDerivedStateFromProps(props, state) {
966
+ return props.data !== state.data ? { data: props.data } : null;
967
+ }
968
+ render() {
969
+ let { data, name, keyPath, deep } = this.state, {
970
+ isCollapsed,
971
+ handleRemove,
972
+ handleUpdateValue,
973
+ onUpdate,
974
+ onDeltaUpdate,
975
+ readOnly,
976
+ addButtonElement,
977
+ cancelButtonElement,
978
+ inputElementGenerator,
979
+ textareaElementGenerator,
980
+ minusMenuElement,
981
+ plusMenuElement,
982
+ beforeRemoveAction,
983
+ beforeAddAction,
984
+ beforeUpdateAction,
985
+ logger: logger4,
986
+ onSubmitValueParser
987
+ } = this.props, readOnlyTrue = () => !0, dataType = getObjectType(data);
988
+ switch (dataType) {
989
+ case ERROR:
990
+ return jsx9(
991
+ JsonObject,
992
+ {
993
+ data,
994
+ name,
995
+ isCollapsed,
996
+ keyPath,
997
+ deep,
998
+ handleRemove,
999
+ onUpdate,
1000
+ onDeltaUpdate,
1001
+ readOnly: readOnlyTrue,
1002
+ dataType,
1003
+ addButtonElement,
1004
+ cancelButtonElement,
1005
+ inputElementGenerator,
1006
+ textareaElementGenerator,
1007
+ minusMenuElement,
1008
+ plusMenuElement,
1009
+ beforeRemoveAction,
1010
+ beforeAddAction,
1011
+ beforeUpdateAction,
1012
+ logger: logger4,
1013
+ onSubmitValueParser
1014
+ }
1015
+ );
1016
+ case OBJECT:
1017
+ return jsx9(
1018
+ JsonObject,
1019
+ {
1020
+ data,
1021
+ name,
1022
+ isCollapsed,
1023
+ keyPath,
1024
+ deep,
1025
+ handleRemove,
1026
+ onUpdate,
1027
+ onDeltaUpdate,
1028
+ readOnly,
1029
+ dataType,
1030
+ addButtonElement,
1031
+ cancelButtonElement,
1032
+ inputElementGenerator,
1033
+ textareaElementGenerator,
1034
+ minusMenuElement,
1035
+ plusMenuElement,
1036
+ beforeRemoveAction,
1037
+ beforeAddAction,
1038
+ beforeUpdateAction,
1039
+ logger: logger4,
1040
+ onSubmitValueParser
1041
+ }
1042
+ );
1043
+ case ARRAY:
1044
+ return jsx9(
1045
+ JsonArray,
1046
+ {
1047
+ data,
1048
+ name,
1049
+ isCollapsed,
1050
+ keyPath,
1051
+ deep,
1052
+ handleRemove,
1053
+ onUpdate,
1054
+ onDeltaUpdate,
1055
+ readOnly,
1056
+ dataType,
1057
+ addButtonElement,
1058
+ cancelButtonElement,
1059
+ inputElementGenerator,
1060
+ textareaElementGenerator,
1061
+ minusMenuElement,
1062
+ plusMenuElement,
1063
+ beforeRemoveAction,
1064
+ beforeAddAction,
1065
+ beforeUpdateAction,
1066
+ logger: logger4,
1067
+ onSubmitValueParser
1068
+ }
1069
+ );
1070
+ case STRING:
1071
+ return jsx9(
1072
+ JsonValue,
1073
+ {
1074
+ name,
1075
+ value: `"${data}"`,
1076
+ originalValue: data,
1077
+ keyPath,
1078
+ deep,
1079
+ handleRemove,
1080
+ handleUpdateValue,
1081
+ readOnly,
1082
+ dataType,
1083
+ cancelButtonElement,
1084
+ inputElementGenerator,
1085
+ minusMenuElement,
1086
+ logger: logger4,
1087
+ onSubmitValueParser
1088
+ }
1089
+ );
1090
+ case NUMBER:
1091
+ return jsx9(
1092
+ JsonValue,
1093
+ {
1094
+ name,
1095
+ value: data,
1096
+ originalValue: data,
1097
+ keyPath,
1098
+ deep,
1099
+ handleRemove,
1100
+ handleUpdateValue,
1101
+ readOnly,
1102
+ dataType,
1103
+ cancelButtonElement,
1104
+ inputElementGenerator,
1105
+ minusMenuElement,
1106
+ logger: logger4,
1107
+ onSubmitValueParser
1108
+ }
1109
+ );
1110
+ case BOOLEAN:
1111
+ return jsx9(
1112
+ JsonValue,
1113
+ {
1114
+ name,
1115
+ value: data ? "true" : "false",
1116
+ originalValue: data,
1117
+ keyPath,
1118
+ deep,
1119
+ handleRemove,
1120
+ handleUpdateValue,
1121
+ readOnly,
1122
+ dataType,
1123
+ cancelButtonElement,
1124
+ inputElementGenerator,
1125
+ minusMenuElement,
1126
+ logger: logger4,
1127
+ onSubmitValueParser
1128
+ }
1129
+ );
1130
+ case DATE:
1131
+ return jsx9(
1132
+ JsonValue,
1133
+ {
1134
+ name,
1135
+ value: data.toISOString(),
1136
+ originalValue: data,
1137
+ keyPath,
1138
+ deep,
1139
+ handleRemove,
1140
+ handleUpdateValue,
1141
+ readOnly: readOnlyTrue,
1142
+ dataType,
1143
+ cancelButtonElement,
1144
+ inputElementGenerator,
1145
+ minusMenuElement,
1146
+ logger: logger4,
1147
+ onSubmitValueParser
1148
+ }
1149
+ );
1150
+ case NULL:
1151
+ return jsx9(
1152
+ JsonValue,
1153
+ {
1154
+ name,
1155
+ value: "null",
1156
+ originalValue: "null",
1157
+ keyPath,
1158
+ deep,
1159
+ handleRemove,
1160
+ handleUpdateValue,
1161
+ readOnly,
1162
+ dataType,
1163
+ cancelButtonElement,
1164
+ inputElementGenerator,
1165
+ minusMenuElement,
1166
+ logger: logger4,
1167
+ onSubmitValueParser
1168
+ }
1169
+ );
1170
+ case UNDEFINED:
1171
+ return jsx9(
1172
+ JsonValue,
1173
+ {
1174
+ name,
1175
+ value: "undefined",
1176
+ originalValue: "undefined",
1177
+ keyPath,
1178
+ deep,
1179
+ handleRemove,
1180
+ handleUpdateValue,
1181
+ readOnly,
1182
+ dataType,
1183
+ cancelButtonElement,
1184
+ inputElementGenerator,
1185
+ minusMenuElement,
1186
+ logger: logger4,
1187
+ onSubmitValueParser
1188
+ }
1189
+ );
1190
+ case FUNCTION:
1191
+ return jsx9(
1192
+ JsonFunctionValue,
1193
+ {
1194
+ name,
1195
+ value: data.toString(),
1196
+ originalValue: data,
1197
+ keyPath,
1198
+ deep,
1199
+ handleRemove,
1200
+ handleUpdateValue,
1201
+ readOnly,
1202
+ dataType,
1203
+ cancelButtonElement,
1204
+ textareaElementGenerator,
1205
+ minusMenuElement,
1206
+ logger: logger4,
1207
+ onSubmitValueParser
1208
+ }
1209
+ );
1210
+ case SYMBOL:
1211
+ return jsx9(
1212
+ JsonValue,
1213
+ {
1214
+ name,
1215
+ value: data.toString(),
1216
+ originalValue: data,
1217
+ keyPath,
1218
+ deep,
1219
+ handleRemove,
1220
+ handleUpdateValue,
1221
+ readOnly: readOnlyTrue,
1222
+ dataType,
1223
+ cancelButtonElement,
1224
+ inputElementGenerator,
1225
+ minusMenuElement,
1226
+ logger: logger4,
1227
+ onSubmitValueParser
1228
+ }
1229
+ );
1230
+ default:
1231
+ return null;
1232
+ }
1233
+ }
1234
+ };
1235
+ JsonNode.defaultProps = {
1236
+ keyPath: [],
1237
+ deep: 0
1238
+ };
1239
+ var JsonObject = class extends Component {
1240
+ constructor(props) {
1241
+ super(props);
1242
+ let keyPath = props.deep === -1 ? [] : [...props.keyPath || [], props.name];
1243
+ this.state = {
1244
+ name: props.name,
1245
+ data: props.data,
1246
+ keyPath: keyPath ?? [],
1247
+ deep: props.deep ?? 0,
1248
+ nextDeep: (props.deep ?? 0) + 1,
1249
+ collapsed: props.isCollapsed(keyPath, props.deep ?? 0, props.data),
1250
+ addFormVisible: !1
1251
+ }, this.handleCollapseMode = this.handleCollapseMode.bind(this), this.handleRemoveValue = this.handleRemoveValue.bind(this), this.handleAddMode = this.handleAddMode.bind(this), this.handleAddValueAdd = this.handleAddValueAdd.bind(this), this.handleAddValueCancel = this.handleAddValueCancel.bind(this), this.handleEditValue = this.handleEditValue.bind(this), this.onChildUpdate = this.onChildUpdate.bind(this), this.renderCollapsed = this.renderCollapsed.bind(this), this.renderNotCollapsed = this.renderNotCollapsed.bind(this);
1252
+ }
1253
+ static getDerivedStateFromProps(props, state) {
1254
+ return props.data !== state.data ? { data: props.data } : null;
1255
+ }
1256
+ onChildUpdate(childKey, childData) {
1257
+ let { data, keyPath = [] } = this.state;
1258
+ data[childKey] = childData, this.setState({
1259
+ data
1260
+ });
1261
+ let { onUpdate } = this.props, size = keyPath.length;
1262
+ onUpdate(keyPath[size - 1], data);
1263
+ }
1264
+ handleAddMode() {
1265
+ this.setState({
1266
+ addFormVisible: !0
1267
+ });
1268
+ }
1269
+ handleAddValueCancel() {
1270
+ this.setState({
1271
+ addFormVisible: !1
1272
+ });
1273
+ }
1274
+ handleAddValueAdd({ key, newValue }) {
1275
+ let { data, keyPath = [], nextDeep: deep } = this.state, { beforeAddAction, logger: logger4 } = this.props;
1276
+ (beforeAddAction || Promise.resolve.bind(Promise))(key, keyPath, deep, newValue).then(() => {
1277
+ data[key] = newValue, this.setState({
1278
+ data
1279
+ }), this.handleAddValueCancel();
1280
+ let { onUpdate, onDeltaUpdate } = this.props;
1281
+ onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate({
1282
+ type: ADD_DELTA_TYPE,
1283
+ keyPath,
1284
+ deep,
1285
+ key,
1286
+ newValue
1287
+ });
1288
+ }).catch(logger4.error);
1289
+ }
1290
+ handleRemoveValue(key) {
1291
+ return () => {
1292
+ let { beforeRemoveAction, logger: logger4 } = this.props, { data, keyPath = [], nextDeep: deep } = this.state, oldValue = data[key];
1293
+ (beforeRemoveAction || Promise.resolve.bind(Promise))(key, keyPath, deep, oldValue).then(() => {
1294
+ let deltaUpdateResult = {
1295
+ keyPath,
1296
+ deep,
1297
+ key,
1298
+ oldValue,
1299
+ type: REMOVE_DELTA_TYPE
1300
+ };
1301
+ delete data[key], this.setState({ data });
1302
+ let { onUpdate, onDeltaUpdate } = this.props;
1303
+ onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate(deltaUpdateResult);
1304
+ }).catch(logger4.error);
1305
+ };
1306
+ }
1307
+ handleCollapseMode() {
1308
+ this.setState((state) => ({
1309
+ collapsed: !state.collapsed
1310
+ }));
1311
+ }
1312
+ handleEditValue({ key, value }) {
1313
+ return new Promise((resolve, reject) => {
1314
+ let { beforeUpdateAction } = this.props, { data, keyPath = [], nextDeep: deep } = this.state, oldValue = data[key];
1315
+ (beforeUpdateAction || Promise.resolve.bind(Promise))(key, keyPath, deep, oldValue, value).then(() => {
1316
+ data[key] = value, this.setState({
1317
+ data
1318
+ });
1319
+ let { onUpdate, onDeltaUpdate } = this.props;
1320
+ onUpdate(keyPath[keyPath.length - 1], data), onDeltaUpdate({
1321
+ type: UPDATE_DELTA_TYPE,
1322
+ keyPath,
1323
+ deep,
1324
+ key,
1325
+ newValue: value,
1326
+ oldValue
1327
+ }), resolve();
1328
+ }).catch(reject);
1329
+ });
1330
+ }
1331
+ renderCollapsed() {
1332
+ let { name, keyPath, deep, data } = this.state, { handleRemove, readOnly, dataType, minusMenuElement } = this.props, keyList = Object.getOwnPropertyNames(data), isReadOnly = readOnly(name, data, keyPath, deep, dataType), removeItemButton = minusMenuElement && cloneElement(minusMenuElement, {
1333
+ onClick: handleRemove,
1334
+ className: "rejt-minus-menu",
1335
+ "aria-label": `remove the object '${String(name)}'`
1336
+ });
1337
+ return jsxs7(Fragment4, { children: [
1338
+ jsxs7("span", { className: "rejt-collapsed-value", children: [
1339
+ "{...}",
1340
+ " ",
1341
+ keyList.length,
1342
+ " ",
1343
+ keyList.length === 1 ? "key" : "keys"
1344
+ ] }),
1345
+ !isReadOnly && removeItemButton
1346
+ ] });
1347
+ }
1348
+ renderNotCollapsed() {
1349
+ let { name, data, keyPath, deep, nextDeep, addFormVisible } = this.state, {
1350
+ isCollapsed,
1351
+ handleRemove,
1352
+ onDeltaUpdate,
1353
+ readOnly,
1354
+ dataType,
1355
+ addButtonElement,
1356
+ cancelButtonElement,
1357
+ inputElementGenerator,
1358
+ textareaElementGenerator,
1359
+ minusMenuElement,
1360
+ plusMenuElement,
1361
+ beforeRemoveAction,
1362
+ beforeAddAction,
1363
+ beforeUpdateAction,
1364
+ logger: logger4,
1365
+ onSubmitValueParser
1366
+ } = this.props, keyList = Object.getOwnPropertyNames(data), isReadOnly = readOnly(name, data, keyPath, deep, dataType), addItemButton = plusMenuElement && cloneElement(plusMenuElement, {
1367
+ onClick: this.handleAddMode,
1368
+ className: "rejt-plus-menu",
1369
+ "aria-label": `add a new property to the object '${String(name)}'`
1370
+ }), removeItemButton = minusMenuElement && cloneElement(minusMenuElement, {
1371
+ onClick: handleRemove,
1372
+ className: "rejt-minus-menu",
1373
+ "aria-label": `remove the object '${String(name)}'`
1374
+ }), list = keyList.map((key) => jsx9(
1375
+ JsonNode,
1376
+ {
1377
+ name: key,
1378
+ data: data[key],
1379
+ keyPath,
1380
+ deep: nextDeep,
1381
+ isCollapsed,
1382
+ handleRemove: this.handleRemoveValue(key),
1383
+ handleUpdateValue: this.handleEditValue,
1384
+ onUpdate: this.onChildUpdate,
1385
+ onDeltaUpdate,
1386
+ readOnly,
1387
+ addButtonElement,
1388
+ cancelButtonElement,
1389
+ inputElementGenerator,
1390
+ textareaElementGenerator,
1391
+ minusMenuElement,
1392
+ plusMenuElement,
1393
+ beforeRemoveAction,
1394
+ beforeAddAction,
1395
+ beforeUpdateAction,
1396
+ logger: logger4,
1397
+ onSubmitValueParser
1398
+ },
1399
+ key
1400
+ ));
1401
+ return jsxs7(Fragment4, { children: [
1402
+ jsx9("span", { className: "rejt-not-collapsed-delimiter", children: "{" }),
1403
+ !isReadOnly && addItemButton,
1404
+ jsx9("ul", { className: "rejt-not-collapsed-list", children: list }),
1405
+ !isReadOnly && addFormVisible && jsx9("div", { className: "rejt-add-form", children: jsx9(
1406
+ JsonAddValue,
1407
+ {
1408
+ handleAdd: this.handleAddValueAdd,
1409
+ handleCancel: this.handleAddValueCancel,
1410
+ addButtonElement,
1411
+ cancelButtonElement,
1412
+ inputElementGenerator,
1413
+ keyPath,
1414
+ deep,
1415
+ onSubmitValueParser
1416
+ }
1417
+ ) }),
1418
+ jsx9("span", { className: "rejt-not-collapsed-delimiter", children: "}" }),
1419
+ !isReadOnly && removeItemButton
1420
+ ] });
1421
+ }
1422
+ render() {
1423
+ let { name, collapsed, keyPath, deep = 0 } = this.state, value = collapsed ? this.renderCollapsed() : this.renderNotCollapsed();
1424
+ return jsx9(
1425
+ JsonNodeAccordion,
1426
+ {
1427
+ name,
1428
+ collapsed,
1429
+ deep,
1430
+ keyPath,
1431
+ onClick: this.handleCollapseMode,
1432
+ children: value
1433
+ }
1434
+ );
1435
+ }
1436
+ };
1437
+ JsonObject.defaultProps = {
1438
+ keyPath: [],
1439
+ deep: 0,
1440
+ minusMenuElement: jsx9("span", { children: " - " }),
1441
+ plusMenuElement: jsx9("span", { children: " + " })
1442
+ };
1443
+ var JsonValue = class extends Component {
1444
+ constructor(props) {
1445
+ super(props);
1446
+ let keyPath = [...props.keyPath || [], props.name];
1447
+ this.state = {
1448
+ value: props.value,
1449
+ name: props.name,
1450
+ keyPath: keyPath ?? [],
1451
+ deep: props.deep ?? 0,
1452
+ editEnabled: !1,
1453
+ inputRef: null
1454
+ }, this.handleEditMode = this.handleEditMode.bind(this), this.refInput = this.refInput.bind(this), this.handleCancelEdit = this.handleCancelEdit.bind(this), this.handleEdit = this.handleEdit.bind(this), this.onKeydown = this.onKeydown.bind(this);
1455
+ }
1456
+ static getDerivedStateFromProps(props, state) {
1457
+ return props.value !== state.value ? { value: props.value } : null;
1458
+ }
1459
+ componentDidUpdate() {
1460
+ let { editEnabled, inputRef, name, value, keyPath, deep } = this.state, { readOnly, dataType } = this.props, isReadOnly = readOnly(name, value, keyPath, deep, dataType);
1461
+ editEnabled && !isReadOnly && typeof inputRef.focus == "function" && inputRef.focus();
1462
+ }
1463
+ onKeydown(event) {
1464
+ let { inputRef } = this.state;
1465
+ event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || event.repeat || inputRef !== event.target || ((event.code === "Enter" || event.key === "Enter") && (event.preventDefault(), this.handleEdit()), (event.code === "Escape" || event.key === "Escape") && (event.preventDefault(), this.handleCancelEdit()));
1466
+ }
1467
+ handleEdit() {
1468
+ let { handleUpdateValue, originalValue, logger: logger4, onSubmitValueParser, keyPath } = this.props, { inputRef, name, deep } = this.state;
1469
+ if (!inputRef)
1470
+ return;
1471
+ let newValue = onSubmitValueParser(!0, keyPath, deep, name, inputRef.value), result = {
1472
+ value: newValue,
1473
+ key: name
1474
+ };
1475
+ (handleUpdateValue || Promise.resolve.bind(Promise))(result).then(() => {
1476
+ isComponentWillChange(originalValue, newValue) || this.handleCancelEdit();
1477
+ }).catch(logger4.error);
1478
+ }
1479
+ handleEditMode() {
1480
+ this.setState({
1481
+ editEnabled: !0
1482
+ });
1483
+ }
1484
+ refInput(node) {
1485
+ this.state.inputRef = node;
1486
+ }
1487
+ handleCancelEdit() {
1488
+ this.setState({
1489
+ editEnabled: !1
1490
+ });
1491
+ }
1492
+ render() {
1493
+ let { name, value, editEnabled, keyPath, deep } = this.state, {
1494
+ handleRemove,
1495
+ originalValue,
1496
+ readOnly,
1497
+ dataType,
1498
+ inputElementGenerator,
1499
+ minusMenuElement,
1500
+ keyPath: comeFromKeyPath
1501
+ } = this.props, isReadOnly = readOnly(name, originalValue, keyPath, deep, dataType), isEditing = editEnabled && !isReadOnly, inputElement = inputElementGenerator(
1502
+ VALUE,
1503
+ comeFromKeyPath,
1504
+ deep,
1505
+ name,
1506
+ originalValue,
1507
+ dataType
1508
+ ), inputElementLayout = cloneElement(inputElement, {
1509
+ ref: this.refInput,
1510
+ defaultValue: JSON.stringify(originalValue),
1511
+ onKeyDown: this.onKeydown
1512
+ }), parentPropertyName = keyPath.at(-2), minusMenuLayout = minusMenuElement && cloneElement(minusMenuElement, {
1513
+ onClick: handleRemove,
1514
+ className: "rejt-minus-menu",
1515
+ "aria-label": `remove the property '${String(name)}' with value '${String(originalValue)}'${String(parentPropertyName) ? ` from '${String(parentPropertyName)}'` : ""}`
1516
+ });
1517
+ return jsxs7("li", { className: "rejt-value-node", children: [
1518
+ jsxs7("span", { className: "rejt-name", children: [
1519
+ name,
1520
+ " : "
1521
+ ] }),
1522
+ isEditing ? jsx9("span", { className: "rejt-edit-form", children: inputElementLayout }) : jsx9("span", { className: "rejt-value", onClick: isReadOnly ? void 0 : this.handleEditMode, children: String(value) }),
1523
+ !isReadOnly && !isEditing && minusMenuLayout
1524
+ ] });
1525
+ }
1526
+ };
1527
+ JsonValue.defaultProps = {
1528
+ keyPath: [],
1529
+ deep: 0,
1530
+ handleUpdateValue: () => Promise.resolve(),
1531
+ cancelButtonElement: jsx9("button", { children: "c" }),
1532
+ minusMenuElement: jsx9("span", { children: " - " })
1533
+ };
1534
+
1535
+ // src/addon-docs/blocks/controls/react-editable-json-tree/utils/parse.ts
1536
+ function parse3(string) {
1537
+ let result = string;
1538
+ if (result.indexOf("function") === 0)
1539
+ return (0, eval)(`(${result})`);
1540
+ try {
1541
+ result = JSON.parse(string);
1542
+ } catch {
1543
+ }
1544
+ return result;
1545
+ }
1546
+
1547
+ // src/addon-docs/blocks/controls/react-editable-json-tree/index.tsx
1548
+ import { jsx as jsx10 } from "react/jsx-runtime";
1549
+ var JsonTree = class extends Component2 {
1550
+ constructor(props) {
1551
+ super(props), this.state = {
1552
+ data: props.data,
1553
+ rootName: props.rootName
1554
+ }, this.onUpdate = this.onUpdate.bind(this), this.removeRoot = this.removeRoot.bind(this);
1555
+ }
1556
+ static getDerivedStateFromProps(props, state) {
1557
+ return props.data !== state.data || props.rootName !== state.rootName ? {
1558
+ data: props.data,
1559
+ rootName: props.rootName
1560
+ } : null;
1561
+ }
1562
+ onUpdate(key, data) {
1563
+ this.setState({ data }), this.props.onFullyUpdate?.(data);
1564
+ }
1565
+ removeRoot() {
1566
+ this.onUpdate(null, null);
1567
+ }
1568
+ render() {
1569
+ let { data, rootName } = this.state, {
1570
+ isCollapsed,
1571
+ onDeltaUpdate,
1572
+ readOnly,
1573
+ addButtonElement,
1574
+ cancelButtonElement,
1575
+ inputElement,
1576
+ textareaElement,
1577
+ minusMenuElement,
1578
+ plusMenuElement,
1579
+ beforeRemoveAction,
1580
+ beforeAddAction,
1581
+ beforeUpdateAction,
1582
+ logger: logger4,
1583
+ onSubmitValueParser,
1584
+ fallback = null
1585
+ } = this.props, dataType = getObjectType(data), readOnlyFunction = readOnly;
1586
+ getObjectType(readOnly) === "Boolean" && (readOnlyFunction = () => readOnly);
1587
+ let inputElementFunction = inputElement;
1588
+ inputElement && getObjectType(inputElement) !== "Function" && (inputElementFunction = () => inputElement);
1589
+ let textareaElementFunction = textareaElement;
1590
+ return textareaElement && getObjectType(textareaElement) !== "Function" && (textareaElementFunction = () => textareaElement), dataType === "Object" || dataType === "Array" ? jsx10("div", { className: "rejt-tree", children: jsx10(
1591
+ JsonNode,
1592
+ {
1593
+ data,
1594
+ name: rootName || "root",
1595
+ deep: -1,
1596
+ isCollapsed: isCollapsed ?? (() => !1),
1597
+ onUpdate: this.onUpdate,
1598
+ onDeltaUpdate: onDeltaUpdate ?? (() => {
1599
+ }),
1600
+ readOnly: readOnlyFunction,
1601
+ addButtonElement,
1602
+ cancelButtonElement,
1603
+ inputElementGenerator: inputElementFunction,
1604
+ textareaElementGenerator: textareaElementFunction,
1605
+ minusMenuElement,
1606
+ plusMenuElement,
1607
+ handleRemove: this.removeRoot,
1608
+ beforeRemoveAction,
1609
+ beforeAddAction,
1610
+ beforeUpdateAction,
1611
+ logger: logger4 ?? {},
1612
+ onSubmitValueParser: onSubmitValueParser ?? ((val) => val)
1613
+ }
1614
+ ) }) : fallback;
1615
+ }
1616
+ };
1617
+ JsonTree.defaultProps = {
1618
+ rootName: "root",
1619
+ isCollapsed: (keyPath, deep) => deep !== -1,
1620
+ readOnly: () => !1,
1621
+ onFullyUpdate: () => {
1622
+ },
1623
+ onDeltaUpdate: () => {
1624
+ },
1625
+ beforeRemoveAction: () => Promise.resolve(),
1626
+ beforeAddAction: () => Promise.resolve(),
1627
+ beforeUpdateAction: () => Promise.resolve(),
1628
+ logger: { error: () => {
1629
+ } },
1630
+ onSubmitValueParser: (isEditMode, keyPath, deep, name, rawValue) => parse3(rawValue),
1631
+ inputElement: () => jsx10("input", {}),
1632
+ textareaElement: () => jsx10("textarea", {}),
1633
+ fallback: null
1634
+ };
1635
+
1636
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Object.module.css
1637
+ var id7 = "core/src/addon-docs/blocks/controls/Object.module.css";
1638
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id7}"]`)) {
1639
+ let style = document.createElement("style");
1640
+ style.setAttribute("data-sb-css", id7), style.textContent = ".sb-_OaGtq-wrapper{isolation:isolate;gap:8px;display:flex;position:relative;& .rejt-tree{flex:1;margin-left:1rem;font-size:13px;list-style-type:none}& .rejt-value-node:hover>button{opacity:1}& .rejt-add-form{margin-left:10px}& .rejt-add-value-node{align-items:center;display:inline-flex}& .rejt-name{color:var(--sb-color-secondary);line-height:22px}& .rejt-not-collapsed-list{margin:0 0 0 1rem;padding:0;list-style:none}& .rejt-not-collapsed-delimiter{line-height:22px}& .rejt-value{cursor:text;color:var(--sb-color-default-text);border:1px solid #0000;border-radius:4px;margin:1px 0;padding:0 4px;display:inline-block}& .rejt-value-node:hover>.rejt-value{background:var(--sb-color-lighter);border-color:var(--sb-app-border-color)}& .rejt-collapsed-value{color:var(--sb-color-default-text)}}:where([data-sb-theme=dark]) .sb-_OaGtq-wrapper .rejt-value-node:hover>.rejt-value{background:#ffffff05}.sb-_OaGtq-buttonInline{height:20px;color:var(--sb-color-dark);cursor:pointer;background:0 0;border:0;border-radius:4px;margin:1px;font-weight:400;&[data-primary]{background:var(--sb-color-secondary);color:var(--sb-color-lightest);font-weight:700}}.sb-_OaGtq-actionButton{vertical-align:middle;color:var(--sb-text-muted-color);opacity:0;cursor:pointer;background:0 0;border:0;margin-left:5px;padding:3px;transition:opacity .2s;display:inline-flex;position:relative;& svg{width:9px;height:9px}&:disabled{cursor:not-allowed}&:hover,&:focus-visible{opacity:1}&:hover:not(:disabled),&:focus-visible:not(:disabled){&.rejt-plus-menu{color:var(--sb-color-ancillary)}&.rejt-minus-menu{color:var(--sb-color-negative)}}}.sb-_OaGtq-input{color:var(--sb-color-default-text);background:var(--sb-background-app);border:1px solid var(--sb-app-border-color);border-radius:4px;outline:0;width:120px;margin:1px 0;padding:3px 4px;line-height:14px;&[placeholder]{margin:1px}&[placeholder=Key]{width:80px}&:focus{border:1px solid var(--sb-color-secondary)}}.sb-_OaGtq-rawButton{order:2;align-self:flex-start;margin-right:-10px}.sb-_OaGtq-rawInput{font-family:var(--sb-font-mono);flex:1;padding:7px 6px;font-size:12px;line-height:18px;&::placeholder{font-family:var(--sb-font-base);font-size:13px}&:placeholder-shown{padding:7px 10px}}", document.head.appendChild(style);
1641
+ }
1642
+ var Object_default = { buttonInline: "sb-_OaGtq-buttonInline", wrapper: "sb-_OaGtq-wrapper", rawButton: "sb-_OaGtq-rawButton", input: "sb-_OaGtq-input", actionButton: "sb-_OaGtq-actionButton", rawInput: "sb-_OaGtq-rawInput" };
1643
+
1644
+ // src/addon-docs/blocks/controls/Object.tsx
1645
+ import { Fragment as Fragment5, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
1646
+ var { window: globalWindow } = globalThis, ActionButton = ({ className, ...props }) => jsx11("button", { className: clsx(Object_default.actionButton, className), ...props }), ENTER_EVENT = {
1647
+ bubbles: !0,
1648
+ cancelable: !0,
1649
+ key: "Enter",
1650
+ code: "Enter",
1651
+ keyCode: 13
1652
+ }, dispatchEnterKey = (event) => {
1653
+ event.currentTarget.dispatchEvent(new globalWindow.KeyboardEvent("keydown", ENTER_EVENT));
1654
+ }, selectValue = (event) => {
1655
+ event.currentTarget.select();
1656
+ }, ObjectControl = ({
1657
+ name,
1658
+ storyId,
1659
+ controlsId,
1660
+ value,
1661
+ onChange,
1662
+ argType,
1663
+ required
1664
+ }) => {
1665
+ let data = useMemo(() => value && cloneDeep(value), [value]), hasData = data != null, [showRaw, setShowRaw] = useState4(!hasData), hadDataRef = useRef3(hasData), [parseError, setParseError] = useState4(null), readonly = !!argType?.table?.readonly, updateRaw = useCallback3(
1666
+ (raw) => {
1667
+ try {
1668
+ raw && onChange(JSON.parse(raw)), setParseError(null);
1669
+ } catch (e2) {
1670
+ setParseError(e2);
1671
+ }
1672
+ },
1673
+ [onChange]
1674
+ ), [forceVisible, setForceVisible] = useState4(!1), onForceVisible = useCallback3(() => {
1675
+ onChange({}), setForceVisible(!0);
1676
+ }, [onChange, setForceVisible]);
1677
+ useEffect4(() => {
1678
+ !hadDataRef.current && hasData && showRaw && !forceVisible && setShowRaw(!1), hadDataRef.current = hasData;
1679
+ }, [forceVisible, hasData, showRaw]);
1680
+ let htmlElRef = useRef3(null);
1681
+ useEffect4(() => {
1682
+ forceVisible && htmlElRef.current && htmlElRef.current.select();
1683
+ }, [forceVisible]);
1684
+ let jsonString = useMemo(() => JSON.stringify(data ?? "", null, 2), [data]);
1685
+ if (!hasData)
1686
+ return jsx11(
1687
+ Button3,
1688
+ {
1689
+ ariaLabel: !1,
1690
+ disabled: readonly,
1691
+ id: getControlSetterButtonId(name, storyId, controlsId),
1692
+ onClick: onForceVisible,
1693
+ children: "Set object"
1694
+ }
1695
+ );
1696
+ let rawInputId = getControlId(name, storyId, controlsId), rawJSONForm = jsxs8(Fragment5, { children: [
1697
+ jsxs8("label", { htmlFor: rawInputId, className: "sb-sr-only", children: [
1698
+ "Edit ",
1699
+ name,
1700
+ " as JSON"
1701
+ ] }),
1702
+ jsx11(
1703
+ Form3.Textarea,
1704
+ {
1705
+ className: Object_default.rawInput,
1706
+ ref: htmlElRef,
1707
+ id: rawInputId,
1708
+ minRows: 3,
1709
+ name,
1710
+ defaultValue: jsonString,
1711
+ onBlur: (event) => updateRaw(event.target.value),
1712
+ placeholder: "Edit JSON string...",
1713
+ autoFocus: forceVisible,
1714
+ valid: parseError ? "error" : void 0,
1715
+ readOnly: readonly,
1716
+ "aria-required": required || void 0
1717
+ },
1718
+ jsonString
1719
+ )
1720
+ ] }), isObjectOrArray = Array.isArray(value) || typeof value == "object" && value?.constructor === Object;
1721
+ return jsxs8("div", { className: Object_default.wrapper, children: [
1722
+ isObjectOrArray && jsx11(
1723
+ ToggleButton,
1724
+ {
1725
+ className: Object_default.rawButton,
1726
+ disabled: readonly,
1727
+ pressed: showRaw,
1728
+ ariaLabel: `Edit ${name} as JSON`,
1729
+ onClick: (e2) => {
1730
+ e2.preventDefault(), setShowRaw((isRaw) => !isRaw);
1731
+ },
1732
+ variant: "ghost",
1733
+ padding: "small",
1734
+ size: "small",
1735
+ children: jsx11(EditIcon, {})
1736
+ }
1737
+ ),
1738
+ showRaw ? rawJSONForm : jsx11(
1739
+ JsonTree,
1740
+ {
1741
+ readOnly: readonly || !isObjectOrArray,
1742
+ isCollapsed: isObjectOrArray ? (
1743
+ /* default value */
1744
+ void 0
1745
+ ) : () => !0,
1746
+ data,
1747
+ rootName: name,
1748
+ onFullyUpdate: onChange,
1749
+ cancelButtonElement: jsx11("button", { className: Object_default.buttonInline, type: "button", children: "Cancel" }),
1750
+ addButtonElement: jsx11("button", { className: Object_default.buttonInline, type: "submit", "data-primary": !0, children: "Save" }),
1751
+ plusMenuElement: jsx11(ActionButton, { type: "button", children: jsx11(AddIcon, {}) }),
1752
+ minusMenuElement: jsx11(ActionButton, { type: "button", children: jsx11(SubtractIcon, {}) }),
1753
+ inputElement: (_2, __, ___, key) => key ? jsx11("input", { className: Object_default.input, onFocus: selectValue, onBlur: dispatchEnterKey }) : jsx11("input", { className: Object_default.input }),
1754
+ fallback: rawJSONForm
1755
+ }
1756
+ )
1757
+ ] });
1758
+ };
1759
+
1760
+ // src/addon-docs/blocks/controls/Range.tsx
1761
+ import { useMemo as useMemo2 } from "react";
1762
+
1763
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Range.module.css
1764
+ var id8 = "core/src/addon-docs/blocks/controls/Range.module.css";
1765
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id8}"]`)) {
1766
+ let style = document.createElement("style");
1767
+ style.setAttribute("data-sb-css", id8), style.textContent = '.sb-t_VwFG-input{--track-bg:hsl(from var(--sb-input-background) h s calc(l - 2));--track-border:#00000070;appearance:none;background-color:#0000;width:100%;&::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--sb-color-green) 0%, var(--sb-color-green) var(--sb-range-progress), var(--track-bg) var(--sb-range-progress), var(--track-bg) 100%);box-shadow:var(--track-border) 0 0 0 1px inset;cursor:pointer;border-radius:6px;width:100%;height:6px}&::-moz-range-track{background:linear-gradient(to right, var(--sb-color-green) 0%, var(--sb-color-green) var(--sb-range-progress), var(--track-bg) var(--sb-range-progress), var(--track-bg) 100%);box-shadow:var(--track-border) 0 0 0 1px inset;cursor:pointer;border-radius:6px;width:100%;height:6px}&::-webkit-slider-thumb{cursor:grab;background:var(--sb-input-background);border:1px solid var(--track-border);width:16px;height:16px;box-shadow:0 1px 3px 0px rgb(from var(--sb-app-border-color) r g b / .2);appearance:none;border-radius:50px;margin-top:-6px;transition:all .15s ease-out;&:hover{background:hsl(from var(--sb-input-background) h s calc(l - 5));transition:all 50ms ease-out;transform:scale3d(1.1,1.1,1.1)translateY(-1px)}&:active{background:var(--sb-input-background);transform:scale(1)translateY(0)}}&::-moz-range-thumb{cursor:grab;background:var(--sb-input-background);border:1px solid var(--track-border);width:16px;height:16px;box-shadow:0 1px 3px 0px rgb(from var(--sb-app-border-color) r g b / .2);border-radius:50px;transition:all .15s ease-out;&:hover{background:hsl(from var(--sb-input-background) h s calc(l - 5));transition:all 50ms ease-out;transform:scale3d(1.1,1.1,1.1)translateY(-1px)}&:active{background:var(--sb-input-background);transform:scale(1)translateY(0)}}&:focus{outline:none;&::-webkit-slider-runnable-track{border-color:rgb(from var(--sb-color-secondary) r g b / .4)}&::-moz-range-track{border-color:rgb(from var(--sb-color-secondary) r g b / .4)}&::-webkit-slider-thumb{border-color:var(--sb-color-secondary);box-shadow:0 0px 5px 0px var(--sb-color-secondary)}&::-moz-range-thumb{border-color:var(--sb-color-secondary);box-shadow:0 0px 5px 0px var(--sb-color-secondary)}}&:disabled{&::-webkit-slider-runnable-track{cursor:not-allowed}&::-moz-range-track{cursor:not-allowed}&::-webkit-slider-thumb{cursor:not-allowed}&::-moz-range-thumb{cursor:not-allowed}}}:where([data-sb-theme=dark]) .sb-t_VwFG-input{--track-bg:hsl(from var(--sb-input-background) h s calc(l + 2));--track-border:#fff6;&::-webkit-slider-thumb{box-shadow:unset}&::-moz-range-thumb{box-shadow:unset}&:focus{&::-webkit-slider-thumb{box-shadow:unset}&::-moz-range-thumb{box-shadow:unset}}}.sb-t_VwFG-label{white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-left:5px;padding-right:5px;font-size:12px}.sb-t_VwFG-currentAndMax{text-align:right;flex-shrink:0}.sb-t_VwFG-wrapper{align-items:center;width:100%;display:flex;&[data-readonly]{opacity:.5}}', document.head.appendChild(style);
1768
+ }
1769
+ var Range_default = { currentAndMax: "sb-t_VwFG-currentAndMax", wrapper: "sb-t_VwFG-wrapper", label: "sb-t_VwFG-label", input: "sb-t_VwFG-input" };
1770
+
1771
+ // src/addon-docs/blocks/controls/Range.tsx
1772
+ import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
1773
+ function getNumberOfDecimalPlaces(number) {
1774
+ let match = number.toString().match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
1775
+ return match ? Math.max(
1776
+ 0,
1777
+ // Number of digits right of decimal point.
1778
+ (match[1] ? match[1].length : 0) - // Adjust for scientific notation.
1779
+ (match[2] ? +match[2] : 0)
1780
+ ) : 0;
1781
+ }
1782
+ var RangeControl = ({
1783
+ name,
1784
+ storyId,
1785
+ controlsId,
1786
+ value,
1787
+ onChange,
1788
+ min = 0,
1789
+ max = 100,
1790
+ step = 1,
1791
+ onBlur,
1792
+ onFocus,
1793
+ argType,
1794
+ required
1795
+ }) => {
1796
+ let handleChange = (event) => {
1797
+ onChange(parse2(event.target.value));
1798
+ }, hasValue = value !== void 0, numberOFDecimalsPlaces = useMemo2(() => getNumberOfDecimalPlaces(step), [step]), readonly = !!argType?.table?.readonly, controlId = getControlId(name, storyId, controlsId), current = value ?? min;
1799
+ return jsxs9("div", { className: Range_default.wrapper, "data-readonly": readonly || void 0, children: [
1800
+ jsx12("label", { htmlFor: controlId, className: "sb-sr-only", children: name }),
1801
+ jsx12("span", { className: Range_default.label, children: min }),
1802
+ jsx12(
1803
+ "input",
1804
+ {
1805
+ className: Range_default.input,
1806
+ style: { "--sb-range-progress": `${(current - min) / (max - min) * 100}%` },
1807
+ id: controlId,
1808
+ type: "range",
1809
+ disabled: readonly,
1810
+ onChange: handleChange,
1811
+ "aria-required": required || void 0,
1812
+ name,
1813
+ min,
1814
+ max,
1815
+ step,
1816
+ onFocus,
1817
+ onBlur,
1818
+ value: current
1819
+ }
1820
+ ),
1821
+ jsxs9(
1822
+ "span",
1823
+ {
1824
+ className: clsx(Range_default.label, Range_default.currentAndMax),
1825
+ style: { width: `${numberOFDecimalsPlaces + max.toString().length * 2 + 3}ch` },
1826
+ children: [
1827
+ hasValue ? value.toFixed(numberOFDecimalsPlaces) : "--",
1828
+ " / ",
1829
+ max
1830
+ ]
1831
+ }
1832
+ )
1833
+ ] });
1834
+ };
1835
+
1836
+ // src/addon-docs/blocks/controls/Text.tsx
1837
+ import { useCallback as useCallback4, useState as useState5 } from "react";
1838
+ import { Button as Button4, Form as Form4 } from "@aussieljk/forkbook/internal/components";
1839
+
1840
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Text.module.css
1841
+ var id9 = "core/src/addon-docs/blocks/controls/Text.module.css";
1842
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id9}"]`)) {
1843
+ let style = document.createElement("style");
1844
+ style.setAttribute("data-sb-css", id9), style.textContent = ".sb-yeJPNa-wrapper{display:flex}.sb-yeJPNa-maxLength{margin-left:.75rem;padding-top:.35rem;&[data-maxed]{color:red}}", document.head.appendChild(style);
1845
+ }
1846
+ var Text_default = { wrapper: "sb-yeJPNa-wrapper", maxLength: "sb-yeJPNa-maxLength" };
1847
+
1848
+ // src/addon-docs/blocks/controls/Text.tsx
1849
+ import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
1850
+ var TextControl = ({
1851
+ name,
1852
+ storyId,
1853
+ controlsId,
1854
+ value,
1855
+ onChange,
1856
+ onFocus,
1857
+ onBlur,
1858
+ maxLength,
1859
+ argType,
1860
+ required
1861
+ }) => {
1862
+ let handleChange = (event) => {
1863
+ onChange(event.target.value);
1864
+ }, readonly = !!argType?.table?.readonly, [forceVisible, setForceVisible] = useState5(!1), onForceVisible = useCallback4(() => {
1865
+ onChange(""), setForceVisible(!0);
1866
+ }, [setForceVisible]);
1867
+ if (value === void 0)
1868
+ return jsx13(
1869
+ Button4,
1870
+ {
1871
+ ariaLabel: !1,
1872
+ variant: "outline",
1873
+ size: "medium",
1874
+ disabled: readonly,
1875
+ id: getControlSetterButtonId(name, storyId, controlsId),
1876
+ onClick: onForceVisible,
1877
+ children: "Set string"
1878
+ }
1879
+ );
1880
+ let isValid = typeof value == "string";
1881
+ return jsxs10("label", { className: Text_default.wrapper, children: [
1882
+ jsx13(
1883
+ Form4.Textarea,
1884
+ {
1885
+ id: getControlId(name, storyId, controlsId),
1886
+ maxLength,
1887
+ onChange: handleChange,
1888
+ disabled: readonly,
1889
+ size: "flex",
1890
+ placeholder: "Edit string...",
1891
+ autoFocus: forceVisible,
1892
+ "aria-required": required || void 0,
1893
+ valid: isValid ? void 0 : "error",
1894
+ name,
1895
+ value: isValid ? value : "",
1896
+ onFocus,
1897
+ onBlur
1898
+ }
1899
+ ),
1900
+ maxLength && jsxs10("div", { className: Text_default.maxLength, "data-maxed": value?.length === maxLength || void 0, children: [
1901
+ value?.length ?? 0,
1902
+ " / ",
1903
+ maxLength
1904
+ ] })
1905
+ ] });
1906
+ };
1907
+
1908
+ // src/addon-docs/blocks/controls/Files.tsx
1909
+ import { useEffect as useEffect5, useRef as useRef4 } from "react";
1910
+ import { Form as Form5 } from "@aussieljk/forkbook/internal/components";
1911
+
1912
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/controls/Files.module.css
1913
+ var id10 = "core/src/addon-docs/blocks/controls/Files.module.css";
1914
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id10}"]`)) {
1915
+ let style = document.createElement("style");
1916
+ style.setAttribute("data-sb-css", id10), style.textContent = ".sb-wt5ndq-input{padding:10px}", document.head.appendChild(style);
1917
+ }
1918
+ var Files_default = { input: "sb-wt5ndq-input" };
1919
+
1920
+ // src/addon-docs/blocks/controls/Files.tsx
1921
+ import { Fragment as Fragment6, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
1922
+ function revokeOldUrls(urls) {
1923
+ urls.forEach((url) => {
1924
+ url.startsWith("blob:") && URL.revokeObjectURL(url);
1925
+ });
1926
+ }
1927
+ var FilesControl = ({
1928
+ onChange,
1929
+ name,
1930
+ storyId,
1931
+ controlsId,
1932
+ accept = "image/*",
1933
+ value,
1934
+ argType,
1935
+ required
1936
+ }) => {
1937
+ let inputElement = useRef4(null), readonly = argType?.control?.readOnly;
1938
+ function handleFileChange(e2) {
1939
+ if (!e2.target.files)
1940
+ return;
1941
+ let fileUrls = Array.from(e2.target.files).map((file) => URL.createObjectURL(file));
1942
+ onChange(fileUrls), revokeOldUrls(value || []);
1943
+ }
1944
+ useEffect5(() => {
1945
+ value == null && inputElement.current && (inputElement.current.value = "");
1946
+ }, [value, name]);
1947
+ let controlId = getControlId(name, storyId, controlsId);
1948
+ return jsxs11(Fragment6, { children: [
1949
+ jsx14("label", { htmlFor: controlId, className: "sb-sr-only", children: name }),
1950
+ jsx14(
1951
+ Form5.Input,
1952
+ {
1953
+ className: Files_default.input,
1954
+ ref: inputElement,
1955
+ id: controlId,
1956
+ type: "file",
1957
+ name,
1958
+ multiple: !0,
1959
+ disabled: readonly,
1960
+ onChange: handleFileChange,
1961
+ accept,
1962
+ "aria-required": required || void 0,
1963
+ size: "flex"
1964
+ }
1965
+ )
1966
+ ] });
1967
+ };
1968
+
1969
+ // src/addon-docs/blocks/controls/index.tsx
1970
+ import { Suspense, lazy } from "react";
1971
+ import { jsx as jsx15 } from "react/jsx-runtime";
1972
+ var LazyColorControl = lazy(() => import("./Color-PCLE2J36.js")), ColorControl = (props) => jsx15(Suspense, { fallback: jsx15("div", {}), children: jsx15(LazyColorControl, { ...props }) });
1973
+
1974
+ // src/addon-docs/blocks/components/ArgsTable/ArgsTable.tsx
1975
+ import { useCallback as useCallback6, useEffect as useEffect8, useRef as useRef5, useState as useState10 } from "react";
1976
+ import { once } from "@aussieljk/forkbook/internal/client-logger";
1977
+ import { Button as Button5, Link as Link3, ResetWrapper } from "@aussieljk/forkbook/internal/components";
1978
+ import { includeConditionalArg } from "@aussieljk/forkbook/internal/csf";
1979
+ import { DocumentIcon as DocumentIcon2, UndoIcon } from "@storybook/icons";
1980
+
1981
+ // ../../node_modules/markdown-to-jsx/dist/index.modern.js
1982
+ import * as e from "react";
1983
+ function n() {
1984
+ return n = Object.assign ? Object.assign.bind() : function(e2) {
1985
+ for (var n2 = 1; n2 < arguments.length; n2++) {
1986
+ var r2 = arguments[n2];
1987
+ for (var t in r2) Object.prototype.hasOwnProperty.call(r2, t) && (e2[t] = r2[t]);
1988
+ }
1989
+ return e2;
1990
+ }, n.apply(this, arguments);
1991
+ }
1992
+ var r = ["children", "options"];
1993
+ var o = ["allowFullScreen", "allowTransparency", "autoComplete", "autoFocus", "autoPlay", "cellPadding", "cellSpacing", "charSet", "classId", "colSpan", "contentEditable", "contextMenu", "crossOrigin", "encType", "formAction", "formEncType", "formMethod", "formNoValidate", "formTarget", "frameBorder", "hrefLang", "inputMode", "keyParams", "keyType", "marginHeight", "marginWidth", "maxLength", "mediaGroup", "minLength", "noValidate", "radioGroup", "readOnly", "rowSpan", "spellCheck", "srcDoc", "srcLang", "srcSet", "tabIndex", "useMap"].reduce((e2, n2) => (e2[n2.toLowerCase()] = n2, e2), { class: "className", for: "htmlFor" }), a = { amp: "&", apos: "'", gt: ">", lt: "<", nbsp: "\xA0", quot: "\u201C" }, c = ["style", "script", "pre"], i = ["src", "href", "data", "formAction", "srcDoc", "action"], u = /([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi, l = /\n{2,}$/, s = /^(\s*>[\s\S]*?)(?=\n\n|$)/, f = /^ *> ?/gm, _ = /^(?:\[!([^\]]*)\]\n)?([\s\S]*)/, d = /^ {2,}\n/, p = /^(?:([-*_])( *\1){2,}) *(?:\n *)+\n/, y = /^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/, h = /^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/, g = /^(`+)((?:\\`|(?!\1)`|[^`])+)\1/, m = /^(?:\n *)*\n/, k = /\r\n?/g, x = /^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/, q = /^\[\^([^\]]+)]/, v = /\f/g, b = /^---[ \t]*\n(.|\n)*\n---[ \t]*\n/, $ = /^\s*?\[(x|\s)\]/, S = /^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/, z = /^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/, E = /^([^\n]+)\n *(=|-)\2{2,} *\n/, A = /^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i, R = /&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi, B = /^<!--[\s\S]*?(?:-->)/, L = /^(data|aria|x)-[a-z_][a-z\d_.-]*$/, O = /^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i, j = /^\{.*\}$/, C = /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/, I = /^<([^ >]+[:@\/][^ >]+)>/, T = /-([a-z])?/gi, M = /^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/, w = /^[^\n]+(?: \n|\n{2,})/, D = /^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/, F = /^!\[([^\]]*)\] ?\[([^\]]*)\]/, P = /^\[([^\]]*)\] ?\[([^\]]*)\]/, Z = /(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/, N = /\t/g, G = /(^ *\||\| *$)/g, U = /^ *:-+: *$/, V = /^ *:-+ *$/, H = /^ *-+: *$/, Q = (e2) => `(?=[\\s\\S]+?\\1${e2 ? "\\1" : ""})`, W = "((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)", J = RegExp(`^([*_])\\1${Q(1)}${W}\\1\\1(?!\\1)`), K = RegExp(`^([*_])${Q(0)}${W}\\1(?!\\1)`), X = RegExp(`^(==)${Q(0)}${W}\\1`), Y = RegExp(`^(~~)${Q(0)}${W}\\1`), ee = /^(:[a-zA-Z0-9-_]+:)/, ne = /^\\([^0-9A-Za-z\s])/, re = /\\([^0-9A-Za-z\s])/g, te = /^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/, oe = /^\n+/, ae = /^([ \t]*)/, ce = /(?:^|\n)( *)$/, ie = "(?:\\d+\\.)", ue = "(?:[*+-])";
1994
+ function le(e2) {
1995
+ return "( *)(" + (e2 === 1 ? ie : ue) + ") +";
1996
+ }
1997
+ var se = le(1), fe = le(2);
1998
+ function _e(e2) {
1999
+ return RegExp("^" + (e2 === 1 ? se : fe));
2000
+ }
2001
+ var de = _e(1), pe = _e(2);
2002
+ function ye(e2) {
2003
+ return RegExp("^" + (e2 === 1 ? se : fe) + "[^\\n]*(?:\\n(?!\\1" + (e2 === 1 ? ie : ue) + " )[^\\n]*)*(\\n|$)", "gm");
2004
+ }
2005
+ var he = ye(1), ge = ye(2);
2006
+ function me(e2) {
2007
+ let n2 = e2 === 1 ? ie : ue;
2008
+ return RegExp("^( *)(" + n2 + ") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1" + n2 + " (?!" + n2 + " ))\\n*|\\s*\\n*$)");
2009
+ }
2010
+ var ke = me(1), xe = me(2);
2011
+ function qe(e2, n2) {
2012
+ let r2 = n2 === 1, t = r2 ? ke : xe, o2 = r2 ? he : ge, a2 = r2 ? de : pe;
2013
+ return { t: (e3) => a2.test(e3), o: je(function(e3, n3) {
2014
+ let r3 = ce.exec(n3.prevCapture);
2015
+ return r3 && (n3.list || !n3.inline && !n3.simple) ? t.exec(e3 = r3[1] + e3) : null;
2016
+ }), i: 1, u(e3, n3, t2) {
2017
+ let c2 = r2 ? +e3[2] : void 0, i2 = e3[0].replace(l, `
2018
+ `).match(o2), u2 = !1;
2019
+ return { items: i2.map(function(e4, r3) {
2020
+ let o3 = a2.exec(e4)[0].length, c3 = RegExp("^ {1," + o3 + "}", "gm"), l2 = e4.replace(c3, "").replace(a2, ""), s2 = r3 === i2.length - 1, f2 = l2.indexOf(`
2021
+
2022
+ `) !== -1 || s2 && u2;
2023
+ u2 = f2;
2024
+ let _2 = t2.inline, d2 = t2.list, p2;
2025
+ t2.list = !0, f2 ? (t2.inline = !1, p2 = Se(l2) + `
2026
+
2027
+ `) : (t2.inline = !0, p2 = Se(l2));
2028
+ let y2 = n3(p2, t2);
2029
+ return t2.inline = _2, t2.list = d2, y2;
2030
+ }), ordered: r2, start: c2 };
2031
+ }, l: (n3, r3, t2) => e2(n3.ordered ? "ol" : "ul", { key: t2.key, start: n3.type === "20" ? n3.start : void 0 }, n3.items.map(function(n4, o3) {
2032
+ return e2("li", { key: o3 }, r3(n4, t2));
2033
+ })) };
2034
+ }
2035
+ var ve = RegExp(`^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['"]([\\s\\S]*?)['"])?\\s*\\)`), be = /^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/;
2036
+ function $e(e2) {
2037
+ return typeof e2 == "string";
2038
+ }
2039
+ function Se(e2) {
2040
+ let n2 = e2.length;
2041
+ for (; n2 > 0 && e2[n2 - 1] <= " "; ) n2--;
2042
+ return e2.slice(0, n2);
2043
+ }
2044
+ function ze(e2, n2) {
2045
+ return e2.startsWith(n2);
2046
+ }
2047
+ function Ee(e2, n2, r2) {
2048
+ if (Array.isArray(r2)) {
2049
+ for (let n3 = 0; n3 < r2.length; n3++) if (ze(e2, r2[n3])) return !0;
2050
+ return !1;
2051
+ }
2052
+ return r2(e2, n2);
2053
+ }
2054
+ function Ae(e2) {
2055
+ return e2.replace(/[ÀÁÂÃÄÅàáâãä忯]/g, "a").replace(/[çÇ]/g, "c").replace(/[ðÐ]/g, "d").replace(/[ÈÉÊËéèêë]/g, "e").replace(/[ÏïÎîÍíÌì]/g, "i").replace(/[Ññ]/g, "n").replace(/[øØœŒÕõÔôÓóÒò]/g, "o").replace(/[ÜüÛûÚúÙù]/g, "u").replace(/[ŸÿÝý]/g, "y").replace(/[^a-z0-9- ]/gi, "").replace(/ /gi, "-").toLowerCase();
2056
+ }
2057
+ function Re(e2) {
2058
+ return H.test(e2) ? "right" : U.test(e2) ? "center" : V.test(e2) ? "left" : null;
2059
+ }
2060
+ function Be(e2, n2, r2, t) {
2061
+ let o2 = r2.inTable;
2062
+ r2.inTable = !0;
2063
+ let a2 = [[]], c2 = "";
2064
+ function i2() {
2065
+ if (!c2) return;
2066
+ let e3 = a2[a2.length - 1];
2067
+ e3.push.apply(e3, n2(c2, r2)), c2 = "";
2068
+ }
2069
+ return e2.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((e3, n3, r3) => {
2070
+ e3.trim() === "|" && (i2(), t) ? n3 !== 0 && n3 !== r3.length - 1 && a2.push([]) : c2 += e3;
2071
+ }), i2(), r2.inTable = o2, a2;
2072
+ }
2073
+ function Le(e2, n2, r2) {
2074
+ r2.inline = !0;
2075
+ let t = e2[2] ? e2[2].replace(G, "").split("|").map(Re) : [], o2 = e2[3] ? (function(e3, n3, r3) {
2076
+ return e3.trim().split(`
2077
+ `).map(function(e4) {
2078
+ return Be(e4, n3, r3, !0);
2079
+ });
2080
+ })(e2[3], n2, r2) : [], a2 = Be(e2[1], n2, r2, !!o2.length);
2081
+ return r2.inline = !1, o2.length ? { align: t, cells: o2, header: a2, type: "25" } : { children: a2, type: "21" };
2082
+ }
2083
+ function Oe(e2, n2) {
2084
+ return e2.align[n2] == null ? {} : { textAlign: e2.align[n2] };
2085
+ }
2086
+ function je(e2) {
2087
+ return e2.inline = 1, e2;
2088
+ }
2089
+ function Ce(e2) {
2090
+ return je(function(n2, r2) {
2091
+ return r2.inline ? e2.exec(n2) : null;
2092
+ });
2093
+ }
2094
+ function Ie(e2) {
2095
+ return je(function(n2, r2) {
2096
+ return r2.inline || r2.simple ? e2.exec(n2) : null;
2097
+ });
2098
+ }
2099
+ function Te(e2) {
2100
+ return function(n2, r2) {
2101
+ return r2.inline || r2.simple ? null : e2.exec(n2);
2102
+ };
2103
+ }
2104
+ function Me(e2) {
2105
+ return je(function(n2) {
2106
+ return e2.exec(n2);
2107
+ });
2108
+ }
2109
+ var we = /(javascript|vbscript|data(?!:image)):/i;
2110
+ function De(e2) {
2111
+ try {
2112
+ let n2 = decodeURIComponent(e2).replace(/[^A-Za-z0-9/:]/g, "");
2113
+ if (we.test(n2)) return null;
2114
+ } catch {
2115
+ return null;
2116
+ }
2117
+ return e2;
2118
+ }
2119
+ function Fe(e2) {
2120
+ return e2 && e2.replace(re, "$1");
2121
+ }
2122
+ function Pe(e2, n2, r2) {
2123
+ let t = r2.inline || !1, o2 = r2.simple || !1;
2124
+ r2.inline = !0, r2.simple = !0;
2125
+ let a2 = e2(n2, r2);
2126
+ return r2.inline = t, r2.simple = o2, a2;
2127
+ }
2128
+ function Ze(e2, n2, r2) {
2129
+ let t = r2.inline || !1, o2 = r2.simple || !1;
2130
+ r2.inline = !1, r2.simple = !0;
2131
+ let a2 = e2(n2, r2);
2132
+ return r2.inline = t, r2.simple = o2, a2;
2133
+ }
2134
+ function Ne(e2, n2, r2) {
2135
+ let t = r2.inline || !1;
2136
+ r2.inline = !1;
2137
+ let o2 = e2(n2, r2);
2138
+ return r2.inline = t, o2;
2139
+ }
2140
+ var Ge = (e2, n2, r2) => ({ children: Pe(n2, e2[2], r2) });
2141
+ function Ue() {
2142
+ return {};
2143
+ }
2144
+ function Ve() {
2145
+ return null;
2146
+ }
2147
+ function He(...e2) {
2148
+ return e2.filter(Boolean).join(" ");
2149
+ }
2150
+ function Qe(e2, n2, r2) {
2151
+ let t = e2, o2 = n2.split(".");
2152
+ for (; o2.length && (t = t[o2[0]], t !== void 0); ) o2.shift();
2153
+ return t || r2;
2154
+ }
2155
+ function We(r2 = "", t = {}) {
2156
+ t.overrides = t.overrides || {}, t.namedCodesToUnicode = t.namedCodesToUnicode ? n({}, a, t.namedCodesToUnicode) : a;
2157
+ let l2 = t.slugify || Ae, G2 = t.sanitizer || De, U2 = t.createElement || e.createElement, V2 = [s, y, h, t.enforceAtxHeadings ? z : S, E, M, ke, xe], H2 = [...V2, w, A, B, O];
2158
+ function Q2(e2, n2) {
2159
+ for (let r3 = 0; r3 < e2.length; r3++) if (e2[r3].test(n2)) return !0;
2160
+ return !1;
2161
+ }
2162
+ function W2(e2, r3, ...o2) {
2163
+ let a2 = Qe(t.overrides, e2 + ".props", {});
2164
+ return U2((function(e3, n2) {
2165
+ let r4 = Qe(n2, e3);
2166
+ return r4 ? typeof r4 == "function" || typeof r4 == "object" && "render" in r4 ? r4 : Qe(n2, e3 + ".component", e3) : e3;
2167
+ })(e2, t.overrides), n({}, r3, a2, { className: He(r3?.className, a2.className) || void 0 }), ...o2);
2168
+ }
2169
+ function re2(e2) {
2170
+ e2 = e2.replace(b, "");
2171
+ let n2 = !1;
2172
+ t.forceInline ? n2 = !0 : t.forceBlock || (n2 = Z.test(e2) === !1);
2173
+ let r3 = fe2(se2(n2 ? e2 : Se(e2).replace(oe, "") + `
2174
+
2175
+ `, { inline: n2 }));
2176
+ for (; $e(r3[r3.length - 1]) && !r3[r3.length - 1].trim(); ) r3.pop();
2177
+ if (t.wrapper === null) return r3;
2178
+ let o2 = t.wrapper || (n2 ? "span" : "div"), a2;
2179
+ if (r3.length > 1 || t.forceWrapper) a2 = r3;
2180
+ else {
2181
+ if (r3.length === 1) return a2 = r3[0], typeof a2 == "string" ? W2("span", { key: "outer" }, a2) : a2;
2182
+ a2 = null;
2183
+ }
2184
+ return U2(o2, { key: "outer" }, a2);
2185
+ }
2186
+ function ce2(e2, n2) {
2187
+ if (!n2 || !n2.trim()) return null;
2188
+ let r3 = n2.match(u);
2189
+ return r3 ? r3.reduce(function(n3, r4) {
2190
+ let t2 = r4.indexOf("=");
2191
+ if (t2 !== -1) {
2192
+ let a2 = (function(e3) {
2193
+ return e3.indexOf("-") !== -1 && e3.match(L) === null && (e3 = e3.replace(T, function(e4, n4) {
2194
+ return n4.toUpperCase();
2195
+ })), e3;
2196
+ })(r4.slice(0, t2)).trim(), c2 = (function(e3) {
2197
+ let n4 = e3[0];
2198
+ return (n4 === '"' || n4 === "'") && e3.length >= 2 && e3[e3.length - 1] === n4 ? e3.slice(1, -1) : e3;
2199
+ })(r4.slice(t2 + 1).trim()), u2 = o[a2] || a2;
2200
+ if (u2 === "ref") return n3;
2201
+ let l3 = n3[u2] = (function(e3, n4, r5, t3) {
2202
+ return n4 === "style" ? (function(e4) {
2203
+ let n5 = [], r6 = "", t4 = !1, o2 = !1, a3 = "";
2204
+ if (!e4) return n5;
2205
+ for (let c4 = 0; c4 < e4.length; c4++) {
2206
+ let i2 = e4[c4];
2207
+ if (i2 !== '"' && i2 !== "'" || t4 || (o2 ? i2 === a3 && (o2 = !1, a3 = "") : (o2 = !0, a3 = i2)), i2 === "(" && r6.endsWith("url") ? t4 = !0 : i2 === ")" && t4 && (t4 = !1), i2 !== ";" || o2 || t4) r6 += i2;
2208
+ else {
2209
+ let e5 = r6.trim();
2210
+ if (e5) {
2211
+ let r7 = e5.indexOf(":");
2212
+ if (r7 > 0) {
2213
+ let t5 = e5.slice(0, r7).trim(), o3 = e5.slice(r7 + 1).trim();
2214
+ n5.push([t5, o3]);
2215
+ }
2216
+ }
2217
+ r6 = "";
2218
+ }
2219
+ }
2220
+ let c3 = r6.trim();
2221
+ if (c3) {
2222
+ let e5 = c3.indexOf(":");
2223
+ if (e5 > 0) {
2224
+ let r7 = c3.slice(0, e5).trim(), t5 = c3.slice(e5 + 1).trim();
2225
+ n5.push([r7, t5]);
2226
+ }
2227
+ }
2228
+ return n5;
2229
+ })(r5).reduce(function(n5, [r6, o2]) {
2230
+ return n5[r6.replace(/(-[a-z])/g, (e4) => e4[1].toUpperCase())] = t3(o2, e3, r6), n5;
2231
+ }, {}) : i.indexOf(n4) !== -1 ? t3(Fe(r5), e3, n4) : (r5.match(j) && (r5 = Fe(r5.slice(1, r5.length - 1))), r5 === "true" || r5 !== "false" && r5);
2232
+ })(e2, a2, c2, G2);
2233
+ typeof l3 == "string" && (A.test(l3) || O.test(l3)) && (n3[u2] = re2(l3.trim()));
2234
+ } else r4 !== "style" && (n3[o[r4] || r4] = !0);
2235
+ return n3;
2236
+ }, {}) : null;
2237
+ }
2238
+ let ie2 = [], ue2 = {}, le2 = { 0: { t: [">"], o: Te(s), i: 1, u(e2, n2, r3) {
2239
+ let [, t2, o2] = e2[0].replace(f, "").match(_);
2240
+ return { alert: t2, children: n2(o2, r3) };
2241
+ }, l(e2, n2, r3) {
2242
+ let t2 = { key: r3.key };
2243
+ return e2.alert && (t2.className = "markdown-alert-" + l2(e2.alert.toLowerCase(), Ae), e2.children.unshift({ attrs: {}, children: [{ type: "27", text: e2.alert }], noInnerParse: !0, type: "11", tag: "header" })), W2("blockquote", t2, n2(e2.children, r3));
2244
+ } }, 1: { t: [" "], o: Me(d), i: 1, u: Ue, l: (e2, n2, r3) => W2("br", { key: r3.key }) }, 2: { t: ["--", "__", "**", "- ", "* ", "_ "], o: Te(p), i: 1, u: Ue, l: (e2, n2, r3) => W2("hr", { key: r3.key }) }, 3: { t: [" "], o: Te(h), i: 0, u: (e2) => ({ lang: void 0, text: Fe(Se(e2[0].replace(/^ {4}/gm, ""))) }), l: (e2, r3, t2) => W2("pre", { key: t2.key }, W2("code", n({}, e2.attrs, { className: e2.lang ? "lang-" + e2.lang : "" }), e2.text)) }, 4: { t: ["```", "~~~"], o: Te(y), i: 0, u: (e2) => ({ attrs: ce2("code", e2[3] || ""), lang: e2[2] || void 0, text: e2[4], type: "3" }) }, 5: { t: ["`"], o: Ie(g), i: 3, u: (e2) => ({ text: Fe(e2[2]) }), l: (e2, n2, r3) => W2("code", { key: r3.key }, e2.text) }, 6: { t: ["[^"], o: Te(x), i: 0, u: (e2) => (ie2.push({ footnote: e2[2], identifier: e2[1] }), {}), l: Ve }, 7: { t: ["[^"], o: Ce(q), i: 1, u: (e2) => ({ target: "#" + l2(e2[1], Ae), text: e2[1] }), l: (e2, n2, r3) => W2("a", { key: r3.key, href: G2(e2.target, "a", "href") }, W2("sup", { key: r3.key }, e2.text)) }, 8: { t: ["[ ]", "[x]"], o: Ce($), i: 1, u: (e2) => ({ completed: e2[1].toLowerCase() === "x" }), l: (e2, n2, r3) => W2("input", { checked: e2.completed, key: r3.key, readOnly: !0, type: "checkbox" }) }, 9: { t: ["#"], o: Te(t.enforceAtxHeadings ? z : S), i: 1, u: (e2, n2, r3) => ({ children: Pe(n2, e2[2], r3), id: l2(e2[2], Ae), level: e2[1].length }), l: (e2, n2, r3) => W2("h" + e2.level, { id: e2.id, key: r3.key }, n2(e2.children, r3)) }, 10: { t: (e2) => {
2245
+ let n2 = e2.indexOf(`
2246
+ `);
2247
+ return n2 > 0 && n2 < e2.length - 1 && (e2[n2 + 1] === "=" || e2[n2 + 1] === "-");
2248
+ }, o: Te(E), i: 1, u: (e2, n2, r3) => ({ children: Pe(n2, e2[1], r3), level: e2[2] === "=" ? 1 : 2, type: "9" }) }, 11: { t: ["<"], o: Me(A), i: 1, u(e2, n2, r3) {
2249
+ let [, t2] = e2[3].match(ae), o2 = RegExp("^" + t2, "gm"), a2 = e2[3].replace(o2, ""), i2 = Q2(H2, a2) ? Ne : Pe, u2 = e2[1].toLowerCase(), l3 = c.indexOf(u2) !== -1, s2 = (l3 ? u2 : e2[1]).trim(), f2 = { attrs: ce2(s2, e2[2]), noInnerParse: l3, tag: s2 };
2250
+ if (r3.inAnchor = r3.inAnchor || u2 === "a", l3) f2.text = e2[3];
2251
+ else {
2252
+ let e3 = r3.inHTML;
2253
+ r3.inHTML = !0, f2.children = i2(n2, a2, r3), r3.inHTML = e3;
2254
+ }
2255
+ return r3.inAnchor = !1, f2;
2256
+ }, l: (e2, r3, t2) => W2(e2.tag, n({ key: t2.key }, e2.attrs), e2.text || (e2.children ? r3(e2.children, t2) : "")) }, 13: { t: ["<"], o: Me(O), i: 1, u(e2) {
2257
+ let n2 = e2[1].trim();
2258
+ return { attrs: ce2(n2, e2[2] || ""), tag: n2 };
2259
+ }, l: (e2, r3, t2) => W2(e2.tag, n({}, e2.attrs, { key: t2.key })) }, 12: { t: ["<!--"], o: Me(B), i: 1, u: () => ({}), l: Ve }, 14: { t: ["!["], o: Ie(be), i: 1, u: (e2) => ({ alt: Fe(e2[1]), target: Fe(e2[2]), title: Fe(e2[3]) }), l: (e2, n2, r3) => W2("img", { key: r3.key, alt: e2.alt || void 0, title: e2.title || void 0, src: G2(e2.target, "img", "src") }) }, 15: { t: ["["], o: Ce(ve), i: 3, u: (e2, n2, r3) => ({ children: Ze(n2, e2[1], r3), target: Fe(e2[2]), title: Fe(e2[3]) }), l: (e2, n2, r3) => W2("a", { key: r3.key, href: G2(e2.target, "a", "href"), title: e2.title }, n2(e2.children, r3)) }, 16: { t: ["<"], o: Ce(I), i: 0, u(e2) {
2260
+ let n2 = e2[1], r3 = !1;
2261
+ return n2.indexOf("@") !== -1 && n2.indexOf("//") === -1 && (r3 = !0, n2 = n2.replace("mailto:", "")), { children: [{ text: n2, type: "27" }], target: r3 ? "mailto:" + n2 : n2, type: "15" };
2262
+ } }, 17: { t: (e2, n2) => !n2.inAnchor && !t.disableAutoLink && (ze(e2, "http://") || ze(e2, "https://")), o: Ce(C), i: 0, u: (e2) => ({ children: [{ text: e2[1], type: "27" }], target: e2[1], title: void 0, type: "15" }) }, 20: qe(W2, 1), 33: qe(W2, 2), 19: { t: [`
2263
+ `], o: Te(m), i: 3, u: Ue, l: () => `
2264
+ ` }, 21: { o: je(function(e2, n2) {
2265
+ if (n2.inline || n2.simple || n2.inHTML && e2.indexOf(`
2266
+
2267
+ `) === -1 && n2.prevCapture.indexOf(`
2268
+
2269
+ `) === -1) return null;
2270
+ let r3 = "", t2 = 0;
2271
+ for (; ; ) {
2272
+ let n3 = e2.indexOf(`
2273
+ `, t2), o3 = e2.slice(t2, n3 === -1 ? void 0 : n3 + 1);
2274
+ if (Q2(V2, o3) || (r3 += o3, n3 === -1 || !o3.trim())) break;
2275
+ t2 = n3 + 1;
2276
+ }
2277
+ let o2 = Se(r3);
2278
+ return o2 === "" ? null : [r3, , o2];
2279
+ }), i: 3, u: Ge, l: (e2, n2, r3) => W2("p", { key: r3.key }, n2(e2.children, r3)) }, 22: { t: ["["], o: Ce(D), i: 0, u: (e2) => (ue2[e2[1]] = { target: e2[2], title: e2[4] }, {}), l: Ve }, 23: { t: ["!["], o: Ie(F), i: 0, u: (e2) => ({ alt: e2[1] ? Fe(e2[1]) : void 0, ref: e2[2] }), l: (e2, n2, r3) => ue2[e2.ref] ? W2("img", { key: r3.key, alt: e2.alt, src: G2(ue2[e2.ref].target, "img", "src"), title: ue2[e2.ref].title }) : null }, 24: { t: (e2) => e2[0] === "[" && e2.indexOf("](") === -1, o: Ce(P), i: 0, u: (e2, n2, r3) => ({ children: n2(e2[1], r3), fallbackChildren: e2[0], ref: e2[2] }), l: (e2, n2, r3) => ue2[e2.ref] ? W2("a", { key: r3.key, href: G2(ue2[e2.ref].target, "a", "href"), title: ue2[e2.ref].title }, n2(e2.children, r3)) : W2("span", { key: r3.key }, e2.fallbackChildren) }, 25: { t: ["|"], o: Te(M), i: 1, u: Le, l(e2, n2, r3) {
2280
+ let t2 = e2;
2281
+ return W2("table", { key: r3.key }, W2("thead", null, W2("tr", null, t2.header.map(function(e3, o2) {
2282
+ return W2("th", { key: o2, style: Oe(t2, o2) }, n2(e3, r3));
2283
+ }))), W2("tbody", null, t2.cells.map(function(e3, o2) {
2284
+ return W2("tr", { key: o2 }, e3.map(function(e4, o3) {
2285
+ return W2("td", { key: o3, style: Oe(t2, o3) }, n2(e4, r3));
2286
+ }));
2287
+ })));
2288
+ } }, 27: { o: je(function(e2, n2) {
2289
+ let r3;
2290
+ return ze(e2, ":") && (r3 = ee.exec(e2)), r3 || te.exec(e2);
2291
+ }), i: 4, u(e2) {
2292
+ let n2 = e2[0];
2293
+ return { text: n2.indexOf("&") === -1 ? n2 : n2.replace(R, (e3, n3) => t.namedCodesToUnicode[n3] || e3) };
2294
+ }, l: (e2) => e2.text }, 28: { t: ["**", "__"], o: Ie(J), i: 2, u: (e2, n2, r3) => ({ children: n2(e2[2], r3) }), l: (e2, n2, r3) => W2("strong", { key: r3.key }, n2(e2.children, r3)) }, 29: { t: (e2) => {
2295
+ let n2 = e2[0];
2296
+ return (n2 === "*" || n2 === "_") && e2[1] !== n2;
2297
+ }, o: Ie(K), i: 3, u: (e2, n2, r3) => ({ children: n2(e2[2], r3) }), l: (e2, n2, r3) => W2("em", { key: r3.key }, n2(e2.children, r3)) }, 30: { t: ["\\"], o: Ie(ne), i: 1, u: (e2) => ({ text: e2[1], type: "27" }) }, 31: { t: ["=="], o: Ie(X), i: 3, u: Ge, l: (e2, n2, r3) => W2("mark", { key: r3.key }, n2(e2.children, r3)) }, 32: { t: ["~~"], o: Ie(Y), i: 3, u: Ge, l: (e2, n2, r3) => W2("del", { key: r3.key }, n2(e2.children, r3)) } };
2298
+ t.disableParsingRawHTML === !0 && (delete le2[11], delete le2[13]);
2299
+ let se2 = (function(e2) {
2300
+ var n2 = Object.keys(e2);
2301
+ function r3(t2, o2) {
2302
+ var a2 = [];
2303
+ if (o2.prevCapture = o2.prevCapture || "", t2.trim()) for (; t2; ) for (var c2 = 0; c2 < n2.length; ) {
2304
+ var i2 = n2[c2], u2 = e2[i2];
2305
+ if (!u2.t || Ee(t2, o2, u2.t)) {
2306
+ var l3 = u2.o(t2, o2);
2307
+ if (l3 && l3[0]) {
2308
+ t2 = t2.substring(l3[0].length);
2309
+ var s2 = u2.u(l3, r3, o2);
2310
+ o2.prevCapture += l3[0], s2.type || (s2.type = i2), a2.push(s2);
2311
+ break;
2312
+ }
2313
+ c2++;
2314
+ } else c2++;
2315
+ }
2316
+ return o2.prevCapture = "", a2;
2317
+ }
2318
+ return n2.sort(function(n3, r4) {
2319
+ return e2[n3].i - e2[r4].i || (n3 < r4 ? -1 : 1);
2320
+ }), function(e3, n3) {
2321
+ return r3((function(e4) {
2322
+ return e4.replace(k, `
2323
+ `).replace(v, "").replace(N, " ");
2324
+ })(e3), n3);
2325
+ };
2326
+ })(le2), fe2 = /* @__PURE__ */ (function(e2, n2) {
2327
+ return function r3(t2, o2 = {}) {
2328
+ if (Array.isArray(t2)) {
2329
+ let e3 = o2.key, n3 = [], a2 = !1;
2330
+ for (let e4 = 0; e4 < t2.length; e4++) {
2331
+ o2.key = e4;
2332
+ let c2 = r3(t2[e4], o2), i2 = $e(c2);
2333
+ i2 && a2 ? n3[n3.length - 1] += c2 : c2 !== null && n3.push(c2), a2 = i2;
2334
+ }
2335
+ return o2.key = e3, n3;
2336
+ }
2337
+ return (function(r4, t3, o3) {
2338
+ let a2 = e2[r4.type].l;
2339
+ return n2 ? n2(() => a2(r4, t3, o3), r4, t3, o3) : a2(r4, t3, o3);
2340
+ })(t2, r3, o2);
2341
+ };
2342
+ })(le2, t.renderRule), _e2 = re2(r2);
2343
+ return ie2.length ? W2("div", null, _e2, W2("footer", { key: "footer" }, ie2.map(function(e2) {
2344
+ return W2("div", { id: l2(e2.identifier, Ae), key: e2.identifier }, e2.identifier, fe2(se2(e2.footnote, { inline: !0 })));
2345
+ }))) : _e2;
2346
+ }
2347
+ var index_modern_default = (n2) => {
2348
+ let { children: t, options: o2 } = n2, a2 = (function(e2, n3) {
2349
+ if (e2 == null) return {};
2350
+ var r2, t2, o3 = {}, a3 = Object.keys(e2);
2351
+ for (t2 = 0; t2 < a3.length; t2++) n3.indexOf(r2 = a3[t2]) >= 0 || (o3[r2] = e2[r2]);
2352
+ return o3;
2353
+ })(n2, r);
2354
+ return e.cloneElement(We(t ?? "", o2), a2);
2355
+ };
2356
+
2357
+ // src/addon-docs/blocks/components/ArgsTable/ArgControl.tsx
2358
+ import { useCallback as useCallback5, useEffect as useEffect6, useState as useState6 } from "react";
2359
+ import { Link } from "@aussieljk/forkbook/internal/components";
2360
+ import { Fragment as Fragment7, jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
2361
+ var Controls2 = {
2362
+ array: ObjectControl,
2363
+ object: ObjectControl,
2364
+ boolean: BooleanControl,
2365
+ color: ColorControl,
2366
+ date: DateControl,
2367
+ number: NumberControl,
2368
+ check: OptionsControl,
2369
+ "inline-check": OptionsControl,
2370
+ radio: OptionsControl,
2371
+ "inline-radio": OptionsControl,
2372
+ select: OptionsControl,
2373
+ "multi-select": OptionsControl,
2374
+ range: RangeControl,
2375
+ text: TextControl,
2376
+ file: FilesControl
2377
+ }, NoControl = () => jsx16(Fragment7, { children: "-" }), ArgControl = ({
2378
+ row,
2379
+ arg,
2380
+ updateArgs,
2381
+ isRequired,
2382
+ storyId,
2383
+ controlsId
2384
+ }) => {
2385
+ let { key, control } = row, [isFocused, setFocused] = useState6(!1), [boxedValue, setBoxedValue] = useState6({ value: arg });
2386
+ useEffect6(() => {
2387
+ isFocused || setBoxedValue({ value: arg });
2388
+ }, [isFocused, arg]);
2389
+ let onChange = useCallback5(
2390
+ (argVal) => (setBoxedValue({ value: argVal }), updateArgs({ [key]: argVal }), argVal),
2391
+ [updateArgs, key]
2392
+ ), onBlur = useCallback5(() => setFocused(!1), []), onFocus = useCallback5(() => setFocused(!0), []);
2393
+ if (!control || control.disable)
2394
+ return control?.disable !== !0 && row?.type?.name !== "function" ? jsxs12(Fragment7, { children: [
2395
+ jsx16("span", { className: "sbdocs sbdocs-argcontrol-setup", children: jsx16(
2396
+ Link,
2397
+ {
2398
+ href: "https://storybook.js.org/docs/essentials/controls?ref=ui",
2399
+ target: "_blank",
2400
+ withArrow: !0,
2401
+ children: "Setup controls"
2402
+ }
2403
+ ) }),
2404
+ jsx16("span", { className: "sbdocs sbdocs-argcontrol-placeholder", children: jsx16(NoControl, {}) })
2405
+ ] }) : jsx16(NoControl, {});
2406
+ let props = {
2407
+ name: key,
2408
+ storyId,
2409
+ controlsId,
2410
+ argType: row,
2411
+ value: boxedValue.value,
2412
+ required: isRequired,
2413
+ onChange,
2414
+ onBlur,
2415
+ onFocus
2416
+ }, Control = Controls2[control.type] || NoControl;
2417
+ return jsx16(Control, { ...props, ...control, controlType: control.type });
2418
+ };
2419
+
2420
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/ArgJsDoc.module.css
2421
+ var id11 = "core/src/addon-docs/blocks/components/ArgsTable/ArgJsDoc.module.css";
2422
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id11}"]`)) {
2423
+ let style = document.createElement("style");
2424
+ style.setAttribute("data-sb-css", id11), style.textContent = ".sb-YWHtwG-table.sb-YWHtwG-table.sb-YWHtwG-table{border-collapse:collapse;border-spacing:0;border:none;& tr{background:0 0;border:none!important}& td,& th{border:none;padding:0;width:auto!important}margin-top:0;margin-bottom:0;& p{margin:0 0 10px;&:last-child{margin-bottom:0}}& a{color:var(--sb-color-secondary)}& th:first-of-type,& td:first-of-type{padding-left:0}& th:last-of-type,& td:last-of-type{padding-right:0}& td{padding-top:0;padding-bottom:4px;&:not(:first-of-type){padding-left:10px;padding-right:0}}& tbody{box-shadow:none;border:none}& code{white-space:nowrap;line-height:1;font-size:var(--sb-size-s1);color:var(--sb-color-default-text);background-color:#00000003;border:1px solid #0000000d;border-radius:3px;margin:0;padding:3px 5px;display:inline-block}& div span{font-weight:700}}:where([data-sb-theme=dark]) .sb-YWHtwG-table.sb-YWHtwG-table.sb-YWHtwG-table code{background-color:#ffffff05;border:1px solid #ffffff0d}", document.head.appendChild(style);
2425
+ }
2426
+ var ArgJsDoc_default = { table: "sb-YWHtwG-table" };
2427
+
2428
+ // src/addon-docs/blocks/components/ArgsTable/ArgJsDoc.tsx
2429
+ import { Fragment as Fragment8, jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
2430
+ var Table = ({ className, ...props }) => jsx17("table", { className: clsx(ArgJsDoc_default.table, className), ...props }), ArgJsDoc = ({ tags }) => {
2431
+ let params = (tags.params || []).filter((x2) => x2.description), hasDisplayableParams = params.length !== 0, hasDisplayableDeprecated = tags.deprecated != null, hasDisplayableReturns = tags.returns != null && tags.returns.description != null;
2432
+ return !hasDisplayableParams && !hasDisplayableReturns && !hasDisplayableDeprecated ? null : jsx17(Fragment8, { children: jsx17(Table, { children: jsxs13("tbody", { children: [
2433
+ hasDisplayableDeprecated && jsx17("tr", { children: jsxs13("td", { colSpan: 2, children: [
2434
+ jsx17("strong", { children: "Deprecated" }),
2435
+ ": ",
2436
+ tags.deprecated?.toString()
2437
+ ] }) }, "deprecated"),
2438
+ hasDisplayableParams && params.map((x2) => jsxs13("tr", { children: [
2439
+ jsx17("td", { children: jsx17("code", { children: x2.name }) }),
2440
+ jsx17("td", { children: x2.description && jsx17(index_modern_default, { children: x2.description }) })
2441
+ ] }, x2.name)),
2442
+ hasDisplayableReturns && jsxs13("tr", { children: [
2443
+ jsx17("td", { children: jsx17("code", { children: "Returns" }) }),
2444
+ jsx17("td", { children: tags.returns?.description && jsx17(index_modern_default, { children: tags.returns.description }) })
2445
+ ] }, "returns")
2446
+ ] }) }) });
2447
+ };
2448
+
2449
+ // src/addon-docs/blocks/components/ArgsTable/ArgValue.tsx
2450
+ import { useState as useState7 } from "react";
2451
+ import {
2452
+ PopoverProvider,
2453
+ SyntaxHighlighter,
2454
+ codeCommon
2455
+ } from "@aussieljk/forkbook/internal/components";
2456
+ import { ChevronSmallDownIcon as ChevronSmallDownIcon2, ChevronSmallUpIcon } from "@storybook/icons";
2457
+
2458
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/ArgValue.module.css
2459
+ var id12 = "core/src/addon-docs/blocks/components/ArgsTable/ArgValue.module.css";
2460
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id12}"]`)) {
2461
+ let style = document.createElement("style");
2462
+ style.setAttribute("data-sb-css", id12), style.textContent = ".sb-MP4rPa-summary{flex-flow:wrap;align-items:flex-start;min-width:100px;margin-bottom:-4px;display:flex;&[data-expanded]{flex-direction:column}}.sb-MP4rPa-detailsContainer{flex-direction:column;display:flex;& summary{order:2}& summary::-webkit-details-marker{display:none}& summary::marker{content:none}}.sb-MP4rPa-alignedDetails{flex-flow:column wrap;align-items:flex-start;display:flex}.sb-MP4rPa-text{font-family:var(--sb-font-mono);font-size:var(--sb-size-s1);word-break:break-word;white-space:normal;flex:none;max-width:100%;margin:0 4px 4px 0;padding-top:2px;padding-bottom:2px;line-height:13px;&[data-simple]{background:0 0;border:0;padding-left:0}}.sb-MP4rPa-expandButton{font-family:var(--sb-font-mono);color:var(--sb-color-secondary);cursor:pointer;background:0 0;border:none;margin:0 0 4px;padding:1px 6px;line-height:normal}.sb-MP4rPa-expandable{font-family:var(--sb-font-mono);color:var(--sb-color-secondary);font-size:var(--sb-size-s1);white-space:nowrap;cursor:pointer;align-items:center;margin:0;display:flex;&:hover{border:1px solid #00000026}&:focus-visible{outline:2px solid var(--sb-color-secondary);outline-offset:2px}}:where([data-sb-theme=dark]) .sb-MP4rPa-expandable:hover{border:1px solid #ffffff26}.sb-MP4rPa-detail{min-width:200px;max-width:800px;font-family:var(--sb-font-mono);font-size:var(--sb-size-s1);box-sizing:content-box;padding-right:16px;& code{padding:0!important}}.sb-MP4rPa-chevron{margin-left:4px}", document.head.appendChild(style);
2463
+ }
2464
+ var ArgValue_default = { chevron: "sb-MP4rPa-chevron", alignedDetails: "sb-MP4rPa-alignedDetails", expandButton: "sb-MP4rPa-expandButton", expandable: "sb-MP4rPa-expandable", detail: "sb-MP4rPa-detail", text: "sb-MP4rPa-text", summary: "sb-MP4rPa-summary", detailsContainer: "sb-MP4rPa-detailsContainer" };
2465
+
2466
+ // src/addon-docs/blocks/components/ArgsTable/ArgValue.tsx
2467
+ import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
2468
+ var ITEMS_BEFORE_EXPANSION = 8, EmptyArg = () => jsx18("span", { children: "-" }), ArgText = ({ text, simple }) => jsx18("span", { className: clsx(codeCommon, ArgValue_default.text), "data-simple": simple || void 0, children: text }), getSummaryItems = (summary) => {
2469
+ if (!summary)
2470
+ return [summary];
2471
+ let summaryItems = summary.split("|").map((value) => value.trim());
2472
+ return uniq(summaryItems);
2473
+ }, renderSummaryItems = (summaryItems) => summaryItems.slice(0, ITEMS_BEFORE_EXPANSION).map((item) => jsx18(ArgText, { text: item === "" ? '""' : item }, item)), renderExpandedItems = (summaryItems) => summaryItems.slice(ITEMS_BEFORE_EXPANSION).map((item) => jsx18(ArgText, { text: item === "" ? '""' : item }, item)), ArgSummary = ({ value, initialExpandedArgs }) => {
2474
+ let { summary, detail } = value, [isOpen, setIsOpen] = useState7(!1), [isExpanded, setIsExpanded] = useState7(initialExpandedArgs || !1);
2475
+ if (summary == null)
2476
+ return null;
2477
+ let summaryAsString = typeof summary.toString == "function" ? summary.toString() : summary;
2478
+ if (detail == null) {
2479
+ if (/[(){}[\]<>]/.test(summaryAsString))
2480
+ return jsx18(ArgText, { text: summaryAsString });
2481
+ let summaryItems = getSummaryItems(summaryAsString), itemsCount = summaryItems.length;
2482
+ return itemsCount > ITEMS_BEFORE_EXPANSION ? jsxs14("div", { className: ArgValue_default.summary, "data-expanded": isExpanded || void 0, children: [
2483
+ renderSummaryItems(summaryItems),
2484
+ jsxs14(
2485
+ "details",
2486
+ {
2487
+ className: ArgValue_default.detailsContainer,
2488
+ open: isExpanded,
2489
+ onToggle: (e2) => setIsExpanded(e2.currentTarget.open),
2490
+ children: [
2491
+ jsx18("div", { className: ArgValue_default.alignedDetails, children: renderExpandedItems(summaryItems) }),
2492
+ jsx18("summary", { className: ArgValue_default.expandButton, role: "button", children: isExpanded ? "Show less..." : `Show ${itemsCount - ITEMS_BEFORE_EXPANSION} more...` })
2493
+ ]
2494
+ }
2495
+ )
2496
+ ] }) : jsx18("div", { className: ArgValue_default.summary, children: renderSummaryItems(summaryItems) });
2497
+ }
2498
+ return jsx18(
2499
+ PopoverProvider,
2500
+ {
2501
+ ariaLabel: "Arg value details",
2502
+ placement: "bottom",
2503
+ visible: isOpen,
2504
+ onVisibleChange: (isVisible) => {
2505
+ setIsOpen(isVisible);
2506
+ },
2507
+ hasCloseButton: !0,
2508
+ popover: jsx18("div", { className: ArgValue_default.detail, children: jsx18(SyntaxHighlighter, { language: "jsx", format: !1, children: detail }) }),
2509
+ children: jsxs14("button", { className: clsx(codeCommon, ArgValue_default.expandable, "sbdocs-expandable"), children: [
2510
+ jsx18("span", { children: summaryAsString }),
2511
+ isOpen ? jsx18(ChevronSmallUpIcon, { className: ArgValue_default.chevron }) : jsx18(ChevronSmallDownIcon2, { className: ArgValue_default.chevron })
2512
+ ] })
2513
+ }
2514
+ );
2515
+ }, ArgValue = ({ value, initialExpandedArgs }) => value == null ? jsx18(EmptyArg, {}) : jsx18(ArgSummary, { value, initialExpandedArgs });
2516
+
2517
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/ArgRow.module.css
2518
+ var id13 = "core/src/addon-docs/blocks/components/ArgsTable/ArgRow.module.css";
2519
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id13}"]`)) {
2520
+ let style = document.createElement("style");
2521
+ style.setAttribute("data-sb-css", id13), style.textContent = ".sb-oKJ3yG-name{font-weight:700}.sb-oKJ3yG-required{color:var(--sb-color-negative);font-family:var(--sb-font-mono);cursor:help}.sb-oKJ3yG-description{&.sb-oKJ3yG-description{& p{margin:0 0 10px}& a{color:var(--sb-color-secondary)}}& code{white-space:nowrap;font-size:12px;line-height:1;font-family:var(--sb-font-mono);color:var(--sb-color-default-text);background-color:#00000003;border:1px solid #0000000d;border-radius:3px;margin:0;padding:3px 5px;display:inline-block}& pre>code{white-space:pre-wrap}}:where([data-sb-theme=dark]) .sb-oKJ3yG-description code{background-color:#ffffff05;border:1px solid #ffffff0d}.sb-oKJ3yG-type,.sb-oKJ3yG-typeWithJsDoc{color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .1));margin-top:0}:where([data-sb-theme=dark]) :is(.sb-oKJ3yG-type,.sb-oKJ3yG-typeWithJsDoc){color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .2))}.sb-oKJ3yG-type[data-has-description]{margin-top:4px}.sb-oKJ3yG-typeWithJsDoc{margin-bottom:12px;&[data-has-description]{margin-top:12px}}.sb-oKJ3yG-nameCell{padding-left:20px!important;&[data-expandable]{padding-left:40px!important}}.sb-oKJ3yG-row span.sbdocs-argcontrol-setup,.sb-oKJ3yG-row:is(:hover,:focus-within) span.sbdocs-argcontrol-placeholder{white-space:nowrap;clip:rect(0, 0, 0, 0);clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sb-oKJ3yG-row:is(:hover,:focus-within) span.sbdocs-argcontrol-setup{position:unset;width:unset;height:unset;padding:unset;margin:unset;overflow:unset;white-space:unset;clip:unset;clip-path:unset;border:unset}", document.head.appendChild(style);
2522
+ }
2523
+ var ArgRow_default = { row: "sb-oKJ3yG-row", required: "sb-oKJ3yG-required", type: "sb-oKJ3yG-type", name: "sb-oKJ3yG-name", typeWithJsDoc: "sb-oKJ3yG-typeWithJsDoc", description: "sb-oKJ3yG-description", nameCell: "sb-oKJ3yG-nameCell" };
2524
+
2525
+ // src/addon-docs/blocks/components/ArgsTable/ArgRow.tsx
2526
+ import { Fragment as Fragment9, jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
2527
+ var toSummary = (value) => value && { summary: typeof value == "string" ? value : value.name }, ArgRow = (props) => {
2528
+ let { row, updateArgs, compact, expandable, initialExpandedArgs, docsLang } = props, { name, description } = row, table = row.table || {}, type = table.type || toSummary(row.type), defaultValue = table.defaultValue, required = row.type?.required, hasDescription = description != null && description !== "";
2529
+ return jsxs15("tr", { className: ArgRow_default.row, children: [
2530
+ jsxs15("td", { className: ArgRow_default.nameCell, "data-expandable": expandable || void 0, children: [
2531
+ jsx19("span", { className: ArgRow_default.name, children: name }),
2532
+ required ? jsx19("span", { className: ArgRow_default.required, "aria-hidden": !0, title: "Required", children: "*" }) : null
2533
+ ] }),
2534
+ compact ? null : jsxs15("td", { children: [
2535
+ hasDescription && jsx19("div", { className: ArgRow_default.description, lang: docsLang, children: jsx19(index_modern_default, { children: description }) }),
2536
+ table.jsDocTags != null ? jsxs15(Fragment9, { children: [
2537
+ jsx19(
2538
+ "div",
2539
+ {
2540
+ className: ArgRow_default.typeWithJsDoc,
2541
+ "data-has-description": hasDescription || void 0,
2542
+ children: jsx19(ArgValue, { value: type, initialExpandedArgs })
2543
+ }
2544
+ ),
2545
+ jsx19(ArgJsDoc, { tags: table.jsDocTags })
2546
+ ] }) : jsx19("div", { className: ArgRow_default.type, "data-has-description": hasDescription || void 0, children: jsx19(ArgValue, { value: type, initialExpandedArgs }) })
2547
+ ] }),
2548
+ compact ? null : jsx19("td", { children: jsx19(ArgValue, { value: defaultValue, initialExpandedArgs }) }),
2549
+ updateArgs ? jsx19("td", { children: jsx19(ArgControl, { ...props, isRequired: !!required }) }) : null
2550
+ ] });
2551
+ };
2552
+
2553
+ // src/addon-docs/blocks/components/ArgsTable/Empty.tsx
2554
+ import { useEffect as useEffect7, useState as useState8 } from "react";
2555
+ import { EmptyTabContent, Link as Link2 } from "@aussieljk/forkbook/internal/components";
2556
+ import { DocumentIcon } from "@storybook/icons";
2557
+
2558
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/Empty.module.css
2559
+ var id14 = "core/src/addon-docs/blocks/components/ArgsTable/Empty.module.css";
2560
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id14}"]`)) {
2561
+ let style = document.createElement("style");
2562
+ style.setAttribute("data-sb-css", id14), style.textContent = ".sb-NF550q-wrapper{border:1px solid var(--sb-app-border-color);border-radius:var(--sb-app-border-radius);background:var(--sb-background-content);flex-direction:column;justify-content:center;align-items:center;gap:15px;height:auto;padding:40px;display:flex;&[data-in-addon-panel]{border:none;border-radius:0;height:100%;padding:0}}.sb-NF550q-links{font-size:calc(var(--sb-size-s2) - 1px);gap:25px;display:flex}", document.head.appendChild(style);
2563
+ }
2564
+ var Empty_default = { wrapper: "sb-NF550q-wrapper", links: "sb-NF550q-links" };
2565
+
2566
+ // src/addon-docs/blocks/components/ArgsTable/Empty.tsx
2567
+ import { Fragment as Fragment10, jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
2568
+ var Empty = ({ inAddonPanel }) => {
2569
+ let [isLoading, setIsLoading] = useState8(!0);
2570
+ return useEffect7(() => {
2571
+ let load = setTimeout(() => {
2572
+ setIsLoading(!1);
2573
+ }, 100);
2574
+ return () => clearTimeout(load);
2575
+ }, []), isLoading ? null : jsx20("div", { className: Empty_default.wrapper, "data-in-addon-panel": inAddonPanel || void 0, children: jsx20(
2576
+ EmptyTabContent,
2577
+ {
2578
+ title: "This story has no controls",
2579
+ description: jsxs16(Fragment10, { children: [
2580
+ "Forkbook couldn't find or generate any controls for this story. Define",
2581
+ " ",
2582
+ jsx20("code", { children: "args" }),
2583
+ " or ",
2584
+ jsx20("code", { children: "argTypes" }),
2585
+ ", or configure docgen to let Forkbook generate controls automatically."
2586
+ ] }),
2587
+ footer: jsx20("div", { className: Empty_default.links, children: jsxs16(
2588
+ Link2,
2589
+ {
2590
+ href: "https://storybook.js.org/docs/essentials/controls?ref=ui",
2591
+ target: "_blank",
2592
+ withArrow: !0,
2593
+ children: [
2594
+ jsx20(DocumentIcon, {}),
2595
+ " Read docs"
2596
+ ]
2597
+ }
2598
+ ) })
2599
+ }
2600
+ ) });
2601
+ };
2602
+
2603
+ // src/addon-docs/blocks/components/ArgsTable/SectionRow.tsx
2604
+ import { useState as useState9 } from "react";
2605
+ import { ChevronDownIcon, ChevronRightIcon } from "@storybook/icons";
2606
+
2607
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/SectionRow.module.css
2608
+ var id15 = "core/src/addon-docs/blocks/components/ArgsTable/SectionRow.module.css";
2609
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id15}"]`)) {
2610
+ let style = document.createElement("style");
2611
+ style.setAttribute("data-sb-css", id15), style.textContent = ".sb-IPbRpq-expanderIcon{width:12px;height:12px;color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .25));border:none;margin-top:-2px;margin-left:-10px;margin-right:8px;display:inline-block}:where([data-sb-theme=dark]) .sb-IPbRpq-expanderIcon{color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .3))}.sb-IPbRpq-flexWrapper{align-items:center;line-height:20px;display:flex}.sb-IPbRpq-section{letter-spacing:.35em;text-transform:uppercase;font-weight:var(--sb-weight-bold);font-size:calc(var(--sb-size-s1) - 1px);color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .4));position:relative;background:var(--sb-background-app)!important;&~td{background:var(--sb-background-app)!important}}:where([data-sb-theme=dark]) .sb-IPbRpq-section{color:rgb(from var(--sb-color-default-text) r g b / calc(alpha - .6))}.sb-IPbRpq-subsection{font-weight:var(--sb-weight-bold);font-size:calc(var(--sb-size-s2) - 1px);background:var(--sb-background-app);position:relative}.sb-IPbRpq-cell{position:relative}.sb-IPbRpq-row:hover>td{cursor:row-resize;background-color:hsl(from var(--sb-background-app) h s calc(l + .5))!important}.sb-IPbRpq-clickIntercept{font:inherit;color:#0000;background:0 0;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0;cursor:row-resize!important}", document.head.appendChild(style);
2612
+ }
2613
+ var SectionRow_default = { clickIntercept: "sb-IPbRpq-clickIntercept", expanderIcon: "sb-IPbRpq-expanderIcon", flexWrapper: "sb-IPbRpq-flexWrapper", cell: "sb-IPbRpq-cell", section: "sb-IPbRpq-section", subsection: "sb-IPbRpq-subsection", row: "sb-IPbRpq-row" };
2614
+
2615
+ // src/addon-docs/blocks/components/ArgsTable/SectionRow.tsx
2616
+ import { Fragment as Fragment11, jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
2617
+ var SectionRow = ({
2618
+ level = "section",
2619
+ label,
2620
+ children,
2621
+ initialExpanded = !0,
2622
+ colSpan = 3
2623
+ }) => {
2624
+ let [expanded, setExpanded] = useState9(initialExpanded), levelClassName = level === "subsection" ? SectionRow_default.subsection : SectionRow_default.section, itemCount = children?.length || 0, caption = level === "subsection" ? `${itemCount} item${itemCount !== 1 ? "s" : ""}` : "", helperText = `${expanded ? "Hide" : "Show"} ${level === "subsection" ? itemCount : label} item${itemCount !== 1 ? "s" : ""}`;
2625
+ return jsxs17(Fragment11, { children: [
2626
+ jsxs17("tr", { className: SectionRow_default.row, title: helperText, children: [
2627
+ jsxs17("td", { className: levelClassName, colSpan: 1, children: [
2628
+ jsx21(
2629
+ "button",
2630
+ {
2631
+ className: SectionRow_default.clickIntercept,
2632
+ onClick: (e2) => setExpanded(!expanded),
2633
+ tabIndex: 0,
2634
+ children: helperText
2635
+ }
2636
+ ),
2637
+ jsxs17("span", { className: SectionRow_default.flexWrapper, children: [
2638
+ expanded ? jsx21(ChevronDownIcon, { className: SectionRow_default.expanderIcon }) : jsx21(ChevronRightIcon, { className: SectionRow_default.expanderIcon }),
2639
+ label
2640
+ ] })
2641
+ ] }),
2642
+ jsxs17("td", { className: SectionRow_default.cell, colSpan: colSpan - 1, children: [
2643
+ jsx21(
2644
+ "button",
2645
+ {
2646
+ className: SectionRow_default.clickIntercept,
2647
+ onClick: (e2) => setExpanded(!expanded),
2648
+ tabIndex: -1,
2649
+ style: { outline: "none" },
2650
+ children: helperText
2651
+ }
2652
+ ),
2653
+ expanded ? null : caption
2654
+ ] })
2655
+ ] }),
2656
+ expanded ? children : null
2657
+ ] });
2658
+ };
2659
+
2660
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/Skeleton.module.css
2661
+ var id16 = "core/src/addon-docs/blocks/components/ArgsTable/Skeleton.module.css";
2662
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id16}"]`)) {
2663
+ let style = document.createElement("style");
2664
+ style.setAttribute("data-sb-css", id16), style.textContent = ".sb-j2xz2a-tableWrapper{border-spacing:0;width:100%;color:var(--sb-color-default-text)}.sb-j2xz2a-row{border-bottom:1px solid var(--sb-app-border-color);display:flex;&:last-child{border-bottom:0}}.sb-j2xz2a-column{flex-direction:column;align-items:flex-start;gap:5px;padding:10px 15px;display:flex;&[data-position=first]{width:25%;padding-left:20px}&[data-position=second]{width:35%}&[data-position=third]{width:15%}&[data-position=last]{width:25%;padding-right:20px}}.sb-j2xz2a-skeletonText{background:var(--sb-app-border-color);border-radius:3px;width:100%;height:16px;animation:1.5s ease-in-out infinite sb-j2xz2a-glow}@keyframes sb-j2xz2a-glow{0%,to{opacity:1}50%{opacity:.4}}", document.head.appendChild(style);
2665
+ }
2666
+ var Skeleton_default = { glow: "sb-j2xz2a-glow", tableWrapper: "sb-j2xz2a-tableWrapper", column: "sb-j2xz2a-column", row: "sb-j2xz2a-row", skeletonText: "sb-j2xz2a-skeletonText" };
2667
+
2668
+ // src/addon-docs/blocks/components/ArgsTable/Skeleton.tsx
2669
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
2670
+ var SkeletonText = ({ width }) => jsx22("div", { className: Skeleton_default.skeletonText, style: { width } }), Skeleton = () => jsxs18("div", { className: Skeleton_default.tableWrapper, children: [
2671
+ jsxs18("div", { className: Skeleton_default.row, children: [
2672
+ jsx22("div", { className: Skeleton_default.column, "data-position": "first", children: jsx22(SkeletonText, { width: "60%" }) }),
2673
+ jsx22("div", { className: Skeleton_default.column, "data-position": "second", children: jsx22(SkeletonText, { width: "30%" }) }),
2674
+ jsx22("div", { className: Skeleton_default.column, "data-position": "third", children: jsx22(SkeletonText, { width: "60%" }) }),
2675
+ jsx22("div", { className: Skeleton_default.column, "data-position": "last", children: jsx22(SkeletonText, { width: "60%" }) })
2676
+ ] }),
2677
+ jsxs18("div", { className: Skeleton_default.row, children: [
2678
+ jsx22("div", { className: Skeleton_default.column, "data-position": "first", children: jsx22(SkeletonText, { width: "60%" }) }),
2679
+ jsxs18("div", { className: Skeleton_default.column, "data-position": "second", children: [
2680
+ jsx22(SkeletonText, { width: "80%" }),
2681
+ jsx22(SkeletonText, { width: "30%" })
2682
+ ] }),
2683
+ jsx22("div", { className: Skeleton_default.column, "data-position": "third", children: jsx22(SkeletonText, { width: "60%" }) }),
2684
+ jsx22("div", { className: Skeleton_default.column, "data-position": "last", children: jsx22(SkeletonText, { width: "60%" }) })
2685
+ ] }),
2686
+ jsxs18("div", { className: Skeleton_default.row, children: [
2687
+ jsx22("div", { className: Skeleton_default.column, "data-position": "first", children: jsx22(SkeletonText, { width: "60%" }) }),
2688
+ jsxs18("div", { className: Skeleton_default.column, "data-position": "second", children: [
2689
+ jsx22(SkeletonText, { width: "80%" }),
2690
+ jsx22(SkeletonText, { width: "30%" })
2691
+ ] }),
2692
+ jsx22("div", { className: Skeleton_default.column, "data-position": "third", children: jsx22(SkeletonText, { width: "60%" }) }),
2693
+ jsx22("div", { className: Skeleton_default.column, "data-position": "last", children: jsx22(SkeletonText, { width: "60%" }) })
2694
+ ] }),
2695
+ jsxs18("div", { className: Skeleton_default.row, children: [
2696
+ jsx22("div", { className: Skeleton_default.column, "data-position": "first", children: jsx22(SkeletonText, { width: "60%" }) }),
2697
+ jsxs18("div", { className: Skeleton_default.column, "data-position": "second", children: [
2698
+ jsx22(SkeletonText, { width: "80%" }),
2699
+ jsx22(SkeletonText, { width: "30%" })
2700
+ ] }),
2701
+ jsx22("div", { className: Skeleton_default.column, "data-position": "third", children: jsx22(SkeletonText, { width: "60%" }) }),
2702
+ jsx22("div", { className: Skeleton_default.column, "data-position": "last", children: jsx22(SkeletonText, { width: "60%" }) })
2703
+ ] })
2704
+ ] });
2705
+
2706
+ // storybook-css:/Users/ljk/p/repos/storybook/code/core/src/addon-docs/blocks/components/ArgsTable/ArgsTable.module.css
2707
+ var id17 = "core/src/addon-docs/blocks/components/ArgsTable/ArgsTable.module.css";
2708
+ if (typeof document < "u" && !document.querySelector(`style[data-sb-css="${id17}"]`)) {
2709
+ let style = document.createElement("style");
2710
+ style.setAttribute("data-sb-css", id17), style.textContent = ".sb-sQsT7G-tableWrapper.sb-sQsT7G-tableWrapper{border-spacing:0;color:var(--sb-color-default-text);& td,& th{vertical-align:top;text-overflow:ellipsis;border:none;padding:0}font-size:calc(var(--sb-size-s2) - 1px);text-align:left;margin-top:25px;margin-bottom:40px;width:100%;margin-inline:1px;padding-inline:0;line-height:19px;& thead th:first-of-type,& td:first-of-type{width:25%}& th:first-of-type,& td:first-of-type{padding-left:20px}& th:last-of-type,& td:last-of-type{padding-right:20px}&:not([data-compact]){& th:nth-of-type(2),& td:nth-of-type(2){width:35%}& td:nth-of-type(3){width:15%}& th:last-of-type,& td:last-of-type{width:25%}}& th{color:var(--sb-text-muted-color);padding:10px 15px}& td{padding-top:10px;padding-bottom:10px;&:not(:first-of-type){padding-left:15px;padding-right:15px}&:last-of-type{padding-right:20px}}& tbody>tr>*{background:var(--sb-background-content);border-top:1px solid var(--sb-app-border-color)}&:not([data-in-addon-panel]) tbody{filter:drop-shadow(0 1px 3px #0000001a);&>tr:first-of-type>*{border-block-start:1px solid var(--sb-app-border-color)}&>tr:last-of-type>*{border-block-end:1px solid var(--sb-app-border-color)}&>tr>:first-of-type{border-inline-start:1px solid var(--sb-app-border-color)}&>tr>:last-of-type{border-inline-end:1px solid var(--sb-app-border-color)}&>tr:first-of-type>td:first-of-type{border-top-left-radius:var(--sb-app-border-radius)}&>tr:first-of-type>td:last-of-type{border-top-right-radius:var(--sb-app-border-radius)}&>tr:last-of-type>td:first-of-type{border-bottom-left-radius:var(--sb-app-border-radius)}&>tr:last-of-type>td:last-of-type{border-bottom-right-radius:var(--sb-app-border-radius)}}&[data-in-tab-panel]{margin-inline:0;padding-inline:3px}&[data-in-addon-panel]{margin-top:0;margin-bottom:0;margin-inline:0}}:where([data-sb-theme=dark]) .sb-sQsT7G-tableWrapper.sb-sQsT7G-tableWrapper:not([data-in-addon-panel]) tbody{filter:drop-shadow(0 1px 3px #0003)}.sb-sQsT7G-tablePositionWrapper{position:relative}.sb-sQsT7G-buttonPositionWrapper{position:absolute;top:10px;right:22px}.sb-sQsT7G-resetButton{margin:-4px -12px -4px 0}@media (forced-colors:active){.sb-sQsT7G-tableWrapper.sb-sQsT7G-tableWrapper tbody{filter:none!important;&>tr>*{border-color:canvastext!important}}}", document.head.appendChild(style);
2711
+ }
2712
+ var ArgsTable_default = { tablePositionWrapper: "sb-sQsT7G-tablePositionWrapper", tableWrapper: "sb-sQsT7G-tableWrapper", buttonPositionWrapper: "sb-sQsT7G-buttonPositionWrapper", resetButton: "sb-sQsT7G-resetButton" };
2713
+
2714
+ // src/addon-docs/blocks/components/ArgsTable/ArgsTable.tsx
2715
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
2716
+ var TableWrapper = ({
2717
+ compact,
2718
+ inAddonPanel,
2719
+ inTabPanel,
2720
+ className,
2721
+ ...props
2722
+ }) => jsx23(
2723
+ "table",
2724
+ {
2725
+ className: clsx(ArgsTable_default.tableWrapper, className),
2726
+ "data-compact": compact || void 0,
2727
+ "data-in-addon-panel": inAddonPanel || void 0,
2728
+ "data-in-tab-panel": inTabPanel || void 0,
2729
+ ...props
2730
+ }
2731
+ );
2732
+ var sortFns = {
2733
+ alpha: (a2, b2) => (a2.name ?? "").localeCompare(b2.name ?? ""),
2734
+ requiredFirst: (a2, b2) => +!!b2.type?.required - +!!a2.type?.required || (a2.name ?? "").localeCompare(b2.name ?? ""),
2735
+ none: null
2736
+ }, groupRows = (rows, sort) => {
2737
+ let sections = { ungrouped: [], ungroupedSubsections: {}, sections: {} };
2738
+ if (!rows)
2739
+ return sections;
2740
+ Object.entries(rows).forEach(([key, row]) => {
2741
+ let { category, subcategory } = row?.table || {};
2742
+ if (category) {
2743
+ let section = sections.sections[category] || { ungrouped: [], subsections: {} };
2744
+ if (!subcategory)
2745
+ section.ungrouped.push({ key, ...row });
2746
+ else {
2747
+ let subsection = section.subsections[subcategory] || [];
2748
+ subsection.push({ key, ...row }), section.subsections[subcategory] = subsection;
2749
+ }
2750
+ sections.sections[category] = section;
2751
+ } else if (subcategory) {
2752
+ let subsection = sections.ungroupedSubsections[subcategory] || [];
2753
+ subsection.push({ key, ...row }), sections.ungroupedSubsections[subcategory] = subsection;
2754
+ } else
2755
+ sections.ungrouped.push({ key, ...row });
2756
+ });
2757
+ let sortFn = sortFns[sort], sortSubsection = (record) => sortFn ? Object.keys(record).reduce(
2758
+ (acc, cur) => ({
2759
+ ...acc,
2760
+ [cur]: record[cur].sort(sortFn)
2761
+ }),
2762
+ {}
2763
+ ) : record;
2764
+ return {
2765
+ ungrouped: sortFn ? sections.ungrouped.sort(sortFn) : sections.ungrouped,
2766
+ ungroupedSubsections: sortSubsection(sections.ungroupedSubsections),
2767
+ sections: Object.keys(sections.sections).reduce(
2768
+ (acc, cur) => ({
2769
+ ...acc,
2770
+ [cur]: {
2771
+ ungrouped: sortFn ? sections.sections[cur].ungrouped.sort(sortFn) : sections.sections[cur].ungrouped,
2772
+ subsections: sortSubsection(sections.sections[cur].subsections)
2773
+ }
2774
+ }),
2775
+ {}
2776
+ )
2777
+ };
2778
+ }, safeIncludeConditionalArg = (row, args, globals) => {
2779
+ try {
2780
+ return includeConditionalArg(row, args, globals);
2781
+ } catch (err) {
2782
+ return once.warn(err.message), !1;
2783
+ }
2784
+ }, ArgsTable = (props) => {
2785
+ let {
2786
+ updateArgs,
2787
+ resetArgs,
2788
+ compact,
2789
+ inAddonPanel,
2790
+ inTabPanel,
2791
+ initialExpandedArgs,
2792
+ sort = "none",
2793
+ isLoading,
2794
+ storyId,
2795
+ controlsId,
2796
+ docsLang
2797
+ } = props, { rows, args, globals } = "rows" in props ? props : { rows: void 0, args: void 0, globals: void 0 }, isResettingRef = useRef5(!1), [isResetting, setIsResetting] = useState10(!1);
2798
+ useEffect8(() => {
2799
+ isResettingRef.current = !1, setIsResetting(!1);
2800
+ }, [args]);
2801
+ let handleResetClick = useCallback6(() => {
2802
+ !isResettingRef.current && resetArgs && (isResettingRef.current = !0, setIsResetting(!0), resetArgs());
2803
+ }, [resetArgs]);
2804
+ if ("error" in props) {
2805
+ let { error } = props;
2806
+ return jsxs19(EmptyBlock, { children: [
2807
+ error,
2808
+ "\xA0",
2809
+ jsxs19(Link3, { href: "http://storybook.js.org/docs/?ref=ui", target: "_blank", withArrow: !0, children: [
2810
+ jsx23(DocumentIcon2, {}),
2811
+ " Read the docs"
2812
+ ] })
2813
+ ] });
2814
+ }
2815
+ if (isLoading)
2816
+ return jsx23(Skeleton, {});
2817
+ let groups = groupRows(
2818
+ pickBy(
2819
+ rows || {},
2820
+ (row) => !row?.table?.disable && safeIncludeConditionalArg(row, args || {}, globals || {})
2821
+ ),
2822
+ sort
2823
+ ), hasNoUngrouped = groups.ungrouped.length === 0, hasNoSections = Object.entries(groups.sections).length === 0, hasNoUngroupedSubsections = Object.entries(groups.ungroupedSubsections).length === 0;
2824
+ if (hasNoUngrouped && hasNoSections && hasNoUngroupedSubsections)
2825
+ return jsx23(Empty, { inAddonPanel });
2826
+ let colSpan = 1;
2827
+ updateArgs && (colSpan += 1), compact || (colSpan += 2);
2828
+ let expandable = Object.keys(groups.sections).length > 0, common = {
2829
+ updateArgs,
2830
+ compact,
2831
+ inAddonPanel,
2832
+ initialExpandedArgs,
2833
+ storyId,
2834
+ controlsId
2835
+ };
2836
+ return jsx23(ResetWrapper, { children: jsxs19("div", { className: ArgsTable_default.tablePositionWrapper, children: [
2837
+ updateArgs && !isLoading && resetArgs && jsx23("div", { className: ArgsTable_default.buttonPositionWrapper, children: jsx23(
2838
+ Button5,
2839
+ {
2840
+ className: ArgsTable_default.resetButton,
2841
+ variant: "ghost",
2842
+ padding: "small",
2843
+ onClick: handleResetClick,
2844
+ disabled: isResetting,
2845
+ ariaLabel: isResetting ? "Resetting controls..." : "Reset controls",
2846
+ lang: "en",
2847
+ children: jsx23(UndoIcon, {})
2848
+ }
2849
+ ) }),
2850
+ jsxs19(
2851
+ TableWrapper,
2852
+ {
2853
+ compact,
2854
+ inAddonPanel,
2855
+ inTabPanel,
2856
+ className: "docblock-argstable sb-unstyled",
2857
+ lang: "en",
2858
+ children: [
2859
+ jsx23("thead", { className: "docblock-argstable-head", children: jsxs19("tr", { children: [
2860
+ jsx23("th", { children: jsx23("span", { children: "Name" }) }),
2861
+ compact ? null : jsx23("th", { children: jsx23("span", { children: "Description" }) }),
2862
+ compact ? null : jsx23("th", { children: jsx23("span", { children: "Default" }) }),
2863
+ updateArgs ? jsx23("th", { children: jsx23("span", { children: "Control" }) }) : null
2864
+ ] }) }),
2865
+ jsxs19("tbody", { className: "docblock-argstable-body", children: [
2866
+ groups.ungrouped.map((row) => jsx23(
2867
+ ArgRow,
2868
+ {
2869
+ row,
2870
+ arg: args && args[row.key],
2871
+ docsLang,
2872
+ ...common
2873
+ },
2874
+ row.key
2875
+ )),
2876
+ Object.entries(groups.ungroupedSubsections).map(([subcategory, subsection]) => jsx23(
2877
+ SectionRow,
2878
+ {
2879
+ label: subcategory,
2880
+ level: "subsection",
2881
+ colSpan,
2882
+ children: subsection.map((row) => jsx23(
2883
+ ArgRow,
2884
+ {
2885
+ row,
2886
+ arg: args && args[row.key],
2887
+ expandable,
2888
+ ...common
2889
+ },
2890
+ row.key
2891
+ ))
2892
+ },
2893
+ subcategory
2894
+ )),
2895
+ Object.entries(groups.sections).map(([category, section]) => jsxs19(SectionRow, { label: category, level: "section", colSpan, children: [
2896
+ section.ungrouped.map((row) => jsx23(ArgRow, { row, arg: args && args[row.key], ...common }, row.key)),
2897
+ Object.entries(section.subsections).map(([subcategory, subsection]) => jsx23(
2898
+ SectionRow,
2899
+ {
2900
+ label: subcategory,
2901
+ level: "subsection",
2902
+ colSpan,
2903
+ children: subsection.map((row) => jsx23(
2904
+ ArgRow,
2905
+ {
2906
+ row,
2907
+ arg: args && args[row.key],
2908
+ expandable,
2909
+ ...common
2910
+ },
2911
+ row.key
2912
+ ))
2913
+ },
2914
+ subcategory
2915
+ ))
2916
+ ] }, category))
2917
+ ] })
2918
+ ]
2919
+ }
2920
+ )
2921
+ ] }) });
2922
+ };
2923
+
2924
+ export {
2925
+ index_modern_default,
2926
+ BooleanControl,
2927
+ parseDate,
2928
+ parseTime,
2929
+ formatDate,
2930
+ formatTime,
2931
+ DateControl,
2932
+ parse2 as parse,
2933
+ format,
2934
+ NumberControl,
2935
+ normalizeOptions,
2936
+ OptionsControl,
2937
+ ObjectControl,
2938
+ RangeControl,
2939
+ TextControl,
2940
+ FilesControl,
2941
+ ColorControl,
2942
+ ArgsTable
2943
+ };