@heycys/gallery 0.0.0-stage → 0.1.1

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 (806) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -2
  3. package/THIRD-PARTY-NOTICES.md +3303 -0
  4. package/assets/writing-preferences.md +107 -0
  5. package/bin/gallery.mjs +10 -0
  6. package/browser/editor/components/bookmark/icons.mjs +6 -0
  7. package/browser/editor/components/bookmark/index.mjs +80 -0
  8. package/browser/editor/components/bookmark/page.mjs +147 -0
  9. package/browser/editor/components/builders.mjs +19 -0
  10. package/browser/editor/components/callout/index.mjs +64 -0
  11. package/browser/editor/components/code/index.mjs +327 -0
  12. package/browser/editor/components/code/page.mjs +561 -0
  13. package/browser/editor/components/colors.mjs +50 -0
  14. package/browser/editor/components/columns/index.mjs +104 -0
  15. package/browser/editor/components/columns/page.mjs +310 -0
  16. package/browser/editor/components/details/index.mjs +73 -0
  17. package/browser/editor/components/details/page.mjs +86 -0
  18. package/browser/editor/components/dialog/index.mjs +84 -0
  19. package/browser/editor/components/dialog/page.mjs +201 -0
  20. package/browser/editor/components/divider/index.mjs +48 -0
  21. package/browser/editor/components/embed/icons.mjs +11 -0
  22. package/browser/editor/components/embed/index.mjs +123 -0
  23. package/browser/editor/components/embed/page.mjs +309 -0
  24. package/browser/editor/components/figure/index.mjs +87 -0
  25. package/browser/editor/components/figure/page.mjs +42 -0
  26. package/browser/editor/components/file/icons.mjs +14 -0
  27. package/browser/editor/components/file/index.mjs +77 -0
  28. package/browser/editor/components/file/page.mjs +114 -0
  29. package/browser/editor/components/flowchart/add.mjs +123 -0
  30. package/browser/editor/components/flowchart/index.mjs +246 -0
  31. package/browser/editor/components/flowchart/page.mjs +453 -0
  32. package/browser/editor/components/heading/index.mjs +53 -0
  33. package/browser/editor/components/heading/page.mjs +6 -0
  34. package/browser/editor/components/highlight/index.mjs +63 -0
  35. package/browser/editor/components/icon/index.mjs +57 -0
  36. package/browser/editor/components/icon/page.mjs +286 -0
  37. package/browser/editor/components/icons.mjs +48 -0
  38. package/browser/editor/components/image/crop.mjs +189 -0
  39. package/browser/editor/components/image/index.mjs +104 -0
  40. package/browser/editor/components/image/page.mjs +385 -0
  41. package/browser/editor/components/image/viewer.mjs +213 -0
  42. package/browser/editor/components/installed/index.mjs +179 -0
  43. package/browser/editor/components/installed/page.mjs +523 -0
  44. package/browser/editor/components/installed/served.mjs +35 -0
  45. package/browser/editor/components/kit.mjs +67 -0
  46. package/browser/editor/components/list/index.mjs +194 -0
  47. package/browser/editor/components/list/join.mjs +68 -0
  48. package/browser/editor/components/list/numbers.mjs +107 -0
  49. package/browser/editor/components/list/page.mjs +632 -0
  50. package/browser/editor/components/math/index.mjs +88 -0
  51. package/browser/editor/components/math/page.mjs +236 -0
  52. package/browser/editor/components/math/tex-logo.mjs +6 -0
  53. package/browser/editor/components/media/icons.mjs +19 -0
  54. package/browser/editor/components/media/page.mjs +192 -0
  55. package/browser/editor/components/media/parts.mjs +60 -0
  56. package/browser/editor/components/media/size.mjs +20 -0
  57. package/browser/editor/components/media/toolbar.mjs +37 -0
  58. package/browser/editor/components/media/write.mjs +7 -0
  59. package/browser/editor/components/pages.mjs +46 -0
  60. package/browser/editor/components/paragraph/index.mjs +43 -0
  61. package/browser/editor/components/paragraph/page.mjs +52 -0
  62. package/browser/editor/components/placeholder-bar.mjs +17 -0
  63. package/browser/editor/components/placeholder.mjs +128 -0
  64. package/browser/editor/components/quote/index.mjs +33 -0
  65. package/browser/editor/components/registry.mjs +859 -0
  66. package/browser/editor/components/rows.mjs +16 -0
  67. package/browser/editor/components/section/index.mjs +42 -0
  68. package/browser/editor/components/section/page.mjs +141 -0
  69. package/browser/editor/components/set-apart.mjs +24 -0
  70. package/browser/editor/components/sheets/index.mjs +137 -0
  71. package/browser/editor/components/sheets/page.mjs +227 -0
  72. package/browser/editor/components/sheets/pills.mjs +226 -0
  73. package/browser/editor/components/table/grid.mjs +73 -0
  74. package/browser/editor/components/table/index.mjs +308 -0
  75. package/browser/editor/components/table/page.mjs +683 -0
  76. package/browser/editor/components/table/slots.mjs +41 -0
  77. package/browser/editor/components/widget/index.mjs +50 -0
  78. package/browser/editor/page/annotate/anchors.mjs +230 -0
  79. package/browser/editor/page/annotate/card.mjs +102 -0
  80. package/browser/editor/page/annotate/index.mjs +1656 -0
  81. package/browser/editor/page/at-menu/index.mjs +317 -0
  82. package/browser/editor/page/autosave.mjs +1023 -0
  83. package/browser/editor/page/beside.mjs +21 -0
  84. package/browser/editor/page/block-info.mjs +63 -0
  85. package/browser/editor/page/block-menu/colors.mjs +84 -0
  86. package/browser/editor/page/block-menu/index.mjs +217 -0
  87. package/browser/editor/page/blocks.mjs +255 -0
  88. package/browser/editor/page/caret.mjs +682 -0
  89. package/browser/editor/page/changes/bar.mjs +102 -0
  90. package/browser/editor/page/changes/ghost.mjs +206 -0
  91. package/browser/editor/page/changes/gone-words.mjs +94 -0
  92. package/browser/editor/page/changes/index.mjs +447 -0
  93. package/browser/editor/page/changes/words.mjs +27 -0
  94. package/browser/editor/page/chip-fills.mjs +126 -0
  95. package/browser/editor/page/clipboard/import/colors.mjs +192 -0
  96. package/browser/editor/page/clipboard/import/html.mjs +792 -0
  97. package/browser/editor/page/clipboard/import/inline.mjs +232 -0
  98. package/browser/editor/page/clipboard/import/languages.mjs +42 -0
  99. package/browser/editor/page/clipboard/import/markdown.mjs +760 -0
  100. package/browser/editor/page/clipboard/import/math.mjs +100 -0
  101. package/browser/editor/page/clipboard/import/office.mjs +245 -0
  102. package/browser/editor/page/clipboard/import/read.mjs +120 -0
  103. package/browser/editor/page/clipboard/import/rich.mjs +29 -0
  104. package/browser/editor/page/clipboard/import/to-blocks.mjs +290 -0
  105. package/browser/editor/page/clipboard/index.mjs +816 -0
  106. package/browser/editor/page/clipboard/own/blocks.mjs +211 -0
  107. package/browser/editor/page/clipboard/own/chart-keys.mjs +58 -0
  108. package/browser/editor/page/clipboard/own/describe.mjs +124 -0
  109. package/browser/editor/page/clipboard/own/export.mjs +167 -0
  110. package/browser/editor/page/clipboard/own/ids.mjs +39 -0
  111. package/browser/editor/page/clipboard/own/index.mjs +13 -0
  112. package/browser/editor/page/clipboard/own/rules.mjs +44 -0
  113. package/browser/editor/page/clipboard/own/selection.mjs +159 -0
  114. package/browser/editor/page/clipboard/own/writers.mjs +315 -0
  115. package/browser/editor/page/columns/index.mjs +360 -0
  116. package/browser/editor/page/commit.mjs +1813 -0
  117. package/browser/editor/page/conflicts.mjs +249 -0
  118. package/browser/editor/page/convert.mjs +831 -0
  119. package/browser/editor/page/core.mjs +1693 -0
  120. package/browser/editor/page/drag/drop.mjs +307 -0
  121. package/browser/editor/page/drag/index.mjs +351 -0
  122. package/browser/editor/page/drag/preview.mjs +126 -0
  123. package/browser/editor/page/edge-scroll.mjs +50 -0
  124. package/browser/editor/page/editor.mjs +1780 -0
  125. package/browser/editor/page/emoji-picker/emoji-tab.mjs +287 -0
  126. package/browser/editor/page/emoji-picker/glyph-html.mjs +26 -0
  127. package/browser/editor/page/emoji-picker/grid.mjs +81 -0
  128. package/browser/editor/page/emoji-picker/icon-tab.mjs +217 -0
  129. package/browser/editor/page/emoji-picker/icons.mjs +31 -0
  130. package/browser/editor/page/emoji-picker/index.mjs +166 -0
  131. package/browser/editor/page/emoji-picker/styles.mjs +161 -0
  132. package/browser/editor/page/emoji-picker/support.mjs +204 -0
  133. package/browser/editor/page/emoji-picker/upload.mjs +236 -0
  134. package/browser/editor/page/export-report.mjs +23 -0
  135. package/browser/editor/page/fills.mjs +62 -0
  136. package/browser/editor/page/find/index.mjs +107 -0
  137. package/browser/editor/page/flags.mjs +70 -0
  138. package/browser/editor/page/fold/index.mjs +348 -0
  139. package/browser/editor/page/fold/rule.mjs +125 -0
  140. package/browser/editor/page/folded.mjs +23 -0
  141. package/browser/editor/page/format-bar/bar.mjs +449 -0
  142. package/browser/editor/page/format-bar/brush.mjs +77 -0
  143. package/browser/editor/page/format-bar/colors.mjs +46 -0
  144. package/browser/editor/page/format-bar/index.mjs +404 -0
  145. package/browser/editor/page/formula/index.mjs +236 -0
  146. package/browser/editor/page/formula/panel.mjs +336 -0
  147. package/browser/editor/page/formula/symbols.mjs +156 -0
  148. package/browser/editor/page/frame.mjs +74 -0
  149. package/browser/editor/page/frames.mjs +196 -0
  150. package/browser/editor/page/geometry.mjs +402 -0
  151. package/browser/editor/page/gesture.mjs +45 -0
  152. package/browser/editor/page/handle/index.mjs +650 -0
  153. package/browser/editor/page/handle-sizes.mjs +14 -0
  154. package/browser/editor/page/hints/index.mjs +84 -0
  155. package/browser/editor/page/history.mjs +401 -0
  156. package/browser/editor/page/insert/index.mjs +256 -0
  157. package/browser/editor/page/kept.mjs +38 -0
  158. package/browser/editor/page/links/address.mjs +40 -0
  159. package/browser/editor/page/links/index.mjs +866 -0
  160. package/browser/editor/page/links/pages.mjs +131 -0
  161. package/browser/editor/page/links/views.mjs +369 -0
  162. package/browser/editor/page/long-runs.mjs +75 -0
  163. package/browser/editor/page/look.mjs +77 -0
  164. package/browser/editor/page/made.mjs +24 -0
  165. package/browser/editor/page/margin.mjs +373 -0
  166. package/browser/editor/page/markdown/index.mjs +88 -0
  167. package/browser/editor/page/markdown/rules.mjs +33 -0
  168. package/browser/editor/page/marks.mjs +377 -0
  169. package/browser/editor/page/media-menu/index.mjs +158 -0
  170. package/browser/editor/page/menu.mjs +544 -0
  171. package/browser/editor/page/merge.mjs +124 -0
  172. package/browser/editor/page/notices.mjs +142 -0
  173. package/browser/editor/page/offered.mjs +32 -0
  174. package/browser/editor/page/outline/folds.mjs +53 -0
  175. package/browser/editor/page/outline/index.mjs +783 -0
  176. package/browser/editor/page/outline/list.mjs +184 -0
  177. package/browser/editor/page/outline/read.mjs +201 -0
  178. package/browser/editor/page/outline/strip.mjs +287 -0
  179. package/browser/editor/page/outline/tree.mjs +248 -0
  180. package/browser/editor/page/overlay-layer.mjs +227 -0
  181. package/browser/editor/page/overlays.mjs +205 -0
  182. package/browser/editor/page/own.mjs +28 -0
  183. package/browser/editor/page/pads.mjs +71 -0
  184. package/browser/editor/page/page-objects.mjs +105 -0
  185. package/browser/editor/page/panel.mjs +65 -0
  186. package/browser/editor/page/placement.mjs +58 -0
  187. package/browser/editor/page/post.mjs +41 -0
  188. package/browser/editor/page/present-links.mjs +50 -0
  189. package/browser/editor/page/quiet.mjs +48 -0
  190. package/browser/editor/page/resize/index.mjs +327 -0
  191. package/browser/editor/page/select-all/index.mjs +262 -0
  192. package/browser/editor/page/selection/delete.mjs +61 -0
  193. package/browser/editor/page/selection/index.mjs +164 -0
  194. package/browser/editor/page/selection/marquee.mjs +174 -0
  195. package/browser/editor/page/session.mjs +168 -0
  196. package/browser/editor/page/slash-menu/index.mjs +291 -0
  197. package/browser/editor/page/storage.mjs +48 -0
  198. package/browser/editor/page/sync-state.mjs +267 -0
  199. package/browser/editor/page/table/aligns.mjs +29 -0
  200. package/browser/editor/page/table/cell-bar.mjs +141 -0
  201. package/browser/editor/page/table/cells.mjs +527 -0
  202. package/browser/editor/page/table/icons.mjs +40 -0
  203. package/browser/editor/page/table/index.mjs +990 -0
  204. package/browser/editor/page/table/lists.mjs +187 -0
  205. package/browser/editor/page/table/widths.mjs +313 -0
  206. package/browser/editor/page/tex.mjs +32 -0
  207. package/browser/editor/page/text-select/index.mjs +671 -0
  208. package/browser/editor/page/tooltip.mjs +98 -0
  209. package/browser/editor/page/type-grid.mjs +83 -0
  210. package/browser/editor/page/typing/code-edges.mjs +274 -0
  211. package/browser/editor/page/typing/index.mjs +282 -0
  212. package/browser/editor/page/typing/leave.mjs +68 -0
  213. package/browser/editor/page/ui.mjs +160 -0
  214. package/browser/shared/annotations.mjs +569 -0
  215. package/browser/shared/code-folds.mjs +14 -0
  216. package/browser/shared/code-languages.mjs +70 -0
  217. package/browser/shared/code-lines.mjs +30 -0
  218. package/browser/shared/colors.mjs +30 -0
  219. package/browser/shared/component-catalog.mjs +573 -0
  220. package/browser/shared/components/bookmark.mjs +26 -0
  221. package/browser/shared/components/callout.mjs +9 -0
  222. package/browser/shared/components/chart.mjs +20 -0
  223. package/browser/shared/components/code.mjs +37 -0
  224. package/browser/shared/components/columns.mjs +16 -0
  225. package/browser/shared/components/details.mjs +15 -0
  226. package/browser/shared/components/dialog.mjs +28 -0
  227. package/browser/shared/components/diff.mjs +18 -0
  228. package/browser/shared/components/divider.mjs +6 -0
  229. package/browser/shared/components/embed.mjs +25 -0
  230. package/browser/shared/components/figure.mjs +14 -0
  231. package/browser/shared/components/file.mjs +23 -0
  232. package/browser/shared/components/heading.mjs +6 -0
  233. package/browser/shared/components/highlight.mjs +9 -0
  234. package/browser/shared/components/icon.mjs +18 -0
  235. package/browser/shared/components/image.mjs +39 -0
  236. package/browser/shared/components/index.mjs +396 -0
  237. package/browser/shared/components/installed.mjs +232 -0
  238. package/browser/shared/components/list.mjs +146 -0
  239. package/browser/shared/components/math.mjs +49 -0
  240. package/browser/shared/components/mention.mjs +33 -0
  241. package/browser/shared/components/page.mjs +46 -0
  242. package/browser/shared/components/paragraph.mjs +9 -0
  243. package/browser/shared/components/quote.mjs +6 -0
  244. package/browser/shared/components/section.mjs +8 -0
  245. package/browser/shared/components/sheets.mjs +80 -0
  246. package/browser/shared/components/state.mjs +20 -0
  247. package/browser/shared/components/table.mjs +49 -0
  248. package/browser/shared/components/text.mjs +14 -0
  249. package/browser/shared/components/widget.mjs +10 -0
  250. package/browser/shared/copy-ids.mjs +72 -0
  251. package/browser/shared/css-references.mjs +110 -0
  252. package/browser/shared/document-look.mjs +178 -0
  253. package/browser/shared/emoji/custom.mjs +91 -0
  254. package/browser/shared/emoji/data/LICENSE-lucide.txt +43 -0
  255. package/browser/shared/emoji/data/LICENSE-mingcute.txt +202 -0
  256. package/browser/shared/emoji/data/LICENSE-tabler.txt +21 -0
  257. package/browser/shared/emoji/data/README.md +28 -0
  258. package/browser/shared/emoji/data/categories.json +1 -0
  259. package/browser/shared/emoji/data/icons.json +1 -0
  260. package/browser/shared/emoji/data/keywords-en.json +1 -0
  261. package/browser/shared/emoji/data/keywords-zh.json +1 -0
  262. package/browser/shared/emoji/data/names.json +1 -0
  263. package/browser/shared/emoji/data/positions.json +1 -0
  264. package/browser/shared/emoji/data/twemoji-index.json +1 -0
  265. package/browser/shared/emoji/data/twemoji-svg.bin +0 -0
  266. package/browser/shared/emoji/data.mjs +194 -0
  267. package/browser/shared/emoji/emoji.mjs +38 -0
  268. package/browser/shared/emoji/glyphs.mjs +134 -0
  269. package/browser/shared/emoji/icon-value.mjs +91 -0
  270. package/browser/shared/escape.mjs +20 -0
  271. package/browser/shared/export-wrap.mjs +89 -0
  272. package/browser/shared/files.mjs +33 -0
  273. package/browser/shared/html-tree.mjs +59 -0
  274. package/browser/shared/http.mjs +22 -0
  275. package/browser/shared/i18n/en.mjs +1223 -0
  276. package/browser/shared/i18n/index.mjs +132 -0
  277. package/browser/shared/ids.mjs +24 -0
  278. package/browser/shared/import-types.mjs +23 -0
  279. package/browser/shared/inline-spacing.mjs +97 -0
  280. package/browser/shared/layers.mjs +42 -0
  281. package/browser/shared/long-runs.mjs +39 -0
  282. package/browser/shared/media.mjs +162 -0
  283. package/browser/shared/new-names.mjs +67 -0
  284. package/browser/shared/number-reading.mjs +92 -0
  285. package/browser/shared/old-names.mjs +143 -0
  286. package/browser/shared/outline.mjs +194 -0
  287. package/browser/shared/page-address.mjs +140 -0
  288. package/browser/shared/page-links.mjs +86 -0
  289. package/browser/shared/paths.mjs +73 -0
  290. package/browser/shared/preferences.mjs +116 -0
  291. package/browser/shared/preview-server.mjs +247 -0
  292. package/browser/shared/qa-levels.mjs +93 -0
  293. package/browser/shared/reading-place.mjs +91 -0
  294. package/browser/shared/renamed-storage.mjs +220 -0
  295. package/browser/shared/reports.mjs +46 -0
  296. package/browser/shared/search.mjs +85 -0
  297. package/browser/shared/session.mjs +77 -0
  298. package/browser/shared/table-chart.mjs +113 -0
  299. package/browser/shared/table-hides.mjs +120 -0
  300. package/browser/shared/table-slots.mjs +75 -0
  301. package/browser/shared/words.mjs +23 -0
  302. package/browser/shared/workspace-look.mjs +91 -0
  303. package/browser/shared/workspace.mjs +535 -0
  304. package/browser/shared/writing-preferences.mjs +68 -0
  305. package/browser/shared/zoom.mjs +57 -0
  306. package/dist/chunk-2B5E4CDJ.mjs +2 -0
  307. package/dist/chunk-342HXE3Q.mjs +2 -0
  308. package/dist/chunk-3HIRPVLU.mjs +2 -0
  309. package/dist/chunk-43B75J5T.mjs +2 -0
  310. package/dist/chunk-4FS7Z7WR.mjs +2 -0
  311. package/dist/chunk-4K5KC6V2.mjs +2 -0
  312. package/dist/chunk-5L7RYZCL.mjs +2 -0
  313. package/dist/chunk-5MHMDLZD.mjs +4 -0
  314. package/dist/chunk-5ZKJ3H4P.mjs +8 -0
  315. package/dist/chunk-64K7IPLO.mjs +255 -0
  316. package/dist/chunk-6QXGZM36.mjs +8 -0
  317. package/dist/chunk-6RGJOMJP.mjs +16 -0
  318. package/dist/chunk-742D2WWJ.mjs +19 -0
  319. package/dist/chunk-7DTINW6U.mjs +48 -0
  320. package/dist/chunk-A55HN5OK.mjs +2 -0
  321. package/dist/chunk-AGDILNWB.mjs +2 -0
  322. package/dist/chunk-AJ73XJF3.mjs +2 -0
  323. package/dist/chunk-AUZGSZJH.mjs +13 -0
  324. package/dist/chunk-BFE45AKL.mjs +2 -0
  325. package/dist/chunk-BGGDRNYQ.mjs +10 -0
  326. package/dist/chunk-BXO2ZY5P.mjs +2 -0
  327. package/dist/chunk-C564NU2H.mjs +77 -0
  328. package/dist/chunk-CEH4MRCC.mjs +2 -0
  329. package/dist/chunk-CY2FNNAB.mjs +16 -0
  330. package/dist/chunk-DFUDV4LX.mjs +2 -0
  331. package/dist/chunk-DKXG4XDG.mjs +2 -0
  332. package/dist/chunk-E7LWZRXY.mjs +4 -0
  333. package/dist/chunk-EZQ34M3F.mjs +124 -0
  334. package/dist/chunk-EZY3WC6Z.mjs +15 -0
  335. package/dist/chunk-FDLXYYG4.mjs +4 -0
  336. package/dist/chunk-FUKQNOQS.mjs +9 -0
  337. package/dist/chunk-GB5SOYQJ.mjs +7 -0
  338. package/dist/chunk-GRAXKKG4.mjs +2 -0
  339. package/dist/chunk-HYMEEXKN.mjs +4 -0
  340. package/dist/chunk-IVDLMMBD.mjs +2 -0
  341. package/dist/chunk-JPOSLGOC.mjs +6 -0
  342. package/dist/chunk-JVHHHGEA.mjs +3 -0
  343. package/dist/chunk-L3QKH4OK.mjs +26 -0
  344. package/dist/chunk-LAE5NQ4B.mjs +2 -0
  345. package/dist/chunk-LCTHTZIL.mjs +960 -0
  346. package/dist/chunk-LEF6DRCK.mjs +59 -0
  347. package/dist/chunk-LKX55H76.mjs +2 -0
  348. package/dist/chunk-LS4F7JUM.mjs +2 -0
  349. package/dist/chunk-MAFIGVXY.mjs +2 -0
  350. package/dist/chunk-NO5NJCHO.mjs +2 -0
  351. package/dist/chunk-NQPVAU63.mjs +2 -0
  352. package/dist/chunk-NSKUTQ5J.mjs +5 -0
  353. package/dist/chunk-O35FIXRB.mjs +2 -0
  354. package/dist/chunk-P2CAZPDP.mjs +3 -0
  355. package/dist/chunk-PL6GHLGD.mjs +15 -0
  356. package/dist/chunk-QAIHRH3I.mjs +13 -0
  357. package/dist/chunk-QJIR2BLP.mjs +6 -0
  358. package/dist/chunk-QR6A54KJ.mjs +3 -0
  359. package/dist/chunk-QUPLVPB2.mjs +7 -0
  360. package/dist/chunk-R7BNENLY.mjs +4 -0
  361. package/dist/chunk-S6O4UHLC.mjs +2 -0
  362. package/dist/chunk-SGJWQKEI.mjs +2 -0
  363. package/dist/chunk-SYGN7GLU.mjs +2 -0
  364. package/dist/chunk-TMYZB6AV.mjs +2 -0
  365. package/dist/chunk-TX6JH7TR.mjs +2 -0
  366. package/dist/chunk-TYK6VNAB.mjs +10 -0
  367. package/dist/chunk-U3SSPL4K.mjs +8 -0
  368. package/dist/chunk-U6KNPJPR.mjs +2 -0
  369. package/dist/chunk-UALRNVSE.mjs +4 -0
  370. package/dist/chunk-UH4SIXTR.mjs +2 -0
  371. package/dist/chunk-UMHUSOPJ.mjs +2 -0
  372. package/dist/chunk-V3HXVQEM.mjs +2 -0
  373. package/dist/chunk-V5JTW2LH.mjs +27 -0
  374. package/dist/chunk-V5VXUJKG.mjs +2 -0
  375. package/dist/chunk-V6XZ4VIR.mjs +2 -0
  376. package/dist/chunk-VBXMADMP.mjs +2 -0
  377. package/dist/chunk-VNV55RUA.mjs +2 -0
  378. package/dist/chunk-VPD2PS35.mjs +2 -0
  379. package/dist/chunk-W3BGBJQW.mjs +2 -0
  380. package/dist/chunk-W4VKN3GF.mjs +7 -0
  381. package/dist/chunk-W5BXXPDJ.mjs +3 -0
  382. package/dist/chunk-W7XHE4CT.mjs +2 -0
  383. package/dist/chunk-XNROSH2T.mjs +4 -0
  384. package/dist/chunk-XUNHRCOG.mjs +6 -0
  385. package/dist/chunk-Y34NR5JL.mjs +2 -0
  386. package/dist/chunk-Y6RLRPG3.mjs +3 -0
  387. package/dist/chunk-YEY3RSFQ.mjs +2 -0
  388. package/dist/cli.mjs +2 -0
  389. package/dist/server.mjs +2 -0
  390. package/dist/worker.mjs +5 -0
  391. package/kit/charts.js +355 -0
  392. package/kit/code.js +164 -0
  393. package/kit/dialogs.js +157 -0
  394. package/kit/math.js +2004 -0
  395. package/kit/report.css +2932 -0
  396. package/kit/runtime.js +1782 -0
  397. package/kit/sheets.js +123 -0
  398. package/kit/state.js +217 -0
  399. package/kit/tables.js +1499 -0
  400. package/kit/tokens.js +29 -0
  401. package/kit/ui.js +658 -0
  402. package/package.json +41 -4
  403. package/release.json +25 -0
  404. package/sdk/column-widths.d.ts +56 -0
  405. package/sdk/doc-charts.d.ts +82 -0
  406. package/sdk/doc-code.d.ts +28 -0
  407. package/sdk/doc-dialogs.d.ts +4 -0
  408. package/sdk/doc-kit.d.ts +147 -0
  409. package/sdk/doc-math.d.ts +3 -0
  410. package/sdk/doc-sheets.d.ts +15 -0
  411. package/sdk/doc-state.d.ts +41 -0
  412. package/sdk/doc-tables.d.ts +24 -0
  413. package/sdk/doc-tokens.d.ts +22 -0
  414. package/sdk/index.d.ts +30 -0
  415. package/skill/SKILL.md +150 -0
  416. package/skill/agents/openai.yaml +5 -0
  417. package/skill/references/building-components.md +367 -0
  418. package/skill/references/example-report.html +356 -0
  419. package/skill/references/writing-html.md +187 -0
  420. package/skill/sdk/column-widths.d.ts +56 -0
  421. package/skill/sdk/doc-charts.d.ts +82 -0
  422. package/skill/sdk/doc-code.d.ts +28 -0
  423. package/skill/sdk/doc-dialogs.d.ts +4 -0
  424. package/skill/sdk/doc-kit.d.ts +147 -0
  425. package/skill/sdk/doc-math.d.ts +3 -0
  426. package/skill/sdk/doc-sheets.d.ts +15 -0
  427. package/skill/sdk/doc-state.d.ts +41 -0
  428. package/skill/sdk/doc-tables.d.ts +24 -0
  429. package/skill/sdk/doc-tokens.d.ts +22 -0
  430. package/skill/sdk/index.d.ts +30 -0
  431. package/starter/doc.html +21 -0
  432. package/starter/doc.json +5 -0
  433. package/vendor/d3.v7.9.0.min.js +2 -0
  434. package/vendor/katex/auto-render.min.js +1 -0
  435. package/vendor/katex/contrib/mhchem.min.js +1 -0
  436. package/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  437. package/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  438. package/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  439. package/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  440. package/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  441. package/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  442. package/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  443. package/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  444. package/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  445. package/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  446. package/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  447. package/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  448. package/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  449. package/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  450. package/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  451. package/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  452. package/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  453. package/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  454. package/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  455. package/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  456. package/vendor/katex/katex.min.css +1 -0
  457. package/vendor/katex/katex.min.js +1 -0
  458. package/vendor/pdfjs/LICENSE +177 -0
  459. package/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  460. package/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  461. package/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
  462. package/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  463. package/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  464. package/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
  465. package/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  466. package/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  467. package/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  468. package/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  469. package/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  470. package/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  471. package/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  472. package/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  473. package/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  474. package/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
  475. package/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  476. package/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  477. package/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
  478. package/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  479. package/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  480. package/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  481. package/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  482. package/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  483. package/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  484. package/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  485. package/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  486. package/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  487. package/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  488. package/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  489. package/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  490. package/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  491. package/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  492. package/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  493. package/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  494. package/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  495. package/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  496. package/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  497. package/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  498. package/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  499. package/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  500. package/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  501. package/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  502. package/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  503. package/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  504. package/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  505. package/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
  506. package/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
  507. package/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  508. package/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  509. package/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  510. package/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  511. package/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  512. package/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  513. package/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  514. package/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  515. package/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  516. package/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  517. package/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  518. package/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  519. package/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  520. package/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  521. package/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
  522. package/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
  523. package/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
  524. package/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  525. package/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  526. package/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
  527. package/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  528. package/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  529. package/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
  530. package/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
  531. package/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  532. package/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  533. package/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  534. package/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  535. package/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  536. package/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  537. package/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  538. package/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  539. package/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
  540. package/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
  541. package/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  542. package/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  543. package/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  544. package/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  545. package/vendor/pdfjs/cmaps/H.bcmap +0 -0
  546. package/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  547. package/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  548. package/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  549. package/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  550. package/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  551. package/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  552. package/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  553. package/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  554. package/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  555. package/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  556. package/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  557. package/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  558. package/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
  559. package/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
  560. package/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  561. package/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  562. package/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
  563. package/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  564. package/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  565. package/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
  566. package/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  567. package/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  568. package/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  569. package/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  570. package/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  571. package/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  572. package/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
  573. package/vendor/pdfjs/cmaps/LICENSE +36 -0
  574. package/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
  575. package/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
  576. package/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  577. package/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  578. package/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
  579. package/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  580. package/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  581. package/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  582. package/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  583. package/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  584. package/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  585. package/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  586. package/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  587. package/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  588. package/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  589. package/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  590. package/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  591. package/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  592. package/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  593. package/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  594. package/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  595. package/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  596. package/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  597. package/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  598. package/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  599. package/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  600. package/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  601. package/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  602. package/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  603. package/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  604. package/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  605. package/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  606. package/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  607. package/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  608. package/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  609. package/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  610. package/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  611. package/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  612. package/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  613. package/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  614. package/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  615. package/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  616. package/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  617. package/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  618. package/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  619. package/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  620. package/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  621. package/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  622. package/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  623. package/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  624. package/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  625. package/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  626. package/vendor/pdfjs/cmaps/V.bcmap +0 -0
  627. package/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  628. package/vendor/pdfjs/legacy/build/pdf.min.mjs +27 -0
  629. package/vendor/pdfjs/legacy/build/pdf.worker.min.mjs +27 -0
  630. package/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  631. package/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  632. package/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  633. package/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  634. package/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  635. package/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  636. package/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  637. package/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  638. package/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  639. package/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  640. package/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  641. package/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +363 -0
  642. package/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  643. package/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  644. package/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  645. package/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  646. package/vendor/types/@types/d3/LICENSE +21 -0
  647. package/vendor/types/@types/d3/index.d.ts +39 -0
  648. package/vendor/types/@types/d3/package.json +81 -0
  649. package/vendor/types/@types/d3-array/LICENSE +21 -0
  650. package/vendor/types/@types/d3-array/index.d.ts +1118 -0
  651. package/vendor/types/@types/d3-array/package.json +56 -0
  652. package/vendor/types/@types/d3-axis/LICENSE +21 -0
  653. package/vendor/types/@types/d3-axis/index.d.ts +293 -0
  654. package/vendor/types/@types/d3-axis/package.json +47 -0
  655. package/vendor/types/@types/d3-brush/LICENSE +21 -0
  656. package/vendor/types/@types/d3-brush/index.d.ts +255 -0
  657. package/vendor/types/@types/d3-brush/package.json +42 -0
  658. package/vendor/types/@types/d3-chord/LICENSE +21 -0
  659. package/vendor/types/@types/d3-chord/index.d.ts +471 -0
  660. package/vendor/types/@types/d3-chord/package.json +40 -0
  661. package/vendor/types/@types/d3-color/LICENSE +21 -0
  662. package/vendor/types/@types/d3-color/index.d.ts +669 -0
  663. package/vendor/types/@types/d3-color/package.json +55 -0
  664. package/vendor/types/@types/d3-contour/LICENSE +21 -0
  665. package/vendor/types/@types/d3-contour/index.d.ts +222 -0
  666. package/vendor/types/@types/d3-contour/package.json +38 -0
  667. package/vendor/types/@types/d3-delaunay/LICENSE +21 -0
  668. package/vendor/types/@types/d3-delaunay/index.d.ts +316 -0
  669. package/vendor/types/@types/d3-delaunay/package.json +30 -0
  670. package/vendor/types/@types/d3-dispatch/LICENSE +21 -0
  671. package/vendor/types/@types/d3-dispatch/index.d.ts +96 -0
  672. package/vendor/types/@types/d3-dispatch/package.json +51 -0
  673. package/vendor/types/@types/d3-drag/LICENSE +21 -0
  674. package/vendor/types/@types/d3-drag/index.d.ts +395 -0
  675. package/vendor/types/@types/d3-drag/package.json +42 -0
  676. package/vendor/types/@types/d3-dsv/LICENSE +21 -0
  677. package/vendor/types/@types/d3-dsv/index.d.ts +482 -0
  678. package/vendor/types/@types/d3-dsv/package.json +45 -0
  679. package/vendor/types/@types/d3-ease/LICENSE +21 -0
  680. package/vendor/types/@types/d3-ease/index.d.ts +316 -0
  681. package/vendor/types/@types/d3-ease/package.json +40 -0
  682. package/vendor/types/@types/d3-fetch/LICENSE +21 -0
  683. package/vendor/types/@types/d3-fetch/index.d.ts +282 -0
  684. package/vendor/types/@types/d3-fetch/package.json +37 -0
  685. package/vendor/types/@types/d3-force/LICENSE +21 -0
  686. package/vendor/types/@types/d3-force/index.d.ts +899 -0
  687. package/vendor/types/@types/d3-force/package.json +45 -0
  688. package/vendor/types/@types/d3-format/LICENSE +21 -0
  689. package/vendor/types/@types/d3-format/index.d.ts +337 -0
  690. package/vendor/types/@types/d3-format/package.json +45 -0
  691. package/vendor/types/@types/d3-geo/LICENSE +21 -0
  692. package/vendor/types/@types/d3-geo/index.d.ts +1371 -0
  693. package/vendor/types/@types/d3-geo/package.json +48 -0
  694. package/vendor/types/@types/d3-hierarchy/LICENSE +21 -0
  695. package/vendor/types/@types/d3-hierarchy/index.d.ts +928 -0
  696. package/vendor/types/@types/d3-hierarchy/package.json +50 -0
  697. package/vendor/types/@types/d3-interpolate/LICENSE +21 -0
  698. package/vendor/types/@types/d3-interpolate/index.d.ts +387 -0
  699. package/vendor/types/@types/d3-interpolate/package.json +47 -0
  700. package/vendor/types/@types/d3-path/LICENSE +21 -0
  701. package/vendor/types/@types/d3-path/index.d.ts +108 -0
  702. package/vendor/types/@types/d3-path/package.json +41 -0
  703. package/vendor/types/@types/d3-polygon/LICENSE +21 -0
  704. package/vendor/types/@types/d3-polygon/index.d.ts +41 -0
  705. package/vendor/types/@types/d3-polygon/package.json +40 -0
  706. package/vendor/types/@types/d3-quadtree/LICENSE +21 -0
  707. package/vendor/types/@types/d3-quadtree/index.d.ts +204 -0
  708. package/vendor/types/@types/d3-quadtree/package.json +45 -0
  709. package/vendor/types/@types/d3-random/LICENSE +21 -0
  710. package/vendor/types/@types/d3-random/index.d.ts +313 -0
  711. package/vendor/types/@types/d3-random/package.json +41 -0
  712. package/vendor/types/@types/d3-scale/LICENSE +21 -0
  713. package/vendor/types/@types/d3-scale/index.d.ts +2669 -0
  714. package/vendor/types/@types/d3-scale/package.json +53 -0
  715. package/vendor/types/@types/d3-scale-chromatic/LICENSE +21 -0
  716. package/vendor/types/@types/d3-scale-chromatic/index.d.ts +520 -0
  717. package/vendor/types/@types/d3-scale-chromatic/package.json +46 -0
  718. package/vendor/types/@types/d3-selection/LICENSE +21 -0
  719. package/vendor/types/@types/d3-selection/index.d.ts +1210 -0
  720. package/vendor/types/@types/d3-selection/package.json +56 -0
  721. package/vendor/types/@types/d3-shape/LICENSE +21 -0
  722. package/vendor/types/@types/d3-shape/index.d.ts +2792 -0
  723. package/vendor/types/@types/d3-shape/package.json +53 -0
  724. package/vendor/types/@types/d3-time/LICENSE +21 -0
  725. package/vendor/types/@types/d3-time/index.d.ts +697 -0
  726. package/vendor/types/@types/d3-time/package.json +46 -0
  727. package/vendor/types/@types/d3-time-format/LICENSE +21 -0
  728. package/vendor/types/@types/d3-time-format/index.d.ts +202 -0
  729. package/vendor/types/@types/d3-time-format/package.json +40 -0
  730. package/vendor/types/@types/d3-timer/LICENSE +21 -0
  731. package/vendor/types/@types/d3-timer/index.d.ts +68 -0
  732. package/vendor/types/@types/d3-timer/package.json +45 -0
  733. package/vendor/types/@types/d3-transition/LICENSE +21 -0
  734. package/vendor/types/@types/d3-transition/index.d.ts +664 -0
  735. package/vendor/types/@types/d3-transition/package.json +47 -0
  736. package/vendor/types/@types/d3-zoom/LICENSE +21 -0
  737. package/vendor/types/@types/d3-zoom/index.d.ts +611 -0
  738. package/vendor/types/@types/d3-zoom/package.json +48 -0
  739. package/vendor/types/@types/geojson/LICENSE +21 -0
  740. package/vendor/types/@types/geojson/index.d.ts +202 -0
  741. package/vendor/types/@types/geojson/package.json +46 -0
  742. package/vendor/typescript/LICENSE.txt +55 -0
  743. package/vendor/typescript/lib.decorators.d.ts +384 -0
  744. package/vendor/typescript/lib.decorators.legacy.d.ts +22 -0
  745. package/vendor/typescript/lib.dom.d.ts +39429 -0
  746. package/vendor/typescript/lib.dom.iterable.d.ts +571 -0
  747. package/vendor/typescript/lib.es2015.collection.d.ts +147 -0
  748. package/vendor/typescript/lib.es2015.core.d.ts +597 -0
  749. package/vendor/typescript/lib.es2015.d.ts +28 -0
  750. package/vendor/typescript/lib.es2015.generator.d.ts +77 -0
  751. package/vendor/typescript/lib.es2015.iterable.d.ts +605 -0
  752. package/vendor/typescript/lib.es2015.promise.d.ts +81 -0
  753. package/vendor/typescript/lib.es2015.proxy.d.ts +128 -0
  754. package/vendor/typescript/lib.es2015.reflect.d.ts +144 -0
  755. package/vendor/typescript/lib.es2015.symbol.d.ts +46 -0
  756. package/vendor/typescript/lib.es2015.symbol.wellknown.d.ts +326 -0
  757. package/vendor/typescript/lib.es2016.array.include.d.ts +116 -0
  758. package/vendor/typescript/lib.es2016.d.ts +21 -0
  759. package/vendor/typescript/lib.es2016.intl.d.ts +31 -0
  760. package/vendor/typescript/lib.es2017.arraybuffer.d.ts +21 -0
  761. package/vendor/typescript/lib.es2017.d.ts +26 -0
  762. package/vendor/typescript/lib.es2017.date.d.ts +31 -0
  763. package/vendor/typescript/lib.es2017.intl.d.ts +44 -0
  764. package/vendor/typescript/lib.es2017.object.d.ts +49 -0
  765. package/vendor/typescript/lib.es2017.sharedmemory.d.ts +135 -0
  766. package/vendor/typescript/lib.es2017.string.d.ts +45 -0
  767. package/vendor/typescript/lib.es2017.typedarrays.d.ts +53 -0
  768. package/vendor/typescript/lib.es2018.asyncgenerator.d.ts +77 -0
  769. package/vendor/typescript/lib.es2018.asynciterable.d.ts +53 -0
  770. package/vendor/typescript/lib.es2018.d.ts +24 -0
  771. package/vendor/typescript/lib.es2018.intl.d.ts +83 -0
  772. package/vendor/typescript/lib.es2018.promise.d.ts +30 -0
  773. package/vendor/typescript/lib.es2018.regexp.d.ts +37 -0
  774. package/vendor/typescript/lib.es2019.array.d.ts +79 -0
  775. package/vendor/typescript/lib.es2019.d.ts +24 -0
  776. package/vendor/typescript/lib.es2019.intl.d.ts +23 -0
  777. package/vendor/typescript/lib.es2019.object.d.ts +33 -0
  778. package/vendor/typescript/lib.es2019.string.d.ts +37 -0
  779. package/vendor/typescript/lib.es2019.symbol.d.ts +24 -0
  780. package/vendor/typescript/lib.es2020.bigint.d.ts +765 -0
  781. package/vendor/typescript/lib.es2020.d.ts +27 -0
  782. package/vendor/typescript/lib.es2020.date.d.ts +42 -0
  783. package/vendor/typescript/lib.es2020.intl.d.ts +474 -0
  784. package/vendor/typescript/lib.es2020.number.d.ts +28 -0
  785. package/vendor/typescript/lib.es2020.promise.d.ts +47 -0
  786. package/vendor/typescript/lib.es2020.sharedmemory.d.ts +99 -0
  787. package/vendor/typescript/lib.es2020.string.d.ts +44 -0
  788. package/vendor/typescript/lib.es2020.symbol.wellknown.d.ts +41 -0
  789. package/vendor/typescript/lib.es2021.d.ts +23 -0
  790. package/vendor/typescript/lib.es2021.intl.d.ts +166 -0
  791. package/vendor/typescript/lib.es2021.promise.d.ts +48 -0
  792. package/vendor/typescript/lib.es2021.string.d.ts +33 -0
  793. package/vendor/typescript/lib.es2021.weakref.d.ts +78 -0
  794. package/vendor/typescript/lib.es2022.array.d.ts +121 -0
  795. package/vendor/typescript/lib.es2022.d.ts +25 -0
  796. package/vendor/typescript/lib.es2022.error.d.ts +75 -0
  797. package/vendor/typescript/lib.es2022.intl.d.ts +145 -0
  798. package/vendor/typescript/lib.es2022.object.d.ts +26 -0
  799. package/vendor/typescript/lib.es2022.regexp.d.ts +39 -0
  800. package/vendor/typescript/lib.es2022.string.d.ts +25 -0
  801. package/vendor/typescript/lib.es5.d.ts +4601 -0
  802. package/vendor/typescript/package.json +4 -0
  803. package/vendor/typescript/typescript.js +446 -0
  804. package/web/assets/index-Bh74DfsV.css +1 -0
  805. package/web/assets/index-UW0RyFFt.js +13 -0
  806. package/web/index.html +14 -0
