@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
@@ -0,0 +1,14 @@
1
+ // The sizes of a block's handle and of a section's bar (handle/), by themselves so that what has to
2
+ // stand clear of them can reckon with them: a 批注's marker and button (annotate/) and a drop beside a
3
+ // block (drag/drop.mjs, a pure function of the tree, tested without a browser).
4
+
5
+ // The grip (notion-lite's .dh: 18×24, 10px left of the block); gap: from the block's left edge.
6
+ export const HANDLE = { width: 18, height: 24, gap: 10 };
7
+ // The bar's square left of the grip (notion-lite's .ab, the "+": 24×24, 52px left of the block):
8
+ // all of it reaches the bar, which draws 2px wide, 3px clear of the grip's fill. edge: how near the
9
+ // window's edge it stands at most.
10
+ export const ADD = { width: 24, edge: 2 };
11
+ // A section's bar: its strip's distance from the section, its width; how far out the pointer finds it,
12
+ // as far past the strip as the strip stands from the section.
13
+ const STRIP = { gap: 6, width: 16 };
14
+ export const BAR = { ...STRIP, reach: STRIP.gap + STRIP.width + STRIP.gap };
@@ -0,0 +1,84 @@
1
+ import { READ_ONLY_HINTS } from "../../components/registry.mjs";
2
+ import { editable } from "../caret.mjs";
3
+ import { bubbleLook } from "../tooltip.mjs";
4
+ import { element, mount } from "../ui.mjs";
5
+ import { t } from "../../../shared/i18n/index.mjs";
6
+
7
+ // Hints on hover (docs/editor.md, "Browser side"): resting the pointer on text that stays
8
+ // read-only says why (the reason the server recorded, data-ge-lock, or what the element is, as the
9
+ // components say: their `readOnly`, read in rank order); a link shows its card instead (links/).
10
+ // A click on read-only text says the reason in the notice (editor.mjs). No hint on an edge that
11
+ // resizes (resize/) or while a box selection is drawn (selection/marquee.mjs). connectHints() gives
12
+ // them what they need from the editor.
13
+
14
+ let use = null; // { editing() }
15
+
16
+ export function connectHints(editor) {
17
+ use = editor;
18
+ }
19
+
20
+ const LOCKS = {
21
+ comment: t("这段里有页面上不显示的注释,为了不丢掉它,暂不能在页面上修改。"),
22
+ markup: t("这段在文件里的写法比较特殊,暂不能在页面上修改,可以让 AI 修改。"),
23
+ mention: t("这段里的页面块在文件里的写法不对,暂不能在页面上修改,可以让 AI 修改。"),
24
+ link: t("这段含有不安全的链接地址,暂不能在页面上修改。"),
25
+ script: t("这段文字是页面自己生成或更新的(和文件里写的不同),不能在页面上修改。"),
26
+ "given-up": t("这一块已改用文件里的版本:处理完其余冲突、页面显示文件里的内容后才能修改。"), // commit.mjs marks
27
+ };
28
+
29
+ export function lockText(reason) {
30
+ if (LOCKS[reason]) return LOCKS[reason];
31
+ const tag = reason.startsWith("tag:") ? reason.slice(4) : "";
32
+ if (tag === "ul" || tag === "ol") return t("这一项含有嵌套列表:外层文字暂不能修改,里层的列表项可以修改。");
33
+ if (tag === "button") return t("这段含有按钮,为避免破坏组件,暂不能在页面上修改;可以让 AI 把其中详情卡片的入口改成链接,之后就能像普通文字一样修改。");
34
+ return tag ? t("这段含有页面上编辑不了的内容({0}),可以让 AI 修改。", tag) : t("这段暂不能在页面上修改。");
35
+ }
36
+
37
+ export function readOnlyReason(target) {
38
+ if (target?.nodeType !== 1 || target.closest("[data-doc-dev]") || !target.closest("main")) return null;
39
+ if (editable(target) || target.closest("a[href]")) return null; // a link there is one to click on
40
+ const locked = target.closest("[data-ge-lock]");
41
+ if (locked) return lockText(locked.getAttribute("data-ge-lock"));
42
+ const hint = READ_ONLY_HINTS.find(({ at }) => (typeof at === "function" ? at(target) : target.closest(at)));
43
+ if (hint) return hint.says;
44
+ const ownText = [...target.childNodes].some((node) => node.nodeType === 3 && node.data.trim());
45
+ return ownText ? t("这里暂不能在页面上修改。") : null;
46
+ }
47
+
48
+ let hint = null;
49
+ let hintTimer = 0;
50
+ let pointer = { x: 0, y: 0 };
51
+
52
+ /** Follow the pointer: re-arm the hint over what it is on (a hint cancelled by scrolling comes back). */
53
+ export function trackPointer(event) {
54
+ pointer = { x: event.clientX, y: event.clientY };
55
+ if (document.documentElement.matches("[data-ge-resize], [data-ge-marquee]")) hideHint(); // on an edge that resizes (resize/), drawing a box selection (selection/marquee.mjs)
56
+ else if (!hint && !hintTimer) scheduleHint(event);
57
+ }
58
+
59
+ export function hideHint() {
60
+ clearTimeout(hintTimer);
61
+ hintTimer = 0;
62
+ hint?.remove();
63
+ hint = null;
64
+ }
65
+
66
+ // Also re-armed by pointer moves, so a hint cancelled by scrolling comes back when the pointer
67
+ // moves again over the same element.
68
+ export function scheduleHint(event) {
69
+ if (!use.editing()) return;
70
+ hideHint();
71
+ pointer = { x: event.clientX, y: event.clientY }; // no move need come first: what comes under a pointer at rest, a page shown again
72
+ // A drawing (a chart, an SVG of the report's own) may answer the pointer itself (a chart's own
73
+ // tooltip): no hint over it; clicking one still explains itself in the status line.
74
+ if (event.target?.closest?.("svg, canvas") || document.documentElement.matches("[data-ge-resize], [data-ge-marquee]")) return;
75
+ const reason = readOnlyReason(event.target);
76
+ if (!reason) return;
77
+ hintTimer = setTimeout(() => {
78
+ hintTimer = 0;
79
+ bubbleLook();
80
+ hint = mount(element("div", { class: "ge-hint", role: "tooltip", text: reason }));
81
+ hint.style.left = `${Math.max(8, Math.min(pointer.x + 12, innerWidth - hint.offsetWidth - 8))}px`;
82
+ hint.style.top = `${pointer.y + 18 + hint.offsetHeight > innerHeight ? pointer.y - hint.offsetHeight - 10 : pointer.y + 18}px`;
83
+ }, 450);
84
+ }
@@ -0,0 +1,401 @@
1
+ import { isHost, ownHTML, setOwnHTML } from "./core.mjs";
2
+ import { mergeText } from "./merge.mjs";
3
+ import { caretAt, editable, select } from "./caret.mjs";
4
+ import { rangeAt, rangeOffsets } from "./marks.mjs";
5
+ import { note, settle } from "./overlays.mjs";
6
+ import { ATTRIBUTES } from "../components/registry.mjs";
7
+
8
+ // Undo and redo (docs/editor.md, "Browser side"): every change on the page is a step of one of
9
+ // three kinds, and every tool records its changes through this module.
10
+ //
11
+ // text a block's own content before and after (typing, joined while it goes on within a
12
+ // second in the same block; formatting, links and taking the file's version are steps
13
+ // of their own, recordStep, and bring their selection back)
14
+ // struct a structural change (split, merge, remove, multi-line paste, deleting, moving or
15
+ // converting a block): the child lists of the containers involved plus the content of
16
+ // the blocks involved, so undo puts the very same nodes back
17
+ // look classes switched on a block and its sizes (a centered card, a table's width)
18
+ // source what a component wrote to parts of its block, each part's inside before and after: one
19
+ // for each write, every part it names, none joined, as a table's are. The caret is left
20
+ // where it stands. One written over someone else's change of them (仍然调整) is as low as
21
+ // undo takes them: the steps before it hold them no more (fold)
22
+ //
23
+ // Each recorded change tells the editor (changed), which counts it for the autosave. Undo reaches
24
+ // across commits: commit.mjs makes the inverse a change like any other. Once a commit showed
25
+ // someone else's words merged into a block (merged), a step recorded before undoes, and redoes, the
26
+ // reader's change only: three ways against what the block holds now (mergeText), so their words stay;
27
+ // when the two touch the same place it is not undone, and the editor says so (refuse).
28
+ //
29
+ // A struct step records the report's nodes only: the editor's own UI (data-doc-dev: a selected
30
+ // block's fill, the handle, the toast, menus, a code block's line numbers) and the tags in the page's
31
+ // body that load its files, which an instance brought to the page may have put in after a step began,
32
+ // are never part of one, and undo and redo leave them where they are. The page's body is among the containers a
33
+ // step may record (it holds a flat report's main, and the editor's layer); recording its UI too
34
+ // once made undo put back a fill long taken off, over where a converted block had been, with
35
+ // nothing left to update or remove it. After every structural change, what the editor draws for
36
+ // blocks taken off the page goes at once (overlays.mjs settle).
37
+
38
+ const REFUSED = Symbol("refused");
39
+
40
+ /**
41
+ * changed(now): a change was recorded (`now`: a discrete one, committed without waiting for a
42
+ * pause). beforeUndo(): undo or redo is about to run (the "/" menu closes). blocks(): the block
43
+ * tools (blocks.mjs), whose selection undo and redo bring back. afterText(element): a text step was
44
+ * applied to a block (a code block's line numbers follow). refuse(): an
45
+ * undo or redo that would take out someone else's merged words with the reader's was not done.
46
+ * show(node): undo or redo landed there, which may have to be opened to be seen (a detail card, a Sheet panel).
47
+ * tidy(): the tidiers of the components (`tidy`) and of the page, each `(parents) => { parents, attributes?, settle(result)? }`:
48
+ * what a structural step may leave untidy around the containers it changes, which the step records
49
+ * too (`parents`, and `attributes` as struct's own), and what puts it right after the step (`grown`
50
+ * in what it returns: the containers no one named before it that it put nodes into).
51
+ */
52
+ export function createHistory({ changed, beforeUndo, blocks, afterText, refuse = () => {}, show = () => {}, tidy = () => [] }) {
53
+ const lastKnown = new WeakMap(); // block -> innerHTML after the last recorded change, or as the caret found it (editor.mjs onSelectionChange)
54
+ const undoStack = [];
55
+ const redoStack = [];
56
+ let typing = null; // open text step: { type, element, before, after, time }
57
+ let serial = 0; // the order of steps and merges
58
+ const lastMerge = new WeakMap(); // block -> when someone else's words were last merged into it (merged)
59
+
60
+ const typingChanged = () => typing !== null && typing.before !== typing.after;
61
+
62
+ function recordText(host, now = false) {
63
+ const before = lastKnown.get(host) ?? ownHTML(host);
64
+ const after = ownHTML(host);
65
+ lastKnown.set(host, after);
66
+ const at = Date.now();
67
+ if (typing && typing.element === host && at - typing.time < 1000) {
68
+ typing.after = after;
69
+ typing.time = at;
70
+ } else {
71
+ closeTyping();
72
+ typing = { type: "text", element: host, before, after, time: at };
73
+ }
74
+ changed(now);
75
+ }
76
+
77
+ // A change that should be its own undo step (formatting, links, taking the file's version).
78
+ // `selection` (character offsets) is selected again on undo and redo, so formatting can go on.
79
+ function recordStep(host, before, selection = null) {
80
+ closeTyping();
81
+ push({ type: "text", element: host, before, after: ownHTML(host), selection });
82
+ lastKnown.set(host, ownHTML(host));
83
+ changed(true);
84
+ }
85
+
86
+ function closeTyping() {
87
+ if (typingChanged()) push(typing);
88
+ typing = null;
89
+ }
90
+
91
+ function push(step) {
92
+ step.serial = ++serial;
93
+ undoStack.push(step);
94
+ if (undoStack.length > 200) undoStack.shift();
95
+ redoStack.length = 0;
96
+ }
97
+
98
+ // A container's child nodes, the editor's UI and what loads the page left out.
99
+ const ownUI = (node) => node.nodeType === 1 && (node.hasAttribute("data-doc-dev") || node.matches("body > script, body > link, body > style"));
100
+ const contentOf = (parent) => [...parent.childNodes].filter((node) => !ownUI(node));
101
+
102
+ // Put a container's recorded child nodes back, moving only what differs: a node already where it
103
+ // belongs is never taken out, so the focus and the caret in it stay, and so does the page's
104
+ // scroll (taking all of the page's blocks out and back, with the caret in one of them, once
105
+ // scrolled the page to its top). The editor's UI in it stays where it is.
106
+ function restoreChildren(parent, nodes) {
107
+ const wanted = new Set(nodes);
108
+ for (const node of [...parent.childNodes]) if (!wanted.has(node) && !ownUI(node)) node.remove();
109
+ let at = parent.firstChild;
110
+ for (const node of nodes) {
111
+ while (at && ownUI(at)) at = at.nextSibling;
112
+ if (at === node) at = at.nextSibling;
113
+ else parent.insertBefore(node, at);
114
+ }
115
+ }
116
+
117
+ function setHTML(node, html) {
118
+ setOwnHTML(node, html);
119
+ lastKnown.set(node, html);
120
+ }
121
+
122
+ // A component wrote parts (`written`: [[part, what it held]]), one step of its own, which it returns.
123
+ function sourceStep(written) {
124
+ closeTyping();
125
+ const step = { type: "source", elements: written.map(([part]) => part), before: written.map(([, html]) => html), after: written.map(([part]) => part.innerHTML) };
126
+ push(step);
127
+ changed(true);
128
+ return step;
129
+ }
130
+
131
+ // What a source step wrote went over someone else's change of its parts (仍然调整): undo goes no lower
132
+ // than that, so the steps before it hold those parts no more (one left with none goes), and undoing them
133
+ // never writes what the page had before over what the file held. Below it are the steps made before it
134
+ // (`serial`), wherever it stands now: on the undo stack, undone, or on neither stack (undone, and a newer
135
+ // change made since, which is above it).
136
+ function fold(step) {
137
+ const parts = new Set(step.elements);
138
+ for (const other of undoStack.filter((each) => each.serial < step.serial)) {
139
+ if (other.type !== "source") continue;
140
+ const kept = other.elements.map((_, index) => index).filter((index) => !parts.has(other.elements[index]));
141
+ for (const name of ["elements", "before", "after"]) other[name] = kept.map((index) => other[name][index]);
142
+ if (kept.length === 0) undoStack.splice(undoStack.indexOf(other), 1);
143
+ }
144
+ }
145
+
146
+ // A step no longer stands for what it did (the write it was recorded for did not go in): out of both stacks.
147
+ function drop(step) {
148
+ for (const stack of [undoStack, redoStack]) if (stack.includes(step)) stack.splice(stack.indexOf(step), 1);
149
+ }
150
+
151
+ // What a step puts into a block (`from`: what the step left there, `to`: what it puts back): as
152
+ // recorded, unless someone else's words were merged into the block since the step; then the step's
153
+ // change three ways against what the block holds now (null: the two touch the same place).
154
+ function textFor(step, node, from, to) {
155
+ if (from === undefined || (lastMerge.get(node) ?? 0) < step.serial) return to;
156
+ const now = ownHTML(node);
157
+ return now === from ? to : mergeText(from, to, now);
158
+ }
159
+
160
+ // The text block the caret is in, in the document of `node`, with where in it, or null.
161
+ function caretPlace(node) {
162
+ const selection = node?.ownerDocument.getSelection();
163
+ const host = selection?.rangeCount ? editable(selection.anchorNode) : null;
164
+ return host ? { host, offsets: rangeOffsets(host, selection.getRangeAt(0)) } : null;
165
+ }
166
+
167
+ // Structural changes (split, merge, remove, multi-line paste, deleting, moving or converting a
168
+ // block) are recorded as the child lists of the containers involved plus the content of the
169
+ // blocks involved and the classes the change gave or took from them (a table cell's color goes
170
+ // with its text: table/cells.mjs), so undo puts the very same nodes back; containers the change made
171
+ // (result.created) are recorded as empty before it. A deleted block (result.select) is selected
172
+ // again on undo (on redo too with result.reselect; blocks turned into another type select what
173
+ // they were on undo and what they are on redo, result.selectAfter); result.settle(backwards) runs
174
+ // after undo and redo (a deleted Sheet tab switches the Sheet shown). A step that names no text block
175
+ // it came from keeps where the caret stood, which undo puts back, as notion-lite's selectionBefore.
176
+ // `attributes`: [element, [names]] whose attributes the step records too (a table's cells: their
177
+ // spans and widths, which its operations change: components/table/page.mjs).
178
+ function struct(parents, touched, mutate, { attributes = [] } = {}) {
179
+ closeTyping();
180
+ // What the change may leave untidy is tidied after it by the components that know (rows of
181
+ // columns with a column emptied, lists set side by side: tidy), so what they name is recorded
182
+ // too. Each sees the parents the ones before it added.
183
+ const tidying = [];
184
+ for (const one of tidy()) {
185
+ const part = one(parents);
186
+ parents = [...new Set([...parents, ...part.parents])];
187
+ attributes = [...attributes, ...(part.attributes ?? [])];
188
+ tidying.push(part);
189
+ }
190
+ // A text block among the parents (a list item whose lists change) keeps its text through undo too.
191
+ touched = [...new Set([...touched, ...parents.filter(isHost)])];
192
+ const place = touched[0] ? null : caretPlace(parents[0]);
193
+ const before = parents.map(contentOf);
194
+ const htmlBefore = new Map(touched.map((node) => [node, ownHTML(node)]));
195
+ const classesBefore = new Map(touched.map((node) => [node, new Set(node.classList)]));
196
+ // The attributes the file keeps of the containers (ATTRIBUTES: a numbered list's start, which a
197
+ // split may set) are recorded too.
198
+ const kept = parents.filter((parent) => ATTRIBUTES[parent.getAttribute("data-ge-unit-kind")]);
199
+ const attributesOf = () => new Map([...kept.map((parent) => [parent, Object.keys(ATTRIBUTES[parent.getAttribute("data-ge-unit-kind")]).map((name) => [name, parent.getAttribute(name)])]),
200
+ ...attributes.map(([element, names]) => [element, names.map((name) => [name, element.getAttribute(name)])])]);
201
+ const attributesBefore = attributesOf();
202
+ const result = mutate();
203
+ if (!result) return null;
204
+ // What a tidier took into a container the step does not record (`grown`: [container, its nodes
205
+ // before that]) is recorded with the container, or undo and redo would leave it nowhere.
206
+ const grown = tidying.flatMap((part) => part.settle?.(result)?.grown ?? []).filter(([node]) => !parents.includes(node));
207
+ const made = (result.created ?? []).filter((node) => !parents.includes(node));
208
+ parents = [...parents, ...made, ...grown.map(([node]) => node)];
209
+ before.push(...made.map(() => []), ...grown.map(([, nodes]) => nodes.filter((node) => !ownUI(node))));
210
+ push({
211
+ type: "struct",
212
+ parents,
213
+ before,
214
+ after: parents.map(contentOf),
215
+ htmlBefore,
216
+ htmlAfter: new Map([...new Set([...result.touched, ...parents.filter(isHost)])].map((node) => [node, ownHTML(node)])),
217
+ // The classes it gave (taken off on undo) and took (given back), of the blocks it touched.
218
+ classes: [...classesBefore].map(([node, before]) => ({ node, added: [...node.classList].filter((name) => !before.has(name)), removed: [...before].filter((name) => !node.classList.contains(name)) }))
219
+ .filter(({ added, removed }) => added.length > 0 || removed.length > 0),
220
+ attributesBefore,
221
+ attributesAfter: attributesOf(),
222
+ focusBefore: touched[0] ?? place?.host,
223
+ caretBefore: place?.offsets ?? null,
224
+ focusAfter: result.focus,
225
+ select: result.select ?? null,
226
+ reselect: Boolean(result.reselect), // a moved block stays selected on redo too
227
+ selectAfter: result.selectAfter ?? null, // what redo selects instead
228
+ caret: result.caret ?? null, // where redo puts the caret when it selects nothing (tidyEmptied)
229
+ settle: result.settle ?? null,
230
+ });
231
+ result.touched.forEach((node) => lastKnown.set(node, ownHTML(node)));
232
+ note("history", "change");
233
+ settle();
234
+ changed(true);
235
+ return result;
236
+ }
237
+
238
+ // `next` in the place of `node`, as part of the last step, when that step put `node` on the page (a
239
+ // picture filled in a block just pasted): the step holds `next` from now on, so that undo takes it
240
+ // off with the rest and redo brings it back. Returns whether it was, nothing done otherwise: the
241
+ // reader went on, and it is a step of its own.
242
+ function finish(node, next) {
243
+ const step = undoStack.at(-1);
244
+ if (typingChanged() || step?.type !== "struct" || !step.after.some((nodes) => nodes.some((each) => each.contains(node)))) return false;
245
+ const swapped = (list) => list.map((each) => (each === node ? next : each));
246
+ node.replaceWith(next);
247
+ step.after = step.after.map(swapped);
248
+ if (Array.isArray(step.select)) step.select = swapped(step.select);
249
+ note("history", "change");
250
+ settle();
251
+ changed(true);
252
+ return true;
253
+ }
254
+
255
+ // Apply a step (undo: `backwards`); returns the block to put the caret in, or REFUSED when a block
256
+ // it changes holds merged words that its change touches (nothing is applied then).
257
+ function apply(step, backwards) {
258
+ if (step.type === "text") {
259
+ const html = textFor(step, step.element, backwards ? step.after : step.before, backwards ? step.before : step.after);
260
+ if (html === null) return REFUSED;
261
+ setHTML(step.element, html);
262
+ afterText(step.element);
263
+ return step.element;
264
+ }
265
+ if (step.type === "look") {
266
+ step.elements.forEach((element, index) => setLook(element, (backwards ? step.before : step.after)[index]));
267
+ return null;
268
+ }
269
+ if (step.type === "source") {
270
+ step.elements.forEach((element, index) => { element.innerHTML = (backwards ? step.before : step.after)[index]; });
271
+ return null;
272
+ }
273
+ const left = backwards ? step.htmlAfter : step.htmlBefore;
274
+ const texts = [...(backwards ? step.htmlBefore : step.htmlAfter)].map(([node, html]) => [node, textFor(step, node, left.get(node), html)]);
275
+ if (texts.some(([, html]) => html === null)) return REFUSED;
276
+ step.parents.forEach((parent, index) => restoreChildren(parent, (backwards ? step.before : step.after)[index]));
277
+ for (const [node, html] of texts) setHTML(node, html);
278
+ for (const { node, added, removed } of step.classes ?? []) {
279
+ node.classList.remove(...(backwards ? added : removed));
280
+ node.classList.add(...(backwards ? removed : added));
281
+ }
282
+ for (const [parent, values] of (backwards ? step.attributesBefore : step.attributesAfter) ?? []) {
283
+ for (const [name, value] of values) value === null ? parent.removeAttribute(name) : parent.setAttribute(name, value);
284
+ }
285
+ step.settle?.(backwards);
286
+ return backwards ? step.focusBefore : step.focusAfter;
287
+ }
288
+
289
+ // A block's look: classes switched on it (a section's divider line, a centered card), its sizes
290
+ // (a card's or table's width and height) and attributes set on it (a code block's language), as
291
+ // { classes: { name: on }, sizes: { name: value | null }, attributes: { name: value | null } }.
292
+ function lookOf(element, { classes = {}, sizes = {}, attributes = {} }) {
293
+ return {
294
+ classes: Object.fromEntries(Object.keys(classes).map((name) => [name, element.classList.contains(name)])),
295
+ sizes: Object.fromEntries(Object.keys(sizes).map((name) => [name, element.style.getPropertyValue(name).trim() || null])),
296
+ attributes: Object.fromEntries(Object.keys(attributes).map((name) => [name, element.getAttribute(name)])),
297
+ };
298
+ }
299
+
300
+ function setLook(element, { classes = {}, sizes = {}, attributes = {} }) {
301
+ for (const [name, on] of Object.entries(classes)) element.classList.toggle(name, on);
302
+ for (const [name, value] of Object.entries(sizes)) value ? element.style.setProperty(name, value) : element.style.removeProperty(name);
303
+ for (const [name, value] of Object.entries(attributes)) value === null ? element.removeAttribute(name) : element.setAttribute(name, value);
304
+ // Charts redraw on a width change by themselves; a height they are told about.
305
+ if (Object.keys(sizes).length > 0) dispatchEvent(new Event("doc-layout-change"));
306
+ }
307
+
308
+ // A change of look as one undo step (nothing when it changes nothing), of one element or of several
309
+ // (a color given to the selected blocks); `select` is selected again on undo. Returns whether
310
+ // anything changed.
311
+ function lookStep(element, change, select = null) {
312
+ closeTyping();
313
+ const elements = Array.isArray(element) ? element : [element];
314
+ // One change for them all, or one each (`change` a list: a table's columns given their widths).
315
+ const changes = Array.isArray(change) ? change : elements.map(() => change);
316
+ const before = elements.map((each, index) => lookOf(each, changes[index]));
317
+ elements.forEach((each, index) => setLook(each, changes[index]));
318
+ const after = elements.map((each, index) => lookOf(each, changes[index]));
319
+ if (JSON.stringify(before) === JSON.stringify(after)) return false;
320
+ push({ type: "look", elements, before, after, select });
321
+ changed(true);
322
+ return true;
323
+ }
324
+
325
+ function undo() {
326
+ beforeUndo();
327
+ closeTyping();
328
+ const step = undoStack.pop();
329
+ if (!step) return;
330
+ const host = apply(step, true);
331
+ if (host === REFUSED) {
332
+ undoStack.push(step);
333
+ return refuse();
334
+ }
335
+ redoStack.push(step);
336
+ note("history", `undo ${step.type}`);
337
+ if (step.type === "struct") settle();
338
+ restore(step, host, true);
339
+ }
340
+
341
+ function redo() {
342
+ beforeUndo();
343
+ closeTyping();
344
+ const step = redoStack.pop();
345
+ if (!step) return;
346
+ const host = apply(step, false);
347
+ if (host === REFUSED) {
348
+ redoStack.push(step);
349
+ return refuse();
350
+ }
351
+ undoStack.push(step);
352
+ note("history", `redo ${step.type}`);
353
+ if (step.type === "struct") settle();
354
+ restore(step, host, false);
355
+ }
356
+
357
+ // After undo or redo: where it landed shown, the blocks it selects selected again, or the caret in
358
+ // the text block it changed.
359
+ function restore(step, host, backwards) {
360
+ const selects = Boolean(step.select || step.selectAfter);
361
+ const chosen = selects ? (backwards ? step.select : step.selectAfter ?? (step.reselect ? step.select : null)) : null;
362
+ show([chosen].flat()[0] ?? (selects && !backwards ? step.caret : host) ?? step.elements?.[0] ?? step.parents?.[0]);
363
+ if (selects) {
364
+ if (chosen) blocks().select(chosen, { quiet: true });
365
+ else {
366
+ blocks().clear();
367
+ if (!backwards && step.caret) caretAt(step.caret, "start");
368
+ }
369
+ } else if (isHost(host) && (step.selection || (backwards && step.caretBefore)) && host.isConnected) {
370
+ host.focus({ preventScroll: true });
371
+ select(rangeAt(host, step.selection ?? step.caretBefore));
372
+ } else if (isHost(host)) caretAt(host, "end");
373
+ changed(true);
374
+ }
375
+
376
+ return {
377
+ /** Each block's content after the last recorded change (block -> HTML). */
378
+ lastKnown,
379
+ recordText,
380
+ recordStep,
381
+ sourceStep,
382
+ fold,
383
+ drop,
384
+ closeTyping,
385
+ struct,
386
+ finish,
387
+ lookStep,
388
+ undo,
389
+ redo,
390
+ /**
391
+ * A commit merged someone else's words into a block (the page shows them now): what was typed
392
+ * there is a step of its own, ending before their words came in, and steps recorded before undo
393
+ * three ways from now on (textFor).
394
+ */
395
+ merged(host) {
396
+ if (typing?.element === host) closeTyping();
397
+ lastKnown.set(host, ownHTML(host));
398
+ lastMerge.set(host, ++serial);
399
+ },
400
+ };
401
+ }