@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.
- package/LICENSE +21 -0
- package/README.md +50 -2
- package/THIRD-PARTY-NOTICES.md +3303 -0
- package/assets/writing-preferences.md +107 -0
- package/bin/gallery.mjs +10 -0
- package/browser/editor/components/bookmark/icons.mjs +6 -0
- package/browser/editor/components/bookmark/index.mjs +80 -0
- package/browser/editor/components/bookmark/page.mjs +147 -0
- package/browser/editor/components/builders.mjs +19 -0
- package/browser/editor/components/callout/index.mjs +64 -0
- package/browser/editor/components/code/index.mjs +327 -0
- package/browser/editor/components/code/page.mjs +561 -0
- package/browser/editor/components/colors.mjs +50 -0
- package/browser/editor/components/columns/index.mjs +104 -0
- package/browser/editor/components/columns/page.mjs +310 -0
- package/browser/editor/components/details/index.mjs +73 -0
- package/browser/editor/components/details/page.mjs +86 -0
- package/browser/editor/components/dialog/index.mjs +84 -0
- package/browser/editor/components/dialog/page.mjs +201 -0
- package/browser/editor/components/divider/index.mjs +48 -0
- package/browser/editor/components/embed/icons.mjs +11 -0
- package/browser/editor/components/embed/index.mjs +123 -0
- package/browser/editor/components/embed/page.mjs +309 -0
- package/browser/editor/components/figure/index.mjs +87 -0
- package/browser/editor/components/figure/page.mjs +42 -0
- package/browser/editor/components/file/icons.mjs +14 -0
- package/browser/editor/components/file/index.mjs +77 -0
- package/browser/editor/components/file/page.mjs +114 -0
- package/browser/editor/components/flowchart/add.mjs +123 -0
- package/browser/editor/components/flowchart/index.mjs +246 -0
- package/browser/editor/components/flowchart/page.mjs +453 -0
- package/browser/editor/components/heading/index.mjs +53 -0
- package/browser/editor/components/heading/page.mjs +6 -0
- package/browser/editor/components/highlight/index.mjs +63 -0
- package/browser/editor/components/icon/index.mjs +57 -0
- package/browser/editor/components/icon/page.mjs +286 -0
- package/browser/editor/components/icons.mjs +48 -0
- package/browser/editor/components/image/crop.mjs +189 -0
- package/browser/editor/components/image/index.mjs +104 -0
- package/browser/editor/components/image/page.mjs +385 -0
- package/browser/editor/components/image/viewer.mjs +213 -0
- package/browser/editor/components/installed/index.mjs +179 -0
- package/browser/editor/components/installed/page.mjs +523 -0
- package/browser/editor/components/installed/served.mjs +35 -0
- package/browser/editor/components/kit.mjs +67 -0
- package/browser/editor/components/list/index.mjs +194 -0
- package/browser/editor/components/list/join.mjs +68 -0
- package/browser/editor/components/list/numbers.mjs +107 -0
- package/browser/editor/components/list/page.mjs +632 -0
- package/browser/editor/components/math/index.mjs +88 -0
- package/browser/editor/components/math/page.mjs +236 -0
- package/browser/editor/components/math/tex-logo.mjs +6 -0
- package/browser/editor/components/media/icons.mjs +19 -0
- package/browser/editor/components/media/page.mjs +192 -0
- package/browser/editor/components/media/parts.mjs +60 -0
- package/browser/editor/components/media/size.mjs +20 -0
- package/browser/editor/components/media/toolbar.mjs +37 -0
- package/browser/editor/components/media/write.mjs +7 -0
- package/browser/editor/components/pages.mjs +46 -0
- package/browser/editor/components/paragraph/index.mjs +43 -0
- package/browser/editor/components/paragraph/page.mjs +52 -0
- package/browser/editor/components/placeholder-bar.mjs +17 -0
- package/browser/editor/components/placeholder.mjs +128 -0
- package/browser/editor/components/quote/index.mjs +33 -0
- package/browser/editor/components/registry.mjs +859 -0
- package/browser/editor/components/rows.mjs +16 -0
- package/browser/editor/components/section/index.mjs +42 -0
- package/browser/editor/components/section/page.mjs +141 -0
- package/browser/editor/components/set-apart.mjs +24 -0
- package/browser/editor/components/sheets/index.mjs +137 -0
- package/browser/editor/components/sheets/page.mjs +227 -0
- package/browser/editor/components/sheets/pills.mjs +226 -0
- package/browser/editor/components/table/grid.mjs +73 -0
- package/browser/editor/components/table/index.mjs +308 -0
- package/browser/editor/components/table/page.mjs +683 -0
- package/browser/editor/components/table/slots.mjs +41 -0
- package/browser/editor/components/widget/index.mjs +50 -0
- package/browser/editor/page/annotate/anchors.mjs +230 -0
- package/browser/editor/page/annotate/card.mjs +102 -0
- package/browser/editor/page/annotate/index.mjs +1656 -0
- package/browser/editor/page/at-menu/index.mjs +317 -0
- package/browser/editor/page/autosave.mjs +1023 -0
- package/browser/editor/page/beside.mjs +21 -0
- package/browser/editor/page/block-info.mjs +63 -0
- package/browser/editor/page/block-menu/colors.mjs +84 -0
- package/browser/editor/page/block-menu/index.mjs +217 -0
- package/browser/editor/page/blocks.mjs +255 -0
- package/browser/editor/page/caret.mjs +682 -0
- package/browser/editor/page/changes/bar.mjs +102 -0
- package/browser/editor/page/changes/ghost.mjs +206 -0
- package/browser/editor/page/changes/gone-words.mjs +94 -0
- package/browser/editor/page/changes/index.mjs +447 -0
- package/browser/editor/page/changes/words.mjs +27 -0
- package/browser/editor/page/chip-fills.mjs +126 -0
- package/browser/editor/page/clipboard/import/colors.mjs +192 -0
- package/browser/editor/page/clipboard/import/html.mjs +792 -0
- package/browser/editor/page/clipboard/import/inline.mjs +232 -0
- package/browser/editor/page/clipboard/import/languages.mjs +42 -0
- package/browser/editor/page/clipboard/import/markdown.mjs +760 -0
- package/browser/editor/page/clipboard/import/math.mjs +100 -0
- package/browser/editor/page/clipboard/import/office.mjs +245 -0
- package/browser/editor/page/clipboard/import/read.mjs +120 -0
- package/browser/editor/page/clipboard/import/rich.mjs +29 -0
- package/browser/editor/page/clipboard/import/to-blocks.mjs +290 -0
- package/browser/editor/page/clipboard/index.mjs +816 -0
- package/browser/editor/page/clipboard/own/blocks.mjs +211 -0
- package/browser/editor/page/clipboard/own/chart-keys.mjs +58 -0
- package/browser/editor/page/clipboard/own/describe.mjs +124 -0
- package/browser/editor/page/clipboard/own/export.mjs +167 -0
- package/browser/editor/page/clipboard/own/ids.mjs +39 -0
- package/browser/editor/page/clipboard/own/index.mjs +13 -0
- package/browser/editor/page/clipboard/own/rules.mjs +44 -0
- package/browser/editor/page/clipboard/own/selection.mjs +159 -0
- package/browser/editor/page/clipboard/own/writers.mjs +315 -0
- package/browser/editor/page/columns/index.mjs +360 -0
- package/browser/editor/page/commit.mjs +1813 -0
- package/browser/editor/page/conflicts.mjs +249 -0
- package/browser/editor/page/convert.mjs +831 -0
- package/browser/editor/page/core.mjs +1693 -0
- package/browser/editor/page/drag/drop.mjs +307 -0
- package/browser/editor/page/drag/index.mjs +351 -0
- package/browser/editor/page/drag/preview.mjs +126 -0
- package/browser/editor/page/edge-scroll.mjs +50 -0
- package/browser/editor/page/editor.mjs +1780 -0
- package/browser/editor/page/emoji-picker/emoji-tab.mjs +287 -0
- package/browser/editor/page/emoji-picker/glyph-html.mjs +26 -0
- package/browser/editor/page/emoji-picker/grid.mjs +81 -0
- package/browser/editor/page/emoji-picker/icon-tab.mjs +217 -0
- package/browser/editor/page/emoji-picker/icons.mjs +31 -0
- package/browser/editor/page/emoji-picker/index.mjs +166 -0
- package/browser/editor/page/emoji-picker/styles.mjs +161 -0
- package/browser/editor/page/emoji-picker/support.mjs +204 -0
- package/browser/editor/page/emoji-picker/upload.mjs +236 -0
- package/browser/editor/page/export-report.mjs +23 -0
- package/browser/editor/page/fills.mjs +62 -0
- package/browser/editor/page/find/index.mjs +107 -0
- package/browser/editor/page/flags.mjs +70 -0
- package/browser/editor/page/fold/index.mjs +348 -0
- package/browser/editor/page/fold/rule.mjs +125 -0
- package/browser/editor/page/folded.mjs +23 -0
- package/browser/editor/page/format-bar/bar.mjs +449 -0
- package/browser/editor/page/format-bar/brush.mjs +77 -0
- package/browser/editor/page/format-bar/colors.mjs +46 -0
- package/browser/editor/page/format-bar/index.mjs +404 -0
- package/browser/editor/page/formula/index.mjs +236 -0
- package/browser/editor/page/formula/panel.mjs +336 -0
- package/browser/editor/page/formula/symbols.mjs +156 -0
- package/browser/editor/page/frame.mjs +74 -0
- package/browser/editor/page/frames.mjs +196 -0
- package/browser/editor/page/geometry.mjs +402 -0
- package/browser/editor/page/gesture.mjs +45 -0
- package/browser/editor/page/handle/index.mjs +650 -0
- package/browser/editor/page/handle-sizes.mjs +14 -0
- package/browser/editor/page/hints/index.mjs +84 -0
- package/browser/editor/page/history.mjs +401 -0
- package/browser/editor/page/insert/index.mjs +256 -0
- package/browser/editor/page/kept.mjs +38 -0
- package/browser/editor/page/links/address.mjs +40 -0
- package/browser/editor/page/links/index.mjs +866 -0
- package/browser/editor/page/links/pages.mjs +131 -0
- package/browser/editor/page/links/views.mjs +369 -0
- package/browser/editor/page/long-runs.mjs +75 -0
- package/browser/editor/page/look.mjs +77 -0
- package/browser/editor/page/made.mjs +24 -0
- package/browser/editor/page/margin.mjs +373 -0
- package/browser/editor/page/markdown/index.mjs +88 -0
- package/browser/editor/page/markdown/rules.mjs +33 -0
- package/browser/editor/page/marks.mjs +377 -0
- package/browser/editor/page/media-menu/index.mjs +158 -0
- package/browser/editor/page/menu.mjs +544 -0
- package/browser/editor/page/merge.mjs +124 -0
- package/browser/editor/page/notices.mjs +142 -0
- package/browser/editor/page/offered.mjs +32 -0
- package/browser/editor/page/outline/folds.mjs +53 -0
- package/browser/editor/page/outline/index.mjs +783 -0
- package/browser/editor/page/outline/list.mjs +184 -0
- package/browser/editor/page/outline/read.mjs +201 -0
- package/browser/editor/page/outline/strip.mjs +287 -0
- package/browser/editor/page/outline/tree.mjs +248 -0
- package/browser/editor/page/overlay-layer.mjs +227 -0
- package/browser/editor/page/overlays.mjs +205 -0
- package/browser/editor/page/own.mjs +28 -0
- package/browser/editor/page/pads.mjs +71 -0
- package/browser/editor/page/page-objects.mjs +105 -0
- package/browser/editor/page/panel.mjs +65 -0
- package/browser/editor/page/placement.mjs +58 -0
- package/browser/editor/page/post.mjs +41 -0
- package/browser/editor/page/present-links.mjs +50 -0
- package/browser/editor/page/quiet.mjs +48 -0
- package/browser/editor/page/resize/index.mjs +327 -0
- package/browser/editor/page/select-all/index.mjs +262 -0
- package/browser/editor/page/selection/delete.mjs +61 -0
- package/browser/editor/page/selection/index.mjs +164 -0
- package/browser/editor/page/selection/marquee.mjs +174 -0
- package/browser/editor/page/session.mjs +168 -0
- package/browser/editor/page/slash-menu/index.mjs +291 -0
- package/browser/editor/page/storage.mjs +48 -0
- package/browser/editor/page/sync-state.mjs +267 -0
- package/browser/editor/page/table/aligns.mjs +29 -0
- package/browser/editor/page/table/cell-bar.mjs +141 -0
- package/browser/editor/page/table/cells.mjs +527 -0
- package/browser/editor/page/table/icons.mjs +40 -0
- package/browser/editor/page/table/index.mjs +990 -0
- package/browser/editor/page/table/lists.mjs +187 -0
- package/browser/editor/page/table/widths.mjs +313 -0
- package/browser/editor/page/tex.mjs +32 -0
- package/browser/editor/page/text-select/index.mjs +671 -0
- package/browser/editor/page/tooltip.mjs +98 -0
- package/browser/editor/page/type-grid.mjs +83 -0
- package/browser/editor/page/typing/code-edges.mjs +274 -0
- package/browser/editor/page/typing/index.mjs +282 -0
- package/browser/editor/page/typing/leave.mjs +68 -0
- package/browser/editor/page/ui.mjs +160 -0
- package/browser/shared/annotations.mjs +569 -0
- package/browser/shared/code-folds.mjs +14 -0
- package/browser/shared/code-languages.mjs +70 -0
- package/browser/shared/code-lines.mjs +30 -0
- package/browser/shared/colors.mjs +30 -0
- package/browser/shared/component-catalog.mjs +573 -0
- package/browser/shared/components/bookmark.mjs +26 -0
- package/browser/shared/components/callout.mjs +9 -0
- package/browser/shared/components/chart.mjs +20 -0
- package/browser/shared/components/code.mjs +37 -0
- package/browser/shared/components/columns.mjs +16 -0
- package/browser/shared/components/details.mjs +15 -0
- package/browser/shared/components/dialog.mjs +28 -0
- package/browser/shared/components/diff.mjs +18 -0
- package/browser/shared/components/divider.mjs +6 -0
- package/browser/shared/components/embed.mjs +25 -0
- package/browser/shared/components/figure.mjs +14 -0
- package/browser/shared/components/file.mjs +23 -0
- package/browser/shared/components/heading.mjs +6 -0
- package/browser/shared/components/highlight.mjs +9 -0
- package/browser/shared/components/icon.mjs +18 -0
- package/browser/shared/components/image.mjs +39 -0
- package/browser/shared/components/index.mjs +396 -0
- package/browser/shared/components/installed.mjs +232 -0
- package/browser/shared/components/list.mjs +146 -0
- package/browser/shared/components/math.mjs +49 -0
- package/browser/shared/components/mention.mjs +33 -0
- package/browser/shared/components/page.mjs +46 -0
- package/browser/shared/components/paragraph.mjs +9 -0
- package/browser/shared/components/quote.mjs +6 -0
- package/browser/shared/components/section.mjs +8 -0
- package/browser/shared/components/sheets.mjs +80 -0
- package/browser/shared/components/state.mjs +20 -0
- package/browser/shared/components/table.mjs +49 -0
- package/browser/shared/components/text.mjs +14 -0
- package/browser/shared/components/widget.mjs +10 -0
- package/browser/shared/copy-ids.mjs +72 -0
- package/browser/shared/css-references.mjs +110 -0
- package/browser/shared/document-look.mjs +178 -0
- package/browser/shared/emoji/custom.mjs +91 -0
- package/browser/shared/emoji/data/LICENSE-lucide.txt +43 -0
- package/browser/shared/emoji/data/LICENSE-mingcute.txt +202 -0
- package/browser/shared/emoji/data/LICENSE-tabler.txt +21 -0
- package/browser/shared/emoji/data/README.md +28 -0
- package/browser/shared/emoji/data/categories.json +1 -0
- package/browser/shared/emoji/data/icons.json +1 -0
- package/browser/shared/emoji/data/keywords-en.json +1 -0
- package/browser/shared/emoji/data/keywords-zh.json +1 -0
- package/browser/shared/emoji/data/names.json +1 -0
- package/browser/shared/emoji/data/positions.json +1 -0
- package/browser/shared/emoji/data/twemoji-index.json +1 -0
- package/browser/shared/emoji/data/twemoji-svg.bin +0 -0
- package/browser/shared/emoji/data.mjs +194 -0
- package/browser/shared/emoji/emoji.mjs +38 -0
- package/browser/shared/emoji/glyphs.mjs +134 -0
- package/browser/shared/emoji/icon-value.mjs +91 -0
- package/browser/shared/escape.mjs +20 -0
- package/browser/shared/export-wrap.mjs +89 -0
- package/browser/shared/files.mjs +33 -0
- package/browser/shared/html-tree.mjs +59 -0
- package/browser/shared/http.mjs +22 -0
- package/browser/shared/i18n/en.mjs +1223 -0
- package/browser/shared/i18n/index.mjs +132 -0
- package/browser/shared/ids.mjs +24 -0
- package/browser/shared/import-types.mjs +23 -0
- package/browser/shared/inline-spacing.mjs +97 -0
- package/browser/shared/layers.mjs +42 -0
- package/browser/shared/long-runs.mjs +39 -0
- package/browser/shared/media.mjs +162 -0
- package/browser/shared/new-names.mjs +67 -0
- package/browser/shared/number-reading.mjs +92 -0
- package/browser/shared/old-names.mjs +143 -0
- package/browser/shared/outline.mjs +194 -0
- package/browser/shared/page-address.mjs +140 -0
- package/browser/shared/page-links.mjs +86 -0
- package/browser/shared/paths.mjs +73 -0
- package/browser/shared/preferences.mjs +116 -0
- package/browser/shared/preview-server.mjs +247 -0
- package/browser/shared/qa-levels.mjs +93 -0
- package/browser/shared/reading-place.mjs +91 -0
- package/browser/shared/renamed-storage.mjs +220 -0
- package/browser/shared/reports.mjs +46 -0
- package/browser/shared/search.mjs +85 -0
- package/browser/shared/session.mjs +77 -0
- package/browser/shared/table-chart.mjs +113 -0
- package/browser/shared/table-hides.mjs +120 -0
- package/browser/shared/table-slots.mjs +75 -0
- package/browser/shared/words.mjs +23 -0
- package/browser/shared/workspace-look.mjs +91 -0
- package/browser/shared/workspace.mjs +535 -0
- package/browser/shared/writing-preferences.mjs +68 -0
- package/browser/shared/zoom.mjs +57 -0
- package/dist/chunk-2B5E4CDJ.mjs +2 -0
- package/dist/chunk-342HXE3Q.mjs +2 -0
- package/dist/chunk-3HIRPVLU.mjs +2 -0
- package/dist/chunk-43B75J5T.mjs +2 -0
- package/dist/chunk-4FS7Z7WR.mjs +2 -0
- package/dist/chunk-4K5KC6V2.mjs +2 -0
- package/dist/chunk-5L7RYZCL.mjs +2 -0
- package/dist/chunk-5MHMDLZD.mjs +4 -0
- package/dist/chunk-5ZKJ3H4P.mjs +8 -0
- package/dist/chunk-64K7IPLO.mjs +255 -0
- package/dist/chunk-6QXGZM36.mjs +8 -0
- package/dist/chunk-6RGJOMJP.mjs +16 -0
- package/dist/chunk-742D2WWJ.mjs +19 -0
- package/dist/chunk-7DTINW6U.mjs +48 -0
- package/dist/chunk-A55HN5OK.mjs +2 -0
- package/dist/chunk-AGDILNWB.mjs +2 -0
- package/dist/chunk-AJ73XJF3.mjs +2 -0
- package/dist/chunk-AUZGSZJH.mjs +13 -0
- package/dist/chunk-BFE45AKL.mjs +2 -0
- package/dist/chunk-BGGDRNYQ.mjs +10 -0
- package/dist/chunk-BXO2ZY5P.mjs +2 -0
- package/dist/chunk-C564NU2H.mjs +77 -0
- package/dist/chunk-CEH4MRCC.mjs +2 -0
- package/dist/chunk-CY2FNNAB.mjs +16 -0
- package/dist/chunk-DFUDV4LX.mjs +2 -0
- package/dist/chunk-DKXG4XDG.mjs +2 -0
- package/dist/chunk-E7LWZRXY.mjs +4 -0
- package/dist/chunk-EZQ34M3F.mjs +124 -0
- package/dist/chunk-EZY3WC6Z.mjs +15 -0
- package/dist/chunk-FDLXYYG4.mjs +4 -0
- package/dist/chunk-FUKQNOQS.mjs +9 -0
- package/dist/chunk-GB5SOYQJ.mjs +7 -0
- package/dist/chunk-GRAXKKG4.mjs +2 -0
- package/dist/chunk-HYMEEXKN.mjs +4 -0
- package/dist/chunk-IVDLMMBD.mjs +2 -0
- package/dist/chunk-JPOSLGOC.mjs +6 -0
- package/dist/chunk-JVHHHGEA.mjs +3 -0
- package/dist/chunk-L3QKH4OK.mjs +26 -0
- package/dist/chunk-LAE5NQ4B.mjs +2 -0
- package/dist/chunk-LCTHTZIL.mjs +960 -0
- package/dist/chunk-LEF6DRCK.mjs +59 -0
- package/dist/chunk-LKX55H76.mjs +2 -0
- package/dist/chunk-LS4F7JUM.mjs +2 -0
- package/dist/chunk-MAFIGVXY.mjs +2 -0
- package/dist/chunk-NO5NJCHO.mjs +2 -0
- package/dist/chunk-NQPVAU63.mjs +2 -0
- package/dist/chunk-NSKUTQ5J.mjs +5 -0
- package/dist/chunk-O35FIXRB.mjs +2 -0
- package/dist/chunk-P2CAZPDP.mjs +3 -0
- package/dist/chunk-PL6GHLGD.mjs +15 -0
- package/dist/chunk-QAIHRH3I.mjs +13 -0
- package/dist/chunk-QJIR2BLP.mjs +6 -0
- package/dist/chunk-QR6A54KJ.mjs +3 -0
- package/dist/chunk-QUPLVPB2.mjs +7 -0
- package/dist/chunk-R7BNENLY.mjs +4 -0
- package/dist/chunk-S6O4UHLC.mjs +2 -0
- package/dist/chunk-SGJWQKEI.mjs +2 -0
- package/dist/chunk-SYGN7GLU.mjs +2 -0
- package/dist/chunk-TMYZB6AV.mjs +2 -0
- package/dist/chunk-TX6JH7TR.mjs +2 -0
- package/dist/chunk-TYK6VNAB.mjs +10 -0
- package/dist/chunk-U3SSPL4K.mjs +8 -0
- package/dist/chunk-U6KNPJPR.mjs +2 -0
- package/dist/chunk-UALRNVSE.mjs +4 -0
- package/dist/chunk-UH4SIXTR.mjs +2 -0
- package/dist/chunk-UMHUSOPJ.mjs +2 -0
- package/dist/chunk-V3HXVQEM.mjs +2 -0
- package/dist/chunk-V5JTW2LH.mjs +27 -0
- package/dist/chunk-V5VXUJKG.mjs +2 -0
- package/dist/chunk-V6XZ4VIR.mjs +2 -0
- package/dist/chunk-VBXMADMP.mjs +2 -0
- package/dist/chunk-VNV55RUA.mjs +2 -0
- package/dist/chunk-VPD2PS35.mjs +2 -0
- package/dist/chunk-W3BGBJQW.mjs +2 -0
- package/dist/chunk-W4VKN3GF.mjs +7 -0
- package/dist/chunk-W5BXXPDJ.mjs +3 -0
- package/dist/chunk-W7XHE4CT.mjs +2 -0
- package/dist/chunk-XNROSH2T.mjs +4 -0
- package/dist/chunk-XUNHRCOG.mjs +6 -0
- package/dist/chunk-Y34NR5JL.mjs +2 -0
- package/dist/chunk-Y6RLRPG3.mjs +3 -0
- package/dist/chunk-YEY3RSFQ.mjs +2 -0
- package/dist/cli.mjs +2 -0
- package/dist/server.mjs +2 -0
- package/dist/worker.mjs +5 -0
- package/kit/charts.js +355 -0
- package/kit/code.js +164 -0
- package/kit/dialogs.js +157 -0
- package/kit/math.js +2004 -0
- package/kit/report.css +2932 -0
- package/kit/runtime.js +1782 -0
- package/kit/sheets.js +123 -0
- package/kit/state.js +217 -0
- package/kit/tables.js +1499 -0
- package/kit/tokens.js +29 -0
- package/kit/ui.js +658 -0
- package/package.json +41 -4
- package/release.json +25 -0
- package/sdk/column-widths.d.ts +56 -0
- package/sdk/doc-charts.d.ts +82 -0
- package/sdk/doc-code.d.ts +28 -0
- package/sdk/doc-dialogs.d.ts +4 -0
- package/sdk/doc-kit.d.ts +147 -0
- package/sdk/doc-math.d.ts +3 -0
- package/sdk/doc-sheets.d.ts +15 -0
- package/sdk/doc-state.d.ts +41 -0
- package/sdk/doc-tables.d.ts +24 -0
- package/sdk/doc-tokens.d.ts +22 -0
- package/sdk/index.d.ts +30 -0
- package/skill/SKILL.md +150 -0
- package/skill/agents/openai.yaml +5 -0
- package/skill/references/building-components.md +367 -0
- package/skill/references/example-report.html +356 -0
- package/skill/references/writing-html.md +187 -0
- package/skill/sdk/column-widths.d.ts +56 -0
- package/skill/sdk/doc-charts.d.ts +82 -0
- package/skill/sdk/doc-code.d.ts +28 -0
- package/skill/sdk/doc-dialogs.d.ts +4 -0
- package/skill/sdk/doc-kit.d.ts +147 -0
- package/skill/sdk/doc-math.d.ts +3 -0
- package/skill/sdk/doc-sheets.d.ts +15 -0
- package/skill/sdk/doc-state.d.ts +41 -0
- package/skill/sdk/doc-tables.d.ts +24 -0
- package/skill/sdk/doc-tokens.d.ts +22 -0
- package/skill/sdk/index.d.ts +30 -0
- package/starter/doc.html +21 -0
- package/starter/doc.json +5 -0
- package/vendor/d3.v7.9.0.min.js +2 -0
- package/vendor/katex/auto-render.min.js +1 -0
- package/vendor/katex/contrib/mhchem.min.js +1 -0
- package/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/vendor/katex/katex.min.css +1 -0
- package/vendor/katex/katex.min.js +1 -0
- package/vendor/pdfjs/LICENSE +177 -0
- package/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/vendor/pdfjs/cmaps/LICENSE +36 -0
- package/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/V.bcmap +0 -0
- package/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/vendor/pdfjs/legacy/build/pdf.min.mjs +27 -0
- package/vendor/pdfjs/legacy/build/pdf.worker.min.mjs +27 -0
- package/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
- package/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
- package/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +363 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/vendor/types/@types/d3/LICENSE +21 -0
- package/vendor/types/@types/d3/index.d.ts +39 -0
- package/vendor/types/@types/d3/package.json +81 -0
- package/vendor/types/@types/d3-array/LICENSE +21 -0
- package/vendor/types/@types/d3-array/index.d.ts +1118 -0
- package/vendor/types/@types/d3-array/package.json +56 -0
- package/vendor/types/@types/d3-axis/LICENSE +21 -0
- package/vendor/types/@types/d3-axis/index.d.ts +293 -0
- package/vendor/types/@types/d3-axis/package.json +47 -0
- package/vendor/types/@types/d3-brush/LICENSE +21 -0
- package/vendor/types/@types/d3-brush/index.d.ts +255 -0
- package/vendor/types/@types/d3-brush/package.json +42 -0
- package/vendor/types/@types/d3-chord/LICENSE +21 -0
- package/vendor/types/@types/d3-chord/index.d.ts +471 -0
- package/vendor/types/@types/d3-chord/package.json +40 -0
- package/vendor/types/@types/d3-color/LICENSE +21 -0
- package/vendor/types/@types/d3-color/index.d.ts +669 -0
- package/vendor/types/@types/d3-color/package.json +55 -0
- package/vendor/types/@types/d3-contour/LICENSE +21 -0
- package/vendor/types/@types/d3-contour/index.d.ts +222 -0
- package/vendor/types/@types/d3-contour/package.json +38 -0
- package/vendor/types/@types/d3-delaunay/LICENSE +21 -0
- package/vendor/types/@types/d3-delaunay/index.d.ts +316 -0
- package/vendor/types/@types/d3-delaunay/package.json +30 -0
- package/vendor/types/@types/d3-dispatch/LICENSE +21 -0
- package/vendor/types/@types/d3-dispatch/index.d.ts +96 -0
- package/vendor/types/@types/d3-dispatch/package.json +51 -0
- package/vendor/types/@types/d3-drag/LICENSE +21 -0
- package/vendor/types/@types/d3-drag/index.d.ts +395 -0
- package/vendor/types/@types/d3-drag/package.json +42 -0
- package/vendor/types/@types/d3-dsv/LICENSE +21 -0
- package/vendor/types/@types/d3-dsv/index.d.ts +482 -0
- package/vendor/types/@types/d3-dsv/package.json +45 -0
- package/vendor/types/@types/d3-ease/LICENSE +21 -0
- package/vendor/types/@types/d3-ease/index.d.ts +316 -0
- package/vendor/types/@types/d3-ease/package.json +40 -0
- package/vendor/types/@types/d3-fetch/LICENSE +21 -0
- package/vendor/types/@types/d3-fetch/index.d.ts +282 -0
- package/vendor/types/@types/d3-fetch/package.json +37 -0
- package/vendor/types/@types/d3-force/LICENSE +21 -0
- package/vendor/types/@types/d3-force/index.d.ts +899 -0
- package/vendor/types/@types/d3-force/package.json +45 -0
- package/vendor/types/@types/d3-format/LICENSE +21 -0
- package/vendor/types/@types/d3-format/index.d.ts +337 -0
- package/vendor/types/@types/d3-format/package.json +45 -0
- package/vendor/types/@types/d3-geo/LICENSE +21 -0
- package/vendor/types/@types/d3-geo/index.d.ts +1371 -0
- package/vendor/types/@types/d3-geo/package.json +48 -0
- package/vendor/types/@types/d3-hierarchy/LICENSE +21 -0
- package/vendor/types/@types/d3-hierarchy/index.d.ts +928 -0
- package/vendor/types/@types/d3-hierarchy/package.json +50 -0
- package/vendor/types/@types/d3-interpolate/LICENSE +21 -0
- package/vendor/types/@types/d3-interpolate/index.d.ts +387 -0
- package/vendor/types/@types/d3-interpolate/package.json +47 -0
- package/vendor/types/@types/d3-path/LICENSE +21 -0
- package/vendor/types/@types/d3-path/index.d.ts +108 -0
- package/vendor/types/@types/d3-path/package.json +41 -0
- package/vendor/types/@types/d3-polygon/LICENSE +21 -0
- package/vendor/types/@types/d3-polygon/index.d.ts +41 -0
- package/vendor/types/@types/d3-polygon/package.json +40 -0
- package/vendor/types/@types/d3-quadtree/LICENSE +21 -0
- package/vendor/types/@types/d3-quadtree/index.d.ts +204 -0
- package/vendor/types/@types/d3-quadtree/package.json +45 -0
- package/vendor/types/@types/d3-random/LICENSE +21 -0
- package/vendor/types/@types/d3-random/index.d.ts +313 -0
- package/vendor/types/@types/d3-random/package.json +41 -0
- package/vendor/types/@types/d3-scale/LICENSE +21 -0
- package/vendor/types/@types/d3-scale/index.d.ts +2669 -0
- package/vendor/types/@types/d3-scale/package.json +53 -0
- package/vendor/types/@types/d3-scale-chromatic/LICENSE +21 -0
- package/vendor/types/@types/d3-scale-chromatic/index.d.ts +520 -0
- package/vendor/types/@types/d3-scale-chromatic/package.json +46 -0
- package/vendor/types/@types/d3-selection/LICENSE +21 -0
- package/vendor/types/@types/d3-selection/index.d.ts +1210 -0
- package/vendor/types/@types/d3-selection/package.json +56 -0
- package/vendor/types/@types/d3-shape/LICENSE +21 -0
- package/vendor/types/@types/d3-shape/index.d.ts +2792 -0
- package/vendor/types/@types/d3-shape/package.json +53 -0
- package/vendor/types/@types/d3-time/LICENSE +21 -0
- package/vendor/types/@types/d3-time/index.d.ts +697 -0
- package/vendor/types/@types/d3-time/package.json +46 -0
- package/vendor/types/@types/d3-time-format/LICENSE +21 -0
- package/vendor/types/@types/d3-time-format/index.d.ts +202 -0
- package/vendor/types/@types/d3-time-format/package.json +40 -0
- package/vendor/types/@types/d3-timer/LICENSE +21 -0
- package/vendor/types/@types/d3-timer/index.d.ts +68 -0
- package/vendor/types/@types/d3-timer/package.json +45 -0
- package/vendor/types/@types/d3-transition/LICENSE +21 -0
- package/vendor/types/@types/d3-transition/index.d.ts +664 -0
- package/vendor/types/@types/d3-transition/package.json +47 -0
- package/vendor/types/@types/d3-zoom/LICENSE +21 -0
- package/vendor/types/@types/d3-zoom/index.d.ts +611 -0
- package/vendor/types/@types/d3-zoom/package.json +48 -0
- package/vendor/types/@types/geojson/LICENSE +21 -0
- package/vendor/types/@types/geojson/index.d.ts +202 -0
- package/vendor/types/@types/geojson/package.json +46 -0
- package/vendor/typescript/LICENSE.txt +55 -0
- package/vendor/typescript/lib.decorators.d.ts +384 -0
- package/vendor/typescript/lib.decorators.legacy.d.ts +22 -0
- package/vendor/typescript/lib.dom.d.ts +39429 -0
- package/vendor/typescript/lib.dom.iterable.d.ts +571 -0
- package/vendor/typescript/lib.es2015.collection.d.ts +147 -0
- package/vendor/typescript/lib.es2015.core.d.ts +597 -0
- package/vendor/typescript/lib.es2015.d.ts +28 -0
- package/vendor/typescript/lib.es2015.generator.d.ts +77 -0
- package/vendor/typescript/lib.es2015.iterable.d.ts +605 -0
- package/vendor/typescript/lib.es2015.promise.d.ts +81 -0
- package/vendor/typescript/lib.es2015.proxy.d.ts +128 -0
- package/vendor/typescript/lib.es2015.reflect.d.ts +144 -0
- package/vendor/typescript/lib.es2015.symbol.d.ts +46 -0
- package/vendor/typescript/lib.es2015.symbol.wellknown.d.ts +326 -0
- package/vendor/typescript/lib.es2016.array.include.d.ts +116 -0
- package/vendor/typescript/lib.es2016.d.ts +21 -0
- package/vendor/typescript/lib.es2016.intl.d.ts +31 -0
- package/vendor/typescript/lib.es2017.arraybuffer.d.ts +21 -0
- package/vendor/typescript/lib.es2017.d.ts +26 -0
- package/vendor/typescript/lib.es2017.date.d.ts +31 -0
- package/vendor/typescript/lib.es2017.intl.d.ts +44 -0
- package/vendor/typescript/lib.es2017.object.d.ts +49 -0
- package/vendor/typescript/lib.es2017.sharedmemory.d.ts +135 -0
- package/vendor/typescript/lib.es2017.string.d.ts +45 -0
- package/vendor/typescript/lib.es2017.typedarrays.d.ts +53 -0
- package/vendor/typescript/lib.es2018.asyncgenerator.d.ts +77 -0
- package/vendor/typescript/lib.es2018.asynciterable.d.ts +53 -0
- package/vendor/typescript/lib.es2018.d.ts +24 -0
- package/vendor/typescript/lib.es2018.intl.d.ts +83 -0
- package/vendor/typescript/lib.es2018.promise.d.ts +30 -0
- package/vendor/typescript/lib.es2018.regexp.d.ts +37 -0
- package/vendor/typescript/lib.es2019.array.d.ts +79 -0
- package/vendor/typescript/lib.es2019.d.ts +24 -0
- package/vendor/typescript/lib.es2019.intl.d.ts +23 -0
- package/vendor/typescript/lib.es2019.object.d.ts +33 -0
- package/vendor/typescript/lib.es2019.string.d.ts +37 -0
- package/vendor/typescript/lib.es2019.symbol.d.ts +24 -0
- package/vendor/typescript/lib.es2020.bigint.d.ts +765 -0
- package/vendor/typescript/lib.es2020.d.ts +27 -0
- package/vendor/typescript/lib.es2020.date.d.ts +42 -0
- package/vendor/typescript/lib.es2020.intl.d.ts +474 -0
- package/vendor/typescript/lib.es2020.number.d.ts +28 -0
- package/vendor/typescript/lib.es2020.promise.d.ts +47 -0
- package/vendor/typescript/lib.es2020.sharedmemory.d.ts +99 -0
- package/vendor/typescript/lib.es2020.string.d.ts +44 -0
- package/vendor/typescript/lib.es2020.symbol.wellknown.d.ts +41 -0
- package/vendor/typescript/lib.es2021.d.ts +23 -0
- package/vendor/typescript/lib.es2021.intl.d.ts +166 -0
- package/vendor/typescript/lib.es2021.promise.d.ts +48 -0
- package/vendor/typescript/lib.es2021.string.d.ts +33 -0
- package/vendor/typescript/lib.es2021.weakref.d.ts +78 -0
- package/vendor/typescript/lib.es2022.array.d.ts +121 -0
- package/vendor/typescript/lib.es2022.d.ts +25 -0
- package/vendor/typescript/lib.es2022.error.d.ts +75 -0
- package/vendor/typescript/lib.es2022.intl.d.ts +145 -0
- package/vendor/typescript/lib.es2022.object.d.ts +26 -0
- package/vendor/typescript/lib.es2022.regexp.d.ts +39 -0
- package/vendor/typescript/lib.es2022.string.d.ts +25 -0
- package/vendor/typescript/lib.es5.d.ts +4601 -0
- package/vendor/typescript/package.json +4 -0
- package/vendor/typescript/typescript.js +446 -0
- package/web/assets/index-Bh74DfsV.css +1 -0
- package/web/assets/index-UW0RyFFt.js +13 -0
- 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
|
+
}
|