package/kit/ui.js ADDED
@@ -0,0 +1,658 @@
1
+ "use strict";
2
+ (() => {
3
+ // src/shared/components/installed.mjs
4
+ var ATTRIBUTE = "data-doc-component";
5
+ var INSTANCE = `div[${ATTRIBUTE}], section[${ATTRIBUTE}]`;
6
+ var SLOT = "data-doc-slot";
7
+ var SLOT_PART = `div[${SLOT}], section[${SLOT}]`;
8
+ var REGION = `${INSTANCE}, ${SLOT_PART}`;
9
+ var PACKAGE_MARK = "data-doc-package";
10
+ var DATA_MOST = 1024 * 1024;
11
+
12
+ // src/shared/components/mention.mjs
13
+ var MENTION = "doc-link-mention";
14
+ var MENTION_ICON = "doc-link-mention-icon";
15
+ var MENTION_PAGE = "data-doc-page";
16
+ var mention_default = {
17
+ id: "mention",
18
+ attrs: {
19
+ [MENTION_PAGE]: "a page block left empty, which has no address to say it is one"
20
+ },
21
+ classes: [MENTION, MENTION_ICON],
22
+ runtime: {
23
+ attrs: { "a.doc-link-mention": ["data-doc-gone"] }
24
+ // a page block whose document is not there (render/page-chips.mjs)
25
+ }
26
+ };
27
+
28
+ // src/shared/css-references.mjs
29
+ var CSS_URLS = /url\(\s*(?:"([^"]*)"|'([^']*)'|([^)\s]*))\s*\)/dgi;
30
+ var CSS_IMPORTS = /@import\s*(?:"([^"]*)"|'([^']*)')/dgi;
31
+ var IMAGE_SETS = /image-set\(((?:[^()]|\([^()]*\))*)\)/dgi;
32
+ var SET_STRINGS = /url\([^)]*\)|"([^"]*)"|'([^']*)'/dgi;
33
+ var UNQUOTED_URL = /url\(\s*[^"'\s)][^)]*\)?/iy;
34
+ function blankedCss(css, { strings = false } = {}) {
35
+ const pieces = [];
36
+ let kept = 0;
37
+ const blank = (start, end) => {
38
+ pieces.push(css.slice(kept, start), css.slice(start, end).replace(/[^\r\n]/g, " "));
39
+ kept = end;
40
+ };
41
+ for (let at = 0; at < css.length; ) {
42
+ const char = css[at];
43
+ UNQUOTED_URL.lastIndex = at;
44
+ if (char === "\\") at += 2;
45
+ else if (char === "/" && css[at + 1] === "*") {
46
+ const close = css.indexOf("*/", at + 2);
47
+ const end = close < 0 ? css.length : close + 2;
48
+ blank(at, end);
49
+ at = end;
50
+ } else if (char === '"' || char === "'") {
51
+ let end = at + 1;
52
+ while (end < css.length && css[end] !== char && css[end] !== "\n" && css[end] !== "\r") end += css[end] === "\\" ? 2 : 1;
53
+ if (!strings) blank(at + 1, Math.min(end, css.length));
54
+ at = end + 1;
55
+ } else if ((char === "u" || char === "U") && UNQUOTED_URL.test(css)) at = UNQUOTED_URL.lastIndex;
56
+ else at++;
57
+ }
58
+ pieces.push(css.slice(kept));
59
+ return pieces.join("");
60
+ }
61
+ var unescapedCss = (value) => value.replace(/\\(?:([0-9a-f]{1,6})[ \t\n\f]?|\r\n|([\s\S]))/gi, (escape, hex, char) => {
62
+ if (hex === void 0) return char === void 0 || /[\r\n\f]/.test(char) ? "" : char;
63
+ const code = parseInt(hex, 16);
64
+ return code === 0 || code > 1114111 || code >= 55296 && code <= 57343 ? String.fromCharCode(65533) : String.fromCodePoint(code);
65
+ });
66
+ function afterImport(text, at) {
67
+ let end = at;
68
+ while (end > 0 && /\s/.test(text[end - 1])) end--;
69
+ return text.slice(Math.max(0, end - 7), end).toLowerCase() === "@import";
70
+ }
71
+ function cssReferences(css) {
72
+ const text = blankedCss(css);
73
+ const found = [];
74
+ const add = (match, kind, written, { index = match.index, offset = 0 } = {}) => {
75
+ const group = [1, 2, 3].find((at) => match[at] !== void 0);
76
+ const start = offset + match.indices[group][0];
77
+ const end = offset + match.indices[group][1];
78
+ const value = unescapedCss(css.slice(start, end)).trim();
79
+ found.push({ value, kind, index, start, end, written: written(value) });
80
+ };
81
+ for (const match of text.matchAll(CSS_URLS)) {
82
+ if (afterImport(text, match.index)) add(match, "import", (value) => `@import url(${value})`);
83
+ else add(match, "url", (value) => `url(${value})`);
84
+ }
85
+ for (const match of text.matchAll(CSS_IMPORTS)) add(match, "import", (value) => `@import "${value}"`);
86
+ for (const set of text.matchAll(IMAGE_SETS)) {
87
+ const offset = set.indices[1][0];
88
+ for (const match of set[1].matchAll(SET_STRINGS)) {
89
+ if (match[1] !== void 0 || match[2] !== void 0) add(match, "set", (value) => `image-set("${value}" \u2026)`, { index: offset + match.index, offset });
90
+ }
91
+ }
92
+ return found.sort((a, b) => a.index - b.index);
93
+ }
94
+ function cssWithAddresses(css, references, addressOf) {
95
+ let written = css;
96
+ for (const reference of [...references].sort((a, b) => b.start - a.start)) {
97
+ const address = addressOf(reference);
98
+ if (!address) continue;
99
+ const bare = css[reference.start - 1] !== '"' && css[reference.start - 1] !== "'";
100
+ written = `${written.slice(0, reference.start)}${bare ? `"${address}"` : address}${written.slice(reference.end)}`;
101
+ }
102
+ return written;
103
+ }
104
+
105
+ // src/shared/export-wrap.mjs
106
+ var EXPORT_CSP = [
107
+ "default-src 'none'",
108
+ "script-src 'unsafe-inline'",
109
+ "style-src 'unsafe-inline'",
110
+ "img-src data: blob:",
111
+ "font-src data:",
112
+ "media-src data: blob:",
113
+ "frame-src https: data: blob:",
114
+ // an embed block's page (online), or its file
115
+ "connect-src 'none'",
116
+ "object-src 'none'",
117
+ "base-uri 'none'",
118
+ "form-action 'none'"
119
+ ].join("; ");
120
+ var isolateUmd = (source) => `(function (exports, module, define) {
121
+ ${source}
122
+ }).call(globalThis, undefined, undefined, undefined);`;
123
+ var styleText = (css) => css.replace(/<\/style/gi, "<\\/style");
124
+ var scriptText = (code) => `(function () {
125
+ var script = document.createElement("script");
126
+ script.textContent = ${JSON.stringify(code).replace(/</g, "\\u003c")};
127
+ document.currentScript.after(script);
128
+ script.remove();
129
+ })();`;
130
+ var SOURCE_META = "doc-export-source";
131
+ var PACKAGES_META = "doc-export-packages";
132
+ var GENERATOR = "Gallery";
133
+ var GENERATORS = [GENERATOR, "HTML Report Studio"];
134
+ var OWN_METAS = new RegExp(`<head\\b[^>]*>\\s*<meta name="generator" content="(?:${GENERATORS.join("|")})">\\s*<meta http-equiv="Content-Security-Policy" content="[^"]*">\\s*<meta name="${SOURCE_META}" content="sha256:([0-9a-f]{64})">(?:\\s*<meta name="${PACKAGES_META}" content="([^"]*)">)?`, "i");
135
+
136
+ // src/shared/page-links.mjs
137
+ function pageId(slug) {
138
+ let one = 3735928559;
139
+ let two = 1103547991;
140
+ for (let at = 0; at < slug.length; at++) {
141
+ one = Math.imul(one ^ slug.charCodeAt(at), 2654435761);
142
+ two = Math.imul(two ^ slug.charCodeAt(at), 1597334677);
143
+ }
144
+ one = Math.imul(one ^ one >>> 16, 2246822507) ^ Math.imul(two ^ two >>> 13, 3266489909);
145
+ two = Math.imul(two ^ two >>> 16, 2246822507) ^ Math.imul(one ^ one >>> 13, 3266489909);
146
+ const hash = (two >>> 0) % 2 ** 21 * 2 ** 32 + (one >>> 0);
147
+ return String.fromCharCode(97 + hash % 26) + Math.floor(hash / 26).toString(36).padStart(7, "0").slice(-7);
148
+ }
149
+ function pageOfLink(links, value) {
150
+ if (links.has(value)) return value;
151
+ const id = value.slice(value.lastIndexOf("-") + 1);
152
+ for (const slug of links.keys()) if (pageId(slug) === id) return slug;
153
+ return null;
154
+ }
155
+
156
+ // src/shared/page-address.mjs
157
+ var SLUG = "[a-z0-9]+(?:-[a-z0-9]+)*";
158
+ var FILE = "(?:doc|report)\\.html";
159
+ var IN_FILE = new RegExp(`^\\.\\./(${SLUG})/${FILE}(?:#(.*))?$`);
160
+ var PAGE = new RegExp(`^/generated/(${SLUG})\\.html$`);
161
+ var OWN_FILE = new RegExp(`^/(${SLUG})/${FILE}$`);
162
+ var LOOPBACK = /* @__PURE__ */ new Set(["127.0.0.1", "localhost"]);
163
+ var HOSTED = /^(?:https?:)?\/\//i;
164
+ var decoded = (text) => {
165
+ try {
166
+ return decodeURIComponent(text);
167
+ } catch {
168
+ return text;
169
+ }
170
+ };
171
+ function ownAddress(text) {
172
+ try {
173
+ const url = new URL(text, "http://127.0.0.1");
174
+ return /^https?:$/.test(url.protocol) && LOOPBACK.has(url.hostname) && /^(?:https?:|\/)/i.test(text) ? url : null;
175
+ } catch {
176
+ return null;
177
+ }
178
+ }
179
+ function hashAddress(hash, links = null) {
180
+ const at = hash.indexOf("/");
181
+ const name = at < 0 ? hash : hash.slice(0, at);
182
+ const block = at < 0 ? null : hash.slice(at + 1) || null;
183
+ const slug = links && pageOfLink(links, name);
184
+ return slug ? { slug, block } : null;
185
+ }
186
+ function pageAddress(text, links = null) {
187
+ const address = String(text ?? "").trim();
188
+ const known = (slug, block) => !links || links.has(slug) ? { slug, block: block || null } : null;
189
+ const inFile = IN_FILE.exec(address);
190
+ if (inFile) return known(inFile[1], decoded(inFile[2] ?? ""));
191
+ const url = ownAddress(address);
192
+ if (!url) return null;
193
+ const path = PAGE.exec(url.pathname) ?? OWN_FILE.exec(url.pathname);
194
+ if (path) return known(path[1], decoded(url.hash.slice(1)));
195
+ return url.pathname === "/" && url.hash.length > 1 ? hashAddress(decoded(url.hash.slice(1)), links) : null;
196
+ }
197
+ function workbenchHash(text) {
198
+ const url = ownAddress(String(text ?? "").trim());
199
+ return url?.pathname === "/" && url.hash.length > 1 ? decoded(url.hash.slice(1)) : null;
200
+ }
201
+ var hosted = (text) => HOSTED.test(String(text ?? "").trim());
202
+ function fromFile(href, own, origin = "http://127.0.0.1") {
203
+ try {
204
+ return new URL(String(href ?? "").trim(), `${origin}/${own}/doc.html`).href;
205
+ } catch {
206
+ return null;
207
+ }
208
+ }
209
+
210
+ // src/shared/components/page.mjs
211
+ var LOOK_ATTRIBUTES = Object.freeze({ font: "data-doc-font", size: "data-doc-size", spacing: "data-doc-spacing", width: "data-doc-measure" });
212
+ var page_default = {
213
+ id: "page",
214
+ match: "main.doc-page",
215
+ flow: ".doc-page",
216
+ groups: false,
217
+ header: "header.doc-header",
218
+ // the title and the lines under it
219
+ title: ".doc-title",
220
+ // the document's title, the h1 of the header: its text, mirrored in <title> and report.json
221
+ attrs: {
222
+ "data-doc-id": "the document's slug: its reading state is kept under it",
223
+ "data-doc-kit": "a kit asset's tag (the render puts in those a report needs; an older source writes them)",
224
+ "data-doc-vendor": "a vendor library's tag",
225
+ "data-doc-placeholder": "the starter's content, which the checks want replaced",
226
+ "data-doc-transient-view": "its hidden or open shows transient reading state, reset in an export of the view"
227
+ },
228
+ classes: ["doc-page", "doc-header", "doc-kicker", "doc-title", "doc-button"],
229
+ runtime: {
230
+ generated: [".doc-display", "script[data-doc-state]"],
231
+ root: { attrs: ["data-doc-ready", "data-doc-drawn", "data-doc-controls"] },
232
+ // The reader's theme and width (ui.js), and the document's look (字体与布局: its doc.json's, put on by
233
+ // the render, src/shared/document-look.mjs), which a copy of the view keeps; never written in doc.html.
234
+ state: { html: ["data-doc-theme", "data-doc-width", ...Object.values(LOOK_ATTRIBUTES)] },
235
+ internal: ["doc-display*", "data-doc-export-copy", "data-theme", "doc-export-id", "doc-reveal", "doc-kit-error"]
236
+ }
237
+ };
238
+
239
+ // src/shared/document-look.mjs
240
+ var LOOK = Object.freeze({
241
+ font: Object.freeze(["sans", "serif", "mixed"]),
242
+ // 等线体, 衬线体, 混合体 (the title and headings serif)
243
+ size: Object.freeze(["default", "small", "large"]),
244
+ // 字体大小: 小号, 默认, 大号
245
+ spacing: Object.freeze(["default", "compact", "loose"]),
246
+ // 正文间距: 紧凑, 默认, 宽松
247
+ width: Object.freeze(["default", "narrow", "wide"])
248
+ // 正文宽度: 偏窄, 默认, 偏宽
249
+ });
250
+ var SIZE_FACTOR = Object.freeze({ default: 1, small: 15 / 16, large: 18 / 16 });
251
+ var SPACING = Object.freeze({
252
+ default: Object.freeze({ leading: 1, gaps: 1 }),
253
+ compact: Object.freeze({ leading: 0.8, gaps: 0.75 }),
254
+ loose: Object.freeze({ leading: 1.2, gaps: 1.25 })
255
+ });
256
+ var WIDTH = Object.freeze({ default: 712, narrow: 648, wide: 776 });
257
+ var isPlain = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
258
+ function lookOf(value) {
259
+ const look = {};
260
+ if (!isPlain(value)) return look;
261
+ for (const [key, choices] of Object.entries(LOOK)) {
262
+ const chosen = value[key];
263
+ if (typeof chosen === "string" && choices.includes(chosen) && chosen !== choices[0]) look[key] = chosen;
264
+ }
265
+ return look;
266
+ }
267
+ var ATTRIBUTE_VALUE = String.raw`(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'>]+))?`;
268
+ function setLookOn(element, look) {
269
+ const next = lookOf(look);
270
+ let changed = false;
271
+ for (const [key, name] of Object.entries(LOOK_ATTRIBUTES)) {
272
+ const value = next[key] ?? null;
273
+ if (element.getAttribute(name) === value) continue;
274
+ if (value === null) element.removeAttribute(name);
275
+ else element.setAttribute(name, value);
276
+ changed = true;
277
+ }
278
+ return changed;
279
+ }
280
+
281
+ // src/render/kit/words.js
282
+ var DISPLAY = {
283
+ "display": { zh: "\u663E\u793A\u8BBE\u7F6E", en: "Display settings" },
284
+ "display-menu": { zh: "\u6587\u6863\u663E\u793A\u8BBE\u7F6E", en: "Document display settings" },
285
+ "appearance": { zh: "\u5916\u89C2", en: "Appearance" },
286
+ "theme-system": { zh: "\u8DDF\u968F\u7CFB\u7EDF", en: "Use system setting" },
287
+ "theme-light": { zh: "\u6D45\u8272", en: "Light" },
288
+ "theme-dark": { zh: "\u6DF1\u8272", en: "Dark" },
289
+ "full-width": { zh: "\u5168\u5BBD\u663E\u793A", en: "Full width" },
290
+ "export-view": { zh: "\u5BFC\u51FA\u5F53\u524D\u89C6\u56FE\u526F\u672C", en: "Export a copy of this view" },
291
+ "html-file": { zh: "HTML \u6587\u4EF6", en: "HTML file" }
292
+ };
293
+ var UI_LANGUAGE = "data-ge-language";
294
+ function kitLanguage(root = globalThis.document?.documentElement) {
295
+ const ui = root?.getAttribute(UI_LANGUAGE) ?? null;
296
+ const english = ui !== null ? ui === "en" : /^en(?:-|$)/i.test(root?.getAttribute("lang") ?? "");
297
+ return english ? "en" : "zh";
298
+ }
299
+ function wordIn(table, language, key, ...values) {
300
+ const entry = table[key];
301
+ if (!entry) throw new Error(`The kit has no word "${key}" here (src/render/kit/words.js).`);
302
+ const text = entry[language] ?? entry.zh;
303
+ return values.length === 0 ? text : text.replace(/\{(\d+)\}/g, (whole, index) => index < values.length ? String(values[index]) : whole);
304
+ }
305
+ var sayer = (table) => (key, ...values) => wordIn(table, kitLanguage(), key, ...values);
306
+ var sayDisplay = /* @__PURE__ */ sayer(DISPLAY);
307
+ var ENGLISH_ROOT = `:root[${UI_LANGUAGE}="en"], :root:not([${UI_LANGUAGE}])[lang|="en" i]`;
308
+
309
+ // src/render/kit/ui.js
310
+ (function initReportUI() {
311
+ "use strict";
312
+ const root = document.documentElement;
313
+ const page = document.querySelector(".doc-page");
314
+ if (!page || document.querySelector(".doc-display")) return;
315
+ const systemTheme = matchMedia("(prefers-color-scheme: dark)");
316
+ if (!globalThis.DocState) throw new Error("Report UI requires /kit/state.js to be loaded first.");
317
+ if (!globalThis.DocKit) throw new Error("Report UI requires /kit/runtime.js to be loaded first.");
318
+ const reportId = page.dataset.docId || location.pathname || "report";
319
+ const displayState = DocState.create({
320
+ id: "display",
321
+ // this report's (DocState scopes it by data-doc-id)
322
+ version: 1,
323
+ defaults: { theme: null, width: "reading", exportVersion: 0 }
324
+ });
325
+ const icons = {
326
+ // Two sliders, their knobs open circles the lines stop at.
327
+ settings: '<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.5 6.5h7.25M15.25 6.5h1.25M3.5 13.5h1.25M9.25 13.5h7.25"/><circle cx="13" cy="6.5" r="2.25"/><circle cx="7" cy="13.5" r="2.25"/></svg>',
328
+ system: '<svg viewBox="0 0 20 20" aria-hidden="true"><rect x="2.75" y="3.75" width="14.5" height="10" rx="2"/><path d="M7.5 16.75h5M10 13.75v3"/></svg>',
329
+ sun: '<svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="3.25"/><path d="M10 2.75v1.5M10 15.75v1.5M4.87 4.87l1.06 1.06M14.07 14.07l1.06 1.06M2.75 10h1.5M15.75 10h1.5M4.87 15.13l1.06-1.06M14.07 5.93l1.06-1.06"/></svg>',
330
+ moon: '<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16.5 12.4A6.9 6.9 0 0 1 7.6 3.5a6.9 6.9 0 1 0 8.9 8.9Z"/></svg>',
331
+ width: '<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 10h14M6 7l-3 3 3 3M14 7l3 3-3 3"/></svg>',
332
+ download: '<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 3.5v9M6.5 9l3.5 3.5L13.5 9M4.5 16.5h11"/></svg>',
333
+ check: '<svg class="doc-display-check" viewBox="0 0 20 20" aria-hidden="true"><path d="M5 10.5l3.25 3.25L15 7"/></svg>'
334
+ };
335
+ const display = document.createElement("div");
336
+ display.className = "doc-display";
337
+ const menuButton = document.createElement("button");
338
+ menuButton.type = "button";
339
+ menuButton.className = "doc-display-button";
340
+ menuButton.innerHTML = icons.settings;
341
+ menuButton.setAttribute("aria-label", sayDisplay("display"));
342
+ menuButton.setAttribute("aria-haspopup", "menu");
343
+ menuButton.setAttribute("aria-expanded", "false");
344
+ const menu = document.createElement("div");
345
+ menu.className = "doc-display-menu";
346
+ menu.id = "doc-display-menu";
347
+ menu.hidden = true;
348
+ menu.setAttribute("role", "menu");
349
+ menu.setAttribute("aria-label", sayDisplay("display-menu"));
350
+ menuButton.setAttribute("aria-controls", menu.id);
351
+ function menuItem(role, icon, label, right = "") {
352
+ const item = document.createElement("button");
353
+ item.type = "button";
354
+ item.className = "doc-display-item";
355
+ item.tabIndex = -1;
356
+ item.setAttribute("role", role);
357
+ item.innerHTML = `<span class="doc-display-icon">${icon}</span><span class="doc-display-label"></span>${right}`;
358
+ item.querySelector(".doc-display-label").textContent = label;
359
+ return item;
360
+ }
361
+ function menuSection(header, ...items2) {
362
+ const section = document.createElement("div");
363
+ section.className = "doc-display-section";
364
+ if (header) {
365
+ const title = document.createElement("div");
366
+ title.className = "doc-display-header";
367
+ title.textContent = header;
368
+ section.append(title);
369
+ }
370
+ section.append(...items2);
371
+ return section;
372
+ }
373
+ const themeItems = [["system", icons.system], ["light", icons.sun], ["dark", icons.moon]].map(([theme, icon]) => {
374
+ const item = menuItem("menuitemradio", icon, sayDisplay(`theme-${theme}`), icons.check);
375
+ item.dataset.theme = theme;
376
+ return item;
377
+ });
378
+ const widthItem = menuItem("menuitemcheckbox", icons.width, sayDisplay("full-width"), '<span class="doc-display-switch" aria-hidden="true"><span></span></span>');
379
+ const exportButton = menuItem("menuitem", icons.download, sayDisplay("export-view"));
380
+ exportButton.dataset.docExportCopy = "";
381
+ menu.append(menuSection(sayDisplay("appearance"), ...themeItems), menuSection(null, widthItem), menuSection(null, exportButton));
382
+ display.append(menuButton, menu);
383
+ document.body.prepend(display);
384
+ root.dataset.docControls = "ready";
385
+ const markReady = () => requestAnimationFrame(() => root.setAttribute("data-doc-ready", ""));
386
+ if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", markReady, { once: true });
387
+ else markReady();
388
+ const storedTheme = displayState.get("theme");
389
+ if (storedTheme === "light" || storedTheme === "dark") root.dataset.docTheme = storedTheme;
390
+ const storedWidth = displayState.get("width");
391
+ if (storedWidth === "full") root.dataset.docWidth = "full";
392
+ function effectiveTheme() {
393
+ return root.dataset.docTheme || (systemTheme.matches ? "dark" : "light");
394
+ }
395
+ function updateThemeItems() {
396
+ const chosen = displayState.get("theme");
397
+ const current = chosen === "light" || chosen === "dark" ? chosen : "system";
398
+ themeItems.forEach((item) => item.setAttribute("aria-checked", String(item.dataset.theme === current)));
399
+ }
400
+ function updateWidthItem() {
401
+ widthItem.setAttribute("aria-checked", String(root.dataset.docWidth === "full"));
402
+ }
403
+ function reportFileName() {
404
+ const name = (location.pathname.split("/").pop() || `${reportId}.html`).replace(/\.html$/i, "");
405
+ return name.replace(/\.v\d+$/i, "");
406
+ }
407
+ function copyLiveFormValues(source, clone) {
408
+ const sourceControls = source.querySelectorAll("input, textarea, select");
409
+ const cloneControls = clone.querySelectorAll("input, textarea, select");
410
+ sourceControls.forEach((control, index) => {
411
+ const target = cloneControls[index];
412
+ if (!target) return;
413
+ if (control instanceof HTMLTextAreaElement) target.textContent = control.value;
414
+ else if (control instanceof HTMLSelectElement) {
415
+ Array.from(target.options).forEach((option, optionIndex) => option.toggleAttribute("selected", control.options[optionIndex]?.selected));
416
+ } else if (control instanceof HTMLInputElement) {
417
+ target.setAttribute("value", control.value);
418
+ target.toggleAttribute("checked", control.checked);
419
+ }
420
+ });
421
+ }
422
+ async function inlineLinkedAssets(clone) {
423
+ clone.querySelectorAll('script[src="/@vite/client"]').forEach((node) => node.remove());
424
+ const cache = /* @__PURE__ */ new Map();
425
+ async function resource(url, base = location.href) {
426
+ const resolved = new URL(url, base);
427
+ if (resolved.origin !== location.origin || !["http:", "https:"].includes(resolved.protocol)) throw new Error("Export requires same-origin preview assets or an already standalone HTML.");
428
+ if (!cache.has(resolved.href)) cache.set(resolved.href, fetch(resolved.href).then(async (response) => {
429
+ if (!response.ok) throw new Error(`Unable to embed ${resolved.pathname}: ${response.status}`);
430
+ return { bytes: new Uint8Array(await response.arrayBuffer()), type: response.headers.get("content-type") || "application/octet-stream", url: resolved.href };
431
+ }));
432
+ return cache.get(resolved.href);
433
+ }
434
+ function dataUrl(asset) {
435
+ let binary = "";
436
+ for (const byte of asset.bytes) binary += String.fromCharCode(byte);
437
+ return `data:${asset.type};base64,${btoa(binary)}`;
438
+ }
439
+ for (const link of clone.querySelectorAll('link[rel="stylesheet"][href]')) {
440
+ const asset = await resource(link.getAttribute("href"));
441
+ const css = new TextDecoder().decode(asset.bytes);
442
+ const references = cssReferences(css).filter(({ value, kind }) => kind !== "import" && !/^(data:|#|$)/i.test(value));
443
+ const embedded = /* @__PURE__ */ new Map();
444
+ for (const reference of references) {
445
+ try {
446
+ embedded.set(reference, dataUrl(await resource(reference.value, asset.url)));
447
+ } catch {
448
+ }
449
+ }
450
+ const style = document.createElement("style");
451
+ for (const mark of ["data-doc-kit", "data-doc-vendor"]) {
452
+ if (link.hasAttribute(mark)) style.setAttribute(mark, `${link.getAttribute(mark)}-inline`);
453
+ }
454
+ if (link.hasAttribute(PACKAGE_MARK)) style.setAttribute(PACKAGE_MARK, link.getAttribute(PACKAGE_MARK));
455
+ style.textContent = styleText(cssWithAddresses(css, references, (reference) => embedded.get(reference)));
456
+ link.replaceWith(style);
457
+ }
458
+ for (const script of clone.querySelectorAll("script[src]")) {
459
+ const asset = await resource(script.getAttribute("src"));
460
+ let code = new TextDecoder().decode(asset.bytes);
461
+ if (script.hasAttribute("data-doc-vendor")) code = isolateUmd(code);
462
+ script.removeAttribute("src");
463
+ script.textContent = script.hasAttribute(PACKAGE_MARK) ? scriptText(code) : code.replace(/<\/script/gi, "<\\/script");
464
+ }
465
+ for (const image of clone.querySelectorAll("img[src]")) {
466
+ if (!/^(data:|blob:)/.test(image.getAttribute("src"))) image.setAttribute("src", dataUrl(await resource(image.getAttribute("src"))));
467
+ }
468
+ for (const node of clone.querySelectorAll('[style*="url("]')) {
469
+ let style = node.getAttribute("style");
470
+ for (const match of [...style.matchAll(/url\(\s*["']?([^"')\s]+)["']?\s*\)/g)]) {
471
+ if (/^(data:|blob:|#)/.test(match[1])) continue;
472
+ const embedded = dataUrl(await resource(match[1]));
473
+ style = style.replace(match[0], () => `url("${embedded}")`);
474
+ }
475
+ node.setAttribute("style", style);
476
+ }
477
+ for (const icon of clone.querySelectorAll('link[rel~="icon"][href]')) {
478
+ if (!/^(data:|blob:)/.test(icon.getAttribute("href"))) icon.setAttribute("href", dataUrl(await resource(icon.getAttribute("href"))));
479
+ }
480
+ clone.querySelectorAll('meta[http-equiv="Content-Security-Policy"]').forEach((node) => node.remove());
481
+ const policy = document.createElement("meta");
482
+ policy.httpEquiv = "Content-Security-Policy";
483
+ policy.content = EXPORT_CSP;
484
+ clone.querySelector("head")?.prepend(policy);
485
+ }
486
+ async function serializableHtml() {
487
+ globalThis.DocCode?.colorAll?.();
488
+ const clone = document.documentElement.cloneNode(true);
489
+ copyLiveFormValues(document, clone);
490
+ clone.querySelectorAll("[data-doc-dev]").forEach((node) => node.remove());
491
+ [clone, ...clone.querySelectorAll("*")].forEach((node) => {
492
+ const marks = [...node.attributes].filter(({ name }) => /^data-(?:ge|rs)-/.test(name));
493
+ if (marks.length === 0) return;
494
+ marks.forEach(({ name }) => node.removeAttribute(name));
495
+ node.removeAttribute("contenteditable");
496
+ });
497
+ DocKit.dehydrate(clone);
498
+ clone.querySelectorAll("[data-doc-transient-view]").forEach((node) => {
499
+ if (node instanceof HTMLDetailsElement) node.removeAttribute("open");
500
+ else node.removeAttribute("hidden");
501
+ });
502
+ clone.querySelectorAll("a[href]").forEach((link) => {
503
+ const href = link.getAttribute("href");
504
+ const address = hosted(href) ? null : fromFile(href, reportId);
505
+ const place = pageAddress(address);
506
+ if (place ? place.slug === reportId : workbenchHash(address) === null) return;
507
+ link.querySelector(`:scope > .${MENTION_ICON}`)?.remove();
508
+ link.replaceWith(...link.childNodes);
509
+ });
510
+ clone.querySelectorAll('meta[name="doc-export-id"]').forEach((node) => node.remove());
511
+ const version = (displayState.get("exportVersion", 0) || 0) + 1;
512
+ displayState.set("exportVersion", version);
513
+ const exportMeta = document.createElement("meta");
514
+ exportMeta.name = "doc-export-id";
515
+ exportMeta.content = `${reportId}.v${version}-${crypto.randomUUID()}`;
516
+ clone.querySelector("head")?.append(exportMeta);
517
+ const stateScript = document.createElement("script");
518
+ stateScript.type = "application/json";
519
+ stateScript.dataset.docState = "";
520
+ stateScript.textContent = DocState.serializeAll().replaceAll("<", "\\u003c");
521
+ clone.querySelector("head")?.append(stateScript);
522
+ await inlineLinkedAssets(clone);
523
+ return `<!doctype html>
524
+ ${clone.outerHTML}`;
525
+ }
526
+ async function exportCurrentReport() {
527
+ const filename = `${reportFileName()}.v${(displayState.get("exportVersion", 0) || 0) + 1}.html`;
528
+ let handle;
529
+ if (typeof globalThis.showSaveFilePicker === "function") {
530
+ try {
531
+ handle = await globalThis.showSaveFilePicker({
532
+ id: "html-report-export",
533
+ suggestedName: filename,
534
+ types: [{ description: sayDisplay("html-file"), accept: { "text/html": [".html"] } }]
535
+ });
536
+ } catch (error) {
537
+ if (error?.name === "AbortError") return false;
538
+ }
539
+ }
540
+ const html = await serializableHtml();
541
+ if (handle) {
542
+ const writable = await handle.createWritable();
543
+ await writable.write(html);
544
+ await writable.close();
545
+ return true;
546
+ }
547
+ const blob = new Blob([html], { type: "text/html;charset=utf-8" });
548
+ const url = URL.createObjectURL(blob);
549
+ const link = document.createElement("a");
550
+ link.href = url;
551
+ link.download = filename;
552
+ link.click();
553
+ setTimeout(() => URL.revokeObjectURL(url), 1e3);
554
+ return true;
555
+ }
556
+ const items = () => [...menu.querySelectorAll(".doc-display-item")];
557
+ function openMenu(fromKeyboard) {
558
+ menu.hidden = false;
559
+ menuButton.setAttribute("aria-expanded", "true");
560
+ if (fromKeyboard) (items().find((item) => item.getAttribute("aria-checked") === "true") ?? items()[0])?.focus();
561
+ }
562
+ function closeMenu({ focusButton = false } = {}) {
563
+ if (menu.hidden) return;
564
+ menu.hidden = true;
565
+ menuButton.setAttribute("aria-expanded", "false");
566
+ if (focusButton) menuButton.focus();
567
+ }
568
+ menuButton.addEventListener("click", (event) => menu.hidden ? openMenu(event.detail === 0) : closeMenu());
569
+ document.addEventListener("pointerdown", (event) => {
570
+ if (!display.contains(event.target)) closeMenu();
571
+ }, true);
572
+ addEventListener("blur", () => closeMenu());
573
+ display.addEventListener("keydown", (event) => {
574
+ if (menu.hidden) return;
575
+ if (event.key === "Escape") {
576
+ event.preventDefault();
577
+ closeMenu({ focusButton: true });
578
+ return;
579
+ }
580
+ if (event.key === "Tab") return closeMenu();
581
+ const list = items();
582
+ const at = list.indexOf(document.activeElement);
583
+ const next = event.key === "ArrowDown" ? (at + 1) % list.length : event.key === "ArrowUp" ? (at - 1 + list.length) % list.length : event.key === "Home" ? 0 : event.key === "End" ? list.length - 1 : null;
584
+ if (next === null) return;
585
+ event.preventDefault();
586
+ list[next].focus();
587
+ });
588
+ const themeChanged = () => {
589
+ for (const name of ["doc-theme-change", "report-theme-change"]) dispatchEvent(new CustomEvent(name, { detail: { theme: effectiveTheme() } }));
590
+ };
591
+ themeItems.forEach((item) => item.addEventListener("click", () => {
592
+ const theme = item.dataset.theme;
593
+ if (theme === "system") delete root.dataset.docTheme;
594
+ else root.dataset.docTheme = theme;
595
+ displayState.set("theme", theme === "system" ? null : theme);
596
+ updateThemeItems();
597
+ themeChanged();
598
+ }));
599
+ addEventListener("doc-theme-request", (event) => {
600
+ const theme = event.detail?.theme ?? displayState.get("theme");
601
+ if (theme === "light" || theme === "dark") root.dataset.docTheme = theme;
602
+ else delete root.dataset.docTheme;
603
+ updateThemeItems();
604
+ themeChanged();
605
+ });
606
+ const LOOK_HELD = 2e3;
607
+ let held = null;
608
+ const showLook = (look) => {
609
+ if (!setLookOn(root, look)) return;
610
+ dispatchEvent(new Event("doc-layout-change"));
611
+ dispatchEvent(new Event("resize"));
612
+ dispatchEvent(new CustomEvent("doc-look-change", { detail: { look: lookOf(look) } }));
613
+ };
614
+ addEventListener("doc-look-request", (event) => {
615
+ const look = event.detail?.look;
616
+ if (event.detail?.from === "file") {
617
+ if (held) held.said = look;
618
+ else showLook(look);
619
+ return;
620
+ }
621
+ clearTimeout(held?.timer);
622
+ held = { said: null, timer: setTimeout(() => {
623
+ const said = held?.said;
624
+ held = null;
625
+ if (said) showLook(said);
626
+ }, LOOK_HELD) };
627
+ showLook(look);
628
+ });
629
+ widthItem.addEventListener("click", () => {
630
+ const next = root.dataset.docWidth === "full" ? "reading" : "full";
631
+ if (next === "full") root.dataset.docWidth = "full";
632
+ else delete root.dataset.docWidth;
633
+ displayState.set("width", next);
634
+ updateWidthItem();
635
+ });
636
+ exportButton.addEventListener("click", async () => {
637
+ if (exportButton.disabled) return;
638
+ closeMenu();
639
+ exportButton.disabled = true;
640
+ let outcome;
641
+ try {
642
+ outcome = await exportCurrentReport() ? { ok: true } : { ok: false, reason: "cancelled" };
643
+ } catch (error) {
644
+ console.error("Unable to export report HTML", error);
645
+ outcome = { ok: false, reason: "error", message: error.message };
646
+ } finally {
647
+ exportButton.disabled = false;
648
+ }
649
+ dispatchEvent(new CustomEvent("doc-export-copy-done", { detail: outcome }));
650
+ });
651
+ systemTheme.addEventListener?.("change", () => {
652
+ if (root.dataset.docTheme) return;
653
+ themeChanged();
654
+ });
655
+ updateThemeItems();
656
+ updateWidthItem();
657
+ })();
658
+ })();