@heycys/gallery 0.0.0-stage → 0.1.0
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 +3253 -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 +39 -0
- package/browser/editor/components/callout/page.mjs +13 -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 +297 -0
- package/browser/editor/components/details/index.mjs +72 -0
- package/browser/editor/components/details/page.mjs +86 -0
- package/browser/editor/components/dialog/index.mjs +83 -0
- package/browser/editor/components/dialog/page.mjs +219 -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 +33 -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 +51 -0
- package/browser/editor/components/highlight/index.mjs +79 -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 +45 -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 +133 -0
- package/browser/editor/components/installed/page.mjs +422 -0
- package/browser/editor/components/installed/served.mjs +35 -0
- package/browser/editor/components/kit.mjs +64 -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 +162 -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 +833 -0
- package/browser/editor/components/rows.mjs +16 -0
- package/browser/editor/components/section/index.mjs +41 -0
- package/browser/editor/components/section/page.mjs +141 -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 +306 -0
- package/browser/editor/components/table/page.mjs +672 -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 +229 -0
- package/browser/editor/page/annotate/card.mjs +102 -0
- package/browser/editor/page/annotate/index.mjs +1629 -0
- package/browser/editor/page/at-menu/index.mjs +317 -0
- package/browser/editor/page/autosave.mjs +977 -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 +82 -0
- package/browser/editor/page/block-menu/index.mjs +215 -0
- package/browser/editor/page/blocks.mjs +246 -0
- package/browser/editor/page/caret.mjs +679 -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 +797 -0
- package/browser/editor/page/clipboard/own/blocks.mjs +202 -0
- package/browser/editor/page/clipboard/own/chart-keys.mjs +58 -0
- package/browser/editor/page/clipboard/own/describe.mjs +115 -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 +326 -0
- package/browser/editor/page/columns/index.mjs +360 -0
- package/browser/editor/page/commit.mjs +1798 -0
- package/browser/editor/page/conflicts.mjs +269 -0
- package/browser/editor/page/convert.mjs +830 -0
- package/browser/editor/page/core.mjs +1655 -0
- package/browser/editor/page/drag/drop.mjs +307 -0
- package/browser/editor/page/drag/index.mjs +335 -0
- package/browser/editor/page/drag/preview.mjs +121 -0
- package/browser/editor/page/edge-scroll.mjs +50 -0
- package/browser/editor/page/editor.mjs +1725 -0
- package/browser/editor/page/emoji-picker/emoji-tab.mjs +278 -0
- package/browser/editor/page/emoji-picker/glyph-html.mjs +26 -0
- package/browser/editor/page/emoji-picker/grid.mjs +79 -0
- package/browser/editor/page/emoji-picker/icon-tab.mjs +217 -0
- package/browser/editor/page/emoji-picker/icons.mjs +32 -0
- package/browser/editor/page/emoji-picker/index.mjs +164 -0
- package/browser/editor/page/emoji-picker/styles.mjs +2 -0
- package/browser/editor/page/emoji-picker/support.mjs +202 -0
- package/browser/editor/page/emoji-picker/upload.mjs +235 -0
- package/browser/editor/page/export-report.mjs +23 -0
- package/browser/editor/page/fills.mjs +60 -0
- package/browser/editor/page/find/index.mjs +107 -0
- package/browser/editor/page/flags.mjs +70 -0
- package/browser/editor/page/format-bar/bar.mjs +448 -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 +400 -0
- package/browser/editor/page/gesture.mjs +45 -0
- package/browser/editor/page/handle/index.mjs +639 -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 +243 -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/look.mjs +65 -0
- package/browser/editor/page/made.mjs +24 -0
- package/browser/editor/page/margin.mjs +352 -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 +500 -0
- package/browser/editor/page/merge.mjs +100 -0
- package/browser/editor/page/notices.mjs +142 -0
- package/browser/editor/page/offered.mjs +32 -0
- package/browser/editor/page/outline/folds.mjs +52 -0
- package/browser/editor/page/outline/index.mjs +697 -0
- package/browser/editor/page/outline/list.mjs +172 -0
- package/browser/editor/page/outline/read.mjs +201 -0
- package/browser/editor/page/outline/strip.mjs +281 -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 +64 -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 +59 -0
- package/browser/editor/page/selection/index.mjs +157 -0
- package/browser/editor/page/selection/marquee.mjs +174 -0
- package/browser/editor/page/session.mjs +117 -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 +138 -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 +985 -0
- package/browser/editor/page/table/lists.mjs +187 -0
- package/browser/editor/page/table/widths.mjs +308 -0
- package/browser/editor/page/tex.mjs +32 -0
- package/browser/editor/page/text-select/index.mjs +656 -0
- package/browser/editor/page/tooltip.mjs +98 -0
- package/browser/editor/page/type-grid.mjs +82 -0
- package/browser/editor/page/typing/code-edges.mjs +228 -0
- package/browser/editor/page/typing/index.mjs +276 -0
- package/browser/editor/page/typing/leave.mjs +68 -0
- package/browser/editor/page/ui.mjs +160 -0
- package/browser/shared/annotations.mjs +571 -0
- package/browser/shared/code-folds.mjs +10 -0
- package/browser/shared/code-languages.mjs +70 -0
- package/browser/shared/code-lines.mjs +30 -0
- package/browser/shared/colors.mjs +28 -0
- package/browser/shared/component-catalog.mjs +559 -0
- package/browser/shared/components/bookmark.mjs +26 -0
- package/browser/shared/components/callout.mjs +7 -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 +342 -0
- package/browser/shared/components/installed.mjs +162 -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 +37 -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/emoji/custom.mjs +91 -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 +26 -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 +196 -0
- package/browser/shared/emoji/emoji.mjs +37 -0
- package/browser/shared/emoji/glyphs.mjs +134 -0
- package/browser/shared/emoji/icon-value.mjs +90 -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 +53 -0
- package/browser/shared/http.mjs +22 -0
- package/browser/shared/i18n/en.mjs +1164 -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/media.mjs +162 -0
- package/browser/shared/new-names.mjs +64 -0
- package/browser/shared/number-reading.mjs +92 -0
- package/browser/shared/old-names.mjs +143 -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 +110 -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 +76 -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.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-2PBALTR3.mjs +57 -0
- package/dist/chunk-342HXE3Q.mjs +2 -0
- package/dist/chunk-3LA3EMDE.mjs +15 -0
- package/dist/chunk-43B75J5T.mjs +2 -0
- package/dist/chunk-4K5KC6V2.mjs +2 -0
- package/dist/chunk-5FRMCDPY.mjs +16 -0
- package/dist/chunk-5L7RYZCL.mjs +2 -0
- package/dist/chunk-5LEK2CBS.mjs +2 -0
- package/dist/chunk-5OFN5AHC.mjs +2 -0
- package/dist/chunk-5SIYS5HN.mjs +2 -0
- package/dist/chunk-5TEK3RAD.mjs +2 -0
- package/dist/chunk-6CYG3Z4V.mjs +2 -0
- package/dist/chunk-6U2SLSDN.mjs +3 -0
- package/dist/chunk-742D2WWJ.mjs +19 -0
- package/dist/chunk-7GHT2UCA.mjs +15 -0
- package/dist/chunk-7QQBR7PB.mjs +2 -0
- package/dist/chunk-A55HN5OK.mjs +2 -0
- package/dist/chunk-ACOPDCNB.mjs +2 -0
- package/dist/chunk-AGDILNWB.mjs +2 -0
- package/dist/chunk-ATCJYAR4.mjs +2 -0
- package/dist/chunk-B3VTYBYR.mjs +960 -0
- package/dist/chunk-C564NU2H.mjs +77 -0
- package/dist/chunk-C7HWOBIF.mjs +2 -0
- package/dist/chunk-DB4WKGYF.mjs +7 -0
- package/dist/chunk-E7VYDG2X.mjs +2 -0
- package/dist/chunk-EUX7IC5J.mjs +48 -0
- package/dist/chunk-EVJ3BX3M.mjs +2 -0
- package/dist/chunk-EZY3WC6Z.mjs +15 -0
- package/dist/chunk-FQGQH4KM.mjs +2 -0
- package/dist/chunk-G7TOXONE.mjs +6 -0
- package/dist/chunk-GPF4YWWB.mjs +9 -0
- package/dist/chunk-GRAXKKG4.mjs +2 -0
- package/dist/chunk-GYQV7Y4J.mjs +120 -0
- package/dist/chunk-HMHK3EQ6.mjs +2 -0
- package/dist/chunk-HQQMJCQJ.mjs +10 -0
- package/dist/chunk-HYMEEXKN.mjs +4 -0
- package/dist/chunk-IERUOGC3.mjs +6 -0
- package/dist/chunk-ITNLYXXV.mjs +3 -0
- package/dist/chunk-L4DVONOG.mjs +2 -0
- package/dist/chunk-LAE5NQ4B.mjs +2 -0
- package/dist/chunk-LC7YNQFG.mjs +2 -0
- package/dist/chunk-LHTFLRB6.mjs +4 -0
- package/dist/chunk-LKX55H76.mjs +2 -0
- package/dist/chunk-MAFIGVXY.mjs +2 -0
- package/dist/chunk-NFIBI4IP.mjs +26 -0
- package/dist/chunk-NSKUTQ5J.mjs +5 -0
- package/dist/chunk-O52JMOCZ.mjs +2 -0
- package/dist/chunk-P2CAZPDP.mjs +3 -0
- package/dist/chunk-QAIHRH3I.mjs +13 -0
- package/dist/chunk-QMQUXTU4.mjs +12 -0
- package/dist/chunk-QR6A54KJ.mjs +3 -0
- package/dist/chunk-QVWVFC5K.mjs +6 -0
- package/dist/chunk-QYKCJ7FG.mjs +8 -0
- package/dist/chunk-QZY6Q64C.mjs +2 -0
- package/dist/chunk-TDQP3DKQ.mjs +10 -0
- package/dist/chunk-TMYZB6AV.mjs +2 -0
- package/dist/chunk-TX6JH7TR.mjs +2 -0
- package/dist/chunk-U3SSPL4K.mjs +8 -0
- package/dist/chunk-UH4SIXTR.mjs +2 -0
- package/dist/chunk-UNUEWH4S.mjs +2 -0
- package/dist/chunk-UXUK4PMC.mjs +27 -0
- package/dist/chunk-V4CPWKMZ.mjs +2 -0
- package/dist/chunk-V6XZ4VIR.mjs +2 -0
- package/dist/chunk-VACRB2NE.mjs +3 -0
- package/dist/chunk-W63L7367.mjs +7 -0
- package/dist/chunk-W7CXPCRV.mjs +6 -0
- package/dist/chunk-W7XHE4CT.mjs +2 -0
- package/dist/chunk-XINNG4F2.mjs +4 -0
- package/dist/chunk-Y34NR5JL.mjs +2 -0
- package/dist/chunk-YEY3RSFQ.mjs +2 -0
- package/dist/chunk-YL2DPWVS.mjs +4 -0
- package/dist/chunk-YXAUQPVK.mjs +8 -0
- package/dist/chunk-YZ5Z6H4W.mjs +4 -0
- package/dist/chunk-Z52HTUW7.mjs +4 -0
- package/dist/chunk-ZBIM6ARY.mjs +216 -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 +1988 -0
- package/kit/report.css +2821 -0
- package/kit/runtime.js +1707 -0
- package/kit/sheets.js +123 -0
- package/kit/state.js +217 -0
- package/kit/tables.js +1449 -0
- package/kit/tokens.js +29 -0
- package/kit/ui.js +561 -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 +141 -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 +138 -0
- package/skill/agents/openai.yaml +5 -0
- package/skill/references/building-components.md +327 -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 +141 -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-B6Ai3wsa.js +13 -0
- package/web/assets/index-SYPC3EZy.css +1 -0
- package/web/index.html +14 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { keptAnyway, partsOf, removalTarget, withLeads } from "../core.mjs";
|
|
2
|
+
import { alive, ordered, otherTabs } from "../block-info.mjs";
|
|
3
|
+
import { caretAt } from "../caret.mjs";
|
|
4
|
+
import { t } from "../../../shared/i18n/index.mjs";
|
|
5
|
+
|
|
6
|
+
// Deleting whole blocks (docs/editor.md, "Deleting blocks"): the selected ones with Delete or
|
|
7
|
+
// Backspace, the block menu's 删除, or Ctrl+X. Selected blocks go together, or none does (one of
|
|
8
|
+
// them is referred to, data-ge-keep, or they are a row's last tabs), with the reason. A container
|
|
9
|
+
// they leave empty goes too (core.mjs removalTarget); when a Sheet tab's Sheet was shown, the next
|
|
10
|
+
// tab is clicked (undo clicks it back). One undo step, which selects the blocks again. A box that
|
|
11
|
+
// always holds a block gets an empty paragraph once they are gone (core.mjs tidyEmptied), the caret
|
|
12
|
+
// in it. That one empty paragraph stays (keptAnyway: it would be put back as it is), so deleting
|
|
13
|
+
// only it does nothing and says nothing.
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* info: block-info.mjs. selection: selection/index.mjs. struct(parents, touched, mutate): the
|
|
17
|
+
* editor's undoable structural change (history.mjs). say: the status line. closeMenu(): the block
|
|
18
|
+
* menu closes. forget(): the handle forgets the block it stood beside.
|
|
19
|
+
*/
|
|
20
|
+
export function createDelete({ info, selection, struct, say, closeMenu, forget }) {
|
|
21
|
+
const { kindOf, nameOf, keepText } = info;
|
|
22
|
+
|
|
23
|
+
return function remove(targets = selection.picked) {
|
|
24
|
+
closeMenu();
|
|
25
|
+
const list = ordered([targets].flat().filter(alive)).filter((target) => !keptAnyway(target));
|
|
26
|
+
if (list.length === 0) return;
|
|
27
|
+
const refused = list.map((target) => [target, keepText(target, list)]).find(([, reason]) => reason);
|
|
28
|
+
if (refused) {
|
|
29
|
+
selection.select(list, { quiet: true });
|
|
30
|
+
say(list.length > 1 ? t("其中的{0}不能删除:{1}", nameOf(refused[0]), refused[1]) : refused[1], "note", 6000);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
selection.clear();
|
|
34
|
+
forget();
|
|
35
|
+
// What goes: each block, or its container once nothing else is left in it.
|
|
36
|
+
const gone = new Set(list.flatMap(withLeads));
|
|
37
|
+
const nodes = [...new Set(list.map((target) => removalTarget(target, gone)))];
|
|
38
|
+
const parts = nodes.flatMap(partsOf);
|
|
39
|
+
// The Sheet shown moves to a tab still there.
|
|
40
|
+
const tabs = nodes.filter((node) => kindOf(node) === "tab");
|
|
41
|
+
const shownTab = tabs.find((tab) => tab.getAttribute("aria-selected") === "true");
|
|
42
|
+
// The one right of it shows instead, or left of it when it was the last (Notion's).
|
|
43
|
+
const row = shownTab ? [...shownTab.parentElement.children] : [];
|
|
44
|
+
const at = row.indexOf(shownTab);
|
|
45
|
+
const neighbour = shownTab && [...row.slice(at + 1), ...row.slice(0, at).reverse()].find((tab) => otherTabs(shownTab).includes(tab) && !tabs.includes(tab));
|
|
46
|
+
// After the area started again with its tabs as they are now (components/sheets/pills.mjs, on the
|
|
47
|
+
// same change: its observer's turn comes first).
|
|
48
|
+
const settle = shownTab ? (backwards) => queueMicrotask(() => (backwards ? shownTab : neighbour)?.click()) : null;
|
|
49
|
+
const done = struct([...new Set(parts.map((part) => part.parentNode))], [], () => {
|
|
50
|
+
parts.forEach((part) => part.remove());
|
|
51
|
+
settle?.(false);
|
|
52
|
+
return { touched: [], focus: null, select: list, settle };
|
|
53
|
+
});
|
|
54
|
+
if (done?.caret) caretAt(done.caret, "start");
|
|
55
|
+
const emptied = nodes.some((node) => !list.includes(node));
|
|
56
|
+
const name = list.length === 1 ? nameOf(nodes[0]) : t("{0} 块", list.length);
|
|
57
|
+
say(t("已删除{0}{1}{2} · Ctrl+Z 撤销", name, emptied ? t("(外层已空,一并删除)") : "", tabs.length > 0 ? t(",连同其中的内容") : ""));
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { unitElement, unitsOf, withLeads } from "../core.mjs";
|
|
2
|
+
import { alive, ordered } from "../block-info.mjs";
|
|
3
|
+
import { entersAfter } from "../beside.mjs";
|
|
4
|
+
import { createFills } from "../fills.mjs";
|
|
5
|
+
import { describe, note, report } from "../overlays.mjs";
|
|
6
|
+
import { t } from "../../../shared/i18n/index.mjs";
|
|
7
|
+
|
|
8
|
+
// Selected blocks (docs/editor.md, "Selecting blocks"): a set of blocks, none inside another, in
|
|
9
|
+
// document order. A box selection drawn from empty space gives blocks of one container
|
|
10
|
+
// (marquee.mjs), Shift can add others; Shift+↑/↓ widens or narrows a selection among the neighbours
|
|
11
|
+
// of the block it started from. Each selected block is filled (fills.mjs: in the editor's own layer,
|
|
12
|
+
// the page's, so a fill scrolls with its block natively, never inside the block, as the frame of what
|
|
13
|
+
// is being edited is, frame.mjs); the fills hide while the blocks are dragged (drag/). Deleting
|
|
14
|
+
// selected blocks is delete.mjs; what the keys do with a selection, blocks.mjs.
|
|
15
|
+
//
|
|
16
|
+
// A selection of text across blocks (text-select/) marks the blocks it takes whole (a code block, a
|
|
17
|
+
// table, a file…): they are filled as selected ones are, without being selected (mark).
|
|
18
|
+
//
|
|
19
|
+
// The fills belong to their blocks (docs/editor.md, "Overlays"): one per selected block on the
|
|
20
|
+
// page, made to match the selection the moment it changes (render), never on a later frame, so no
|
|
21
|
+
// fill outlives its block's selection, and none is drawn while the block tools are off. The frames
|
|
22
|
+
// only keep them where their blocks are (paint); a fill that cannot be drawn goes.
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* info: block-info.mjs. active(): whether block tools may show. say(text, kind, hold): the status
|
|
26
|
+
* line. closeMenu(): the block menu closes. schedule(): the block tools' next frame (blocks.mjs),
|
|
27
|
+
* which keeps the fills where their blocks are.
|
|
28
|
+
*/
|
|
29
|
+
export function createSelection({ info, active, say, closeMenu, schedule }) {
|
|
30
|
+
const { nameOf } = info;
|
|
31
|
+
let picked = []; // the selected blocks, in document order, none inside another
|
|
32
|
+
let marked = []; // the blocks a text selection takes whole (text-select/): filled, not selected
|
|
33
|
+
let anchor = null; // the block Shift+↑/↓ widens the selection from
|
|
34
|
+
let hidden = false; // the fills hide while the blocks are dragged
|
|
35
|
+
const halos = createFills({ kind: "halo", className: "ge-halo", stands: (node) => (picked.includes(node) || marked.includes(node)) && active() });
|
|
36
|
+
|
|
37
|
+
/** Select a block, or several (none is clearing); `quiet`: without saying so. */
|
|
38
|
+
function select(targets, { quiet = false } = {}) {
|
|
39
|
+
closeMenu();
|
|
40
|
+
const next = ordered([targets].flat().filter(alive));
|
|
41
|
+
if (next.length === 0) return clear();
|
|
42
|
+
if (next.length !== picked.length || next.some((node, index) => node !== picked[index])) {
|
|
43
|
+
picked = next;
|
|
44
|
+
note("select", picked.map(describe).join(", "));
|
|
45
|
+
}
|
|
46
|
+
if (!picked.includes(anchor)) anchor = picked[0];
|
|
47
|
+
const focused = document.activeElement;
|
|
48
|
+
if (focused && focused !== document.body && focused.closest("main")) focused.blur();
|
|
49
|
+
getSelection()?.removeAllRanges();
|
|
50
|
+
if (!quiet) {
|
|
51
|
+
const [first] = picked;
|
|
52
|
+
say(picked.length > 1
|
|
53
|
+
? t("已选中 {0} 块 · Delete 删除 · 拖动手柄一起移动 · Esc 取消", picked.length)
|
|
54
|
+
: t("已选中{0} · Delete 删除{1} · Esc 取消", nameOf(first), entersAfter(first) ? t(" · Enter 在下方新建文本") : t(" · Enter 编辑")));
|
|
55
|
+
}
|
|
56
|
+
render();
|
|
57
|
+
schedule();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function clear() {
|
|
61
|
+
if (picked.length > 0) note("clear", picked.map(describe).join(", "));
|
|
62
|
+
picked = [];
|
|
63
|
+
anchor = null;
|
|
64
|
+
render();
|
|
65
|
+
schedule();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Blocks taken off the page (undo, a commit, the page's own script) leave the selection, and
|
|
69
|
+
// their fills go with them.
|
|
70
|
+
function prune() {
|
|
71
|
+
const gone = picked.filter((node) => !alive(node));
|
|
72
|
+
if (gone.length === 0) return;
|
|
73
|
+
note("prune", gone.map(describe).join(", "));
|
|
74
|
+
picked = picked.filter(alive);
|
|
75
|
+
if (!picked.includes(anchor)) anchor = picked[0] ?? null;
|
|
76
|
+
render();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Shift+↑/↓: the selection widens (or narrows) by one block among the anchor's neighbours.
|
|
80
|
+
function extend(delta) {
|
|
81
|
+
const container = anchor?.parentElement;
|
|
82
|
+
const list = container ? unitsOf(container) : [];
|
|
83
|
+
const at = list.indexOf(anchor);
|
|
84
|
+
if (at < 0) return;
|
|
85
|
+
const inside = picked.map((node) => list.indexOf(node)).filter((index) => index >= 0);
|
|
86
|
+
const low = Math.min(...inside);
|
|
87
|
+
const high = Math.max(...inside);
|
|
88
|
+
const end = Math.max(0, Math.min(list.length - 1, (high > at ? high : low < at ? low : at) + delta));
|
|
89
|
+
select(list.slice(Math.min(at, end), Math.max(at, end) + 1), { quiet: true });
|
|
90
|
+
list[end].scrollIntoView({ block: "nearest", inline: "nearest" });
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// The next or previous block in the same container.
|
|
94
|
+
function sibling(node, forward) {
|
|
95
|
+
for (let next = forward ? node.nextElementSibling : withLeads(node)[0].previousElementSibling; next; next = forward ? next.nextElementSibling : next.previousElementSibling) {
|
|
96
|
+
const unit = unitElement(next);
|
|
97
|
+
if (unit && unit.parentElement === node.parentElement && unit !== node) return unit;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// The fills made to match the selection now: those of blocks no longer selected (or no longer on
|
|
103
|
+
// the page) go at once; each selected block shown gets its fill where it is, reaching past it as
|
|
104
|
+
// reachOf says, never into a neighbour's (roomOf). One that cannot be drawn takes all the fills
|
|
105
|
+
// down (said once): better none than one in the wrong place.
|
|
106
|
+
function render() {
|
|
107
|
+
try {
|
|
108
|
+
halos.paint(hidden || !active() ? [] : [...picked, ...marked].filter(alive));
|
|
109
|
+
} catch (error) {
|
|
110
|
+
unpaint();
|
|
111
|
+
report("selection fills", error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Every fill taken down (the selection stays).
|
|
116
|
+
const unpaint = () => halos.clear();
|
|
117
|
+
|
|
118
|
+
// For the tests and DevTools: the selected blocks (the page carries no mark of the selection).
|
|
119
|
+
globalThis.__gallerySelected = () => [...picked];
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
/** The selected blocks, in document order (the selection's own list: read it, never change it). */
|
|
123
|
+
get picked() { return picked; },
|
|
124
|
+
/**
|
|
125
|
+
* With several blocks selected, the one that is `target` or holds it (an item of a selected
|
|
126
|
+
* list: its handle's menu is the group's, as notion-lite's handle of a selected block), else null.
|
|
127
|
+
*/
|
|
128
|
+
holderOf: (target) => (picked.length > 1 ? picked.find((node) => node === target || node.contains(target)) ?? null : null),
|
|
129
|
+
select,
|
|
130
|
+
clear,
|
|
131
|
+
/** Fill `targets` as selected ones without selecting them (a text selection's whole blocks; none: no more). */
|
|
132
|
+
mark(targets) {
|
|
133
|
+
const next = ordered([targets].flat().filter(alive));
|
|
134
|
+
if (next.length === marked.length && next.every((node, index) => node === marked[index])) return;
|
|
135
|
+
marked = next;
|
|
136
|
+
render();
|
|
137
|
+
schedule();
|
|
138
|
+
},
|
|
139
|
+
extend,
|
|
140
|
+
sibling,
|
|
141
|
+
prune,
|
|
142
|
+
/** A frame: the fills where their blocks are now; none while the blocks are dragged (`dragging`). */
|
|
143
|
+
paint(dragging) {
|
|
144
|
+
hidden = dragging;
|
|
145
|
+
render();
|
|
146
|
+
},
|
|
147
|
+
unpaint,
|
|
148
|
+
/** The editing stops: nothing selected, no fills. */
|
|
149
|
+
hide() {
|
|
150
|
+
marked = [];
|
|
151
|
+
clear();
|
|
152
|
+
unpaint();
|
|
153
|
+
},
|
|
154
|
+
/** The selection for the overlays' snapshot. */
|
|
155
|
+
state: () => ({ picked: picked.map(describe), offPage: picked.filter((node) => !node.isConnected).length, fills: halos.count, hidden }),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Z } from "../../../shared/layers.mjs";
|
|
2
|
+
import { blankTarget, measure, pick } from "../geometry.mjs";
|
|
3
|
+
import { DIALOG } from "../../components/kit.mjs";
|
|
4
|
+
import { edgeFollower } from "../edge-scroll.mjs";
|
|
5
|
+
import { cancelOnEscape, endsGesture, gestureLock } from "../gesture.mjs";
|
|
6
|
+
import { note, own } from "../overlays.mjs";
|
|
7
|
+
import { addStyle, element, mount } from "../ui.mjs";
|
|
8
|
+
|
|
9
|
+
// A press on empty space (geometry.mjs blankTarget: the page around the report, a box between its
|
|
10
|
+
// blocks): moved more than a few pixels, it draws a box selection (docs/editor.md, "Selecting
|
|
11
|
+
// blocks"); released where it was, it is a click on empty space. The rectangle's start stays on
|
|
12
|
+
// the content while the page scrolls (the wheel, or the pointer near the window's top or bottom
|
|
13
|
+
// edge); the blocks it takes are geometry.mjs pick()'s. With Shift held (at any moment), what it
|
|
14
|
+
// takes is added to or taken out of what was selected when it started. While a detail card is open,
|
|
15
|
+
// one is drawn in the card's content alone, its own top as for Ctrl+A (select-all/): the press on
|
|
16
|
+
// its empty space, the blocks it takes of that content, the rectangle's start staying on the content
|
|
17
|
+
// as the content scrolls. Only a mouse draws one, and not where the pointer is on an edge that resizes (resize/) or in a
|
|
18
|
+
// gap that does (between two columns, or two nodes of a flowchart's row: columns/, which takes that
|
|
19
|
+
// press; its listener comes after this one, so it cannot keep the press from here).
|
|
20
|
+
// Anything that ends the press another way (the capture lost, the window losing the focus, the
|
|
21
|
+
// page hidden, Esc) cancels it: what it took is let go. The rectangle belongs to the press
|
|
22
|
+
// (overlays.mjs); scrolling near the edges is a task of the editor's frames (edge-scroll.mjs), and the
|
|
23
|
+
// ways a press gives up are gesture.mjs's.
|
|
24
|
+
|
|
25
|
+
const STYLE = `
|
|
26
|
+
.ge-marquee { position: fixed; left: 0; top: 0; z-index: ${Z.marquee}; box-sizing: border-box; border: 1px solid transparent; background: var(--ge-halo); pointer-events: none; }
|
|
27
|
+
${gestureLock("data-ge-marquee", { cursor: "default", select: true })}
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
const START = 4; // how far the pointer moves before the press draws a box selection
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* active(): whether block tools may show. selection: { get() -> blocks, set(blocks, { quiet }),
|
|
34
|
+
* clear() }. click(x, y, target): a click on empty space.
|
|
35
|
+
*/
|
|
36
|
+
export function createMarquee({ active, selection, click }) {
|
|
37
|
+
addStyle(STYLE);
|
|
38
|
+
let held = null; // { x, y, pageX, pageY, start, shift, target, tree, drawn, pointer }
|
|
39
|
+
const shape = own(element("div", { class: "ge-marquee" }), "box selection", { alive: () => Boolean(held?.drawn) });
|
|
40
|
+
// Near the top or bottom edge of what it is drawn in (the window, or the card's content) that
|
|
41
|
+
// scrolls, and the rectangle follows (a frame; again on the next one while the rectangle is drawn).
|
|
42
|
+
const scrolling = edgeFollower("box selection", { pointer: () => (held?.drawn ? held : null), scroller: () => held.scroller, scrolled: () => update(), fail: () => cancel() });
|
|
43
|
+
|
|
44
|
+
// Where a press may draw one: the page, or, while a detail card is open, the content of the card
|
|
45
|
+
// the press is in (its own top, as Ctrl+A's: select-all/), never the page behind it. null: nowhere.
|
|
46
|
+
function topOf(target) {
|
|
47
|
+
if (!document.querySelector(DIALOG.open)) return document.querySelector("main");
|
|
48
|
+
const content = target.closest(DIALOG.open)?.querySelector(DIALOG.openContent);
|
|
49
|
+
return content?.contains(target) ? content : null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// What scrolls under the rectangle: a card's content scrolls by itself, the page with the window.
|
|
53
|
+
const scrolled = () => (held.scroller ? { x: held.scroller.scrollLeft, y: held.scroller.scrollTop } : { x: scrollX, y: scrollY });
|
|
54
|
+
|
|
55
|
+
/** A press on the page: takes it (true) when it is on empty space. */
|
|
56
|
+
function begin(event) {
|
|
57
|
+
if (held || event.button !== 0 || event.pointerType !== "mouse" || !active() || !blankTarget(event.target)) return false;
|
|
58
|
+
if (document.documentElement.hasAttribute("data-ge-resize") || document.documentElement.hasAttribute("data-ge-gap")) return false;
|
|
59
|
+
const root = topOf(event.target);
|
|
60
|
+
if (!root) return false;
|
|
61
|
+
// Not cancelled: the page still takes the focus, as a click on empty space always gave it (in a
|
|
62
|
+
// workbench, its keys then reach the page); text selection is off while the press lasts.
|
|
63
|
+
document.documentElement.setAttribute("data-ge-marquee", "");
|
|
64
|
+
const focused = document.activeElement;
|
|
65
|
+
if (focused?.isContentEditable && focused.closest("main")) focused.blur();
|
|
66
|
+
getSelection()?.removeAllRanges();
|
|
67
|
+
held = {
|
|
68
|
+
x: event.clientX, y: event.clientY, root, scroller: root.localName === "main" ? null : root, card: root.closest("dialog"),
|
|
69
|
+
start: selection.get(), shift: event.shiftKey, target: event.target, tree: null, drawn: false, pointer: event.pointerId,
|
|
70
|
+
};
|
|
71
|
+
// Its start, on the content: where it is as what scrolls under it moves (the tree's frame: from()).
|
|
72
|
+
const at = scrolled();
|
|
73
|
+
held.startX = event.clientX + at.x;
|
|
74
|
+
held.startY = event.clientY + at.y;
|
|
75
|
+
note("box selection", "press");
|
|
76
|
+
try {
|
|
77
|
+
document.documentElement.setPointerCapture(event.pointerId);
|
|
78
|
+
} catch {}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function draw() {
|
|
83
|
+
held.drawn = true;
|
|
84
|
+
held.tree = measure(held.root); // page coordinates, as what scrolls under it was then (held.at)
|
|
85
|
+
held.at = scrolled();
|
|
86
|
+
held.page = { x: scrollX, y: scrollY };
|
|
87
|
+
if (!held.shift) selection.clear();
|
|
88
|
+
// In the card's own top layer, over its content (the card on top when one was opened from another).
|
|
89
|
+
if (held.card) {
|
|
90
|
+
shape.dataset.docDev = "";
|
|
91
|
+
held.card.append(shape);
|
|
92
|
+
} else mount(shape);
|
|
93
|
+
scrolling.wake();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// The rectangle from where the press started (on the content) to the pointer, and what it takes:
|
|
97
|
+
// the window's rectangle in the tree's frame, moved by what has scrolled since it was measured.
|
|
98
|
+
function update() {
|
|
99
|
+
const now = scrolled();
|
|
100
|
+
const startX = held.startX - now.x;
|
|
101
|
+
const startY = held.startY - now.y;
|
|
102
|
+
const left = Math.min(startX, held.x);
|
|
103
|
+
const top = Math.min(startY, held.y);
|
|
104
|
+
const width = Math.abs(held.x - startX);
|
|
105
|
+
const height = Math.abs(held.y - startY);
|
|
106
|
+
Object.assign(shape.style, { transform: `translate(${Math.round(left)}px, ${Math.round(top)}px)`, width: `${Math.round(width)}px`, height: `${Math.round(height)}px` });
|
|
107
|
+
const dx = now.x - held.at.x + held.page.x;
|
|
108
|
+
const dy = now.y - held.at.y + held.page.y;
|
|
109
|
+
let taken = pick(held.tree, { left: left + dx, top: top + dy, right: left + width + dx, bottom: top + height + dy });
|
|
110
|
+
if (held.shift) taken = [...held.start.filter((node) => !taken.includes(node)), ...taken.filter((node) => !held.start.includes(node))];
|
|
111
|
+
selection.set(taken, { quiet: true });
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function stop() {
|
|
115
|
+
if (!held) return;
|
|
116
|
+
const { pointer } = held;
|
|
117
|
+
held = null;
|
|
118
|
+
shape.remove();
|
|
119
|
+
document.documentElement.removeAttribute("data-ge-marquee");
|
|
120
|
+
try {
|
|
121
|
+
document.documentElement.releasePointerCapture(pointer);
|
|
122
|
+
} catch {}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Give up the press (Esc, the window losing focus): a box selection being drawn takes nothing. */
|
|
126
|
+
function cancel() {
|
|
127
|
+
if (!held) return;
|
|
128
|
+
note("box selection", "cancelled");
|
|
129
|
+
if (held.drawn) selection.clear();
|
|
130
|
+
stop();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
addEventListener("pointermove", (event) => {
|
|
134
|
+
if (!held || event.pointerId !== held.pointer) return;
|
|
135
|
+
held.x = event.clientX;
|
|
136
|
+
held.y = event.clientY;
|
|
137
|
+
held.shift = event.shiftKey;
|
|
138
|
+
const at = scrolled();
|
|
139
|
+
if (!held.drawn && Math.hypot(event.clientX + at.x - held.startX, event.clientY + at.y - held.startY) > START) draw();
|
|
140
|
+
if (held.drawn) update();
|
|
141
|
+
}, true);
|
|
142
|
+
addEventListener("pointerup", (event) => {
|
|
143
|
+
if (!held || event.pointerId !== held.pointer) return;
|
|
144
|
+
const { drawn, target } = held;
|
|
145
|
+
stop();
|
|
146
|
+
if (!drawn) {
|
|
147
|
+
selection.clear();
|
|
148
|
+
click(event.clientX, event.clientY, target);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const taken = selection.get();
|
|
152
|
+
if (taken.length > 0) selection.set(taken); // says what was taken
|
|
153
|
+
}, true);
|
|
154
|
+
// After pointerup the press is over already (stop() let the capture go); it ends any other way too.
|
|
155
|
+
endsGesture({ active: () => Boolean(held), cancel, owns: (event) => event.pointerId === held.pointer });
|
|
156
|
+
cancelOnEscape({ active: () => Boolean(held), cancel });
|
|
157
|
+
addEventListener("scroll", () => { if (held?.drawn) update(); }, { passive: true, capture: true });
|
|
158
|
+
const shiftKey = (event) => {
|
|
159
|
+
if (!held?.drawn || event.key !== "Shift") return;
|
|
160
|
+
held.shift = event.type === "keydown";
|
|
161
|
+
update();
|
|
162
|
+
};
|
|
163
|
+
addEventListener("keyup", shiftKey, true);
|
|
164
|
+
addEventListener("keydown", shiftKey, true);
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
begin,
|
|
168
|
+
cancel,
|
|
169
|
+
/** A box selection is being drawn (the handle steps aside). */
|
|
170
|
+
get drawing() { return Boolean(held?.drawn); },
|
|
171
|
+
/** The editor's UI nodes to keep in the top layer when a modal dialog opens. */
|
|
172
|
+
get nodes() { return shape.isConnected ? [shape] : []; },
|
|
173
|
+
};
|
|
174
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { OLD_PROTOCOL, PROTOCOL, PROTOCOLS, VERSION, keyCombo } from "../../shared/session.mjs";
|
|
2
|
+
|
|
3
|
+
// The report page inside a workbench (an iframe of the same origin): it answers a few commands and
|
|
4
|
+
// tells the workbench its state, never the report's content. Nothing happens when the page is not
|
|
5
|
+
// embedded. The protocol is src/shared/session.mjs; how a workbench uses it, docs/workbench.md.
|
|
6
|
+
//
|
|
7
|
+
// A message counts only from the parent window, of this origin and protocol. A command names the
|
|
8
|
+
// report it is meant for: one for another report (the iframe went to another page meanwhile) is
|
|
9
|
+
// refused. Every command gets exactly one reply, once it is done. Besides the editor's commands the
|
|
10
|
+
// session itself answers four: `theme` (show the report light or dark, or as the reader chose, without
|
|
11
|
+
// storing it), `keys` (key combinations to hand to the workbench when the page does not use them),
|
|
12
|
+
// `scroll-top` (back to the top when scrolled down) and `close-card` (the detail card on top closes as a
|
|
13
|
+
// press on its backdrop closes it: the workbench asks on a press on its own bars, or Esc there, while
|
|
14
|
+
// the page says a card is open, `card` in what it sends).
|
|
15
|
+
|
|
16
|
+
/** A page opened in a frame on its own (?solo), not as the workbench's report: no session, its own notices. */
|
|
17
|
+
export const SOLO = new URLSearchParams(location.search).has("solo");
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* slug: the report's; snapshot(): { title, state } (state: STATE_FLAGS of src/shared/session.mjs);
|
|
21
|
+
* commands: name -> async (message) => result ({ ok, … }); modals: what stands open over the page
|
|
22
|
+
* (`modalOps`, page-objects.mjs: open(), listen(listener), closeTop()).
|
|
23
|
+
* Returns { update() (call it when the state may have changed), notice({ text, tone, hold, room }) (the
|
|
24
|
+
* workbench shows it: a toast, `room` px above the frame's bottom, what the page's bottom panels take;
|
|
25
|
+
* text "" takes it away), noticeRoom(room) (that room changed: the workbench's toasts stand above it),
|
|
26
|
+
* reload() (the workbench shows the report
|
|
27
|
+
* again in a new page, swapped in once drawn), annotationsRemoved(items) (批注 deleted in the page:
|
|
28
|
+
* the workbench says so and offers them back), open({ target, block } or { hash }) (the workbench
|
|
29
|
+
* goes to another document), jump({ block, place }) (a link goes to a block of this page: the
|
|
30
|
+
* workbench adds a history entry, `place` where the reader was, for the way back: `show-place`),
|
|
31
|
+
* workspace() (a page was made under this one: the sidebar reads the list
|
|
32
|
+
* again and opens this page's row) }, or null when not embedded, or opened on its own in a frame of the
|
|
33
|
+
* workbench (?solo: the 写作偏好 dialog's page, which talks to no session).
|
|
34
|
+
*/
|
|
35
|
+
export function connectWorkbench({ slug, snapshot, commands, modals }) {
|
|
36
|
+
if (window.parent === window || SOLO) return null;
|
|
37
|
+
// The id the workbench speaks (src/shared/session.mjs, OLD_PROTOCOL): null until its first command,
|
|
38
|
+
// and meanwhile every message goes under both, so that a workbench of either version hears it.
|
|
39
|
+
let spoken = null;
|
|
40
|
+
const send = (type, fields, protocols = spoken ? [spoken] : [PROTOCOL, OLD_PROTOCOL]) => {
|
|
41
|
+
for (const protocol of protocols) window.parent.postMessage({ protocol, v: VERSION, type, slug, ...fields }, location.origin);
|
|
42
|
+
};
|
|
43
|
+
let last = null;
|
|
44
|
+
const update = () => {
|
|
45
|
+
const now = { ...snapshot(), card: modals.open().length > 0 };
|
|
46
|
+
const key = JSON.stringify(now);
|
|
47
|
+
if (key === last) return;
|
|
48
|
+
last = key;
|
|
49
|
+
send("state", now);
|
|
50
|
+
};
|
|
51
|
+
modals.listen(update);
|
|
52
|
+
|
|
53
|
+
// A key combination the workbench asked for goes to it when nothing on the page took it (the
|
|
54
|
+
// editor's own keys, Ctrl+K for a link among them, are handled and prevented before this).
|
|
55
|
+
let keys = new Set();
|
|
56
|
+
addEventListener("keydown", (event) => {
|
|
57
|
+
if (event.defaultPrevented || event.isComposing || keys.size === 0) return;
|
|
58
|
+
const key = keyCombo(event);
|
|
59
|
+
if (!keys.has(key)) return;
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
send("key", { key });
|
|
62
|
+
});
|
|
63
|
+
const own = {
|
|
64
|
+
async theme({ theme = null }) {
|
|
65
|
+
if (theme !== null && theme !== "light" && theme !== "dark") return { ok: false, reason: "theme" };
|
|
66
|
+
dispatchEvent(new CustomEvent("doc-theme-request", { detail: { theme } })); // the kit's ui.js
|
|
67
|
+
return { ok: true };
|
|
68
|
+
},
|
|
69
|
+
async keys({ keys: list }) {
|
|
70
|
+
if (!Array.isArray(list) || !list.every((key) => typeof key === "string")) return { ok: false, reason: "keys" };
|
|
71
|
+
keys = new Set(list);
|
|
72
|
+
return { ok: true };
|
|
73
|
+
},
|
|
74
|
+
// Scrolled down (10px or more, as Notion's breadcrumb asks), the page glides back to its top.
|
|
75
|
+
async "scroll-top"() {
|
|
76
|
+
if (Math.abs(scrollY) < 10) return { ok: true, scrolled: false };
|
|
77
|
+
scrollTo({ top: 0, behavior: "smooth" });
|
|
78
|
+
return { ok: true, scrolled: true };
|
|
79
|
+
},
|
|
80
|
+
// A press on the workbench's own bars, or Esc there, while a detail card is open.
|
|
81
|
+
async "close-card"() {
|
|
82
|
+
return { ok: true, closed: modals.closeTop() };
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
const all = { ...commands, ...own };
|
|
86
|
+
|
|
87
|
+
addEventListener("message", async (event) => {
|
|
88
|
+
const message = event.data;
|
|
89
|
+
if (event.source !== window.parent || event.origin !== location.origin) return;
|
|
90
|
+
if (!PROTOCOLS.includes(message?.protocol) || message.v !== VERSION || message.type !== "command") return;
|
|
91
|
+
spoken = message.protocol;
|
|
92
|
+
const run = Object.hasOwn(all, message.name) ? all[message.name] : null;
|
|
93
|
+
let result;
|
|
94
|
+
try {
|
|
95
|
+
result = message.slug !== slug ? { ok: false, reason: "slug" } : run ? await run(message) : { ok: false, reason: "unknown" };
|
|
96
|
+
} catch (error) {
|
|
97
|
+
result = { ok: false, reason: "error", message: String(error?.message ?? error) };
|
|
98
|
+
}
|
|
99
|
+
send("reply", { id: message.id, ...result }, [message.protocol]);
|
|
100
|
+
update();
|
|
101
|
+
});
|
|
102
|
+
const first = { ...snapshot(), card: modals.open().length > 0 };
|
|
103
|
+
last = JSON.stringify(first);
|
|
104
|
+
send("ready", { commands: Object.keys(all), ...first });
|
|
105
|
+
return {
|
|
106
|
+
update,
|
|
107
|
+
notice: (fields) => send("notice", fields),
|
|
108
|
+
noticeRoom: (room) => send("noticeRoom", { room }),
|
|
109
|
+
// Show the report again (the file changed): the workbench loads it out of sight and puts it in
|
|
110
|
+
// this page's place once drawn; this page does nothing more meanwhile.
|
|
111
|
+
reload: () => send("reload", {}),
|
|
112
|
+
annotationsRemoved: (items) => send("annotations-removed", { items }),
|
|
113
|
+
open: (place) => send("open", place),
|
|
114
|
+
jump: (fields) => send("jump", fields),
|
|
115
|
+
workspace: () => send("workspace", {}),
|
|
116
|
+
};
|
|
117
|
+
}
|