@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,267 @@
|
|
|
1
|
+
import { ELEMENT_ID, atomSources, knowAtoms } from "./core.mjs";
|
|
2
|
+
import { BLOCK_TYPES, blockTypeOf, boxRole } from "../components/registry.mjs";
|
|
3
|
+
import { COPY_KEYS } from "../components/figure/index.mjs";
|
|
4
|
+
import { ownTypeOf } from "./convert.mjs";
|
|
5
|
+
import { pageOfUnit } from "./page-objects.mjs";
|
|
6
|
+
|
|
7
|
+
// The page's sync state, as the marks the editor reads (docs/editor.md, "Sync state"). What of
|
|
8
|
+
// the file each element is lives in the commits' table (commit.mjs), under the element's identity
|
|
9
|
+
// (core.mjs ELEMENT_ID), which never changes; the marks are written from that table here, and
|
|
10
|
+
// nowhere else once the page is edited:
|
|
11
|
+
//
|
|
12
|
+
// data-ge-unit, data-block-id the unit it is, and the unit's id in the file
|
|
13
|
+
// data-ge-block the text block it is (not while its unit is turned into another type)
|
|
14
|
+
// data-ge-box the box it is (an empty value: a box made on the page)
|
|
15
|
+
// data-ge-new made on the page: what the file does not have (yet)
|
|
16
|
+
// data-ge-part a text block of a block made on the page whose words the file writes
|
|
17
|
+
// from elsewhere (components/installed/page.mjs), until the answer names it
|
|
18
|
+
// data-ge-convert, data-ge-type turned into another type than its unit showed as when last
|
|
19
|
+
// committed: the next commit converts the unit (the type it goes as)
|
|
20
|
+
// data-ge-keep, data-ge-keep-own what the file says keeps it
|
|
21
|
+
// data-ge-grid the file's table is one the table tools are for (a table made on the
|
|
22
|
+
// page has it until the file says: components/table/page.mjs newTable)
|
|
23
|
+
//
|
|
24
|
+
// So undo, which brings elements back as they were, never brings back what the file had: an
|
|
25
|
+
// element it puts back is marked from the table like every other (the element a block was turned
|
|
26
|
+
// from is that unit again, of the type it shows, and turns the unit back). An element whose unit
|
|
27
|
+
// the file dropped while the page still showed it (emptied, or a list going with its last item)
|
|
28
|
+
// is marked as made on the page (asMade), as is everything of the file it was.
|
|
29
|
+
|
|
30
|
+
const set = (node, name, value) => {
|
|
31
|
+
if (node.getAttribute(name) !== value) node.setAttribute(name, value);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Write the marks of `nodes` (elements with an identity) from the commits' table, `view`:
|
|
36
|
+
* entry(identity) { unit, block, box }: what of the file it is (undefined: made on the page)
|
|
37
|
+
* dropped(identity) { unit, block, box }: what of the file it was, which the file dropped
|
|
38
|
+
* keyed(identity) a keyed block (a detail card) made on the page that the file has
|
|
39
|
+
* proposal(identity) the id a block made on the page proposes, once it proposes one
|
|
40
|
+
* units, blocks, boxes the map's entries
|
|
41
|
+
* shown(unit) the type a unit showed as when last committed (convert.mjs ownTypeOf), if known
|
|
42
|
+
* element(unit) the element standing for a unit on the page, if any
|
|
43
|
+
*/
|
|
44
|
+
export function project(nodes, view) {
|
|
45
|
+
// A unit whose element on the page is of another type than it showed: converted, until committed.
|
|
46
|
+
const turnedOn = (unit, node) => {
|
|
47
|
+
const shown = view.shown(unit);
|
|
48
|
+
return shown !== undefined && Boolean(node) && ownTypeOf(node) !== shown;
|
|
49
|
+
};
|
|
50
|
+
const turned = new Map();
|
|
51
|
+
const turnedUnit = (unit) => {
|
|
52
|
+
if (!turned.has(unit)) turned.set(unit, turnedOn(unit, view.element(unit)));
|
|
53
|
+
return turned.get(unit);
|
|
54
|
+
};
|
|
55
|
+
for (const node of nodes) {
|
|
56
|
+
const key = node.getAttribute(ELEMENT_ID);
|
|
57
|
+
const gone = view.dropped(key);
|
|
58
|
+
if (gone) {
|
|
59
|
+
asMade(node, gone);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (view.keyed(key)) for (const name of ["data-ge-new", "data-ge-type", "data-ge-unit-kind"]) node.removeAttribute(name);
|
|
63
|
+
const entry = view.entry(key);
|
|
64
|
+
if (entry?.unit === undefined && view.proposal(key)) set(node, "data-block-id", view.proposal(key));
|
|
65
|
+
if (!entry) continue;
|
|
66
|
+
const { unit, block, box } = entry;
|
|
67
|
+
let other = false;
|
|
68
|
+
if (unit === undefined) {
|
|
69
|
+
node.removeAttribute("data-ge-unit");
|
|
70
|
+
node.removeAttribute("data-ge-convert");
|
|
71
|
+
} else {
|
|
72
|
+
const info = view.units[unit];
|
|
73
|
+
other = turnedOn(unit, node);
|
|
74
|
+
set(node, "data-ge-unit", String(unit));
|
|
75
|
+
if (info.blockId) set(node, "data-block-id", info.blockId);
|
|
76
|
+
if (info.keep) set(node, "data-ge-keep", info.keep.reason);
|
|
77
|
+
else node.removeAttribute("data-ge-keep");
|
|
78
|
+
node.toggleAttribute("data-ge-keep-own", Boolean(info.keep?.own));
|
|
79
|
+
node.toggleAttribute("data-ge-grid", Boolean(info.grid));
|
|
80
|
+
if (node.hasAttribute("data-ge-copy")) { // a copy, a unit of the file now
|
|
81
|
+
node.removeAttribute("data-ge-copy");
|
|
82
|
+
node.removeAttribute("data-ge-type");
|
|
83
|
+
node.removeAttribute(COPY_KEYS); // its charts' keys, written
|
|
84
|
+
}
|
|
85
|
+
if (other) {
|
|
86
|
+
set(node, "data-ge-convert", String(unit));
|
|
87
|
+
set(node, "data-ge-type", ownTypeOf(node));
|
|
88
|
+
set(node, "data-ge-new", "");
|
|
89
|
+
} else {
|
|
90
|
+
node.removeAttribute("data-ge-convert");
|
|
91
|
+
node.removeAttribute("data-ge-new");
|
|
92
|
+
if (info.kind) set(node, "data-ge-unit-kind", info.kind);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (block === undefined) node.removeAttribute("data-ge-block");
|
|
96
|
+
else {
|
|
97
|
+
const info = view.blocks[block];
|
|
98
|
+
const owner = info?.unit;
|
|
99
|
+
// The text of a unit turned into another type goes with the conversion: a text block made
|
|
100
|
+
// on the page until it is committed.
|
|
101
|
+
const off = !info || info.gone || (owner !== null && owner !== undefined && (owner === unit ? other : turnedUnit(owner)));
|
|
102
|
+
if (off) {
|
|
103
|
+
node.removeAttribute("data-ge-block");
|
|
104
|
+
if (node.getAttribute("contenteditable") === "true") set(node, "data-ge-new", "");
|
|
105
|
+
} else {
|
|
106
|
+
set(node, "data-ge-block", String(block));
|
|
107
|
+
node.removeAttribute("data-ge-part");
|
|
108
|
+
if (unit === undefined) node.removeAttribute("data-ge-new");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (box !== undefined) {
|
|
112
|
+
set(node, "data-ge-box", String(box));
|
|
113
|
+
if (view.boxes[box]?.kind) set(node, "data-ge-box-kind", view.boxes[box].kind);
|
|
114
|
+
if (unit === undefined && block === undefined) node.removeAttribute("data-ge-new");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The marks of an element the file dropped while the page still showed it (`what`: the unit, text
|
|
121
|
+
* block or box it was): made on the page from now on, written as a new block where it stands
|
|
122
|
+
* once it has something to write, never named as what the file dropped (that would be a conflict,
|
|
123
|
+
* or text lost). A container whose blocks went elsewhere is a new one of its type (undo putting it
|
|
124
|
+
* back makes it again around the blocks it held); a block its component writes from what it holds
|
|
125
|
+
* says so (`renew`: what the page shows of it is the reader's, and it is known by no tag or class); a
|
|
126
|
+
* text block a new one; a box a box made on the page.
|
|
127
|
+
*/
|
|
128
|
+
export function asMade(element, what) {
|
|
129
|
+
if (what.unit !== undefined) {
|
|
130
|
+
const type = pageOfUnit(element)?.renew?.(element) ? null : containerTypeOf(element);
|
|
131
|
+
if (type) reviveMarks(element, type);
|
|
132
|
+
else renewMarks(element);
|
|
133
|
+
} else if (what.block !== undefined) {
|
|
134
|
+
element.removeAttribute("data-ge-block");
|
|
135
|
+
set(element, "data-ge-new", "");
|
|
136
|
+
} else if (what.box !== undefined && boxRole(element.getAttribute("data-ge-box-kind")) !== "nest") {
|
|
137
|
+
set(element, "data-ge-box", "");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// A text block's or other unit's marks, as made on the page: of its own type (a quote's paragraph
|
|
142
|
+
// as a paragraph, a divider as a divider, a highlight block's icon as an icon: the type its class
|
|
143
|
+
// tells before the first of its tag); an item's box for lists went with it (a new item's lists are
|
|
144
|
+
// written with it).
|
|
145
|
+
function renewMarks(element) {
|
|
146
|
+
if (!element.hasAttribute("data-ge-type")) {
|
|
147
|
+
const own = ownTypeOf(element);
|
|
148
|
+
const type = BLOCK_TYPES[own] ? own : blockTypeOf(element) ?? Object.keys(BLOCK_TYPES).find((each) => !BLOCK_TYPES[each].box && BLOCK_TYPES[each].tag === element.localName) ?? "paragraph";
|
|
149
|
+
element.setAttribute("data-ge-type", type);
|
|
150
|
+
}
|
|
151
|
+
for (const name of ["data-ge-block", "data-ge-unit", "data-ge-convert", "data-block-id"]) element.removeAttribute(name);
|
|
152
|
+
set(element, "data-ge-new", "");
|
|
153
|
+
if (boxRole(element.getAttribute("data-ge-box-kind")) === "nest") {
|
|
154
|
+
element.removeAttribute("data-ge-box");
|
|
155
|
+
element.removeAttribute("data-ge-box-kind");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// A container's marks, as one made on the page (core.mjs newContainer): a section, a list, quote,
|
|
160
|
+
// panel or disclosure, a row of columns or a column.
|
|
161
|
+
function reviveMarks(element, type) {
|
|
162
|
+
const spec = BLOCK_TYPES[type];
|
|
163
|
+
for (const [name, value] of [["data-ge-new", ""], ["data-ge-type", type], ["data-ge-unit-kind", spec.kind], ["data-ge-pure", ""]]) set(element, name, value);
|
|
164
|
+
for (const name of ["data-ge-unit", "data-block-id", "data-ge-convert"]) element.removeAttribute(name);
|
|
165
|
+
const box = spec.content?.(element) ?? element;
|
|
166
|
+
if (box) {
|
|
167
|
+
set(box, "data-ge-box", "");
|
|
168
|
+
set(box, "data-ge-box-kind", spec.box);
|
|
169
|
+
}
|
|
170
|
+
const title = spec.title?.(element) ?? null;
|
|
171
|
+
if (title) {
|
|
172
|
+
title.removeAttribute("data-ge-block");
|
|
173
|
+
set(title, "data-ge-new", "");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** The type of container a unit's element is (a section, a list, quote, panel or disclosure, a row of columns or a column: a type with a box), or null. */
|
|
178
|
+
export function containerTypeOf(element) {
|
|
179
|
+
const own = ownTypeOf(element);
|
|
180
|
+
const type = BLOCK_TYPES[own]?.box ? own : blockTypeOf(element);
|
|
181
|
+
return BLOCK_TYPES[type]?.box && !BLOCK_TYPES[type].keyed ? type : null;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// ---------- kept for the next page ----------
|
|
185
|
+
// What the commits know goes to the crash buffer with the page as it is (autosave.mjs), so that a
|
|
186
|
+
// page opening once this one is gone takes up exactly where it was: the commit whose answer it
|
|
187
|
+
// never learned taken in on the answer, the next one found against what that left (recover).
|
|
188
|
+
|
|
189
|
+
const REF = "data-ge-ref";
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* `value` (the commits' save()) as JSON: its Maps and Sets, and the elements it names as marks in
|
|
193
|
+
* `document`'s body (as it is, the editor's own UI left out) or, off the page, in the trees they are
|
|
194
|
+
* in, with the sources of the chips there, which this page alone knows (core.mjs atomSources).
|
|
195
|
+
* { html, detached: [html], data, atoms }
|
|
196
|
+
*/
|
|
197
|
+
export function pack(document, value) {
|
|
198
|
+
const refs = new Map();
|
|
199
|
+
const encode = (item) => {
|
|
200
|
+
if (item === null || typeof item !== "object") return item;
|
|
201
|
+
if (item.nodeType === 9) return { $doc: 1 };
|
|
202
|
+
if (item.nodeType === 1) {
|
|
203
|
+
if (!refs.has(item)) refs.set(item, refs.size);
|
|
204
|
+
return { $el: refs.get(item) };
|
|
205
|
+
}
|
|
206
|
+
if (item instanceof Map) return { $map: [...item].map(([key, entry]) => [encode(key), encode(entry)]) };
|
|
207
|
+
if (item instanceof Set) return { $set: [...item].map(encode) };
|
|
208
|
+
if (Array.isArray(item)) return item.map(encode);
|
|
209
|
+
return Object.fromEntries(Object.entries(item).map(([key, entry]) => [key, encode(entry)]));
|
|
210
|
+
};
|
|
211
|
+
const data = encode(value);
|
|
212
|
+
const roots = new Set();
|
|
213
|
+
for (const [element, index] of refs) {
|
|
214
|
+
element.setAttribute(REF, String(index));
|
|
215
|
+
if (element.isConnected) continue;
|
|
216
|
+
let top = element;
|
|
217
|
+
while (top.parentElement) top = top.parentElement;
|
|
218
|
+
roots.add(top);
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
const body = document.body.cloneNode(true);
|
|
222
|
+
body.querySelectorAll("[data-doc-dev]").forEach((node) => node.remove());
|
|
223
|
+
return { html: body.innerHTML, detached: [...roots].map((root) => root.outerHTML), data, atoms: atomSources([body, ...roots]) };
|
|
224
|
+
} finally {
|
|
225
|
+
for (const element of refs.keys()) element.removeAttribute(REF);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* What pack() kept, back as values, its elements in a document of their own (`parse`: html -> a
|
|
231
|
+
* document), its chips known to this page (knowAtoms); one that cannot be found stands as an element
|
|
232
|
+
* off the page. { document, value }
|
|
233
|
+
*/
|
|
234
|
+
export function unpack({ html, detached = [], data, atoms = {} }, parse) {
|
|
235
|
+
knowAtoms(atoms);
|
|
236
|
+
const document = parse(`<!doctype html><html><head></head><body>${html}</body></html>`);
|
|
237
|
+
const found = new Map();
|
|
238
|
+
const take = (root) => {
|
|
239
|
+
for (const node of [root, ...root.querySelectorAll(`[${REF}]`)]) {
|
|
240
|
+
if (!node.hasAttribute(REF)) continue;
|
|
241
|
+
found.set(Number(node.getAttribute(REF)), node);
|
|
242
|
+
node.removeAttribute(REF);
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
take(document.documentElement);
|
|
246
|
+
for (const tree of detached) {
|
|
247
|
+
const template = document.createElement("template");
|
|
248
|
+
template.innerHTML = tree;
|
|
249
|
+
const root = template.content.firstElementChild;
|
|
250
|
+
if (!root) continue;
|
|
251
|
+
take(document.adoptNode(root));
|
|
252
|
+
}
|
|
253
|
+
const elementOf = (index) => {
|
|
254
|
+
if (!found.has(index)) found.set(index, document.createElement("div"));
|
|
255
|
+
return found.get(index);
|
|
256
|
+
};
|
|
257
|
+
const decode = (item) => {
|
|
258
|
+
if (item === null || typeof item !== "object") return item;
|
|
259
|
+
if (Array.isArray(item)) return item.map(decode);
|
|
260
|
+
if ("$doc" in item) return document;
|
|
261
|
+
if ("$el" in item) return elementOf(item.$el);
|
|
262
|
+
if ("$map" in item) return new Map(item.$map.map(([key, entry]) => [decode(key), decode(entry)]));
|
|
263
|
+
if ("$set" in item) return new Set(item.$set.map(decode));
|
|
264
|
+
return Object.fromEntries(Object.entries(item).map(([key, entry]) => [key, decode(entry)]));
|
|
265
|
+
};
|
|
266
|
+
return { document, value: decode(data) };
|
|
267
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CELL_ALIGNS, CELL_VALIGNS } from "../../components/table/index.mjs";
|
|
2
|
+
import { TABLE_ICONS } from "./icons.mjs";
|
|
3
|
+
|
|
4
|
+
// The alignments a cell may have (components/table/index.mjs CELL_ALIGNS, CELL_VALIGNS), as the
|
|
5
|
+
// cells' bar and a column's menu offer them: the three, then the three vertical ones.
|
|
6
|
+
|
|
7
|
+
/** What all of `cells` have of one group of alignments: the class's name, null when they have none (the kit's own), undefined when they differ. */
|
|
8
|
+
export function sharedAlign(cells, group) {
|
|
9
|
+
const of = (cell) => group.find(([name]) => cell.classList.contains(name))?.[0] ?? null;
|
|
10
|
+
return cells.every((cell) => of(cell) === of(cells[0])) ? of(cells[0]) : undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** The look that gives cells the alignment `name`: its class on, the others of its group off. */
|
|
14
|
+
export function alignLook(name) {
|
|
15
|
+
const group = CELL_VALIGNS.some(([each]) => each === name) ? CELL_VALIGNS : CELL_ALIGNS;
|
|
16
|
+
return { classes: Object.fromEntries(group.map(([each]) => [each, each === name])) };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The alignments to offer for `cells`: [{ name, label, icon, vertical, current, run }], each
|
|
21
|
+
* `current` when all the cells have it (cells with none have the first of its group, the kit's
|
|
22
|
+
* own, but differing cells have none), `run` (when `apply` is given) calling `apply(name)`.
|
|
23
|
+
*/
|
|
24
|
+
export function alignItems(cells, apply = null) {
|
|
25
|
+
return [CELL_ALIGNS, CELL_VALIGNS].flatMap((group, index) => {
|
|
26
|
+
const shared = cells.length > 0 ? sharedAlign(cells, group) : undefined;
|
|
27
|
+
return group.map(([name, label]) => ({ name, label, icon: TABLE_ICONS[name], vertical: index === 1, current: shared !== undefined && (shared ?? group[0][0]) === name, run: () => apply?.(name) }));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { belowControl, colorSection, colorSwatch, FORMAT_ICONS, formatLook, listItem, tool } from "../format-bar/bar.mjs";
|
|
2
|
+
import { HIGHLIGHTS, TEXT_COLORS } from "../marks.mjs";
|
|
3
|
+
import { placeBox } from "../placement.mjs";
|
|
4
|
+
import { hideTooltip, shortcut } from "../tooltip.mjs";
|
|
5
|
+
import { addStyle, element, fadeIn, fadeOut, mount } from "../ui.mjs";
|
|
6
|
+
import { alignItems } from "./aligns.mjs";
|
|
7
|
+
import { TABLE_ICONS } from "./icons.mjs";
|
|
8
|
+
import { t } from "../../../shared/i18n/index.mjs";
|
|
9
|
+
|
|
10
|
+
// The bar over selected cells of a table (cells.mjs), in the format bar's look (format-bar/bar.mjs:
|
|
11
|
+
// its card, buttons, "A" and color picker, its list): one row of the "A" (the cells' color, one of
|
|
12
|
+
// Notion's text colors or fills as a block's; a click opens the colors below it: 文本颜色, 背景颜色,
|
|
13
|
+
// the cells' own ringed), bold, the alignment (its three below it, then the three vertical ones), 合并单元格 (several cells) or
|
|
14
|
+
// 拆分单元格 (one merged cell), then 清除内容 and "更多" (a row or column put in beside the cells,
|
|
15
|
+
// the cells' rows or columns taken out). It stands above the
|
|
16
|
+
// cells, below them when there is no room. It shows the cells' state and reports commands;
|
|
17
|
+
// cells.mjs applies them.
|
|
18
|
+
|
|
19
|
+
const APPEAR = 120;
|
|
20
|
+
const PANEL = 120;
|
|
21
|
+
const GAP = 8; // between the cells and the bar
|
|
22
|
+
// A cell's fill is a block's: its swatches and its "A" show --doc-fill, not the words' deeper fill the kit gives a span.
|
|
23
|
+
const STYLE = `.ge-cell-bar :is(.ge-ink-sample, .ge-swatch > span)[class*="doc-highlight-"] { background: var(--doc-fill); }`;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* run(command, value): "color" with { kind: "text" | "background", color } (null: none), "bold", "align" with an
|
|
27
|
+
* alignment class (CELL_ALIGNS, CELL_VALIGNS), "clear", "insert" with "above" | "below" | "left" | "right",
|
|
28
|
+
* "remove" with "rows" | "columns", "merge", "split".
|
|
29
|
+
*/
|
|
30
|
+
export function createCellBar(run) {
|
|
31
|
+
formatLook();
|
|
32
|
+
addStyle(STYLE);
|
|
33
|
+
const sample = element("span", { class: "ge-ink-sample", text: "A" });
|
|
34
|
+
const tools = {
|
|
35
|
+
color: tool("color", t("颜色"), sample, () => toggle("colors")),
|
|
36
|
+
bold: tool("bold", t("加粗"), FORMAT_ICONS.bold, () => run("bold"), shortcut("mod+b")),
|
|
37
|
+
align: tool("align", t("对齐"), TABLE_ICONS["doc-align-left"], () => toggle("aligns")),
|
|
38
|
+
merge: tool("merge", () => (state.merge === "split" ? t("拆分单元格") : t("合并单元格")), TABLE_ICONS.merge, () => run(state.merge ?? "merge")),
|
|
39
|
+
clear: tool("clear", t("清除内容"), TABLE_ICONS.clear, () => run("clear"), "Del"),
|
|
40
|
+
more: tool("more", t("更多"), FORMAT_ICONS.more, () => toggle("more")),
|
|
41
|
+
};
|
|
42
|
+
for (const name of ["color", "align", "more"]) tools[name].setAttribute("aria-expanded", "false");
|
|
43
|
+
|
|
44
|
+
// A row of a list (the format bar's "更多" list) that closes the panels as it acts.
|
|
45
|
+
const item = (label, icon, action) => listItem(null, label, icon, () => { closePanels(); action(); });
|
|
46
|
+
const colors = element("div", { class: "ge-colors", role: "dialog", "aria-label": t("颜色"), hidden: "" });
|
|
47
|
+
// The alignments (aligns.mjs): the three, a separator, the three vertical ones.
|
|
48
|
+
const aligns = element("div", { class: "ge-more", role: "menu", "aria-label": t("对齐"), hidden: "" });
|
|
49
|
+
aligns.append(...alignItems([], (name) => run("align", name)).flatMap((align, index, all) => {
|
|
50
|
+
const node = item(align.label, align.icon, align.run);
|
|
51
|
+
node.dataset.align = align.name;
|
|
52
|
+
return index > 0 && align.vertical !== all[index - 1].vertical ? [element("div", { class: "ge-format-sep", role: "separator" }), node] : [node];
|
|
53
|
+
}));
|
|
54
|
+
const more = element("div", { class: "ge-more", role: "menu", "aria-label": t("更多"), hidden: "" },
|
|
55
|
+
item(t("在上方插入行"), TABLE_ICONS.above, () => run("insert", "above")),
|
|
56
|
+
item(t("在下方插入行"), TABLE_ICONS.below, () => run("insert", "below")),
|
|
57
|
+
item(t("在左侧插入列"), TABLE_ICONS.left, () => run("insert", "left")),
|
|
58
|
+
item(t("在右侧插入列"), TABLE_ICONS.right, () => run("insert", "right")),
|
|
59
|
+
item(t("删除所在行"), TABLE_ICONS.removeRow, () => run("remove", "rows")),
|
|
60
|
+
item(t("删除所在列"), TABLE_ICONS.removeColumn, () => run("remove", "columns")));
|
|
61
|
+
const panels = { colors, aligns, more };
|
|
62
|
+
const opener = { colors: tools.color, aligns: tools.align, more: tools.more };
|
|
63
|
+
let openPanel = null;
|
|
64
|
+
let state = { color: null, bold: false, aligns: alignItems([]), merge: null };
|
|
65
|
+
|
|
66
|
+
const box = element("div", { class: "ge-format-box" },
|
|
67
|
+
element("div", { class: "ge-format-row" }, tools.color, tools.bold, tools.align, tools.merge, tools.clear, tools.more));
|
|
68
|
+
const node = element("div", { class: "ge-format ge-cell-bar", role: "toolbar", "aria-label": t("单元格"), hidden: "" }, box, colors, aligns, more);
|
|
69
|
+
mount(node);
|
|
70
|
+
|
|
71
|
+
function toggle(name) {
|
|
72
|
+
const was = openPanel;
|
|
73
|
+
closePanels();
|
|
74
|
+
if (was !== name) openPanelNamed(name);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function openPanelNamed(name) {
|
|
78
|
+
hideTooltip();
|
|
79
|
+
const panel = panels[name];
|
|
80
|
+
if (name === "colors") {
|
|
81
|
+
// One color (默认 takes it away): the cells' own ringed, 默认文本 when they have none.
|
|
82
|
+
const kind = { text: "text", highlight: "background" };
|
|
83
|
+
const ringed = (family, value) => (value === null ? family === "text" && state.color === null : state.color?.kind === kind[family] && state.color.color === value);
|
|
84
|
+
const marked = (family, list) => list.map((value) => {
|
|
85
|
+
const swatch = colorSwatch(family, value, () => { closePanels(); run("color", value === null ? null : { kind: kind[family], color: value }); });
|
|
86
|
+
swatch.setAttribute("aria-pressed", String(ringed(family, value)));
|
|
87
|
+
return swatch;
|
|
88
|
+
});
|
|
89
|
+
colors.replaceChildren(colorSection(t("文本颜色"), marked("text", [null, ...TEXT_COLORS])), colorSection(t("背景颜色"), marked("highlight", [null, ...HIGHLIGHTS])));
|
|
90
|
+
}
|
|
91
|
+
if (name === "aligns") {
|
|
92
|
+
for (const row of aligns.querySelectorAll("[data-align]")) row.setAttribute("aria-pressed", String(state.aligns.some((align) => align.current && align.name === row.dataset.align)));
|
|
93
|
+
}
|
|
94
|
+
openPanel = name;
|
|
95
|
+
opener[name].setAttribute("aria-expanded", "true");
|
|
96
|
+
fadeIn(panel, PANEL);
|
|
97
|
+
belowControl(panel, opener[name]); // below its button, inside the window
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function closePanels(atOnce = false) {
|
|
101
|
+
if (!openPanel) return false;
|
|
102
|
+
const panel = panels[openPanel];
|
|
103
|
+
opener[openPanel].setAttribute("aria-expanded", "false");
|
|
104
|
+
openPanel = null;
|
|
105
|
+
if (atOnce) panel.hidden = true;
|
|
106
|
+
fadeOut(panel, PANEL);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
node,
|
|
112
|
+
get visible() { return !node.hidden; },
|
|
113
|
+
holds: (target) => node.contains(target),
|
|
114
|
+
/** Close the colors or a list, if one is open (Esc); returns whether one was. */
|
|
115
|
+
closePanels,
|
|
116
|
+
/**
|
|
117
|
+
* Show over `rect` (the selected cells, window coordinates), centered above them. now: the
|
|
118
|
+
* cells' { color: { kind, color } | null (undefined: not the same in all), bold, aligns (aligns.mjs alignItems), merge }.
|
|
119
|
+
*/
|
|
120
|
+
show(rect, now) {
|
|
121
|
+
state = now;
|
|
122
|
+
const { kind, color } = now.color ?? {};
|
|
123
|
+
sample.className = ["ge-ink-sample", color && (kind === "text" ? `doc-text-${color}` : `doc-highlight-${color}`)].filter(Boolean).join(" ");
|
|
124
|
+
sample.setAttribute("data-ring", kind === "background" ? color : "default");
|
|
125
|
+
tools.bold.setAttribute("aria-pressed", String(now.bold));
|
|
126
|
+
tools.align.innerHTML = (now.aligns.find((align) => align.current && !align.vertical) ?? now.aligns[0]).icon;
|
|
127
|
+
// 合并单元格 or 拆分单元格, or none (one plain cell).
|
|
128
|
+
tools.merge.hidden = !now.merge;
|
|
129
|
+
tools.merge.innerHTML = TABLE_ICONS[now.merge ?? "merge"];
|
|
130
|
+
tools.merge.setAttribute("aria-label", now.merge === "split" ? t("拆分单元格") : t("合并单元格"));
|
|
131
|
+
if (node.hidden) fadeIn(node, APPEAR);
|
|
132
|
+
const { offsetWidth: width, offsetHeight: height } = box;
|
|
133
|
+
const { left, top } = placeBox(rect, { width, height }, { placement: "top", align: "center", gap: GAP, margin: 12 });
|
|
134
|
+
node.style.transform = `translate(${Math.round(left)}px, ${Math.round(top)}px)`;
|
|
135
|
+
},
|
|
136
|
+
hide() {
|
|
137
|
+
closePanels(true);
|
|
138
|
+
node.hidden = true;
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|