@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,2 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a,b}from"./chunk-7QQBR7PB.mjs";import"./chunk-LHTFLRB6.mjs";import"./chunk-ZBIM6ARY.mjs";import"./chunk-NSKUTQ5J.mjs";import"./chunk-5L7RYZCL.mjs";export{a as copiedLines,b as run};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a as b}from"./chunk-LAE5NQ4B.mjs";import{c as j,d as x,k as w}from"./chunk-NSKUTQ5J.mjs";import"./chunk-5L7RYZCL.mjs";import l from"node:fs";import a from"node:path";import{pathToFileURL as E}from"node:url";import{projectRoot as f}from"../browser/shared/paths.mjs";import{sha256 as L}from"../browser/shared/files.mjs";var g=["SKILL.md","references/writing-html.md","references/building-components.md","references/example-report.html","sdk","agents/openai.yaml"],u="## Before anything: the gallery command";function F(n){let[s,t]=n.split(/[.+-]/).map(Number);return{range:`^${n}`,takes:`${n} or a later ${s===0?`0.${t}`:s}.x`}}function K(n,s){let t=n.indexOf(`
|
|
3
|
+
${u}
|
|
4
|
+
`);if(t<0)throw new Error(`SKILL.md has no section "${u}" (the version range of the command stands there)`);let e=n.indexOf(`
|
|
5
|
+
## `,t+u.length+1),r=e<0?n.length:e,{range:i,takes:o}=F(s),c=n.slice(t,r).replace(/\^\d+\.\d+\.\d+(?:-[\w.]+)?/g,i).replace(/\b\d+\.\d+\.\d+(?:-[\w.]+)? or a later \d+(?:\.\d+)?\.x\b/g,o);return n.slice(0,t)+c+n.slice(r)}function y(n=f){let s=g.filter(i=>!l.existsSync(a.join(n,i)));if(s.length)return s.map(i=>`the skill takes ${i}, which is not there`);let t=A(g,n),e=i=>l.readFileSync(a.join(n,i),"utf8"),r=P(t,e).map(i=>`${i}, which the skill does not hold: link only what it holds`);for(let i of t.filter(o=>o.startsWith("sdk/")&&o.endsWith(".ts")))for(let[,o]of e(i).matchAll(/\bfrom\s+["']([^"']+)["']|\bimport\(\s*["']([^"']+)["']\s*\)/g))o&&(!o.startsWith("./")||o.includes("/../"))&&r.push(`${i} imports ${o}, outside sdk/: write the types it needs in sdk/`);return r}function O(n,{root:s=f,version:t=JSON.parse(l.readFileSync(a.join(s,"package.json"),"utf8")).version}={}){let e=y(s);if(e.length)throw new Error(`The skill cannot be made:
|
|
6
|
+
${e.map(r=>` ${r}`).join(`
|
|
7
|
+
`)}`);l.rmSync(n,{recursive:!0,force:!0});for(let r of A(g,s)){let i=a.join(n,r);l.mkdirSync(a.dirname(i),{recursive:!0}),r==="SKILL.md"?l.writeFileSync(i,K(l.readFileSync(a.join(s,r),"utf8"),t)):l.copyFileSync(a.join(s,r),i)}return S(n)}function S(n,s=""){let t=[];for(let e of l.readdirSync(n,{withFileTypes:!0}).sort((r,i)=>r.name.localeCompare(i.name))){let r=s?`${s}/${e.name}`:e.name;e.isDirectory()?t.push(...S(a.join(n,e.name),r)):e.isFile()&&t.push(r)}return t}function A(n,s=f){return n.flatMap(t=>{let e=a.join(s,t);return l.existsSync(e)?l.statSync(e).isDirectory()?S(e,t):[t]:[]})}function N(n){let s=null;return n.split(`
|
|
8
|
+
`).map(t=>{let e=/^\s*(`{3,}|~{3,})(.*)$/.exec(t);return s?(e&&e[1][0]===s[0]&&e[1].length>=s.length&&!e[2].trim()&&(s=null),""):e&&!(e[1][0]==="`"&&e[2].includes("`"))?(s=e[1],""):t}).join(`
|
|
9
|
+
`)}function v(n){let s=N(n).replace(/(`+)(?!`)(?:(?!\n[ \t]*\n)[\s\S])*?[^`]\1(?!`)/g,e=>" ".repeat(e.length));return[...[...s.matchAll(/\]\(\s*(?:<([^<>\n]*)>|((?:[^\s()<>]|\([^\s()<>]*\))+))(?:\s+(?:"[^"\n]*"|'[^'\n]*'|\([^()\n]*\)))?\s*\)/g)].map(e=>[e.index,e[1]??e[2]]),...[...s.matchAll(/^ {0,3}\[(?!\^)[^\]\n]+\]:[ \t]*(?:<([^<>\n]*)>|(\S+))/gm)].map(e=>[e.index,e[1]??e[2]]),...[...s.matchAll(/<(?:a|img)\s[^>]*?\b(?:href|src)\s*=\s*(?:"([^"]*)"|'([^']*)')/gi)].map(e=>[e.index,e[1]??e[2]])].sort(([e],[r])=>e-r).map(([,e])=>e)}function z(n,s){if(/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i.test(s))return null;let[,t,e=""]=/^([^?#]*)(?:\?[^#]*)?(?:#(.*))?$/s.exec(s),r=o=>{try{return decodeURIComponent(o)}catch{return o}};return{file:t?a.posix.normalize(a.posix.join(a.posix.dirname(n),r(t))).replace(/\/$/,""):n,anchor:r(e)}}function P(n,s){let t=new Set(n),e=new Set(n.flatMap(i=>i.split("/").slice(0,-1).map((o,c,p)=>p.slice(0,c+1).join("/")))),r=[];for(let i of n.filter(o=>/\.md$/i.test(o)))for(let o of v(s(i))){let c=z(i,o);!c||c.file===i||!t.has(c.file)&&!e.has(c.file)&&r.push(`${i} links ${o}`)}return r}function C(n,{root:s=f,version:t=JSON.parse(l.readFileSync(a.join(s,"package.json"),"utf8")).version}={}){let e=y(s);if(e.length)throw new Error(`The skill cannot be made:
|
|
10
|
+
${e.map(m=>` ${m}`).join(`
|
|
11
|
+
`)}`);let r=a.join(n,"skill","gallery"),i=`gallery-skill-${t}.zip`,o=a.join(n,i);l.rmSync(a.join(n,"skill"),{recursive:!0,force:!0}),l.existsSync(a.join(n,"gallery","PACKAGE-MANIFEST.json"))&&l.rmSync(a.join(n,"gallery"),{recursive:!0,force:!0});for(let m of l.existsSync(n)?l.readdirSync(n):[])/^gallery-skill-.+\.zip(?:\.sha256)?$|^PACKAGE-MANIFEST\.json$/.test(m)&&l.rmSync(a.join(n,m),{force:!0});let c=O(r,{root:s,version:t}),p=c.map(m=>({name:`gallery/${m}`,data:l.readFileSync(a.join(r,m))})),d=b(p);l.writeFileSync(o,d);let k=L(d);l.writeFileSync(`${o}.sha256`,`${k} ${i}
|
|
12
|
+
`);let{range:$}=F(t),T={name:"gallery",version:t,archive:i,holds:"The Agent's documents (SKILL.md, references/writing-html.md, references/building-components.md, the example references/example-report.html), the SDK's types (sdk/) and Codex's display metadata (agents/openai.yaml). The tools are the npm package @heycys/gallery, which SKILL.md has the Agent check for and install (with the user's consent); gallery skill install writes this same skill.",skillEntrypoint:"SKILL.md",requires:`@heycys/gallery@${$}`,files:p.map(({name:m,data:h})=>({path:m.slice(8),bytes:h.byteLength,sha256:L(h)}))};l.writeFileSync(a.join(n,"PACKAGE-MANIFEST.json"),`${JSON.stringify(T,null,2)}
|
|
13
|
+
`);let I=p.reduce((m,{data:h})=>m+h.byteLength,0);return{archive:o,skill:r,files:c,bytes:I,zipBytes:d.byteLength,sha256:k,range:$}}if(import.meta.url===E(process.argv[1]).href){let{positional:n}=await w(import.meta.url);n.length>0&&(console.error(x(j(import.meta.url),`Unknown argument: ${n[0]} (skill:package takes none: there is one skill).`)),process.exit(2));let s=y();s.length>0&&(console.error(`Not packaged:
|
|
14
|
+
${s.map(e=>` ${e}`).join(`
|
|
15
|
+
`)}`),process.exit(1));let t=C(a.join(f,"release"));console.log(`Packaged ${t.archive} (${t.files.length} files, ${t.bytes.toLocaleString("en-US")} bytes; the ZIP ${t.zipBytes.toLocaleString("en-US")} bytes), for @heycys/gallery ${t.range}`),console.log(`The skill's folder: ${t.skill}`),console.log(`SHA-256 ${t.sha256}`)}export{u as BOOTSTRAP,g as SKILL_FILES,O as buildSkill,P as deadLinks,A as filesOf,z as linkTarget,v as linksOf,S as listFiles,C as packageSkill,y as skillProblems,F as skillRange,K as withRange,N as withoutSamples};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a as i,b as k}from"./chunk-TX6JH7TR.mjs";import{a as g,b as y,c as x,i as $}from"./chunk-YXAUQPVK.mjs";import{b as f,f as w,g as u}from"./chunk-NSKUTQ5J.mjs";import{b as d}from"./chunk-YZ5Z6H4W.mjs";import{existsSync as j}from"node:fs";import n from"node:path";import{reportsDirectory as c}from"../browser/shared/paths.mjs";import{keptName as D,layoutOf as E,listTrash as L}from"../browser/shared/workspace.mjs";var T="\u65B0\u6587\u6863";async function S(o,t=c){return D(o)?`"${o}" is a name the workspace keeps for itself: choose another slug.`:j(n.join(E(t).pages,o))?`"${o}" is the \u5199\u4F5C\u504F\u597D page's slug: choose another slug.`:j(n.join(t,o))?`Document already exists: ${i(n.join(t,o))}`:(await L(t)).some(s=>s.slug===o)?`"${o}" is a document's in the trash: choose another slug.`:null}async function C(o){let{positional:t,options:s}=w({options:["--no-preview","--no-browser"],argv:o}),[e,l,h=T]=t;if(t.length<2||t.length>3||!e||!l?.trim()||!h.trim())throw new f("Name the slug and the title (then a description, if you choose one), each quoted when it has spaces.");u(e);let p=await S(e);p&&(console.error(p),process.exit(1));try{await d(e,l,h)}catch(r){if(r.code!=="EEXIST")throw r;console.error(await S(e)??`Document already exists: ${i(n.join(c,e))}`),process.exit(1)}console.log(`Created ${i(n.join(c,e,"doc.html"))} and doc.json`);for(let r of await k())console.log(r);let a=await $(e,{skipped:x(s),command:`gallery new ${e}`});console.log(g(a,"replace the starter section with the document's skeleton (each section's heading) as soon as you can outline it, then write it a section at a time, as ordinary HTML, so that the user watches it grow (gallery check fails while the starter section remains).")),console.log(`Hand in: gallery export ${e}, then gallery qa ${e}`);let m=await y(a,s);m&&console.log(m);for(let r of a)console.log(r)}export{T as a,S as b,C as c};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as O}from"./chunk-ITNLYXXV.mjs";import{a as M}from"./chunk-NFIBI4IP.mjs";var b=3e4,j=12e4,k=1500,S=1e4,W=h=>h.reduce((a,{key:c,tag:r})=>a.set(`${c}
|
|
3
|
+
${r}`,(a.get(`${c}
|
|
4
|
+
${r}`)??0)+1),new Map);function U({now:h=Date.now,hold:a=b,limit:c=j,quiet:r=k}={}){let i=new Map,l=new Map,w=new Map,$=new Map,p=new Map;return{wrote(t,e){$.set(t,M(e))},judge(t,{source:e,mtime:m}){if(e===null)return i.delete(t),w.delete(t),{held:!1,signs:[],wait:0,own:!1};let d=M(e),n=p.get(t)?.hash===d?p.get(t).signs:null;n||(n=O(e),p.set(t,{hash:d,signs:n}));let f=h(),x=(o,s=!1)=>(i.delete(t),l.set(t,W(n)),w.set(t,e),{held:!1,signs:[],wait:o,own:s});if($.get(t)===d)return x(0,!0);let g=l.get(t)??new Map,I=W(n);if([...I].some(([o,s])=>s>(g.get(o)??0))){let o=Math.min(m,f),s=i.get(t)??o;i.set(t,s);let T=Math.min(a-(f-o),c-(f-s));if(T>0)return{held:!0,signs:n.filter(({key:D,tag:L})=>I.get(`${D}
|
|
5
|
+
${L}`)>(g.get(`${D}
|
|
6
|
+
${L}`)??0)),wait:T,own:!1,taken:w.get(t)}}return x(Math.min(r,Math.max(0,r-(f-m))))}}}export{b as a,j as b,k as c,S as d,U as e};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as we,c as pe,d as ge,e as J,g as R,h as me,i as X,j as $e,k as ye,l as $,m as ke}from"./chunk-3LA3EMDE.mjs";import{a as H}from"./chunk-TX6JH7TR.mjs";import{d as ce,g as de}from"./chunk-YXAUQPVK.mjs";import{a as U}from"./chunk-UNUEWH4S.mjs";import{a as Q,c as F}from"./chunk-G7TOXONE.mjs";import{a as he,b as fe,e as ue}from"./chunk-LC7YNQFG.mjs";import"./chunk-ITNLYXXV.mjs";import{b as v,i as ie}from"./chunk-NSKUTQ5J.mjs";import"./chunk-QMQUXTU4.mjs";import"./chunk-HQQMJCQJ.mjs";import"./chunk-QYKCJ7FG.mjs";import"./chunk-YZ5Z6H4W.mjs";import"./chunk-VACRB2NE.mjs";import{a as re}from"./chunk-HYMEEXKN.mjs";import"./chunk-TDQP3DKQ.mjs";import{b as z}from"./chunk-5FRMCDPY.mjs";import"./chunk-E7VYDG2X.mjs";import"./chunk-NFIBI4IP.mjs";import{c as Y,g as le}from"./chunk-W63L7367.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";import C from"node:fs/promises";import P from"node:path";import{isInstance as K,partOf as Fe}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as ae,FALLBACK as Re,FIELDS as _e,INSTANCE as Se,PACKAGE_ID as je}from"../browser/shared/components/installed.mjs";import{attr as ee,walk as Pe}from"../browser/shared/html-tree.mjs";import{documentDirectory as Be,documentFiles as He,layoutOf as se,packageFolders as Ue}from"../browser/shared/workspace.mjs";var be=10,te=6,qe=3,Ge=100,Le=1024,Ie=900,Ve=4e3,V=3e4,Ke=1500,ne=3e4,oe=500,We=5e3,Ze=200,B=e=>new Promise(t=>setTimeout(t,e));async function Ye(e){let{_keyDefinitions:t}=await import("./chunk-43B75J5T.mjs"),n=Object.hasOwn(t,e)?[e]:e.split("+"),a=new Set(["Control","Shift","Alt","Meta"]);if(n.some(o=>!Object.hasOwn(t,o))||n.slice(0,-1).some(o=>!a.has(o)))throw new v(`Not a key: ${e} (a key as a browser names it, Enter, Space, Escape, Tab, ArrowRight, a letter or a digit, after modifiers joined by "+": Shift+Tab, Control+Enter).`);return n}async function ze(e,t){let n=["--press","--drag","--key"].filter(a=>e.has(a));if(n.length!==1)throw new v(n.length?`One gesture at a time: ${n.join(" or ")}.`:"Say the gesture: --press <selector>, --drag <selector> --to <selector> or --key <selector> <key>.");if(e.has("--to")&&!e.has("--drag"))throw new v("--to goes with --drag: --drag <selector> --to <selector>.");if(e.has("--drag")&&!e.has("--to"))throw new v("--drag takes --to: --drag <selector> --to <selector>, where it is dropped.");return e.has("--press")?{kind:"press",at:e.get("--press")}:e.has("--drag")?{kind:"drag",at:e.get("--drag"),to:e.get("--to")}:{kind:"key",at:e.get("--key"),keys:await Ye(t),key:t}}var Qe=e=>{let t=e.parentNode;for(;t&&!K(t);)t=t.parentNode;return t??null};function Ne(e){let t=[];return Pe(re(e),n=>{K(n)&&t.push({element:n,id:ee(n,ae),blockId:ee(n,"data-block-id")??null,line:n.sourceCodeLocation?.startLine})},{stop:K}),t}var Je=(e,{id:t,blockId:n})=>n??(e.filter(a=>a.id===t).length===1?t:null);function Xe(e,t,{slug:n,name:a}){let o=()=>e.map(i=>` ${Je(e,i)??"(no id yet: gallery export gives it one)"} ${i.id} at ${a}:${i.line}`).join(`
|
|
3
|
+
`);if(t===null){if(e.length===1)return 0;throw new v(`${n} holds ${e.length} instances: name one, gallery component try ${n} <instance id> \u2026
|
|
4
|
+
${o()}`)}let r=e.findIndex(({blockId:i})=>i===t);if(r>=0)return r;let l=t.includes("/")?t:`local/${t}`,s=je.test(l)?e.flatMap((i,c)=>i.id===l?[c]:[]):[];if(s.length===1)return s[0];throw new v(s.length?`${n} holds ${s.length} instances of ${l}: name one by its id
|
|
5
|
+
${o()}`:`${n} holds no instance ${t}:
|
|
6
|
+
${o()}`)}var et=e=>e.replace(/\s+data-block-id="[^"]*"/g,""),ve=e=>et(z(e).text);function xe(e,t,n){let a=Ne(e)[t]?.element;if(!a||ee(a,ae)!==n.id)return null;let o=[],r=Object.entries(n.parts).map(([c,{at:u}])=>{let p=Fe(a,u).filter(h=>h.sourceCodeLocation?.endTag&&!K(h)&&Qe(h)===a).map(({sourceCodeLocation:{startTag:h,endTag:d}})=>({start:h.endOffset,end:d.startOffset}));return o.push(...p),{name:c,text:p.map(({start:h,end:d})=>e.slice(h,d)).join(`
|
|
7
|
+
`)}}),l=o.sort((c,u)=>c.start-u.start||u.end-c.end).filter((c,u)=>!o.slice(0,u).some(p=>p.start<=c.start&&c.end<=p.end)),s="",i=0;for(let{start:c,end:u}of l)s+=e.slice(i,c),i=u;return{parts:r,outside:s+e.slice(i)}}function tt(e,t,n,a){let[o,r]=[xe(e,n,a),xe(t,n,a)];return!o||!r?{parts:[],outside:null,gone:!0}:{parts:o.parts.flatMap(({name:s,text:i},c)=>i===r.parts[c].text?[]:[{name:s,...X(i,r.parts[c].text),how:$e(i,r.parts[c].text)}]),outside:o.outside===r.outside?null:X(o.outside,r.outside),gone:!1}}async function nt(e,t){let{components:n,marker:a}=se(e);return await Oe([t,a,n])+U+F+oe}async function Oe(e){let t=[...e];for(let a of e)for(let o of await C.readdir(a,{recursive:!0,withFileTypes:!0}).catch(()=>[]))t.push(P.join(o.parentPath,o.name));let n=await Promise.all(t.map(a=>C.stat(a).then(({mtimeMs:o})=>o,()=>0)));return Math.max(...n)}var ot=e=>fetch(`${e}/__gallery/workspace/components`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok?t.json():null).then(t=>Array.isArray(t?.packages)?t.packages:null,()=>null);async function at(e,t,n){let{components:a,marker:o}=se(e),r=Ue(e).find(k=>k.id.toLowerCase()===t)?.folder??P.join(a,...t.split("/")),[l,s]=await Promise.all([Oe([o,r]),ot(n)]),{packages:i,problems:c,settings:u}=Y(e),p=s?.find(k=>k.id===t)??null,h=s?p?.state??"none":null,d=h==="normal"||h==="hidden",f=u.disabled.includes(t),m=c.get(t),y=m&&!f&&d?le("en",m.problem):null,S=s!==null&&i.has(t)&&!d;return{by:l+(y?Q:U+F),held:y,behind:S,off:f,stamp:(i.get(t)??m)?.stamp??null,state:h,reason:p?.reason?.en??null}}var Ce=({state:e,reason:t})=>e==="none"?"no such package":t?`it as not loading (${t})`:"it turned off";function st(e,{said:t,unparsed:n=null,off:a,behind:o=!1,state:r,reason:l}){let s="the instance shows what it holds, read-only, so a reader can do nothing with it";return n?`${s}: its kit.js did not parse, so no component of it started, and the console says ${n}`:t.length?`${s}: its component failed as the page started it, and the console says ${t.join("; ")}`:a?`${s}: ${e} is turned off in \u8BBE\u7F6E \u203A \u7EC4\u4EF6`:o?`${s}: the server has not taken ${e} as components/ holds it, where it loads: its catalog in use has ${Ce({state:r,reason:l})}`:r==="disabled"&&!l?`${s}: ${e} is turned off in \u8BBE\u7F6E \u203A \u7EC4\u4EF6`:r==="broken"||r==="disabled"?`${s}: the server has ${e} as not loading (${l}): gallery component check ${e} says why`:r==="none"?`${s}: the server has not taken ${e} as components/ holds it (its catalog in use has no such package)`:r?`${s}: the page was served before the server took ${e} as components/ holds it, and did not load itself again with it`:`${s}: its component failed or never started, and the console said nothing of it`}var it=(e,t,n)=>t.held?`${e} does not load as components/ holds it (${t.held}), and the server keeps it as it was until components/ has not changed for ${Q/1e3}s, as it keeps a package written file by file`:t.behind?`components/ holds ${e} as loading, and the server's catalog in use still has ${Ce(t)}: it takes what components/ holds once that has not changed for ${F/1e3}s`:n?`${e} or gallery.json changed a moment ago, and the server takes the change once components/ has not changed for ${F/1e3}s, the page served before loading itself again for it`:`the server took ${e} as components/ holds it, and the page served before is to load itself again with it`,rt=(e,t,n)=>t.held?`the server still keeps ${e} as it was`:t.behind?`the server has still not taken ${e} as components/ holds it`:`the server took ${e} as components/ holds it, and the page did not load itself again with it in ${n/1e3}s`;async function lt({root:e,id:t,origin:n,loadedAt:a,loaded:o,told:r=We,say:l=s=>console.log(s)}){let s=Date.now(),i,c=0,u=0,p=!1;for(;;await B(Ze)){let h=await at(e,t,n),d=Date.now();i!==void 0&&h.stamp!==i&&(c=d),i=h.stamp,h.behind&&!u&&(u=d);let f=Math.max(h.by,...[c,u].filter(Boolean).map(y=>y+U+F)),m=o()?"the page loaded itself again":h.off?`gallery.json turns ${t} off now`:a>=f?`the page was asked for after the server took ${t} as components/ holds it`:d>f+r?rt(t,h,r):null;if(m)return p&&l(`Waited ${((d-s)/1e3).toFixed(1)}s: ${m}`),h;p||f-d<=oe&&d-s<=oe||(p=!0,l(`Waiting: ${it(t,h,f>d)}, ${Math.ceil((f+r-d)/1e3)}s more at most`))}}function ct({instance:e,at:t}){return[...document.querySelectorAll(e)].filter(n=>!n.parentElement?.closest(e))[t]??null}function dt(e,t){let n=d=>`<${d.localName}${d.classList.length?` class="${d.getAttribute("class")}"`:""}>`,a;try{a=e.querySelector(t)}catch{return{invalid:!0}}if(!a)return{none:!0,held:[...new Set([...e.querySelectorAll("[class]")].filter(d=>d.getClientRects().length>0).flatMap(d=>[...d.classList].map(f=>`.${f}`)))].slice(0,16)};let o=((a instanceof HTMLElement?a.innerText:a.textContent)??"").replace(/\s+/g," ").trim(),r={named:n(a),words:o.length>40?`${o.slice(0,40)}\u2026`:o},l=[...a.getClientRects()].filter(({width:d,height:f})=>d>0&&f>0);if(!l.length)return{...r,hidden:!0};let{left:s,top:i,right:c,bottom:u,width:p,height:h}=l.reduce((d,f)=>d.width*d.height>=f.width*f.height?d:f);return{...r,box:{left:s,top:i,right:c,bottom:u,x:s+p/2,y:i+h/2}}}function ht(e,{selector:t,x:n,y:a}){let o=e.querySelector(t),r=document.elementFromPoint(n,a);return!r||o.contains(r)?null:`<${r.localName}${r.classList.length?` class="${r.getAttribute("class")}"`:""}>`}function ft(e,{at:t,to:n}){let[a,o]=[e.querySelector(t),e.querySelector(n)];return a===o?"same":a.contains(o)?"inside":null}function ut(e){let t=a=>a instanceof Element?`<${a.localName}${a.classList.length?` class="${a.getAttribute("class")}"`:""}>`:"the page",n={edits:[],states:[],started:null,dropped:null,effect:null};addEventListener("doc-component-edit",a=>{a.target===e&&n.edits.push({taken:a.defaultPrevented,parts:(a.detail?.parts??[]).map(({name:o})=>o)})}),new MutationObserver(a=>{for(let{oldValue:o}of a)n.states.push(o);n.states.push(document.documentElement.getAttribute("data-ge-save"))}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-ge-save"],attributeOldValue:!0}),document.addEventListener("dragstart",a=>{n.started=t(a.target)},!0),document.addEventListener("drop",a=>{n.dropped=t(a.target)},!0),document.addEventListener("dragend",a=>{n.effect=a.dataTransfer?.dropEffect??null},!0),globalThis.__galleryTry=n}async function wt(e,{still:t,step:n}){let a=()=>new Promise(r=>{requestAnimationFrame(r),setTimeout(r,100)});await a(),await a();let o=e.outerHTML;for(let r=0,l=Date.now()+t;r<3;){if(Date.now()>l)return null;await new Promise(i=>setTimeout(i,n));let s=e.outerHTML;r=s===o?r+1:0,o=s}return o}function pt(e,t,{left:n,top:a,right:o,bottom:r}){let l=0;for(let[s,i,c,u]of[[e.x,t.x,n,o],[e.y,t.y,a,r]]){if(i===s)continue;let[p,h]=[(c-s)/(i-s),(u-s)/(i-s)];l=Math.max(l,Math.min(p,h))}return l*Math.hypot(t.x-e.x,t.y-e.y)}function gt(e,t){let n=Math.hypot(t.x-e.x,t.y-e.y),a=i=>n===0?{x:e.x,y:e.y}:{x:e.x+(t.x-e.x)*i/n,y:e.y+(t.y-e.y)*i/n},o=Math.min(te,n),r=pt(e,t,t)-qe,l=r>o?r:n,s=[a(o/2),a(o)];for(let i=1;i<=be;i++)s.push(a(o+(l-o)*i/be));return l!==n&&s.push({x:t.x,y:t.y}),s}var W={press:"press",drag:"drag",key:"key"},q=(e,{named:t,words:n})=>`${e} (${t}${n?` "${n}"`:""})`,Ee=e=>Object.assign(new v(e),{unfound:!0});async function mt(e,t,n){let a=async i=>{let c=await $(t.evaluate(dt,i),"the page was asked what the selector finds");if(c.invalid)throw new v(`Not a selector: ${i}.`);if(c.none)throw Ee(`Nothing in the instance is ${i}${c.held.length?`: what it shows has ${c.held.join(", ")}`:": it shows nothing with a class"}.`);if(c.hidden)throw Ee(`${i} finds ${c.named} in the instance, which is not shown (it has no box on the page), so a reader cannot reach it: name what it shows.`);return c},o=await a(n.at);if(n.kind==="press"){let{x:i,y:c}=o.box,u=await $(t.evaluate(ht,{selector:n.at,x:i,y:c}),"the page was asked what stands at the press");return await e.mouse.move(i,c),await e.mouse.down(),await e.mouse.up(),{said:`a press on ${q(n.at,o)}, with the pointer at its middle`,over:u}}if(n.kind==="drag"){let i=await a(n.to),c=await $(t.evaluate(ft,{at:n.at,to:n.to}),"the page was asked where the drag ends");if(c)throw new v(`${c==="same"?`--drag and --to find the same element, ${o.named}`:`--to ${n.to} finds ${i.named}, which stands in what --drag ${n.at} finds, ${o.named}`}: a drag ends where it is dropped, on another element of the instance (another column, another row), which --to names.`);if(Math.hypot(i.box.x-o.box.x,i.box.y-o.box.y)<te)throw new v(`The middles of what --drag ${n.at} and --to ${n.to} find stand less than ${te}px apart, too near for a drag to start: name with --to where it is dropped, further off.`);let u=gt(o.box,i.box);await e.mouse.move(o.box.x,o.box.y),await e.mouse.down();for(let{x:p,y:h}of u)await e.mouse.move(p,h);return await B(Ge),await e.mouse.up(),{said:`a drag of ${q(n.at,o)} to ${q(n.to,i)}, with the pointer in ${u.length} moves, released as it comes onto it`}}let r=await t.$(n.at);await $(r.focus(),"the focus went to the element");let l=await $(e.evaluate(i=>document.activeElement===i||i.contains(document.activeElement)?null:`<${document.activeElement?.localName??"body"}>`,r),"the page was asked where the focus is"),s=n.keys.slice(0,-1);for(let i of s)await e.keyboard.down(i);await e.keyboard.press(n.keys.at(-1));for(let i of s.toReversed())await e.keyboard.up(i);return{said:`${n.key} pressed with the focus given to ${q(n.at,o)}, as Tab gives it`,unfocused:l}}var $t=e=>fetch(`${e}/__gallery/workspace/info`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok,()=>!1);async function Te(e,t,n){let a=Date.now();for(let o=0,r=0;;await B(100)){let{seen:l,now:s}=await $(e.evaluate(c=>({seen:globalThis.__galleryTry.states.slice(c),now:document.documentElement.getAttribute("data-ge-save")}),t),"the page was asked where saving stands"),i=s!=="saved"||l.some(c=>c!=="saved");if(i&&s==="saved")return"saved";if(s==="stopped"||s==="reloading")return s;if(o=s==="held"?o+1:0,o>=3)return"held";if(r=s==="offline"?r+1:0,r>0&&r%10===0&&!await $t(n))return"offline";if(!i&&Date.now()-a>Ke)return"unchanged";if(Date.now()-a>ne)return s}}var _=e=>({held:"a card waits for a reader: someone else changed the part meanwhile, and the page held its write for the reader there, which closing the page dropped",offline:"the page could not reach the server (offline)",stopped:"the page stopped saving (stopped): the server refused its write",reloading:"the page loaded itself again (doc.html or a package it holds changed meanwhile)",waiting:`it waited ${ne/1e3}s to be saved and never was`,syncing:`its save took more than ${ne/1e3}s`})[e];function yt(e,{parts:t,outside:n,gone:a},{gesture:o,name:r,held:l=!1,keep:s=!1}){let i=n?`; outside the instance's parts -${n.removed} +${n.added} lines someone else wrote meanwhile, which stay`:"";return a?{unverified:`${e}, and ${r} holds the instance no more where it stood: someone else wrote the file meanwhile`}:t.length===0?{unverified:`${e}: ${r} is as it was${n?" in the instance's parts":""} (data-block-id aside)${i}`}:l?{unverified:`${e}: what ${r} holds of ${R(t)} is someone else's, which stays${i}`}:s?{unverified:`${e}: ${r} holds what the ${o} wrote, ${R(t)}, kept (--keep)${i}`}:{problem:`${e}, and ${r} holds what the ${o} wrote, ${R(t)}${i}: put that back yourself, ${r} read again first${n?", keeping what someone else wrote":""}`}}function kt(e,t,{over:n,unfocused:a,refusals:o,name:r}){let l=[];return n&&l.push(`the press landed on ${n}, which stands over it there`),a&&l.push(`the element takes no focus (a button, a field or a tabindex), so the key went to ${a}`),t.started&&!t.dropped?l.push(`an HTML5 drag started (dragstart on ${t.started}) and nothing took its drop where it was released (dragend's dropEffect ${t.effect??"none"}): a list a card is dropped on cancels dragenter as well as dragover (preventDefault), or a release as the pointer comes onto it drops nothing`):t.dropped&&t.edits.length===0&&l.push(`it was dropped on ${t.dropped}, and no context.edit came of it`),t.edits.some(({taken:s})=>s)?l.push("context.edit was taken, and its change left what the parts hold as it was"):t.edits.length?l.push(`context.edit was called and the page refused it${o.length?`: the console says ${o.join("; ")}`:""}`):t.started||l.push(`no context.edit came of it: the component answers no ${e} there, or asked while context.canEdit() was false`),`the ${W[e]} wrote nothing to ${r}: ${l.join("; ")}`}async function bt(e,t){let n={own:new Map,others:new Map,dialogs:new Map,pending:[],page:0,from:0},a=new RegExp(`/__gallery/components/${t}/kit\\.js[^:\\s)]*:(\\d+)`),o=(l,s,{at:i="",unparsed:c=!1}={})=>{if(s<n.from)return;let u=l.split(`
|
|
8
|
+
`)[0],p=a.exec(l)??a.exec(i);l.includes(t)||p?n.own.set(u,{line:Number(p?.[1])||null,page:s,unparsed:c&&a.test(i)}):n.others.set(u,{page:s})};e.on("request",l=>{l.isNavigationRequest()&&l.frame()===e.mainFrame()&&(n.page+=1)}),e.on("console",l=>{if(!["error","warn","warning"].includes(l.type())||/^Failed to load resource/.test(l.text()))return;let{page:s}=n;n.pending.push(Promise.all(l.args().map(i=>i.evaluate(c=>c instanceof Error?c.stack:String(c)).catch(()=>""))).then(i=>o(i.join(" ")||l.text(),s)))});let r=await ye(e,{add:l=>n.dialogs.set(l,{page:n.page})});return r.on("Runtime.exceptionThrown",({exceptionDetails:{exception:l,text:s,url:i,lineNumber:c,stackTrace:u}})=>{o(l?.description??String(l?.value??s),n.page,{at:i?`${i}:${c+1}`:"",unparsed:!u&&l?.className==="SyntaxError"})}),await r.send("Runtime.enable"),n}function vt(e){e.from=e.page;for(let t of[e.own,e.others,e.dialogs])for(let[n,{page:a}]of t)a<e.from&&t.delete(n)}var G=e=>Promise.race([Promise.all(e.pending),B(2e3)]);async function xt(e){let t=n=>e.waitForSelector(n,{timeout:V}).catch(a=>{if(a.name==="TimeoutError")throw a;return e.waitForSelector(n,{timeout:V})});try{return await t("[data-doc-ready]"),await t("html[data-ge-editing][data-ge-save]"),await e.waitForFunction(()=>globalThis.__galleryTryEditable===!0&&document.documentElement.getAttribute("data-ge-save")==="saved",{timeout:V}),!0}catch(n){if(n.name!=="TimeoutError")throw n;return!1}}async function Et(e,{at:t,id:n}){let a=await $(e.evaluateHandle(ct,{instance:Se,at:t}),"the page was asked for the instance"),o=await $(a.evaluate((r,{fallback:l,id:s})=>!(r instanceof Element)||r.getAttribute("data-doc-component")!==s?null:(DocKit.reveal?.(r),{fallback:r.hasAttribute(l),height:r.getBoundingClientRect().height}),{fallback:Re,id:n}),"the page was asked for the instance");return o?(await e.setViewport({width:Le,height:Math.min(Ve,Math.max(Ie,Math.ceil(o.height)+240))}),await $(a.evaluate(r=>r.scrollIntoView({block:"center",behavior:"instant"})),"the instance was brought into view"),await $(a.evaluate(wt,{still:pe,step:ge}),"the instance held still"),{host:a,fallback:o.fallback}):null}async function Tt(e){await $(e.evaluate(({instance:t,fields:n})=>{let a=document.activeElement;a instanceof HTMLElement&&a.closest(t)&&a.matches(n)&&a.blur()},{instance:Se,fields:_e}),"the focus left the instance's field"),await e.keyboard.down("Control"),await e.keyboard.press("z"),await e.keyboard.up("Control")}var At=3;async function St(e,{root:t,address:n,at:a,gesture:o,keep:r,file:l,name:s,line:i,found:c,out:u}){let p=await e.createBrowserContext(),h=await p.newPage(),d=await bt(h,c.id),f={problems:[],notes:[]},m=(w,b=`${s}:${i}`)=>f.problems.push({where:b,what:w}),y=W[o.kind],S=new URL(n).origin,k=0,M=0;h.on("request",w=>{!w.isNavigationRequest()||w.frame()!==h.mainFrame()||(k+=1,M=Date.now())});let L=null,N=null,T=async()=>tt(ve(N),ve(await C.readFile(l,"utf8").catch(()=>"")),a,c),A=(w,b,I=!1)=>{let D=yt(w,b,{gesture:y,name:s,held:I,keep:r});return D.problem&&m(D.problem),{...f,unverified:D.unverified}};await h.evaluateOnNewDocument(()=>addEventListener("doc-editable",()=>{globalThis.__galleryTryEditable=!0})),await h.setViewport({width:Le,height:Ie}),await h.emulateMediaFeatures([{name:"prefers-color-scheme",value:"light"}]);try{await $(h.goto(n,{waitUntil:"load",timeout:0}),"the page opened",we);let w=null,b=null;for(let x=1;!w;x++){let g=k;try{if(!await xt(h))return{...f,unverified:`the page did not come to edit in ${V/1e3}s, so nothing was tried`};if(w=await Et(h,{at:a,id:c.id}),!w)return{...f,unverified:`the page does not hold the instance where ${s} has it (${s} changed meanwhile?), so nothing was tried`};if(await B(Math.max(0,await nt(t,l)-Date.now())),w.fallback&&(b=await lt({root:t,id:c.id,origin:S,loadedAt:M,loaded:()=>k!==g})),k!==g)throw new Error("the page loaded itself again");if(w.fallback)break;if(N=await C.readFile(l,"utf8"),await $(w.host.evaluate(ut),"the page was asked to listen"),k!==g)throw new Error("the page loaded itself again")}catch(E){if(k===g||x===At)throw E;w=null,vt(d)}}let{host:I}=w;if(w.fallback){await G(d);let x=[...d.own].map(([g,{line:E,unparsed:De}])=>({words:`${g}${E?` (kit.js:${E})`:""}`,unparsed:De}));return d.own.clear(),m(st(c.id,{said:x.map(({words:g})=>g),unparsed:x.find(({unparsed:g})=>g)?.words??null,...b})),await Ae(I,f,u)}L=k;let D=await mt(h,I,o);f.gesture=D.said;let Z=await Te(h,0,S),Me=await $(h.evaluate(()=>globalThis.__galleryTry),"the page was asked what it heard");await Ae(I,f,u);let O=await T();if(_(Z))return A(`after the ${y}, ${_(Z)}`,O,Z==="held");if(O.gone)return A(`after the ${y}`,O);if(f.others=O.outside,O.parts.length===0){await G(d);let x=[...d.own.keys()].filter(g=>g.includes("context.edit"));for(let g of x)d.own.delete(g);return m(kt(o.kind,Me,{...D,refusals:x,name:s})),f}f.wrote={parts:O.parts,plain:z(N).changes.length>0};for(let{name:x,how:g}of O.parts)g&&f.notes.push({where:`${s}:${i}`,what:`the ${y}'s write lays the part ${x} out anew (${g}): ${me}`});if(!r){let x=await $(h.evaluate(()=>globalThis.__galleryTry.states.length),"the page was asked where saving stands");await Tt(h);let g=await Te(h,x,S),E=await T();if(k>L)return A(`after the ${y}, ${_("reloading")}`,E);if(_(g))return A(`after one Ctrl+Z, ${_(g)}`,E,g==="held");if(E.gone)return A("after one Ctrl+Z",E);g==="unchanged"?m(`one Ctrl+Z wrote nothing, so ${s} keeps what the ${y} wrote: put the part back yourself, ${s} read again first`):E.parts.length?m(`after one Ctrl+Z ${s} is not as it was, ${R(E.parts)} still differing: put that back yourself, ${s} read again first`):f.undone=!0,f.others=E.outside??f.others}return f.others&&(f.unverified=`someone else wrote ${s} meanwhile, outside the instance's parts (the user's page, an Agent), which stays${r?"":": try it again once the file holds still"}`),f}catch(w){if(w instanceof v){if(!w.unfound||(await G(d),d.own.size===0&&d.dialogs.size===0))throw w;return m(`${w.message[0].toLowerCase()}${w.message.slice(1).replace(/\.$/,"")}; its component did not draw it, and the console says why`),f}let b=L===null?null:await T();if(b&&k>L)return A(`after the ${y}, ${_("reloading")}`,b);if(await ke(e)){let I=`the browser went while waiting until ${w.doing??"the page answered"}`;return b?A(I,b):{...f,unverified:`${I}, so nothing was tried`}}return w.stuck?m(`the page stopped answering while waiting until ${w.doing}: a script that never ends, or a component that changes what it hears`,"the page"):m(`the trial stopped: ${J(w)}`,"the page"),b?A(`after the ${y} the trial stopped`,b):f}finally{await G(d);for(let[w,{line:b}]of d.own)f.problems.push({where:b?`kit.js:${b}`:"the page",what:`the console says ${w}`});for(let w of d.others.keys())f.notes.push({where:"the page",what:`the console says ${w}`});for(let w of d.dialogs.keys())f.problems.push({where:"the page",what:`it opened a dialog (${w}), which stops a reader's page until it is answered: show what it says in the instance`});await p.close().catch(()=>{})}}async function Ae(e,t,n){let a=P.join(n,"after.png");try{await $(e.screenshot({path:a}),"the instance was pictured"),t.picture=a}catch(o){if(o.stuck)throw o}return t}var j={gesture:"Gesture: ",wrote:"Wrote: ",undone:"Undone: ",kept:"Kept (--keep): ",picture:"Picture of the instance after the "},Lt="nothing outside the instance changed (data-block-id aside)";function It({slug:e,name:t,gesture:{kind:n},keep:a},o){let r=[];o.gesture&&r.push(`${j.gesture}${o.gesture}`);for(let{where:s,what:i}of o.problems)r.push(` FAIL ${s}: ${i}`);for(let{where:s,what:i}of o.notes)r.push(` note ${s}: ${i}`);if(o.wrote){let s=o.wrote.plain?"; and the page wrote the document's plain HTML as the kit's markup, as its first save of an edit does (gallery check and gallery export say what, by line, once), which stays":"",i=o.others?`; outside the instance's parts -${o.others.removed} +${o.others.added} lines someone else wrote meanwhile (the user's page, an Agent), which stay`:`; ${Lt}`;r.push(`${j.wrote}${R(o.wrote.parts)}${i}${s}`),a?r.push(`${j.kept}${t} holds what it wrote`):o.undone&&r.push(`${j.undone}one Ctrl+Z, and ${o.others?`the instance's parts in ${t} are as they were`:`${t} is as it was`} (data-block-id aside${o.wrote.plain?", its plain HTML the kit's markup":""})`)}o.picture&&r.push(`${j.picture}${W[n]}: ${H(o.picture)}`);let l=o.problems.length;return l?{lines:[...r,`FAIL ${e}: ${l} problem${l===1?"":"s"}`],code:1}:o.unverified?{lines:[...r,`UNVERIFIED ${e}: ${o.unverified}`],code:3}:{lines:[...r,`OK ${e}: the ${W[n]} wrote ${o.wrote.parts.map(({name:s})=>s).join(" and ")}${a?", kept (--keep)":", and one Ctrl+Z took it back"}`],code:0}}async function Kt(e,{named:t,values:n,key:a,keep:o}){let r=await ze(n,a);if(t.length===0)throw new v("Name the document: gallery component try <slug> [<instance id>] and the gesture.");if(t.length>2)throw new v("gallery component try takes a document and an instance's id at most.");let{slug:l,block:s}=await ie(t[0]),i=He(Be(l,e)).html,c=await C.readFile(i,"utf8").catch(()=>null);c===null&&(console.error(`No document "${l}": ${H(i)} does not exist (gallery list lists those there are).`),process.exit(1));let u=Ne(c);u.length===0&&(console.error(`${l} holds no instance of a component package (an element with ${ae}): gallery component list says which there are, and gallery component show <id> how to write one.`),process.exit(1));let p=P.basename(i),h=Xe(u,t[1]??s,{slug:l,name:p}),{id:d,line:f}=u[h],m=Y(e),y=m.packages.get(d);if(!y){let T=m.problems.get(d);console.error(T?.off?`${d} is turned off in \u8BBE\u7F6E \u203A \u7EC4\u4EF6: its instances show what they hold, read-only, so a reader can do nothing with them.`:T?`${d} does not load, so its instances show what they hold, read-only: gallery component check ${d} says why.`:`No component ${d} in this workspace, so its instance shows what it holds, read-only: gallery component list says which there are.`),process.exit(1)}console.log(`${d} in ${l}, ${p}:${f}: ${H(i)}`);let S=await de({slug:l,command:`gallery component try ${l}`});if(!S.ok){console.log(`UNVERIFIED ${l}: ${S.message}`),process.exitCode=3;return}let k=ce(S.port,l);console.log(`Page: ${k} (the document's page alone, editable: the Agent's own; the server runs on after this command)`);let M=he();if(!M){console.log(`UNVERIFIED ${l}: no Chrome, Edge or Chromium found (GALLERY_BROWSER=<its executable> picks one), so nothing was tried`),process.exitCode=3;return}let L;try{L=await ue({executablePath:M,args:fe()})}catch(T){console.log(`UNVERIFIED ${l}: the browser ${M} did not start, twice, each time with a fresh profile (${J(T)}; GALLERY_BROWSER=<its executable> picks another), so nothing was tried`),process.exitCode=3;return}let N=P.join(se(e).qa,l,"try");try{await C.rm(N,{recursive:!0,force:!0}),await C.mkdir(N,{recursive:!0});let{lines:T,code:A}=It({slug:l,name:p,gesture:r,keep:o},await St(L.browser,{root:e,address:k,at:h,gesture:r,keep:o,file:i,name:p,line:f,found:y,out:N}));console.log(T.join(`
|
|
9
|
+
`)),process.exitCode=A}finally{await L.close()}}export{Lt as INSIDE_ALONE,j as TRY_LINES,ve as asShown,tt as changesOf,Xe as chosenInstance,yt as cutOffSaid,gt as dragPath,st as fallbackSaid,ze as gestureOf,Ne as instancesIn,Ye as keysOf,bt as listen,kt as nothingSaid,vt as takenAgain,at as takenBy,nt as toldBy,It as trialSaid,Kt as tryCommand,lt as untilTaken,et as withoutIds};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a}from"./chunk-Y34NR5JL.mjs";import"./chunk-W7XHE4CT.mjs";import"./chunk-5L7RYZCL.mjs";export{a as BrowserWebSocketTransport};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{e as it}from"./chunk-7GHT2UCA.mjs";import{b as mt}from"./chunk-UNUEWH4S.mjs";import{a as ct,g as lt,h as dt}from"./chunk-LC7YNQFG.mjs";import{k as we}from"./chunk-6U2SLSDN.mjs";import{a as at,b as st}from"./chunk-W7CXPCRV.mjs";import{a as ot}from"./chunk-LAE5NQ4B.mjs";import{b as Ze,c as Qe,d as ie,e as qe,f as ge,h as et,l as tt,o as nt,p as rt}from"./chunk-QMQUXTU4.mjs";import{d as Ve,e as pe,f as _e,g as Fe,h as Ye,k as he}from"./chunk-QYKCJ7FG.mjs";import{b as We,c as ze}from"./chunk-YZ5Z6H4W.mjs";import{d as Ue}from"./chunk-VACRB2NE.mjs";import{a as fe}from"./chunk-NFIBI4IP.mjs";import{a as Be,d as Y,g as He,h as Ge,l as Ke,m as Je,r as Xe,s as Te}from"./chunk-W63L7367.mjs";import Oe from"node:fs";import Fr from"node:fs/promises";import Pr from"node:http";import{editStateDirectory as Rr,kitPublicDirectory as Ar,release as Dr,releaseFile as Ee,reportsDirectory as Ne,vendorDirectory as Lr,workbenchDirectory as Ir}from"../browser/shared/paths.mjs";import{serve as Qt}from"../browser/shared/http.mjs";import{ensureWorkspace as Mr,layoutOf as Nr}from"../browser/shared/workspace.mjs";import ce from"node:fs/promises";import M from"node:path";import{Z as en}from"../browser/shared/layers.mjs";import{escapeMarkup as Pe}from"../browser/shared/escape.mjs";import{layoutNotesScript as tn}from"../browser/shared/qa-levels.mjs";var ye=30,nn=`
|
|
3
|
+
[data-doc-dev].doc-checks { position: fixed; z-index: ${en.checks}; left: 12px; bottom: 12px; max-width: min(520px, calc(100vw - 24px));
|
|
4
|
+
font: 13px/1.5 system-ui, sans-serif; color: light-dark(#37352f, #e3e2e0); }
|
|
5
|
+
[data-doc-dev].doc-checks[hidden] { display: none; }
|
|
6
|
+
[data-doc-dev].doc-checks > summary { display: inline-flex; gap: 6px; align-items: center; padding: 4px 10px; border-radius: 999px; cursor: pointer;
|
|
7
|
+
list-style: none; color: light-dark(#a1352b, #f19c92); background: light-dark(#fce9e7, #3b2321);
|
|
8
|
+
box-shadow: 0 0 0 1px light-dark(rgb(161 53 43 / 18%), rgb(241 156 146 / 22%)); user-select: none; }
|
|
9
|
+
[data-doc-dev].doc-checks > summary::-webkit-details-marker { display: none; }
|
|
10
|
+
[data-doc-dev].doc-checks > div { margin-top: 6px; padding: 8px 12px; max-height: 50vh; overflow: auto; border-radius: 10px;
|
|
11
|
+
background: light-dark(#ffffff, #252525); box-shadow: 0 0 0 1px light-dark(rgb(42 28 0 / 7%), #383836), 0 20px 24px light-dark(rgb(25 25 25 / 5%), rgb(0 0 0 / 20%)); }
|
|
12
|
+
[data-doc-dev].doc-checks ul { margin: 0; padding-left: 18px; }
|
|
13
|
+
[data-doc-dev].doc-checks li { margin: 2px 0; overflow-wrap: anywhere; }
|
|
14
|
+
[data-doc-dev].doc-checks p { margin: 6px 0 0; color: light-dark(#787774, #9b9a97); }
|
|
15
|
+
[data-doc-dev].doc-checks .doc-checks-live:not(:first-child) { margin-top: 8px; }
|
|
16
|
+
@media print { [data-doc-dev].doc-checks { display: none; } }`,rn=`(() => {
|
|
17
|
+
document.currentScript.remove();
|
|
18
|
+
${tn()}
|
|
19
|
+
const panel = document.querySelector("details.doc-checks[data-doc-dev]");
|
|
20
|
+
if (!panel) return;
|
|
21
|
+
const failures = Number(panel.dataset.failures) || 0;
|
|
22
|
+
const live = panel.querySelector(".doc-checks-live ul");
|
|
23
|
+
// The note's words in the UI's language (the root's data-ge-language).
|
|
24
|
+
const english = document.documentElement.getAttribute("data-ge-language") === "en";
|
|
25
|
+
const WORDS = english
|
|
26
|
+
? { card: "Chart card", table: "Table", named: (kind, name) => kind + " \u201C" + name + "\u201D", first: (name) => "Table (first column \u201C" + name + "\u201D)", colon: ": ",
|
|
27
|
+
failing: (count) => "Checks failed \xB7 " + count, more: (count) => count + " more", all: (slug) => "gallery check " + slug + " runs every check (TypeScript too)." }
|
|
28
|
+
: { card: "\u56FE\u8868\u5361\u7247", table: "\u8868\u683C", named: (kind, name) => kind + "\u300C" + name + "\u300D", first: (name) => "\u8868\u683C\uFF08\u9996\u5217\u300C" + name + "\u300D\uFF09", colon: "\uFF1A",
|
|
29
|
+
failing: (count) => "\u68C0\u67E5\u672A\u901A\u8FC7 \xB7 " + count + " \u9879", more: (count) => "\u8FD8\u6709 " + count + " \u9879", all: (slug) => "gallery check " + slug + " \u8DD1\u5168\u90E8\u68C0\u67E5\uFF08\u542B TypeScript\uFF09\u3002" };
|
|
30
|
+
const more = panel.querySelector("[data-more]");
|
|
31
|
+
if (more) more.textContent = WORDS.more(more.dataset.more);
|
|
32
|
+
const all = panel.querySelector("[data-all]");
|
|
33
|
+
if (all) all.textContent = WORDS.all(all.dataset.all);
|
|
34
|
+
const tidy = (node) => (node?.textContent ?? "").replace(/\\s+/g, " ").trim().slice(0, 40);
|
|
35
|
+
const what = (host) => {
|
|
36
|
+
const card = host.closest("figure");
|
|
37
|
+
const title = card?.querySelector(":scope > h3, :scope > figcaption");
|
|
38
|
+
const table = host.closest(".doc-table-wrap, table");
|
|
39
|
+
const caption = table?.querySelector("caption");
|
|
40
|
+
const header = table?.querySelector("th");
|
|
41
|
+
return title ? WORDS.named(WORDS.card, tidy(title)) : card ? WORDS.card : caption && tidy(caption) ? WORDS.named(WORDS.table, tidy(caption)) : header ? WORDS.first(tidy(header)) : host.localName;
|
|
42
|
+
};
|
|
43
|
+
// A chart that drew nothing says why in its card (the kit's line, in the same language): that line, else the note in words.
|
|
44
|
+
const said = (host, name, note) => (name === "data-missing" && tidy(host.querySelector(".doc-chart-message"))) || noteInWords(note, { english });
|
|
45
|
+
let shown = "";
|
|
46
|
+
let frame = 0;
|
|
47
|
+
const draw = () => {
|
|
48
|
+
frame = 0;
|
|
49
|
+
const notes = [...document.querySelectorAll("[data-doc-layout]")].filter((host) => !host.closest("[data-doc-dev]"))
|
|
50
|
+
.flatMap((host) => layoutNotesOf(host.getAttribute("data-doc-layout"), document.documentElement.clientWidth)
|
|
51
|
+
.filter(({ level }) => level === "fail")
|
|
52
|
+
.map(({ note, name }) => ({ line: what(host) + WORDS.colon + said(host, name, note), note })));
|
|
53
|
+
const key = notes.map(({ line }) => line).join("\\n");
|
|
54
|
+
if (key === shown) return;
|
|
55
|
+
shown = key;
|
|
56
|
+
live.replaceChildren(...notes.map(({ line, note }) => Object.assign(document.createElement("li"), { textContent: line, title: note })));
|
|
57
|
+
live.parentElement.hidden = notes.length === 0;
|
|
58
|
+
const failing = failures + notes.length;
|
|
59
|
+
panel.querySelector("summary").textContent = failing ? WORDS.failing(failing) : "";
|
|
60
|
+
panel.hidden = failing === 0;
|
|
61
|
+
};
|
|
62
|
+
const later = (records) => {
|
|
63
|
+
if (!globalThis.document?.defaultView) return; // the page is gone
|
|
64
|
+
if (!frame && records.some((record) => !record.target.closest?.("[data-doc-dev]"))) frame = requestAnimationFrame(draw);
|
|
65
|
+
};
|
|
66
|
+
new MutationObserver(later).observe(document.documentElement, { subtree: true, childList: true, attributes: true, attributeFilter: ["data-doc-layout"] });
|
|
67
|
+
addEventListener("resize", () => { if (!frame) frame = requestAnimationFrame(draw); });
|
|
68
|
+
draw();
|
|
69
|
+
})();`;function ft(n,r,o={},{directory:d}={}){let s=et({slug:n,html:r,metadata:o,...d?{directory:d}:{}}),m=s.slice(0,ye).map(y=>`<li>${Pe(y)}</li>`).join(""),a=s.length>ye?`<p data-more="${s.length-ye}">\u8FD8\u6709 ${s.length-ye} \u9879</p>`:"",h=s.length?`<ul>${m}</ul>${a}<p data-all="${Pe(n)}">gallery check ${Pe(n)} \u8DD1\u5168\u90E8\u68C0\u67E5\uFF08\u542B TypeScript\uFF09\u3002</p>`:"";return`<details class="doc-checks" data-doc-dev data-failures="${s.length}"${s.length?"":" hidden"}><summary>${s.length?`\u68C0\u67E5\u672A\u901A\u8FC7 \xB7 ${s.length} \u9879`:""}</summary><div>${h}<div class="doc-checks-live" hidden><ul></ul></div></div><style>${nn}</style></details>
|
|
70
|
+
<script data-doc-dev>${rn}</script>`}import{browserDirectory as ar,editStateDirectory as sr,kitSourceDirectory as zt,release as ir,reportsDirectory as N}from"../browser/shared/paths.mjs";import{sendJson as At,serve as Ut,serveFound as le}from"../browser/shared/http.mjs";import{languageScript as cr}from"../browser/shared/i18n/index.mjs";import{announcePreviewServer as lr,galleryVersion as dr}from"../browser/shared/preview-server.mjs";import{slugPattern as Bt}from"../browser/shared/reports.mjs";import{ATTRIBUTE as Dt,PACKAGE_ID as mr}from"../browser/shared/components/installed.mjs";import{COMPONENTS_FOLDER as Lt,WORKSPACE_FILE as It,documentDirectory as Mt,documentFiles as fr,isDocumentFile as ur,isDocumentSource as pr,isSlugName as hr,layoutOf as gr}from"../browser/shared/workspace.mjs";import{createHash as yn,randomBytes as kn}from"node:crypto";import D from"node:fs";import Re from"node:os";import X from"node:path";import{Transform as vn}from"node:stream";import{pipeline as xn}from"node:stream/promises";import{exportSourceOf as bn}from"../browser/shared/export-wrap.mjs";import{writeAtomic as Ae}from"../browser/shared/files.mjs";import{sendJson as A}from"../browser/shared/http.mjs";import{said as De,saying as Sn}from"../browser/shared/i18n/index.mjs";import{IMPORT_LIMIT as wt}from"../browser/shared/import-types.mjs";import{mediaUrl as $n}from"../browser/shared/media.mjs";import{fullAddress as Cn}from"../browser/shared/page-address.mjs";import{documentLinks as yt,slugPattern as kt}from"../browser/shared/reports.mjs";import{documentDirectory as jn,documentFiles as vt,pageSlug as On}from"../browser/shared/workspace.mjs";import{readWritingPreferences as En,saysAnything as Tn,unshownLines as _n}from"../browser/shared/writing-preferences.mjs";import ut from"node:fs/promises";import fn from"node:path";import{Worker as on}from"node:worker_threads";import{refusal as an,said as sn}from"../browser/shared/i18n/index.mjs";var cn=6e4,G=null,ln=0,ke=0,oe=new Map;function dn(){G=new on(new URL("./worker.mjs",import.meta.url)),G.on("message",({id:r,result:o,error:d})=>{let s=oe.get(r);s&&(oe.delete(r),d?s.reject(Object.assign(new Error(d.message),d)):s.resolve(o),oe.size===0&&(G?.unref(),mn()))});let n=r=>{for(let o of oe.values())o.reject(r);oe.clear(),G=null};G.on("error",n),G.on("exit",r=>n(an(sn("\u8F6C\u6362\u8FDB\u7A0B\u610F\u5916\u9000\u51FA\uFF08{0}\uFF09",r))))}function mn(){clearTimeout(ke),ke=setTimeout(()=>{if(oe.size===0&&G){let n=G;G=null,n.removeAllListeners("exit"),n.terminate()}},cn),ke.unref?.()}function Z(n,r){clearTimeout(ke),G||dn();let o=++ln;return new Promise((d,s)=>{oe.set(o,{resolve:d,reject:s}),G.ref(),G.postMessage({id:o,type:n,payload:r})})}import{pageLanguage as un}from"../browser/shared/components/page.mjs";function ve(n){return String(n??"").replace(/[\\/:*?"<>|\u0000-\u001f\u007f]/g," ").replace(/\s+/g," ").trim().slice(0,100).trim()||"Untitled"}function xe(n,r){let o=n.lastIndexOf("."),[d,s]=o>0?[n.slice(0,o),n.slice(o)]:[n,""];for(let m=0;;m+=1){let a=m===0?n:`${d} ${m}${s}`;if(!r.has(a.toLowerCase()))return r.add(a.toLowerCase()),a}}function be(n,r){let o=n.split("/").slice(0,-1),d=r.split("/"),s=0;for(;s<o.length&&s<d.length-1&&o[s]===d[s];)s+=1;return[...o.slice(s).map(()=>".."),...d.slice(s)].map(a=>a===".."?a:encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29")).join("/")}import{documentDirectory as pn,documentFiles as hn}from"../browser/shared/workspace.mjs";var pt={markdown:"md",html:"html",pdf:"pdf"},gn={markdown:"text/markdown; charset=utf-8",html:"text/html; charset=utf-8",pdf:"application/pdf"},wn=n=>typeof n=="number"&&n>.1&&n<2;function ht(n){let{format:r,content:o="everything",subpages:d=!1,folders:s=!0,paper:m="A4",scale:a=1}=n??{};return Object.hasOwn(pt,r)&&["everything","no_files"].includes(o)&&typeof d=="boolean"&&typeof s=="boolean"&&["A4","A3","Letter","Legal","Tabloid"].includes(m)&&wn(a)}async function gt(n,r,o){let{format:d,content:s="everything",subpages:m=!1,folders:a=!0,paper:h="A4",scale:c=1}=r,y=pt[d],w=s==="everything",b=[],O=new Map,W=k=>O.get(k)??O.set(k,new Set).get(k),P=async(k,F)=>{let K=await o.titleOf(k),z=xe(`${ve(K)}.${y}`,W(F)),U=F?`${F}/${z}`:z,Q=a?U.slice(0,-(y.length+1)):"";if(b.push({slug:k,title:K,file:U,folder:Q,files:F?`${F}/assets`:"assets"}),m)for(let q of await o.childrenOf(k))await P(q,Q)};await P(n,"");let{links:E}=await o.links(),T=(k,F)=>Qe(F,k.slug,K=>{let z=d==="pdf"?null:b.find(U=>U.slug===K)?.file??null;return z&&be(k.file,z)},{blocks:d!=="markdown",links:E}),L=[],V=[];for(let k of b)if(d==="markdown"){await o.check(k.slug);let F=pn(k.slug,o.reportsDirectory),K=ie(await ut.readFile(hn(F).html,"utf8"),{slug:k.slug,mode:"words",reportsDirectory:o.reportsDirectory}),z=T(k,K),U=w&&!!ct(),{text:Q,files:q,charts:ee,charted:ne}=await Z("markdown",{source:z,title:k.title,pictures:U}),H=Q,te=new Map;if(q.forEach(({src:f,name:p},e)=>{te.has(f)||(te.set(f,`${k.files}/${xe(ve(p),W(k.files))}`),w&&V.push({from:fn.join(F,f),name:te.get(f)}));let t=te.get(f);H=H.replace(`\0F${e}\0`,()=>be(k.file,t))}),U&&ee>0&&H.includes("\0C")){let f=await dt(await o.offline(k.slug,{files:!0})).catch(()=>[]);H=H.replace(/^.*\u0000C(\d+)\u0000.*$/gm,(p,e)=>{let t=f[Number(e)];if(!t)return"\0gone\0";let i=`${k.files}/${xe(un(z)==="en"?ne[Number(e)]?"Chart.png":"Figure.png":ne[Number(e)]?"\u56FE\u8868.png":"\u56FE.png",W(k.files))}`;return L.push({name:i,data:t,later:!0}),p.replace(`\0C${e}\0`,()=>be(k.file,i))}).replace(/\n*\u0000gone\u0000\n*/g,`
|
|
71
|
+
|
|
72
|
+
`).replace(/^\n+|\n+$/g,"")}L.push({name:k.file,data:H})}else d==="html"?L.push({name:k.file,data:T(k,await o.offline(k.slug,{files:w}))}):L.push({name:k.file,data:await lt(T(k,await o.offline(k.slug,{files:w})),{paper:h,scale:c})});for(let k of V){let F=await ut.readFile(k.from).catch(()=>null);F&&L.push({name:k.name,data:F})}let B=[...L.filter(k=>!k.later&&b.some(F=>F.file===k.name)),...L.filter(k=>k.later||!b.some(F=>F.file===k.name))];return B.length===1?{name:B[0].name,type:gn[d],data:Buffer.isBuffer(B[0].data)?B[0].data:Buffer.from(B[0].data,"utf8")}:{name:`${ve(b[0].title)}.zip`,type:"application/zip",data:ot(B)}}var Fn=3600*1e3,Le=new Set,xt=!1,Pn=n=>{Le.add(n),!xt&&(xt=!0,process.once("exit",()=>{for(let r of Le)try{D.rmSync(r,{recursive:!0,force:!0})}catch{}}))},Rn=/^u-[a-f0-9]{16}$/;function bt({edits:n,workspace:r,reports:o,reportsDirectory:d,offline:s}){let m=null,a=()=>m??=D.promises.mkdtemp(X.join(Re.tmpdir(),"gallery-uploads-")).then(f=>(Pn(f),f)),h=new Map,c=(f,p,e)=>[f,{ok:!1,reason:p,...Sn(e)}],y=f=>D.promises.access(f).then(()=>!0,()=>!1),w=f=>jn(f,d),b=f=>vt(w(f)),O=async f=>{try{return JSON.parse(await D.promises.readFile(b(f).json,"utf8")).title||f}catch{return f}};function W(f){if(f.method!=="POST")return[405,{ok:!1,reason:"method"}];let p=f.headers.host??"",e=f.socket.localPort;return p!==`127.0.0.1:${e}`&&p!==`localhost:${e}`?[403,{ok:!1,reason:"host"}]:f.headers.origin!==`http://${p}`?[403,{ok:!1,reason:"origin"}]:f.headers["x-gallery-token"]!==n.token?[403,{ok:!1,reason:"token"}]:/^application\/octet-stream\b/i.test(f.headers["content-type"]??"")?Number(f.headers["content-length"]??0)>wt?c(413,"size","\u6587\u4EF6\u592A\u5927\uFF08\u6700\u591A 5GB\uFF09"):null:[415,{ok:!1,reason:"type"}]}async function P(){for(let[f,p]of h)Date.now()-p.at<Fn||(h.delete(f),await D.promises.rm(p.file,{force:!0}).catch(()=>{}))}async function E(f,p){let e=W(f);if(e)return f.resume(),A(p,...e);let t=new URL(f.url,"http://localhost").searchParams.get("name")?.replace(/[\u0000-\u001f]/g,"").trim()??"";if(!t||t.length>255)return f.resume(),A(p,...c(400,"name","\u6587\u4EF6\u540D\u4E0D\u5BF9"));await P();let i=`u-${kn(8).toString("hex")}`,l=X.join(await a(),i),u=0,g=new vn({transform(x,j,_){u+=x.length,_(u>wt?Object.assign(new Error("too-large"),{reason:"size"}):null,x)}});try{await xn(f,g,D.createWriteStream(l))}catch(x){return await D.promises.rm(l,{force:!0}).catch(()=>{}),x.reason==="size"?A(p,...c(413,"size","\u6587\u4EF6\u592A\u5927\uFF08\u6700\u591A 5GB\uFF09")):A(p,...c(400,"body","\u6587\u4EF6\u6CA1\u6709\u4F20\u5B8C"))}return h.set(i,{file:l,name:t,at:Date.now()}),A(p,200,{ok:!0,id:i})}async function T(f,p){let e=await n.check(f);if(e.error)return A(p,...e.error);let{slug:t,options:i}=e.body??{};if(typeof t!="string"||!kt.test(t)||!await y(b(t).html))return A(p,...c(404,"missing","\u627E\u4E0D\u5230\u8FD9\u4EFD\u6587\u6863"));if(!ht(i))return A(p,...c(400,"options","\u5BFC\u51FA\u9009\u9879\u4E0D\u5BF9"));try{let l=await s(),u=new Map,g=v=>(u.has(v)||u.set(v,n.handIn(v,{reader:!0}).then(C=>{if(!C.ok)throw Object.assign(new Error(C.message??C.reason),{reason:C.reason});if(C.repeated.length)throw Object.assign(new Error("check"),{reason:"check",slug:v,failures:ge(C.repeated)})})),u.get(v)),x=new Map,j={reportsDirectory:d,titleOf:O,childrenOf:async v=>(await r.outline()).children[v]??[],links:()=>yt(d),offline:async(v,C)=>{await g(v);let I=await l(v,C),J=i.format==="markdown"?null:bn(I);return J&&x.set(v,J),I},check:async v=>(await g(v),l.check(v))},{name:_,type:R,data:$}=await gt(t,i,j);x.size&&await(await we([...x.keys()])).keep([...x.keys()],x),p.writeHead(200,{"Content-Type":R,"Content-Length":$.length,"Content-Disposition":`attachment; filename*=UTF-8''${encodeURIComponent(_)}`,"X-File-Name":encodeURIComponent(_),"Cache-Control":"no-store"}),p.end($)}catch(l){if(l.reason==="check"){let u=await O(l.slug),g=l.component?De("\u300C{0}\u300D\u91CC\u7684\u7EC4\u4EF6 {1} \u6709\u9519\u8BEF\uFF0C\u6CA1\u6709\u751F\u6210\u6587\u4EF6\uFF1A\u53EF\u4EE5\u8BA9 AI \u68C0\u67E5\u8FD9\u4EFD\u6587\u6863\u5E76\u4FEE\u597D",u,l.component):l.failures.length>1?De("\u300C{0}\u300D\u6CA1\u6709\u901A\u8FC7\u5BFC\u51FA\u524D\u7684\u68C0\u67E5\uFF0C\u6CA1\u6709\u751F\u6210\u6587\u4EF6\uFF1A{1}\uFF08\u5171 {2} \u5904\uFF1A\u53EF\u4EE5\u8BA9 AI \u68C0\u67E5\u8FD9\u4EFD\u6587\u6863\uFF0C\u5217\u51FA\u5168\u90E8\u5E76\u4FEE\u597D\uFF09",u,l.failures[0],l.failures.length):De("\u300C{0}\u300D\u6CA1\u6709\u901A\u8FC7\u5BFC\u51FA\u524D\u7684\u68C0\u67E5\uFF0C\u6CA1\u6709\u751F\u6210\u6587\u4EF6\uFF1A{1}",u,l.failures[0]);return A(p,...c(422,"check",g))}A(p,...c(l.reason==="browser"?422:l.reason==="busy"?409:l.reason==="missing"?404:500,l.reason??"export",l))}}async function L(f,p){let e=await n.check(f);if(e.error)return A(p,...e.error);let{slug:t}=e.body??{},i=(await n.readTaken(t,{wait:0}))?.text??null;if(i===null)return A(p,...c(404,"missing","\u627E\u4E0D\u5230\u8FD9\u4EFD\u6587\u6863"));let l=`http://${f.headers.host}`,{named:u}=await yt(d),g=Ze(ie(i,{slug:t,mode:"words",reportsDirectory:d}),t,R=>R.slug&&Cn(l,R,u),u),{text:x,files:j}=await Z("markdown",{source:g,title:await O(t),pictures:!1}),_=x.replace(/\u0000F(\d+)\u0000/g,(R,$)=>{let{src:v,kind:C}=j[Number($)];return encodeURI(`${l}${$n(C==="image"?"asset":"file",t,v)}`)});return A(p,200,{ok:!0,text:_})}let V=async f=>{let p=await n.readTaken(f,{wait:0});return{source:p?.text??"",version:p?.version??null}},B=async(f,p=null)=>{let{source:e,version:t}=p??await V(f),i="\u5199\u4F5C\u504F\u597D",{text:l,files:u}=await Z("markdown",{source:e,title:i,pictures:!1}),g=l.split(`
|
|
73
|
+
`).slice(1).join(`
|
|
74
|
+
`).replace(/^[\s>]*(?:```.*|\d+\.|- \[x\])/gm,"").replace(/<\/?aside>/g,"");if(!/[\p{L}\p{N}]|\u0000F\d+\u0000/u.test(g))return{markdown:`# ${i}
|
|
75
|
+
`,empty:!0,version:t};let x=X.relative(d,w(f)).split(X.sep).join("/");return{markdown:`${l.replace(/\u0000F(\d+)\u0000/g,(j,_)=>encodeURI(`${x}/${u[Number(_)].src}`))}
|
|
76
|
+
`,empty:!1,version:t}},k=f=>b(f).json,F=async f=>{try{let p=JSON.parse(await D.promises.readFile(k(f),"utf8"));return p&&typeof p=="object"?p:null}catch{return null}},K=f=>yn("sha256").update(f).digest("hex").slice(0,16);async function z(f,p,e,t){let i=await F(f);if(!i||e===null)return;let{synced:l,...u}=i,g={file:K(p),page:e,unshown:t},x=i.madeSame;l===void 0&&x?.file===g.file&&x?.page===g.page&&JSON.stringify(x?.unshown)===JSON.stringify(t)||await Ae(k(f),`${JSON.stringify({...u,madeSame:g},null,2)}
|
|
77
|
+
`)}async function U(f,p){let e=await D.promises.mkdtemp(X.join(Re.tmpdir(),"gallery-preferences-"));try{let i=(await Z("import",{uploads:[{file:p,name:"preferences.md"}],scratch:e})).pages[0]??{nodes:[],raws:[],files:[],icon:null,lang:null},l=w(f),u=await F(f)??{},g=vt(l).html,x=await D.promises.readFile(g,"utf8").catch(()=>""),j=/<html\b[^>]*\slang="([^"]*)"/i.exec(x)?.[1]??null,{html:_}=await ze(f,u.title||"\u5199\u4F5C\u504F\u597D",u.description||"",{blank:!0,lang:j}),R=typeof u.icon=="string"&&u.icon?u.icon:null,$=await Z("fill",{source:_,nodes:i.nodes,icon:R,raws:i.raws,lang:i.lang});i.files.length&&await D.promises.mkdir(X.join(l,"assets"),{recursive:!0});for(let{from:C,name:I}of i.files){let J=X.join(l,"assets",I);await y(J)||await D.promises.copyFile(C,J)}let v=await D.promises.readFile(g,"utf8").catch(()=>null);v!==null&&n.keepVersion?.(f,v),await Ae(g,he($))}finally{await D.promises.rm(e,{recursive:!0,force:!0}).catch(()=>{})}}async function Q(f,p){let e=await n.check(f);if(e.error)return A(p,...e.error);let t=e.body?.opening===!0,i=await On(d);if(!i)return A(p,...c(404,"missing","\u8FD8\u6CA1\u6709\u5199\u4F5C\u504F\u597D"));let l=null,u=(g,x)=>[200,{ok:!0,path:X.resolve(l),remade:g,unshown:x}];return n.respond(async()=>{let g;({file:l,text:g}=await En(d));let x=await V(i),j=(await F(i))?.madeSame??null,_=j===null||j.page===x.version,R=j!==null&&_&&j.file===K(g);if(t&&R&&Array.isArray(j.unshown))return u(!1,j.unshown);let[$,v,C,I]=[g,"",x.version,!1];if(t&&!_)await U(i,l),{markdown:v,version:C}=await B(i),I=!0;else{let S=await B(i,x),re=g.trim()===S.markdown.trim()||S.empty&&!Tn(g);v=S.markdown,t?!re&&!R&&(await U(i,l),{markdown:v,version:C}=await B(i),I=!0):re||(await Ae(l,S.markdown),$=S.markdown)}let J=_n($,v);return await z(i,$,C,J),u(I,J)})(f,p)}async function q(f,p){let e=await n.check(f);if(e.error)return A(p,...e.error);let{uploads:t,parent:i="",from:l,language:u}=e.body??{},g={said:typeof l=="string"&&l.includes("{0}")&&l.length<=60?l:"\u5BFC\u5165\u81EA {0}",lang:u==="en"?"en":null};if(!Array.isArray(t)||t.length===0||t.length>1e3||!t.every(v=>typeof v=="string"&&Rn.test(v)))return A(p,...c(400,"body"));let x=t.map(v=>h.get(v)).filter(Boolean);if(x.length!==t.length)return A(p,...c(410,"gone","\u4E0A\u4F20\u7684\u6587\u4EF6\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5BFC\u5165"));for(let v of t)h.delete(v);let j=typeof i=="string"&&kt.test(i)&&await y(X.join(d,i))?i:"",_=await D.promises.mkdtemp(X.join(Re.tmpdir(),"gallery-import-")),R=()=>Promise.all([D.promises.rm(_,{recursive:!0,force:!0}),...x.map(({file:v})=>D.promises.rm(v,{force:!0}))]).catch(()=>{}),$;try{$=await Z("import",{uploads:x.map(({file:v,name:C})=>({file:v,name:C})),scratch:_})}catch(v){return await R(),A(p,...c(500,"convert",v))}return n.respond(async()=>{try{let{made:v,top:C}=await at($.pages,{create:o.create,slugOf:()=>r.freeSlug("doc"),folderOf:w,fill:I=>Z("fill",I),place:r.place,under:j,...g});return[200,{ok:!0,pages:v.length,reports:C,skipped:$.skipped,missing:ee($.pages)}]}finally{await R()}})(f,p)}let ee=f=>[...new Set(f.flatMap(function p(e){return[...(e.notes??[]).filter(t=>t.kind==="picture-missing").map(t=>t.name),...e.children.flatMap(p)]}))],ne={export:T,markdown:L,upload:E,import:q,preferences:Q};function H(f,p,e){return Object.hasOwn(ne,e)?ne[e](f,p).catch(t=>{p.headersSent||A(p,...c(500,"transfer",t))}):A(p,404,{ok:!1,reason:"unknown"})}async function te(){let f=m;m=null,h.clear();let p=await f?.catch(()=>null);p&&(Le.delete(p),await D.promises.rm(p,{recursive:!0,force:!0}).catch(()=>{}))}return{handle:H,close:te}}function St({settled:n,tell:r,delay:o=120,recheck:d=1e3}){let s=new Map,m=(a,h=o)=>{clearTimeout(s.get(a));let c=setTimeout(async()=>{let y=await n(a).catch(()=>({source:null,held:!1,wait:0}));if(s.get(a)===c){if(y.held)return m(a,Math.min(Math.max(y.wait,50),d));if(y.wait>0)return m(a,y.wait);await r(a,y)}},h);s.set(a,c)};return m}import An from"node:fs/promises";import{packageScript as Dn}from"../browser/shared/export-wrap.mjs";import{serveFound as Ln}from"../browser/shared/http.mjs";import{extensionOf as In,mediaTypeOf as Mn}from"../browser/shared/media.mjs";var Nn="/__gallery/components/",Wn=/^\/__gallery\/components\/([a-z0-9][a-z0-9-]*\/[a-z0-9][a-z0-9-]*)\/(.+)$/,zn={js:"text/javascript; charset=utf-8",mjs:"text/javascript; charset=utf-8",css:"text/css; charset=utf-8",wasm:"application/wasm"};async function $t(n,r,o,{root:d}){if(!n.startsWith(Nn))return!1;let[,s,m]=Wn.exec(n)??[],a=s?Y(d).packages.get(s):null,h=a?.files.includes(m)?Ke(a,m):null,c=h?await An.readFile(h).catch(()=>null):null,y=c&&m==="kit.js"?Buffer.from(Dn(c.toString("utf8").replace(/^\uFEFF/,""))):c,w=y&&r===a.stamp&&r===Je(a);return Ln(o,y,{type:y?zn[In(m)]??Mn(m):void 0,headers:{"X-Content-Type-Options":"nosniff","Cache-Control":w?"max-age=31536000, immutable":"no-store"}}),!0}import{LISTED_BLOCKS as Ct}from"../browser/editor/components/registry.mjs";import{PACKAGE_ID as Un}from"../browser/shared/components/installed.mjs";import{inLanguage as jt,refusal as Bn,said as Se}from"../browser/shared/i18n/index.mjs";function Ot({root:n,taken:r}){let o=()=>{let m=Y(n);return{packages:Xe(m),blocks:Ct.map(({id:a,name:h,hideable:c})=>({id:a,name:{zh:jt("zh",h),en:jt("en",h)},hidden:c&&m.settings.hidden.includes(a),hideable:c})),problem:Ge(m)}},d=({id:m,hidden:a,disabled:h})=>{if(![a,h].every(y=>y===void 0||typeof y=="boolean"))return Se("\u5F00\u5173\u7684\u503C\u4E0D\u5BF9");let c=Ct.find(y=>y.id===m);return c?h!==void 0?Se("\u5185\u7F6E\u5757\u53EA\u80FD\u9690\u85CF\uFF0C\u4E0D\u80FD\u505C\u7528"):a&&!c.hideable?Se("\u8FD9\u4E2A\u5757\u4E0D\u80FD\u9690\u85CF"):null:typeof m=="string"&&Un.test(m)?null:Se("\u6CA1\u6709\u8FD9\u4E2A\u7EC4\u4EF6")};return{read:o,write:async m=>{let a=d(m);if(a)throw Bn(a);return await Be(n,m),r(),o()}}}import Hn from"node:path";import{exportsDirectory as Gn}from"../browser/shared/paths.mjs";async function Et(n,r){let o=Hn.join(Gn,`${r}.html`),d=await we([r]),s=await n.handInReport(r,{reader:!0});if(!s.ok)return{problems:[],refused:{reason:s.reason,message:s.message},file:o};if(s.repeated.length)return{problems:ge(s.repeated),file:o};let{exported:m,failures:a}=await rt([r]);return await d.keep(m.map(h=>h.slug)),{problems:a.get(r)??[],file:o}}import Kn from"node:fs/promises";import Jn from"node:path";import{MEDIA_ROUTES as Tt,mediaTypeOf as Xn}from"../browser/shared/media.mjs";import{serveFound as Vn}from"../browser/shared/http.mjs";import{slugPattern as Yn}from"../browser/shared/reports.mjs";import{documentDirectory as Zn}from"../browser/shared/workspace.mjs";var Qn={asset:n=>({"Content-Type":Xn(n),"Cache-Control":"no-cache"}),file:()=>({"Content-Type":"application/octet-stream","Content-Disposition":"attachment","X-Content-Type-Options":"nosniff","Cache-Control":"no-cache"}),embed:n=>/\.pdf$/i.test(n)?{"Content-Type":"application/pdf","X-Content-Type-Options":"nosniff","Cache-Control":"no-cache"}:{"Content-Type":"text/html; charset=utf-8","Content-Security-Policy":"sandbox allow-scripts allow-popups allow-forms allow-modals","X-Content-Type-Options":"nosniff","Cache-Control":"no-cache"}},qn=new RegExp(`^/__gallery/edit/(${Object.keys(Tt).join("|")})/([^/]+)/(assets/[^/]+)$`);async function _t(n,r,{reportsDirectory:o}){let[,d,s,m]=qn.exec(n)??[];if(!d)return!1;let a=Yn.test(s)&&Tt[d](m)?await Kn.readFile(Jn.join(Zn(s,o),m)).catch(()=>null):null;return Vn(r,a,{headers:Qn[d](m)}),!0}function Ft({max:n=20}={}){let r=new Map;return{get(o,d,s){let m=`${o} ${d}`,a=r.get(m);return!a||a.text!==s?null:(r.delete(m),r.set(m,a),a.page)},set(o,d,s,m){let a=`${o} ${d}`;for(r.delete(a),r.set(a,{slug:o,text:s,page:m});r.size>n;)r.delete(r.keys().next().value)},clear(){r.clear()},forget(o){for(let[d,s]of r)s.slug===o&&r.delete(d)},get size(){return r.size}}}import{createHash as er}from"node:crypto";import{readFileSync as tr}from"node:fs";import Pt from"node:fs/promises";import nr from"node:path";import{release as rr,releaseFile as or}from"../browser/shared/paths.mjs";async function $e(n){let r=await Promise.all(n.map(d=>Pt.stat(d).then(({mtimeMs:s,size:m})=>`${s} ${m}`,()=>"none"))),o=er("sha256");return n.forEach((d,s)=>o.update(`${d}\0${r[s]}
|
|
78
|
+
`)),o.digest("hex").slice(0,16)}function Rt(n,r){let o=null,d=async()=>(await Promise.all(n.map(async s=>(await Pt.readdir(s,{recursive:!0,withFileTypes:!0}).catch(()=>[])).filter(a=>a.isFile()).map(a=>nr.join(a.parentPath,a.name))))).flat().filter(r).sort();return{files:()=>o??=d(),changed:()=>{o=null}}}var Ie=rr?JSON.parse(tr(or,"utf8")).stamps:null;var Ht=Bt.source.slice(1,-1),wr=new RegExp(`^/generated/(${Ht})\\.html$`),yr=new RegExp(`^/(${Ht})/(?:doc|report)\\.html$`),Gt="/__gallery/events",ae=ar,Kt=/^\/__gallery\/edit\/(v\/[a-f0-9]{16}\/)?src\/((?:shared(?:\/components|\/emoji|\/i18n)?\/|editor\/(?:page|components)(?:\/[a-z]+(?:-[a-z]+)*){0,2}\/(?!files?\.mjs))[a-z]+(?:-[a-z]+)*\.mjs)$/,kr=/^\/__gallery\/edit\/(?:v\/[a-f0-9]{16}\/)?src\/(shared\/emoji\/data\/[a-z]+(?:-[a-z]+)*\.(json|bin))$/,Ce=[M.join(ae,"editor","page"),M.join(ae,"editor","components"),M.join(ae,"shared")],vr=n=>Kt.test(`/__gallery/edit/src/${M.relative(ae,n).split(M.sep).join("/")}`);var xr=[zt,M.join(ae,"shared","components")],Na=[zt,...Ce],je={"Cache-Control":"no-store"},Nt={"Cache-Control":"max-age=31536000, immutable"},Wt=(n,r,o)=>Ut(n,{type:r,headers:je,body:o});function br(n){let r=n.headers?.host??"",o=n.socket?.localPort;return!!o&&(r===`127.0.0.1:${o}`||r===`localhost:${o}`)}var Sr=(n,r,o)=>`<script>
|
|
79
|
+
(() => {
|
|
80
|
+
document.currentScript.remove();
|
|
81
|
+
const solo = new URLSearchParams(location.search).has("solo");
|
|
82
|
+
let catalog = "${o}";
|
|
83
|
+
const holds = (ids) => document.querySelector(ids === undefined ? "[${Dt}]" : ids.split(",").map((id) => '[${Dt}="' + id + '"]').join());
|
|
84
|
+
const events = new EventSource("${Gt}?slug=${n}");
|
|
85
|
+
events.onmessage = (event) => {
|
|
86
|
+
const [kind, next, ids] = event.data.split(" ");
|
|
87
|
+
if (kind === "notes") return void window.dispatchEvent(new CustomEvent("doc-annotations-changed", { detail: { version: next ?? "" } }));
|
|
88
|
+
if (kind === "settings") return void window.dispatchEvent(new CustomEvent("doc-settings-changed", { detail: { hidden: next ? next.split(",") : [], disabled: ids ? ids.split(",") : [] } }));
|
|
89
|
+
if (kind === "components") {
|
|
90
|
+
if (document.readyState === "loading") return void document.addEventListener("DOMContentLoaded", () => events.onmessage(event), { once: true });
|
|
91
|
+
if (solo || next === catalog) return;
|
|
92
|
+
catalog = next;
|
|
93
|
+
if (!holds(ids)) return void window.dispatchEvent(new CustomEvent("doc-catalog-changed", { detail: { ids: ids === undefined ? null : ids.split(",").filter(Boolean) } }));
|
|
94
|
+
}
|
|
95
|
+
if (window.__galleryEditBusy) {
|
|
96
|
+
window.dispatchEvent(new CustomEvent({ report: "doc-source-changed", assets: "doc-assets-changed", components: "doc-components-changed" }[kind], { detail: { version: next ?? null } }));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (kind === "report" && next === "${r}") return;
|
|
100
|
+
if (window.__galleryEditReload) return window.__galleryEditReload(); // in a workbench: swapped in, no reload seen
|
|
101
|
+
location.reload();
|
|
102
|
+
};
|
|
103
|
+
})();
|
|
104
|
+
</script>`;function $r(n,r){let o=M.relative(n,r).split(M.sep);if(o[0]===".."||M.isAbsolute(o[0])||o[0]==="")return null;if(o.length===1&&o[0]===It)return{slug:null,name:It,packages:!0};let d=o[0]===".gallery"&&o[1]==="pages"&&o.length>=3,[s,...m]=d?o.slice(2):o,a=!d&&(process.platform==="win32"?s.toLowerCase():s)===Lt;return!(a||Bt.test(s))||s==="exports"||m.some(h=>h.startsWith("."))?null:{slug:a?Lt:s,name:m.length===1?m[0]:null,...a?{packages:a}:{}}}function Me(n){let r=y=>process.platform==="win32"?M.resolve(y).toLowerCase():M.resolve(y),{gallery:o,pages:d,exports:s}=gr(n),[m,a,h]=[r(o),r(d),r(s)],c=(y,w)=>y===w||y.startsWith(w+M.sep);return y=>{let w=r(y);return c(w,m)&&w!==m&&!c(w,a)||c(w,h)}}var de=(n,r,o)=>new RegExp(`</${r}>`,"i").test(n)?n.replace(new RegExp(`</${r}>`,"i"),()=>` ${o}
|
|
105
|
+
</${r}>`):`${n}
|
|
106
|
+
${o}`;function Jt({stateDirectory:n=sr,logger:r=console,kind:o="dev",workbenchPage:d=null,closeServer:s=async()=>{},exit:m=()=>process.exit(0)}={}){let a=new Set,h=(e,t="",i="report")=>{for(let l of a)(!e||l.slug===e)&&l.response.write(`data: ${e?`${i} ${t}`:"assets"}
|
|
107
|
+
|
|
108
|
+
`)},c=it({stateDirectory:n,finish:he,log:e=>r.info?.(`[gallery] ${e}`)}),y=(e,t,i,{lang:l=null,page:u=!1}={})=>We(e,t,i,{blank:!0,lang:l,page:u}),w=null,b=null,O=()=>b??=(async()=>{for(let e of a)e.response.end();a.clear(),await Promise.race([s().catch(()=>{}),new Promise(e=>setTimeout(e,3e3))]),await w?.().catch(()=>{}),await P.close(),m()})(),W=st({server:{kind:o,version:dr,stop:O},edits:c,reports:{create:y,export:e=>Et(c,e),words:(e,t)=>ie(e,{slug:t,mode:"words",reportsDirectory:N})},components:Ot({root:N,taken:()=>ee.taken()})}),P=bt({edits:c,workspace:W,reports:{create:y},reportsDirectory:N,offline:nt}),E=(e,t,{present:i=!1,editorModule:l,kit:u}={})=>{let g=t,x="",j="",_=!0;try{i||({html:g,snippet:x,head:j}=c.preview(e,t,{editor:l,kitTags:$=>Ye($,u)}))}catch($){_=!1,r.warn(`[gallery] text editing unavailable for ${e}: ${$.message}`)}if({html:g}=qe(g,{slug:e,mode:"preview",kit:u}),g=de(g,"head",Sr(e,fe(t),Y(N).stamp)),g=de(g,"head",`<script data-doc-dev>${cr()}</script>`),j&&(g=de(g,"head",j)),i)return{html:de(g,"head",`<style data-doc-present>.doc-display { display: none !important; }</style>
|
|
109
|
+
<script type="module" src="/__gallery/edit/src/editor/page/present-links.mjs" data-doc-dev></script>`),whole:_};let R="";try{R=ft(e,t)}catch($){_=!1,r.warn(`[gallery] checks unavailable for ${e}: ${$.message}`)}return R&&(g=de(g,"body",R)),{html:x?de(g,"body",x):g,whole:_}},T=Ft(),L=Rt(Ce,vr),V=e=>{let t=Mt(e,N);return[t,M.join(t,"assets")]},B=()=>Ie?.editor??L.files().then($e),k=e=>Ie?.kit?.[e.id]??$e([Fe(e)]),F=async(e,t,{present:i})=>{let[l,u,g]=await Promise.all([i?"":B(),Promise.all(pe.map(k)),$e(V(e))]),x=[i?"present":l,...u,g,Y(N).stamp].join(" "),j=T.get(e,x,t);if(j!==null)return i||c.opened(t),j;let _=new Map(pe.map((C,I)=>[C,u[I]])),R=i?void 0:`/__gallery/edit/v/${l}/src/editor/page/editor.mjs`,{html:$,whole:v}=E(e,t,{present:i,editorModule:R,kit:C=>`${_e(C)}?v=${_.get(C)}`});return v&&T.set(e,x,t,$),$};async function K(e,t,i){try{if(!br(e))return At(t,403,{ok:!1,reason:"host"});let l=new URL(e.url||"/","http://localhost"),u=decodeURI(l.pathname);if(u===Gt){t.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-store",Connection:"keep-alive"}),t.write(`retry: 3000
|
|
110
|
+
|
|
111
|
+
`);let S={slug:l.searchParams.get("slug"),response:t};a.add(S);let{stamp:re,settings:qt}=Y(N);t.write(`data: components ${re}
|
|
112
|
+
|
|
113
|
+
`),t.write(`data: ${Te(qt)}
|
|
114
|
+
|
|
115
|
+
`),e.on("close",()=>a.delete(S));return}if(u==="/__gallery/edit/commit")return c.commit(e,t);if(u==="/__gallery/edit/reverted")return c.reverted(e,t);if(u==="/__gallery/edit/hand-in")return c.handInRequest(e,t);if(u==="/__gallery/edit/settle")return c.settleRequest(e,t);if(u==="/__gallery/edit/upload")return c.upload(e,t);if(u==="/__gallery/edit/unfurl")return c.unfurl(e,t);if(u==="/__gallery/edit/emoji-library"){if(e.method==="POST")return c.addEmoji(e,t);let[S,re]=await c.listEmojis();return At(t,S,re)}if(u==="/__gallery/edit/icon"){let S=Ue({value:l.searchParams.get("value")??"",slug:l.searchParams.get("slug"),tab:l.searchParams.has("tab")});return le(t,S?.body,{type:S?.type,headers:{"Cache-Control":"max-age=31536000, immutable"}})}if(await _t(u,t,{reportsDirectory:N})||await $t(u,l.searchParams.get("v"),t,{root:N}))return;let g=u.match(/^\/__gallery\/edit\/emoji-library\/([^/]+)$/)?.[1];if(g){let S=await c.readEmoji(g);return le(t,S?.body,{type:S?.type,headers:{"Cache-Control":"no-cache"}})}if(u==="/__gallery/edit/frameable")return c.frameable(e,t);if(u==="/__gallery/edit/annotations")return c.annotations(e,t);let x=u.match(/^\/__gallery\/transfer\/([a-z]+)$/)?.[1];if(x)return P.handle(e,t,x);let j=u.match(/^\/__gallery\/workspace\/([a-z]+)$/)?.[1];if(j)return W.handle(e,t,j);let[,_,R]=u.match(Kt)??[];if(R){let S=await ce.readFile(M.join(ae,R),"utf8").catch(()=>null);return le(t,S,{type:"text/javascript; charset=utf-8",headers:_?Nt:je})}let $=l.searchParams.has("v")&&pe.find(S=>_e(S)===u);if($){let S=await ce.readFile(Fe($)).catch(()=>null);return le(t,S,{type:u.endsWith(".css")?"text/css; charset=utf-8":"text/javascript; charset=utf-8",headers:Nt})}if(u==="/__gallery/edit/mhchem.js"){let S=await ce.readFile(Ve).catch(()=>null);return le(t,S,{type:"text/javascript; charset=utf-8",headers:je})}let[,v,C]=u.match(kr)??[];if(v){let S=await ce.readFile(M.join(ae,v)).catch(()=>null);return le(t,S,{type:C==="json"?"application/json; charset=utf-8":"application/octet-stream",headers:{"Cache-Control":"max-age=86400"}})}if(d&&(u==="/"||u==="/index.html"))return Wt(t,"text/html; charset=utf-8",await d(l.pathname,e));let I=u.match(wr)?.[1];if(!I){let S=u.match(yr)?.[1];return hr(S)&&await ce.access(fr(Mt(S,N)).html).then(()=>!0,()=>!1)?Ut(t,{status:302,headers:{Location:`/generated/${S}.html${l.search}`,...je}}):i()}let J=await c.readTaken(I);if(J===null)return i();Wt(t,"text/html; charset=utf-8",await F(I,J.text,{present:l.searchParams.has("present")}))}catch(l){i(l)}}let z=new Map,U=(e,t)=>{clearTimeout(z.get(e)),z.set(e,setTimeout(t,120))},Q=St({settled:c.settled,async tell(e,t){let i=await c.read(e,t.source).catch(l=>(r.error(`[gallery] ${e}: ${l.message}`),{version:fe(t.source??"")}));h(e,i?.version??fe("")),c.checkAnnotations(e).catch(l=>r.error(`[gallery] ${e}: annotations not checked: ${l.message}`))}}),q=({id:e,problem:t,off:i})=>i||r.warn(`[gallery] component package ${e} does not load: ${He("en",t)}`),ee=mt({root:N,tell({stamp:e,problems:t,settings:i},l){for(let u of l)t.has(u)&&q(t.get(u));for(let{response:u}of a)u.write(`data: components ${e} ${l.filter(g=>mr.test(g)).join(",")}
|
|
116
|
+
|
|
117
|
+
`),u.write(`data: ${Te(i)}
|
|
118
|
+
|
|
119
|
+
`)}});for(let e of Y(N).problems.values())q(e);let ne=Me(N),H=(e,t)=>!ir&&t.some(i=>e.startsWith(i+M.sep));function te(e,t){if(e==="reset"){T.clear(),L.changed(),ee.changed();return}if(ne(t))return;let i=$r(N,t);if(i?.packages&&ee.changed(),i?.slug&&!(i.name&&ur(i.name))&&T.forget(i.slug),i&&(/^(doc|report)\.json$/.test(i.name??"")||/^(add|unlink)Dir$/.test(e)&&i.name===null)&&T.clear(),/^(add|unlink)(Dir)?$/.test(e)&&H(t,Ce)&&L.changed(),i?.name&&(pr(i.name)||/^(doc|report)\.json$/.test(i.name)))Q(i.slug);else if(i?.name==="annotations.json"){let{slug:l}=i;U(`notes:${l}`,async()=>{let u=await ce.readFile(t,"utf8").catch(()=>null);h(l,u===null?"":fe(u),"notes")})}else H(t,xr)?U("kit",async()=>{try{await tt({fresh:!0}),h()}catch(l){r.error(`[gallery] shared kit rebuild failed: ${l.message}`)}}):H(t,Ce)&&U("editor",()=>h())}async function f(e){w=await lr({reportsDirectory:N,port:e,token:c.token,kind:o})}async function p(){for(let e of z.values())clearTimeout(e);ee.close(),await w?.().catch(()=>{}),w=null,await P.close()}return{handle:K,changed:te,listening:f,close:p,stop:O,edits:c,get listeners(){return a.size}}}import Cr from"node:fs/promises";import me from"node:path";import{serve as Xt}from"../browser/shared/http.mjs";var jr={".html":"text/html; charset=utf-8",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".json":"application/json; charset=utf-8",".map":"application/json; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".ico":"image/x-icon",".woff2":"font/woff2",".woff":"font/woff",".ttf":"font/ttf",".txt":"text/plain; charset=utf-8"},Or=n=>jr[me.extname(n).toLowerCase()]??"application/octet-stream";function Er(n,r){if(/%(?:2f|5c|00)/i.test(r)||/[\\\0]/.test(r))return null;let o;try{o=decodeURIComponent(r)}catch{return null}let d=o.split("/");if(d.some(a=>a===""||a==="."||a===".."||/[\\\0:]/.test(a)))return null;let s=me.resolve(n,...d),m=me.relative(n,s);return m&&!m.startsWith("..")&&!me.isAbsolute(m)?s:null}async function Vt(n,r,{web:o,kit:d,vendor:s}){if(n.method!=="GET"&&n.method!=="HEAD")return!1;let m=new URL(n.url||"/","http://localhost").pathname,a=null,h=null;if(m==="/"||m==="/index.html"){if(!o)return!1;[a,h]=[me.join(o,"index.html"),{"Cache-Control":"no-store"}]}else{let w=[["/assets/",o&&me.join(o,"assets"),"max-age=31536000, immutable"],["/kit/",d,"no-cache"],["/vendor/",s,"no-cache"]].find(([b,O])=>O&&m.startsWith(b));if(!w)return!1;a=Er(w[1],m.slice(w[0].length)),h={"Cache-Control":w[2]}}let c=a?await Cr.readFile(a).catch(()=>null):null;return c?(Xt(r,{type:Or(a),headers:{...h,"X-Content-Type-Options":"nosniff"},body:n.method==="HEAD"?void 0:c}),!0):(Xt(r,{status:404}),!0)}import se from"node:fs";import ue from"node:path";import{isSlugName as Yt,layoutOf as Tr}from"../browser/shared/workspace.mjs";function _r(n){let{components:r,gallery:o,pages:d}=Tr(n),s=(h,c)=>{try{return se.readdirSync(h,{withFileTypes:!0}).filter(y=>y.isDirectory()&&c(y.name)).map(y=>ue.join(h,y.name))}catch{return[]}},m=[...s(n,h=>Yt(h)),...s(d,h=>Yt(h))],a=h=>[h,...s(h,c=>!c.startsWith(".")).flatMap(a)];return[...new Set([n,...[o,d].filter(h=>se.existsSync(h)),...m,...m.map(h=>ue.join(h,"assets")).filter(h=>se.existsSync(h)),...se.existsSync(r)?a(r):[]])]}function Zt(n,r,{folders:o=process.platform==="linux"}={}){let d=Me(n),s=(w,b)=>{d(b)||ue.basename(b).startsWith(".")||se.stat(b,(O,W)=>{if(O)return r(O.code==="ENOENT"?"unlink":"change",b);let P=W.isDirectory();r(w==="rename"?P?"addDir":"add":P?"addDir":"change",b)})},m=()=>{};if(!o)try{let w=se.watch(n,{recursive:!0},(b,O)=>O?s(b,ue.join(n,O.toString())):r("reset",n));return w.on("error",m),{close:()=>w.close()}}catch(w){if(w.code!=="ERR_FEATURE_UNAVAILABLE_ON_PLATFORM")throw w}let a=new Map,h=null,c=()=>{let w=new Set(_r(n));for(let[b,O]of a)w.has(b)||(O.close(),a.delete(b));for(let b of w)if(!a.has(b))try{let O=se.watch(b,(W,P)=>{if(!P)return r("reset",b);W==="rename"&&y(),s(W,ue.join(b,P.toString()))});O.on("error",m),a.set(b,O)}catch{}},y=()=>{h??=setTimeout(()=>{h=null,c()},50)};return c(),{close(){clearTimeout(h);for(let w of a.values())w.close();a.clear()},get folders(){return[...a.keys()]}}}async function as({port:n,web:r=Ir,kind:o=process.env.GALLERY_SERVER_KIND==="dev"?"dev":"cli",stateDirectory:d=Rr,exit:s=(c=0)=>process.exit(c),watch:m=!0,signals:a=!0,log:h=console}={}){await Mr(Ne);let c=null,y=null,w=null,b=Nr(Ne),O=async()=>{y?.close(),w&&Oe.unwatchFile(Ee,w),await Fr.writeFile(b.lastPortFile,`${n}
|
|
120
|
+
`).catch(()=>{}),await new Promise(E=>{c.close(()=>E()),c.closeAllConnections()})},P=Jt({stateDirectory:d,logger:{info:E=>h.log(E),warn:E=>h.warn(E),error:E=>h.error(E)},kind:o,closeServer:O,exit:()=>s(0)});if(c=Pr.createServer((E,T)=>{P.handle(E,T,async L=>{if(L){h.error(`[gallery] ${E.method} ${E.url}: ${L.stack??L.message}`),T.headersSent?T.end():Qt(T,{status:500});return}try{if(await Vt(E,T,{web:r,kit:Ar,vendor:Lr}))return}catch(V){h.error(`[gallery] ${E.url}: ${V.message}`)}T.headersSent||Qt(T,{status:404})})}),c.keepAliveTimeout=5e3,await new Promise((E,T)=>{c.once("error",T),c.listen(n,"127.0.0.1",()=>{c.off("error",T),E()})}),n=c.address().port,await P.listening(n),m&&(y=Zt(Ne,P.changed)),Dr){let E=Oe.readFileSync(Ee,"utf8");w=()=>{let T=null;try{T=Oe.readFileSync(Ee,"utf8")}catch{}T!==E&&(h.log("[gallery] The package was replaced (another version installed): this server stops; the next gallery command starts the new one."),P.stop())},Oe.watchFile(Ee,{interval:3e3,persistent:!1},w)}if(a)for(let E of["SIGINT","SIGTERM","SIGHUP"])process.once(E,()=>P.stop());return{server:c,port:n,routes:P,async close(){await O(),await P.close()}}}export{as as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-6U2SLSDN.mjs";import"./chunk-ITNLYXXV.mjs";import"./chunk-HQQMJCQJ.mjs";import"./chunk-QYKCJ7FG.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TDQP3DKQ.mjs";import"./chunk-5FRMCDPY.mjs";import"./chunk-E7VYDG2X.mjs";import"./chunk-NFIBI4IP.mjs";import"./chunk-W63L7367.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{e as BASELINE_FROM,h as adoptIdless,g as baselineOf,b as blocksOf,k as exportBaselines,j as exportedText,i as hasBaseline,d as packageStamps,c as pageOf,l as previewBaseline,a as rankOf,f as readBaseline};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{a as i,l as C}from"./chunk-QYKCJ7FG.mjs";import{a as g,c as w}from"./chunk-HYMEEXKN.mjs";import{d as j,k as A,l as S}from"./chunk-W63L7367.mjs";import f from"node:path";import{attr as P,hasClass as H,walk as D}from"../browser/shared/html-tree.mjs";import{projectRoot as F,sdkDirectory as L,typeRoots as V}from"../browser/shared/paths.mjs";var Y=new Set(["application/ecmascript","application/javascript","application/x-ecmascript","application/x-javascript","text/ecmascript","text/javascript","text/javascript1.0","text/javascript1.1","text/javascript1.2","text/javascript1.3","text/javascript1.4","text/javascript1.5","text/jscript","text/livescript","text/x-ecmascript","text/x-javascript"]);function y(t,{diffs:s=!1,tree:r=g(t)}={}){let n=[];return D(r,a=>{if(a.tagName!=="script"||P(a,"src")!==void 0)return;let o=(P(a,"type")||"").trim().toLowerCase(),l=s&&o==="application/json"&&a.parentNode?.tagName?a.parentNode:null,e=l&&H(l,"doc-diff")?"__declaredDiff(":void 0;if(!e&&o&&o!=="module"&&!Y.has(o))return;let{startTag:c,endTag:p}=a.sourceCodeLocation??{};c&&n.push({start:c.endOffset,end:p?.startOffset??t.length,module:o==="module",...e?{call:e}:{}})},{inTemplates:!1}),n}function O(t,s,r=[]){let n=[],a=0,o="",l=e=>e.replace(/[^\r\n]/g," ");for(let{start:e,end:c,call:p}of s){let u=o+l(t.slice(a+o.length,e));if(p){let h=q(u,p,o.length);if(h===null){r.push(e);continue}u=h}n.push(u,t.slice(e,c)),a=c,o=p?");":""}return n.push(o+l(t.slice(a+o.length)),`
|
|
3
|
+
export {};
|
|
4
|
+
`),n.join("")}function q(t,s,r){let n=t.length;for(;;){let a=Math.max(t.lastIndexOf(`
|
|
5
|
+
`,n-1)+1,r),o=t[n-1]==="\r"?n-1:n;if(o-a>=s.length)return t.slice(0,o-s.length)+s+t.slice(o);if(a<=r)return null;n=a-1}}function Ct(t,s=g(t)){return O(t,y(t,{tree:s}))}var X=new Set(["href","src","action","formaction"]),Z=t=>{try{return decodeURIComponent(t)}catch{return t}};function Q(t,s){let r=y(t,{tree:s}).map(({start:n,end:a})=>({code:t.slice(n,a),start:n,where:"the document's script"}));return D(s,n=>{for(let{name:a,value:o}of n.attrs){let l=n.sourceCodeLocation?.attrs?.[a]?.startLine??n.sourceCodeLocation?.startLine,e=X.has(a)?o.replace(/[\t\n\r]/g,"").replace(/^[\u0000-\u0020]+/,""):"";/^on[a-z]+$/.test(a)?r.push({code:o,line:l,where:`the ${a} attribute of <${n.tagName}>`}):/^javascript:/i.test(e)&&r.push({code:Z(e.slice(11)),line:l,where:`the javascript: address of <${n.tagName} ${a}>`})}},{inTemplates:!1}),r}var R=new Set(["fetch","XMLHttpRequest","WebSocket","EventSource","sendBeacon","import"]),E=new Set(["window","globalThis","self"]),tt=t=>i.isIdentifier(t)?t.text==="navigator":i.isPropertyAccessExpression(t)&&t.name.text==="navigator"&&i.isIdentifier(t.expression)&&E.has(t.expression.text);function I(t){let{initializer:s}=i.walkUpBindingElementsAndPatterns(t);return!!s&&i.isIdentifier(s)&&E.has(s.text)}function et(t){let s=t.parent;return i.isPropertyAccessExpression(s)&&s.name===t?i.isIdentifier(s.expression)&&E.has(s.expression.text):i.isBindingElement(s)&&s.propertyName===t?I(s):!((i.isPropertyAssignment(s)||i.isMethodDeclaration(s)||i.isPropertyDeclaration(s)||i.isGetAccessorDeclaration(s)||i.isSetAccessorDeclaration(s))&&s.name===t)}function st(t,s){return i.isIdentifier(t)&&s.has(t.text)&&et(t)?{name:t.text,reference:i.isPropertyAccessExpression(t.parent)&&t.parent.name===t?t.parent:t}:i.isElementAccessExpression(t)&&i.isIdentifier(t.expression)&&E.has(t.expression.text)&&i.isStringLiteralLike(t.argumentExpression)&&s.has(t.argumentExpression.text)?{name:t.argumentExpression.text,reference:t}:i.isPropertyAccessExpression(t)&&s.has(t.name.text)&&t.name.text==="sendBeacon"&&tt(t.expression)?{name:"sendBeacon",reference:t}:s.has("import")&&i.isCallExpression(t)&&t.expression.kind===i.SyntaxKind.ImportKeyword?{name:"import",reference:t.expression}:null}function rt(t,s){let r=new Map,n=(e,c)=>{let p=e.parent;for(;p&&!c(p);)p=p.parent;return p??t},a=e=>i.isFunctionLike(e)||i.isBlock(e)||i.isCaseBlock(e)||i.isForStatement(e)||i.isForInStatement(e)||i.isForOfStatement(e),o=e=>i.isFunctionExpression(e)||i.isClassExpression(e)?e:i.isFunctionDeclaration(e)||i.isClassDeclaration(e)?n(e,a):i.isCatchClause(e.parent)?e.parent:n(e,i.getCombinedNodeFlags(e)&i.NodeFlags.BlockScoped?a:i.isFunctionLike),l=e=>{(i.isParameter(e)||i.isVariableDeclaration(e)||i.isBindingElement(e)||i.isFunctionDeclaration(e)||i.isClassDeclaration(e)||i.isFunctionExpression(e)||i.isClassExpression(e))&&e.name&&i.isIdentifier(e.name)&&s.has(e.name.text)&&!(i.isBindingElement(e)&&I(e))&&r.set(e.name.text,[...r.get(e.name.text)??[],o(e)]),i.forEachChild(e,l)};return l(t),r}function nt(t,s=[]){for(let r=t;r;r=r.parent)if(s.includes(r))return!0;return!1}function Pt(t,s,{tree:r=g(t)}={}){let n=[];for(let{code:a,start:o,line:l,where:e}of Q(t,r))for(let{name:c,how:p,at:u}of k(a,s))n.push({name:c,how:p,line:l??w(t,o+u),where:e});return n.sort((a,o)=>a.line-o.line)}function k(t,s){if(![...s].some(l=>t.includes(l)))return[];let r=[],n=i.createSourceFile("code.js",t,i.ScriptTarget.Latest,!0,i.ScriptKind.JS),a=rt(n,s),o=l=>{let e=st(l,s),c=e?.reference.parent;if(e&&!i.isTypeOfExpression(c)&&!(i.isIdentifier(e.reference)&&nt(l,a.get(e.name)))){let p=(i.isCallExpression(c)||i.isNewExpression(c))&&c.expression===e.reference?i.isNewExpression(c)?"new":"call":"use";r.push({name:e.name,how:p,at:l.getStart(n)})}i.forEachChild(l,o)};return o(n),r}var it=new Set([2304,2552]),at=new Set([2300,2451,2448,2449,2450]),M=t=>it.has(t)||at.has(t)||t>=1e3&&t<2e3;function ot(t,s,r){if(!t.file||r.has(t)||M(t.code))return!1;let n=t.start??-1;return s.some(a=>!a.call&&a.start<=n&&n<a.end)}var ct=(t,s)=>/\bNumberValue\b/.test(t)||/\bd3\.(?:min|max|extent)\(/.test(s)?"; here d3 reads values of no type as strings: give the data its shape once with JSDoc, /** @type {Array<{ label: string, value: number }>} */ const rows = data;, and d3.min or d3.max may give undefined (?? 0)":"";function B(t){let s={allowJs:!0,checkJs:!0,noEmit:!0,allowUmdGlobalAccess:!0,strict:!0,noImplicitAny:!1,target:i.ScriptTarget.ES2022,module:i.ModuleKind.ESNext,moduleResolution:i.ModuleResolutionKind.Bundler,lib:["lib.es2022.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts"],types:["d3"],typeRoots:V,skipLibCheck:!1},r=i.createCompilerHost(s),n=r.readFile.bind(r),a=r.fileExists.bind(r);return r.readFile=o=>t.get(f.resolve(o))??n(o),r.fileExists=o=>t.has(f.resolve(o))||a(o),i.createProgram([f.join(L,"index.d.ts"),...t.keys()],s,r)}var lt=/\bDoc[A-Z]\w*/,pt=(t,s)=>lt.test(s)||(t.relatedInformation??[]).some(({file:r})=>r&&f.resolve(r.fileName).startsWith(L+f.sep)),N={katex:"katex","katex-auto-render":"renderMathInElement"};function Nt(t,{assets:s=[]}={}){let r=f.join(F,"reports","__package__","kit.js"),n=t.replace(/^([ \t]*)(?:<!--|-->)/gm,"$1//"),a=s.filter(c=>Object.hasOwn(N,c)).map(c=>`declare const ${N[c]}: any;
|
|
6
|
+
`),o=B(new Map([[r,`${n}
|
|
7
|
+
export {};
|
|
8
|
+
`],...a.length?[[f.join(f.dirname(r),"assets.d.ts"),a.join("")]]:[]])),l=new Set(o.getSyntacticDiagnostics()),e=new Map;for(let c of i.getPreEmitDiagnostics(o)){if(!c.file||f.resolve(c.file.fileName)!==r)continue;let{line:p}=c.file.getLineAndCharacterOfPosition(c.start??0),u=i.flattenDiagnosticMessageText(c.messageText," "),h=`${p} ${u}`;e.has(h)||e.set(h,{line:p+1,code:c.code,message:u,refused:l.has(c)||M(c.code)||pt(c,u)})}return[...e.values()]}function Dt(t){let s=new Map,r=new Map,n=new Map,a=[];for(let e of t){let c=y(e.html,{diffs:!0}),p=[c.filter(m=>!m.module),...c.filter(m=>m.module).map(m=>[m])],u=f.join(F,"reports",f.basename(f.dirname(e.htmlPath)),f.basename(e.htmlPath)),h=[];p.forEach((m,x)=>{let d=`${u}.${x}.js`;s.set(d,O(e.html,m,h)),r.set(d,f.resolve(e.htmlPath)),n.set(d,m)});for(let m of h){let x=e.html.slice(0,m).split(`
|
|
9
|
+
`),d=f.resolve(e.htmlPath);a.push({htmlPath:f.resolve(e.htmlPath),text:`${d}:${x.length}:${x.at(-1).length+1} a declared diff's options could not be checked: write its <script type="application/json"> tag on a line of its own`})}}let o=B(s),l=new Set(o.getSyntacticDiagnostics());return[...a,...i.getPreEmitDiagnostics(o).map(e=>{let c=e.file?.getLineAndCharacterOfPosition(e.start||0),p=e.file?r.get(f.resolve(e.file.fileName))??null:null,u=p||e.file?.fileName,h=u?f.resolve(u):"SDK",m=i.flattenDiagnosticMessageText(e.messageText," "),x=p!==null&&ot(e,n.get(f.resolve(e.file.fileName))??[],l);return{htmlPath:p,text:`${h}${c?`:${c.line+1}:${c.character+1}`:""} TS${e.code}: ${m}`,typeOnly:x,...x?{note:`line ${c.line+1}: TS${e.code} in the document's script (column ${c.character+1}): ${m} (strict TypeScript's word on a type: a note, not a failure; the browser runs the script as written: guard the value where it can really be null or of another type${ct(m,e.file.text.split(`
|
|
10
|
+
`)[c.line]??"")})`}:{}}})]}import{readFileSync as K}from"node:fs";import{isInstance as _}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as G,PACKAGE_MARK as $}from"../browser/shared/components/installed.mjs";import{cssReferences as U,cssWithAddresses as ft}from"../browser/shared/css-references.mjs";import{packageScript as ut,scriptText as mt,styleText as ht}from"../browser/shared/export-wrap.mjs";import{attr as b,walk as W}from"../browser/shared/html-tree.mjs";import{mediaTypeOf as xt}from"../browser/shared/media.mjs";var gt=new RegExp(G,"i");function Jt(t,{packages:s}=j(),r=null){if(!gt.test(t))return[];let n=new Set;return W(r??g(t),a=>{_(a)&&n.add(b(a,G))},{stop:_}),[...n].map(a=>s.get(a)).filter(Boolean)}function zt(t,s){if(s.length===0)return t;let r=s.map(A);return C(t,{styles:r.flatMap(({styles:n})=>n),scripts:r.flatMap(({scripts:n})=>n)})}function T(t,s){try{return K(S(t,s)).toString("utf8").replace(/^\uFEFF/,"")}catch{return null}}var J=/^(?:data:|#|$)/i,dt=/^(?:[a-z][a-z0-9+.-]*:|\/)/i,z=t=>t.replace(/^\.\//,"").replace(/[?#].*$/,""),wt=(t,s)=>ft(s,U(s),({value:r,kind:n})=>{let a=z(r);if(n==="import"||J.test(r)||!t.files.includes(a))return null;let o=S(t,a);return o&&`data:${xt(a)};base64,${K(o).toString("base64")}`}),v=new Set(["eval","Function"]),Et=new Set([...R,...v]),St={call:t=>`calls ${t}(\u2026)`,new:t=>`creates new ${t}(\u2026)`,use:t=>`uses ${t}`};function yt(t){if(!t.files.includes("style.css"))return[];let s=T(t,"style.css")??"";return U(s).flatMap(({value:r,kind:n,index:a})=>{let o=n==="import"?"has an @import, which an export cannot hold: write what it imports into style.css":J.test(r)?null:dt.test(r)?`loads ${r}: external resources are not portable`:t.files.includes(z(r))?null:`names ${r}, which an export cannot hold: put the file in the package and name it in its assets`;return o?[{line:w(s,a),what:o}]:[]})}function kt(t){if(!t.files.includes("kit.js"))return[];let s=T(t,"kit.js")??"";return k(s,Et).filter(({name:r,how:n})=>n!=="use"||!v.has(r)).map(({name:r,how:n,at:a})=>({line:w(s,a),what:`${St[n](r)}: ${v.has(r)?"an export runs no code made from words":"the export blocks the network; put its data in the instance"}`}))}var Ht=t=>t.flatMap(s=>[...yt(s).map(({what:r})=>`${s.id}: its style.css ${r}`),...kt(s).map(({line:r,what:n})=>`${s.id}: line ${r} of its kit.js ${n}`)]);function $t(t,s){let r=`${$}="${t.id}"`,n=T(t,s);return n===null?null:s==="kit.js"?`<script ${r}>${mt(ut(n))}</script>`:`<style ${r}>${ht(wt(t,n))}</style>`}function Vt(t,{packages:s}){if(!t.includes($))return t;let r=[];W(g(t),o=>{let l=s.get(b(o,$)),e=o.tagName==="link"?"style.css":o.tagName==="script"&&b(o,"src")!==void 0?"kit.js":null,c=o.sourceCodeLocation,p=l&&e&&c?$t(l,e):null;p&&r.push({start:c.startOffset,end:c.endOffset,copy:p})},{inTemplates:!1});let n="",a=0;for(let{start:o,end:l,copy:e}of r)n+=t.slice(a,o)+e,a=l;return n+t.slice(a)}export{Ct as a,R as b,Pt as c,k as d,Nt as e,Dt as f,Jt as g,zt as h,T as i,yt as j,kt as k,Ht as l,Vt as m};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
|
|
2
|
+
import{b as n,e as c}from"./chunk-A55HN5OK.mjs";c();var f=e=>n(e.replace(/^\uFEFF/," "),{sourceCodeLocationInfo:!0}),i=(e,o)=>e.slice(o.sourceCodeLocation.startOffset,o.sourceCodeLocation.endOffset);function a(e,o){let r=1;for(let t=e.indexOf(`
|
|
3
|
+
`);t!==-1&&t<o;t=e.indexOf(`
|
|
4
|
+
`,t+1))r++;return r}export{f as a,i as b,a as c};
|