@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,146 @@
|
|
|
1
|
+
// A bulleted, numbered or to-do list or a flowchart, and its items (an item may hold lists of its own): a basic
|
|
2
|
+
// block. An item holds blocks after its text (HELD_TAGS); one of a list the kit draws the markers of
|
|
3
|
+
// with no text of its own over them keeps a line of its own, its marker on it and they under it: a line
|
|
4
|
+
// break ahead of them (ITEM_LINE), which the page editor and the kit put there by one rule (keepsLine),
|
|
5
|
+
// the file staying as written.
|
|
6
|
+
// Its markers are the kit's (Feishu's, blue): bullets a dot, a ring, a square by depth;
|
|
7
|
+
// numbers 1., a., i. by depth. A numbered list counts from its start, or on from the numbered list
|
|
8
|
+
// before it in the same flow (data-continue: the editor keeps its start in step). A to-do list
|
|
9
|
+
// (Notion's) has a box before each item, filled and checked for an item carrying data-checked.
|
|
10
|
+
// A flowchart (流程图, ol.doc-flow) draws its items as the steps of a process: each a node, a
|
|
11
|
+
// container as a highlight block is, drawn as a card with its number (or its icon, a lead
|
|
12
|
+
// div.doc-icon, in the number's place), arrows between them. A node holds blocks: its first a
|
|
13
|
+
// paragraph, its title (<p><strong>…</strong></p>: bold by default, the <strong> the reader's to
|
|
14
|
+
// take off), the blocks after it its content (a list there any list, its markers from the first
|
|
15
|
+
// depth). The kit lays the nodes out in rows that fill their width (the list's data-direction and
|
|
16
|
+
// each node's, and what the kit measures where neither says), a node's --doc-flow-ratio its
|
|
17
|
+
// weight in its row, and turns the arrow from a row's last node to the next row's first. A step
|
|
18
|
+
// written the short way, its own words first (<li>收集数据<p>…</p></li>), is drawn the same, its words
|
|
19
|
+
// its bold title (the editor rewrites it as a node: natural.mjs).
|
|
20
|
+
|
|
21
|
+
/** A flowchart's class (流程图), on an ol. */
|
|
22
|
+
export const FLOW = "doc-flow";
|
|
23
|
+
/** A to-do list's class (待办事项), on a ul: a box before each item where a bullet would be. */
|
|
24
|
+
export const TODO = "doc-todo";
|
|
25
|
+
/** The tags of the blocks a list item may hold after its text (the file's and the page's alike). */
|
|
26
|
+
export const HELD_TAGS = new Set(["p", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol", "div", "figure", "blockquote", "details", "hr", "table", "pre"]);
|
|
27
|
+
/**
|
|
28
|
+
* The class of the line break ahead of the blocks an item holds where it keeps a line of its own
|
|
29
|
+
* (keepsLine), so that its marker stands on that line: the kit's (runtime/spacing.js) and the page
|
|
30
|
+
* editor's (keepLine) alike, never written by an author, taken off a copy.
|
|
31
|
+
*/
|
|
32
|
+
export const ITEM_LINE = "doc-item-line";
|
|
33
|
+
|
|
34
|
+
// Whether `node` is a list whose items' markers the kit draws (styles/flow.css, todo.css): a bulleted
|
|
35
|
+
// or numbered list with no class of its own, or a to-do list (a flowchart holds them in its steps). A
|
|
36
|
+
// function, so that a kit script reading only other names of this module leaves it out.
|
|
37
|
+
const kitList = (node) => Boolean(node?.matches(`ul:not([class]), ol:not([class]), ul.${TODO}`));
|
|
38
|
+
// No text: white space and format characters (the zero-width space the page editor keeps after a mark).
|
|
39
|
+
const BLANK = /^[\s\p{Cf}]*$/u;
|
|
40
|
+
// What shows with no text in it: a picture, a control, a line break.
|
|
41
|
+
const SHOWS = "img, picture, svg, video, audio, canvas, iframe, object, input, br";
|
|
42
|
+
const isHeld = (node) => node.nodeType === 1 && HELD_TAGS.has(node.localName);
|
|
43
|
+
// A node standing for none of an item's text: white space or a comment; ahead of the blocks it
|
|
44
|
+
// holds, an element with no text in it and nothing that shows too (an empty bold or link, which the
|
|
45
|
+
// page editor writes as nothing).
|
|
46
|
+
const blank = (node) => (node.nodeType === 3 ? BLANK.test(node.data) : node.nodeType !== 1);
|
|
47
|
+
const textless = (node) => blank(node) || (node.nodeType === 1 && BLANK.test(node.textContent) && !node.matches(SHOWS) && !node.querySelector(SHOWS));
|
|
48
|
+
|
|
49
|
+
// Whether `list` is one whose items' markers the kit draws in a flow (`flows`): straight in it, in a
|
|
50
|
+
// flowchart's step standing in one, or held by an item of such a list.
|
|
51
|
+
function drawnList(list, flows) {
|
|
52
|
+
for (let at = list; kitList(at) || (at !== list && at?.matches(`ol.${FLOW}`));) {
|
|
53
|
+
const holder = at.parentElement;
|
|
54
|
+
if (holder?.localName !== "li") return Boolean(holder?.matches(flows));
|
|
55
|
+
at = holder.parentElement;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Whether the list item `item` keeps a line of its own ahead of the blocks it holds, its marker on it
|
|
62
|
+
* and they under it, as notion-lite's item keeps its title line however empty: the one rule the page
|
|
63
|
+
* editor (keepLine, editor core.mjs) and the kit (runtime/spacing.js) give an item that line by. It is an
|
|
64
|
+
* item of a list whose markers the kit draws (drawnList; `flows`: the selector of the elements blocks
|
|
65
|
+
* stand straight in, FLOW_BLOCKS of index.mjs), holding blocks (HELD_TAGS) and nothing but blocks and
|
|
66
|
+
* white space after the first, with no text of its own ahead of them (textless: no line break there
|
|
67
|
+
* either, which is that line). An item of a list with a class of its own, or of one in a whole block, a
|
|
68
|
+
* card or a table's cell, never does: its look is the document's, a widget's grid or flex item laid
|
|
69
|
+
* out by its children.
|
|
70
|
+
*/
|
|
71
|
+
export function keepsLine(item, flows) {
|
|
72
|
+
const nodes = [...item.childNodes];
|
|
73
|
+
const first = nodes.findIndex(isHeld);
|
|
74
|
+
return first >= 0 && nodes.slice(0, first).every(textless) && nodes.slice(first).every((node) => isHeld(node) || blank(node)) && drawnList(item.parentElement, flows);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Gives the list item `item` its line where it keeps one (keepsLine): a line break of the class ITEM_LINE ahead of the blocks it holds. Returns whether it did. */
|
|
78
|
+
export function giveLine(item, flows) {
|
|
79
|
+
if (!keepsLine(item, flows)) return false;
|
|
80
|
+
const line = item.ownerDocument.createElement("br");
|
|
81
|
+
line.className = ITEM_LINE;
|
|
82
|
+
[...item.childNodes].find(isHeld).before(line);
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/** The attribute an author lays a flowchart out with, on the list and on a step: row or column (none: the kit measures, or the list's). */
|
|
86
|
+
export const FLOW_DIRECTION = "data-direction";
|
|
87
|
+
/** A node's weight in its row (a share: the row's nodes laid out in proportion), in its style attribute. */
|
|
88
|
+
export const FLOW_RATIO = "--doc-flow-ratio";
|
|
89
|
+
/** What the kit names a flowchart by in the stylesheet it lays it out with (runtime/flowchart.js): never written by an author, taken off a copy. */
|
|
90
|
+
export const FLOW_KEY = "data-doc-flow-key";
|
|
91
|
+
/** Set by the kit for a moment as items move, so that the browser draws the steps' numbers again (runtime/flowchart.js recount): never left on the page. */
|
|
92
|
+
export const FLOW_RECOUNT = "data-doc-flow-recount";
|
|
93
|
+
/**
|
|
94
|
+
* What a screen reader calls a flowchart the author gave no name (aria-label) of its own: the kit's name
|
|
95
|
+
* for it, in the language the kit speaks on the page (src/render/kit/words.js "flowchart"); either one is
|
|
96
|
+
* the kit's, never the author's.
|
|
97
|
+
*/
|
|
98
|
+
export const FLOW_LABEL = { zh: "流程图", en: "Flowchart" };
|
|
99
|
+
/** Whether an aria-label is the name the kit gave a flowchart (in either language). */
|
|
100
|
+
export const isFlowLabel = (value) => Object.values(FLOW_LABEL).includes(value);
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* What a flowchart's rows go by (the kit lays them out by it, src/render/kit/runtime/flowchart.js;
|
|
104
|
+
* the page editor's gaps keep a node's card no narrower than the kit would, page/columns/): at most
|
|
105
|
+
* `most` nodes a row the kit fills (自动), each card `least` wide at least (px), `gap` between two in
|
|
106
|
+
* a row (px; styles/flowchart.css spells the same gap and the one between rows), a row of the kit's
|
|
107
|
+
* in a flowchart `narrow` wide at least (px), each node's title on `title` lines at most. Pure, so
|
|
108
|
+
* that a kit script reading only other names of this module leaves it out.
|
|
109
|
+
*/
|
|
110
|
+
export const FLOW_ROW = /* @__PURE__ */ Object.freeze({ most: 5, least: 116, narrow: 520, gap: 28, title: 2 });
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The shares of their row's width the nodes of a row take (adding up to 1), from their weights
|
|
114
|
+
* (--doc-flow-ratio: a positive number, or null for none): each its weight among the row's, a node
|
|
115
|
+
* with none weighing as the row's weighted ones do on the whole (equal where none has one); one
|
|
116
|
+
* alone in its row all of it. The kit lays a row out by it, and the page editor's gaps start from it.
|
|
117
|
+
*/
|
|
118
|
+
export function flowShares(weights) {
|
|
119
|
+
if (weights.length === 1) return [1];
|
|
120
|
+
const given = weights.filter((weight) => weight > 0);
|
|
121
|
+
const fill = given.length ? given.reduce((sum, weight) => sum + weight, 0) / given.length : 1;
|
|
122
|
+
const each = weights.map((weight) => (weight > 0 ? weight : fill));
|
|
123
|
+
const all = each.reduce((sum, weight) => sum + weight, 0);
|
|
124
|
+
return each.map((weight) => weight / all);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// The description's keys are written out (FLOW_DIRECTION, FLOW): a computed key would keep it in the
|
|
128
|
+
// kit's runtime, which imports the names above alone (esbuild drops an unused object of literal keys only).
|
|
129
|
+
export default {
|
|
130
|
+
id: "list",
|
|
131
|
+
category: "block",
|
|
132
|
+
match: "ul, ol",
|
|
133
|
+
classes: [TODO, FLOW],
|
|
134
|
+
attrs: {
|
|
135
|
+
start: "an ol's first number (from 1)",
|
|
136
|
+
"data-continue": "an ol that counts on from the numbered list before it in the same flow (its start the next number)",
|
|
137
|
+
"data-checked": "a checked item of a to-do list (ul.doc-todo)",
|
|
138
|
+
"data-direction": "a flowchart's layout (ol.doc-flow), on the list and on a step: row, the next step beside this one (on the list: every step in one row, wrapping only where a card would be narrower than 116px or than its longest word), or column, the row ending here (on the list: one step a row); none on the list, the kit fills rows with as many steps as read well and wraps the rest; none on a step, the list's",
|
|
139
|
+
},
|
|
140
|
+
runtime: {
|
|
141
|
+
// The stylesheet the kit lays a flowchart out with is keyed by it; the numbers drawn again (src/render/kit/runtime/flowchart.js).
|
|
142
|
+
attrs: { "ol.doc-flow": [FLOW_KEY, FLOW_RECOUNT] },
|
|
143
|
+
// The line of an item with no text of its own over the blocks it holds (src/render/kit/runtime/spacing.js).
|
|
144
|
+
generated: ["br.doc-item-line"],
|
|
145
|
+
},
|
|
146
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The elements whose text is never a formula: code samples, scripts, styles and the text of form
|
|
3
|
+
* fields. The kit's math.js has KaTeX leave them as they are, and delimiters in them (or in a comment)
|
|
4
|
+
* keep no KaTeX in a report (render/assets.mjs usedAssets; those in a script of JavaScript still do,
|
|
5
|
+
* as it may write formulas into the page).
|
|
6
|
+
*/
|
|
7
|
+
export const MATH_IGNORED_TAGS = Object.freeze(["script", "noscript", "style", "textarea", "pre", "code", "option"]);
|
|
8
|
+
|
|
9
|
+
// A macro that drops its arguments (KaTeX's macro context).
|
|
10
|
+
const gobble = (count) => (context) => {
|
|
11
|
+
context.consumeArgs(count);
|
|
12
|
+
return "";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Commands of LaTeX packages KaTeX lacks that AI answers use (notion-lite's set; Notion has none of
|
|
16
|
+
* them), as KaTeX macros: the indicator 1 (\mathbbm, \mathds), \mbox, \textsc, \label, \require and
|
|
17
|
+
* \vspace (ignored), physics' \abs \norm \dv \pdv \dd, operators \tr \Tr \diag \sgn \rank, \C \Q,
|
|
18
|
+
* \celsius, siunitx's \SI \si \num \unit (simple forms), \DeclareMathOperator. The kit's math.js
|
|
19
|
+
* draws a report's formulas with them, the editor and the import theirs (page/tex.mjs
|
|
20
|
+
* renderTex). Give KaTeX a copy: \gdef and \DeclareMathOperator write into it.
|
|
21
|
+
*/
|
|
22
|
+
export const MATH_MACROS = Object.freeze({
|
|
23
|
+
"\\mathbbm": "\\mathbb{#1}", "\\mathds": "\\mathbb{#1}", "\\mbox": "\\text{#1}", "\\textsc": "\\text{#1}",
|
|
24
|
+
"\\label": gobble(1), "\\require": gobble(1), "\\vspace": gobble(1),
|
|
25
|
+
"\\abs": "\\left\\lvert #1\\right\\rvert", "\\norm": "\\left\\lVert #1\\right\\rVert",
|
|
26
|
+
"\\dv": "\\frac{\\mathrm{d}#1}{\\mathrm{d}#2}", "\\pdv": "\\frac{\\partial #1}{\\partial #2}", "\\dd": "\\mathop{}\\!\\mathrm{d}",
|
|
27
|
+
"\\tr": "\\operatorname{tr}", "\\Tr": "\\operatorname{Tr}", "\\diag": "\\operatorname{diag}", "\\sgn": "\\operatorname{sgn}", "\\rank": "\\operatorname{rank}",
|
|
28
|
+
"\\C": "\\mathbb{C}", "\\Q": "\\mathbb{Q}", "\\celsius": "{}^{\\circ}\\mathrm{C}",
|
|
29
|
+
"\\SI": "#1\\,\\mathrm{#2}", "\\si": "\\mathrm{#1}", "\\num": "#1", "\\unit": "\\mathrm{#1}",
|
|
30
|
+
"\\DeclareMathOperator": "\\gdef#1{\\operatorname{#2}}",
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Formulas: TeX between \( \) or \[ \] (and $$), rendered by KaTeX through math.js; a formula
|
|
34
|
+
// block of its own is .doc-math-block: a basic block.
|
|
35
|
+
export default {
|
|
36
|
+
id: "math",
|
|
37
|
+
category: "block",
|
|
38
|
+
match: ".doc-math-inline, .doc-math-block",
|
|
39
|
+
assets: ["katex-styles", "katex", "katex-auto-render", "math"],
|
|
40
|
+
uses: [/\\\(|\\\[|\$\$|data-doc-math/],
|
|
41
|
+
attrs: {
|
|
42
|
+
"data-doc-math": "formulas in this element are rendered too",
|
|
43
|
+
"data-doc-math-dollar": "a single $ delimits formulas in this element",
|
|
44
|
+
},
|
|
45
|
+
classes: ["doc-math-inline", "doc-math-block"],
|
|
46
|
+
// A formula and the closing punctuation right after it, held on one line, the places its drawing
|
|
47
|
+
// may wrap at in between and the word joiner before the marks (runtime/spacing.js).
|
|
48
|
+
runtime: { generated: [".doc-math-break", ".doc-math-joiner"], classes: { ".doc-math-tie": ["doc-math-tie"], ".doc-math-skip": ["doc-math-skip"] } },
|
|
49
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// A whole in a block's text, a link shown with its icon and title: inline, one element whose address
|
|
2
|
+
// says what it is. <a class="doc-link-mention" href="…"> holds its icon first, then its title, text only.
|
|
3
|
+
//
|
|
4
|
+
// to a web page (图标视图, as Notion's link mention) href="https://…", its icon an
|
|
5
|
+
// <img class="doc-link-mention-icon" src="assets/<file>" alt=""> (the page's icon, kept in the
|
|
6
|
+
// report's folder: render/images.mjs shows it in the preview and embeds it in an export) or an
|
|
7
|
+
// empty <span class="doc-link-mention-icon"></span> (the kit draws a globe)
|
|
8
|
+
// to a document of the workspace (页面块) href="../<slug>/doc.html", with #<block id> for a block,
|
|
9
|
+
// or #<block id> within a page (the one form a file writes: shared/page-address.mjs), its icon an
|
|
10
|
+
// empty span, the title as it was when the block was made: what is shown is the document's title
|
|
11
|
+
// and icon now (render/page-chips.mjs), and the kit draws a page for one with no icon
|
|
12
|
+
//
|
|
13
|
+
// The page editor makes one from a link and keeps it whole, as a formula (page/links/). One left empty
|
|
14
|
+
// is <a class="doc-link-mention"></a> (the editor's "/" menu's 链接 given no address) or, of a page
|
|
15
|
+
// block, <a class="doc-link-mention" data-doc-page></a>: no reader sees it (mention.css), the editor
|
|
16
|
+
// shows it as a gray 链接 or 页面 to be filled.
|
|
17
|
+
|
|
18
|
+
export const MENTION = "doc-link-mention";
|
|
19
|
+
export const MENTION_ICON = "doc-link-mention-icon";
|
|
20
|
+
/** What marks a page block left empty, which has no address to say so. */
|
|
21
|
+
export const MENTION_PAGE = "data-doc-page";
|
|
22
|
+
|
|
23
|
+
// Inline, as the format bar's marks (text.mjs): no block, no match of its own.
|
|
24
|
+
export default {
|
|
25
|
+
id: "mention",
|
|
26
|
+
attrs: {
|
|
27
|
+
[MENTION_PAGE]: "a page block left empty, which has no address to say it is one",
|
|
28
|
+
},
|
|
29
|
+
classes: [MENTION, MENTION_ICON],
|
|
30
|
+
runtime: {
|
|
31
|
+
attrs: { "a.doc-link-mention": ["data-doc-gone"] }, // a page block whose document is not there (render/page-chips.mjs)
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// The page: the report's main, its header (the page's icon above the title is a component of its
|
|
2
|
+
// own: icon.mjs), the asset tags, and the display settings the kit puts at the top right (ui.js: theme,
|
|
3
|
+
// width, an export of the current view).
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The language a report's file is written in, by its <html lang>: "en" for en or en-…, else "zh", the
|
|
7
|
+
* rule the kit's own words follow in a file of its own (src/render/kit/words.js kitLanguage). The
|
|
8
|
+
* kit's markup the editor writes into a file (a detail card's close button, a Sheet area's name: their
|
|
9
|
+
* aria-label) is said in it.
|
|
10
|
+
*/
|
|
11
|
+
export function pageLanguage(html) {
|
|
12
|
+
const tag = /<html\b[^>]*>/i.exec(String(html ?? ""))?.[0] ?? "";
|
|
13
|
+
return /\slang\s*=\s*["']?en(?:-[^"'\s>]*)?(?=["'\s>]|$)/i.test(tag) ? "en" : "zh";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
id: "page",
|
|
18
|
+
match: "main.doc-page",
|
|
19
|
+
flow: ".doc-page",
|
|
20
|
+
groups: false,
|
|
21
|
+
header: "header.doc-header", // the title and the lines under it
|
|
22
|
+
title: ".doc-title", // the document's title, the h1 of the header: its text, mirrored in <title> and report.json
|
|
23
|
+
attrs: {
|
|
24
|
+
"data-doc-id": "the document's slug: its reading state is kept under it",
|
|
25
|
+
"data-doc-kit": "a kit asset's tag (the render puts in those a report needs; an older source writes them)",
|
|
26
|
+
"data-doc-vendor": "a vendor library's tag",
|
|
27
|
+
"data-doc-placeholder": "the starter's content, which the checks want replaced",
|
|
28
|
+
"data-doc-transient-view": "its hidden or open shows transient reading state, reset in an export of the view",
|
|
29
|
+
},
|
|
30
|
+
classes: ["doc-page", "doc-header", "doc-kicker", "doc-title", "doc-button"],
|
|
31
|
+
runtime: {
|
|
32
|
+
generated: [".doc-display", "script[data-doc-state]"],
|
|
33
|
+
root: { attrs: ["data-doc-ready", "data-doc-drawn", "data-doc-controls"] },
|
|
34
|
+
state: { html: ["data-doc-theme", "data-doc-width"] },
|
|
35
|
+
internal: ["doc-display*", "data-doc-export-copy", "data-theme", "doc-export-id", "doc-reveal", "doc-kit-error"],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// A paragraph (文本), or small text (小字, p.doc-note): a basic block. Small text may end in a part at
|
|
2
|
+
// the line's right end (span.doc-tab: the page editor's Tab).
|
|
3
|
+
export default {
|
|
4
|
+
id: "paragraph",
|
|
5
|
+
category: "block",
|
|
6
|
+
match: "p",
|
|
7
|
+
tail: ".doc-tab", // small text's end part, a span at the line's right end
|
|
8
|
+
classes: ["doc-note", "doc-tab"],
|
|
9
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// A Sheet area (选项卡区块, Notion's tabs): a row of tabs and one panel per tab, paired by key; each
|
|
2
|
+
// panel a flow like the page; framed, or plain (doc-sheet-shell--plain: no frame, nothing in
|
|
3
|
+
// from the flow's edge). sheets.js switches them.
|
|
4
|
+
|
|
5
|
+
import { attr, elementsOf } from "../html-tree.mjs";
|
|
6
|
+
|
|
7
|
+
/** What a Sheet area and its row of tabs are called (aria-label) as the editor writes one in a file, in the file's language (page.mjs pageLanguage). */
|
|
8
|
+
export const SHEETS_LABEL = { zh: "选项卡", en: "Tabs" };
|
|
9
|
+
|
|
10
|
+
// The headings that name a tab written the short way.
|
|
11
|
+
const TAB_HEADINGS = new Set(["h2", "h3", "h4"]);
|
|
12
|
+
const closed = (node) => Boolean(node.sourceCodeLocation?.startTag && node.sourceCodeLocation.endTag);
|
|
13
|
+
const line = (node) => (node.sourceCodeLocation?.startLine ? ` (line ${node.sourceCodeLocation.startLine})` : "");
|
|
14
|
+
const words = (node) => (node.nodeName === "#text" ? /\S/.test(node.value) : (node.childNodes ?? []).some(words));
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A Sheet area written the short way (parse5's tree, with its places in the file), which the intake
|
|
18
|
+
* makes the kit's (src/editor/source/natural.mjs): an element of data-doc-sheets (its name, or none)
|
|
19
|
+
* holding nothing but <section>s (blanks and comments between them), one a tab, each of no attribute
|
|
20
|
+
* and closed in the file, starting with its heading (h2–h4, with words; no element or words before
|
|
21
|
+
* it), the tab's name, the rest its panel. { tabs: [{ section, heading }] }; { why } for an area in
|
|
22
|
+
* neither form (no row of tabs, no panel), what keeps it from being one; null for an area of the
|
|
23
|
+
* kit's (a row of tabs, or a panel).
|
|
24
|
+
*/
|
|
25
|
+
export function shortSheets(node) {
|
|
26
|
+
const children = elementsOf(node);
|
|
27
|
+
if (children.some((child) => attr(child, "data-doc-sheet") !== undefined || (attr(child, "class") ?? "").split(/\s+/).includes("doc-sheet-tabs"))) return null;
|
|
28
|
+
const loose = (node.childNodes ?? []).find((child) => child.nodeName === "#text" && /\S/.test(child.value));
|
|
29
|
+
if (loose) return { why: "words straight in it" };
|
|
30
|
+
const other = children.find((child) => child.tagName !== "section");
|
|
31
|
+
if (other) return { why: `a <${other.tagName}>${line(other)} beside its sections` };
|
|
32
|
+
if (!children.length) return { why: "no <section> in it" };
|
|
33
|
+
const tabs = [];
|
|
34
|
+
for (const section of children) {
|
|
35
|
+
if (!closed(section)) return { why: `its <section>${line(section)} is not closed in the file` };
|
|
36
|
+
if (section.attrs.length) return { why: `its <section>${line(section)} has an attribute of its own (${section.attrs.map((entry) => entry.name).join(", ")})` };
|
|
37
|
+
const heading = elementsOf(section).find((child) => TAB_HEADINGS.has(child.tagName));
|
|
38
|
+
if (!heading) return { why: `its <section>${line(section)} has no heading (<h2>–<h4>)` };
|
|
39
|
+
// Its heading first: what stood before it would be the panel's while the heading names the tab.
|
|
40
|
+
const before = section.childNodes.slice(0, section.childNodes.indexOf(heading));
|
|
41
|
+
if (before.some((child) => child.tagName || words(child))) return { why: `its <section>${line(section)} does not start with its heading` };
|
|
42
|
+
if (!closed(heading) || !words(heading)) return { why: `the heading of its <section>${line(section)} ${closed(heading) ? "has no words" : "is not closed in the file"}` };
|
|
43
|
+
tabs.push({ section, heading });
|
|
44
|
+
}
|
|
45
|
+
return { tabs };
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default {
|
|
49
|
+
id: "sheets",
|
|
50
|
+
category: "container",
|
|
51
|
+
match: "[data-doc-sheets]",
|
|
52
|
+
assets: ["sheets"],
|
|
53
|
+
uses: [/data-doc-sheets/],
|
|
54
|
+
parts: {
|
|
55
|
+
row: { at: ":scope > .doc-sheet-tabs", edit: "none", max: 1 },
|
|
56
|
+
tabs: { at: ":scope > .doc-sheet-tabs > .doc-sheet-tab", edit: "text" },
|
|
57
|
+
panels: { at: ":scope > [data-doc-sheet]", edit: "flow", groups: false },
|
|
58
|
+
},
|
|
59
|
+
pairs: [{ a: "tabs", attrA: "data-sheet-tab", b: "panels", attrB: "data-doc-sheet" }],
|
|
60
|
+
attrs: {
|
|
61
|
+
"data-doc-sheets": "a Sheet area",
|
|
62
|
+
"data-sheet-tab": "a tab's key",
|
|
63
|
+
"data-doc-sheet": "a panel's key, its tab's",
|
|
64
|
+
"data-tab-icon": "a tab's emoji, shown before its name",
|
|
65
|
+
},
|
|
66
|
+
classes: ["doc-sheet-shell", "doc-sheet-shell--plain", "doc-sheet-tabs", "doc-sheet-tab"],
|
|
67
|
+
fills: {
|
|
68
|
+
".doc-sheet-tabs": ["role"],
|
|
69
|
+
"[data-sheet-tab]": ["id", "role", "aria-controls"],
|
|
70
|
+
"[data-doc-sheet]": ["id", "role", "aria-labelledby"],
|
|
71
|
+
},
|
|
72
|
+
runtime: {
|
|
73
|
+
state: {
|
|
74
|
+
"[data-doc-sheets]": ["data-active-sheet"],
|
|
75
|
+
"[data-sheet-tab]": ["aria-selected", "tabindex", "is-active"],
|
|
76
|
+
"[data-doc-sheet]": ["hidden", "aria-hidden"],
|
|
77
|
+
},
|
|
78
|
+
internal: ["doc-sheets"], // ids it gives: doc-sheets-<n>-tab-<i>
|
|
79
|
+
},
|
|
80
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Reading state a report declares (runtime/bindings.js): a control, a table or a details bound to
|
|
2
|
+
// a key (data-doc-bind), elements shown for a key's value (data-doc-show),
|
|
3
|
+
// keys forgotten when the page is left (data-doc-transient); and the kit's styles of such
|
|
4
|
+
// controls (styles/state.css). A filter (.doc-filter) is one block: its row of buttons and what
|
|
5
|
+
// they filter below it (a list, say), together.
|
|
6
|
+
export default {
|
|
7
|
+
id: "state",
|
|
8
|
+
match: "[data-doc-bind], [data-doc-show]",
|
|
9
|
+
attrs: {
|
|
10
|
+
"data-doc-bind": "the key an element writes and shows",
|
|
11
|
+
"data-doc-show": "key:value, shown while the key holds this value or nothing",
|
|
12
|
+
"data-doc-transient": "its key is forgotten when the page is left",
|
|
13
|
+
},
|
|
14
|
+
classes: ["doc-state-fields", "doc-state-field", "doc-state-actions", "doc-filter", "doc-filter-row", "doc-filter-button", "doc-state-list"],
|
|
15
|
+
wholes: ["doc-filter", "doc-filter-row", "doc-state-fields", "doc-state-list"], // the classes above that are a whole block of their own (the others are parts inside one)
|
|
16
|
+
runtime: {
|
|
17
|
+
attrs: { "[data-doc-show]": ["hidden"] },
|
|
18
|
+
state: { "button[data-doc-bind]": ["aria-pressed"] },
|
|
19
|
+
},
|
|
20
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** A cell's alignments (styles/table.css): its words to the left, the middle, the right. */
|
|
2
|
+
export const CELL_ALIGN_CLASSES = ["doc-align-left", "doc-align-center", "doc-align-right"];
|
|
3
|
+
/** A cell's vertical alignments (styles/table.css): its words at its top (the kit's own), middle, bottom. */
|
|
4
|
+
export const CELL_VALIGN_CLASSES = ["doc-valign-top", "doc-valign-middle", "doc-valign-bottom"];
|
|
5
|
+
/** A cell's words bold (styles/table.css). */
|
|
6
|
+
export const CELL_BOLD_CLASS = "doc-bold";
|
|
7
|
+
|
|
8
|
+
// A table, a container of cells: sortable by its headers unless static, its columns sized by
|
|
9
|
+
// tables/ (auto widths, a colgroup it adds), sticky header and first column, scrollbars of its own
|
|
10
|
+
// in a wrapper.
|
|
11
|
+
export default {
|
|
12
|
+
id: "table",
|
|
13
|
+
category: "container",
|
|
14
|
+
match: "table.doc-table",
|
|
15
|
+
frame: ".doc-table-wrap", // what the table scrolls in, a block with it
|
|
16
|
+
lead: ".doc-table-meta", // its scope line right above its frame, which goes where the table goes
|
|
17
|
+
assets: ["tables"],
|
|
18
|
+
uses: [/<table[\s>]/i, /doc-table/],
|
|
19
|
+
attrs: {
|
|
20
|
+
"data-doc-table-static": "its row order means something: readers cannot sort it",
|
|
21
|
+
"data-sortable-table": "a table not of the kit's class, sortable",
|
|
22
|
+
"data-sort-status": "shows the current sort",
|
|
23
|
+
"data-sort-type": "text, number or date",
|
|
24
|
+
"data-sort-key": "a column's name",
|
|
25
|
+
"data-sort-default": "asc or desc",
|
|
26
|
+
"data-sort-ignore": "a column that does not sort",
|
|
27
|
+
"data-sort-value": "a formatted cell's value to sort by",
|
|
28
|
+
"data-sort-rank": "a cell numbered again after a sort",
|
|
29
|
+
"data-column-key": "a column's name for its width",
|
|
30
|
+
"data-number-columns": "off: no column read as numbers (none centered, none sortable by number), on the table or its frame",
|
|
31
|
+
"data-doc-chart-source": "on its frame: the key a chart drawn from it reads it by (data-doc-chart-data on the chart's host)",
|
|
32
|
+
},
|
|
33
|
+
// A cell may also be given a text color or a fill (doc-text-*, doc-highlight-*: text.mjs), an alignment, a vertical one and bold
|
|
34
|
+
// (doc-bold); a header cell's look is doc-bold doc-highlight-gray, as the page editor gives it.
|
|
35
|
+
classes: ["doc-table", "doc-table-wrap", "doc-table-meta", "doc-table--sticky-first", ...CELL_ALIGN_CLASSES, ...CELL_VALIGN_CLASSES, CELL_BOLD_CLASS],
|
|
36
|
+
fills: { "th": ["data-sort-type"] },
|
|
37
|
+
runtime: {
|
|
38
|
+
generated: ["colgroup[data-doc-columns]", ".doc-scrollbars"],
|
|
39
|
+
attrs: {
|
|
40
|
+
"table.doc-table": ["data-doc-sortable-ready", "data-doc-filled"],
|
|
41
|
+
".doc-table-wrap": ["data-doc-min-width", "data-doc-layout", "data-doc-whole"], // data-doc-layout: the columns or rows it hides (tables/scrollbars.js); data-doc-whole: shown whole (tables/whole.js)
|
|
42
|
+
"th, td": ["data-column-kind", "data-column-wrap", "data-run-wrap", "data-doc-edge"], // data-run-wrap: a run of its code, or a number range, wider than its column (tables/layout.js); data-doc-edge: on the frame's right or bottom edge, in a table with a cell spanning rows (tables/edges.js)
|
|
43
|
+
},
|
|
44
|
+
classes: {
|
|
45
|
+
"table.doc-table": ["doc-table--auto"],
|
|
46
|
+
},
|
|
47
|
+
internal: ["doc-code-run", "doc-table-sort-button", "doc-scrollbar*", "data-doc-sort-arrow", "data-active", "data-drag", "data-x", "data-y", "data-more"],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Inline marks of the format bar in body text: colors, highlights, underlines (the kit's
|
|
2
|
+
// styles/base.css). Inline, no block.
|
|
3
|
+
const COLORS = ["gray", "brown", "orange", "yellow", "green", "blue", "purple", "pink", "red"];
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
id: "text",
|
|
7
|
+
classes: [
|
|
8
|
+
...COLORS.map((color) => `doc-text-${color}`),
|
|
9
|
+
...COLORS.map((color) => `doc-highlight-${color}`),
|
|
10
|
+
...["orange", "blue", "purple", "plain", "thin", "thick"].map((kind) => `doc-underline-${kind}`),
|
|
11
|
+
],
|
|
12
|
+
// A number range in the text (3–13, 1–3B), held on one line (runtime/spacing.js).
|
|
13
|
+
runtime: { classes: { ".doc-range": ["doc-range"] } },
|
|
14
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// A whole block (整体块): an element of the report's own (a class of its own, no kit component), or
|
|
2
|
+
// one the kit draws whole (a diff: diff.mjs): it moves and goes as a whole. Its inside is free: the
|
|
3
|
+
// report's markup, styles and script, or the kit's; its words are edited in place, words only (its
|
|
4
|
+
// paragraphs, headings and items never split, joined or taken out on their own: src/editor/source/
|
|
5
|
+
// blocks.mjs), an inline element of the report's own in them kept whole (src/editor/page/own.mjs).
|
|
6
|
+
export default {
|
|
7
|
+
id: "widget",
|
|
8
|
+
category: "whole",
|
|
9
|
+
pending: "the text of a document's own element is still edited in place; a whole block is to be moved alone",
|
|
10
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// The ids an element names, and a copy's own (docs/editor.md, "Copying blocks"): an SVG's marker,
|
|
2
|
+
// gradient, clip path, mask, pattern or filter named by url(#id) in an attribute (its style too:
|
|
3
|
+
// style="fill: url(#g)"), anything named by #id in an attribute's words (href="#id", xlink:href as
|
|
4
|
+
// older SVG writes it) and by an attribute that holds ids (a label's `for`, ARIA's: ID_ATTRIBUTES).
|
|
5
|
+
// A copy of a card, an instance of a component package or a row of columns holding one keeps those
|
|
6
|
+
// of its ids that it names itself, each given a prefix no id of the page starts with, every reference
|
|
7
|
+
// in it written to match, so that its arrows and gradients still draw and its label is its own
|
|
8
|
+
// field's (an id names one element: the original's would be read); its other ids are taken out, as
|
|
9
|
+
// ever. The page (page/clipboard/own/ids.mjs) and the server (source/text.mjs copiedSource) each give
|
|
10
|
+
// the copy a prefix from what they hold; and a unit's own references keep no unit from being deleted,
|
|
11
|
+
// while another block's do (source/units.mjs keepReferenced reads the same names: `idsNamed`).
|
|
12
|
+
|
|
13
|
+
const URL_REF = /url\(\s*(['"]?)#([^)'"\s]+)\1\s*\)/g;
|
|
14
|
+
|
|
15
|
+
// The attributes that hold ids, besides values like href="#id".
|
|
16
|
+
const ID_ATTRIBUTES = new Set([
|
|
17
|
+
"aria-labelledby", "aria-describedby", "aria-controls", "aria-owns", "aria-details", "aria-flowto",
|
|
18
|
+
"aria-activedescendant", "aria-errormessage", "for", "headers", "list", "form", "popovertarget", "commandfor", "anchor", "itemref",
|
|
19
|
+
]);
|
|
20
|
+
|
|
21
|
+
// The id a word of an attribute's value names, or null: #id anywhere, the word itself where the attribute holds ids.
|
|
22
|
+
const wordId = (name, word) => (word.startsWith("#") ? word.slice(1) || null : ID_ATTRIBUTES.has(name) ? word : null);
|
|
23
|
+
|
|
24
|
+
// Whether an attribute's words can name anything: an id and a class are names, a style holds url(#id) alone.
|
|
25
|
+
const hasWords = (name) => name !== "id" && name !== "class" && name !== "style";
|
|
26
|
+
|
|
27
|
+
/** The ids `value` (an attribute's) names by url(#id). */
|
|
28
|
+
export const urlIds = (value) => [...String(value).matchAll(URL_REF)].map((match) => match[2]);
|
|
29
|
+
|
|
30
|
+
/** The ids the attribute `name` names with `value`: by url(#id), by #id, and by the id itself in an attribute that holds ids. */
|
|
31
|
+
export function idsNamed(name, value) {
|
|
32
|
+
if (name === "id" || name === "class") return [];
|
|
33
|
+
const words = hasWords(name) ? String(value).split(/\s+/).map((word) => wordId(name, word)).filter(Boolean) : [];
|
|
34
|
+
return [...urlIds(value), ...words];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** The ids `attributes` ([{ name, value }]: an element's, every element's of a copy) name (`idsNamed`). */
|
|
38
|
+
export function referencedIds(attributes) {
|
|
39
|
+
return new Set(attributes.flatMap(({ name, value }) => idsNamed(name, value)));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** A prefix for a copy's ids: c1-, c2- …, the first no id of `ids` (the page's or the file's, and those given already) starts with. */
|
|
43
|
+
export function freshPrefix(ids) {
|
|
44
|
+
const all = [...ids];
|
|
45
|
+
for (let n = 1; ; n++) {
|
|
46
|
+
const prefix = `c${n}-`;
|
|
47
|
+
if (!all.some((id) => id.startsWith(prefix))) return prefix;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* `value`, the attribute `name`'s, with the ids `renamed` (a Map: old → new) names written new
|
|
53
|
+
* (`idsNamed`); null when it names none of them (the attribute as it is).
|
|
54
|
+
*/
|
|
55
|
+
export function rewrite(name, value, renamed) {
|
|
56
|
+
if (name === "id" || name === "class") return null;
|
|
57
|
+
let changed = false;
|
|
58
|
+
let next = String(value).replace(URL_REF, (whole, quote, id) => {
|
|
59
|
+
if (!renamed.has(id)) return whole;
|
|
60
|
+
changed = true;
|
|
61
|
+
return `url(${quote}#${renamed.get(id)}${quote})`;
|
|
62
|
+
});
|
|
63
|
+
if (hasWords(name)) {
|
|
64
|
+
next = next.replace(/\S+/g, (word) => {
|
|
65
|
+
const id = wordId(name, word);
|
|
66
|
+
if (!renamed.has(id)) return word;
|
|
67
|
+
changed = true;
|
|
68
|
+
return word.startsWith("#") ? `#${renamed.get(id)}` : renamed.get(id);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return changed ? next : null;
|
|
72
|
+
}
|