@heycys/gallery 0.1.1 → 0.1.2
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/THIRD-PARTY-NOTICES.md +1 -1
- package/browser/editor/components/columns/page.mjs +4 -4
- package/browser/editor/components/embed/index.mjs +2 -2
- package/browser/editor/components/flowchart/add.mjs +7 -6
- package/browser/editor/components/flowchart/page.mjs +1 -1
- package/browser/editor/components/icons.mjs +8 -0
- package/browser/editor/components/image/crop.mjs +6 -9
- package/browser/editor/components/installed/index.mjs +11 -4
- package/browser/editor/components/installed/page.mjs +27 -16
- package/browser/editor/components/installed/served.mjs +6 -5
- package/browser/editor/components/instances.mjs +18 -0
- package/browser/editor/components/list/page.mjs +3 -6
- package/browser/editor/components/registry.mjs +13 -4
- package/browser/editor/components/table/index.mjs +59 -2
- package/browser/editor/components/table/page.mjs +1 -1
- package/browser/editor/page/annotate/card.mjs +3 -6
- package/browser/editor/page/autosave.mjs +310 -37
- package/browser/editor/page/board/client.mjs +57 -0
- package/browser/editor/page/board/hint.mjs +145 -0
- package/browser/editor/page/board/history.mjs +119 -0
- package/browser/editor/page/board/index.mjs +970 -0
- package/browser/editor/page/board/settings.mjs +209 -0
- package/browser/editor/page/caret.mjs +1 -1
- package/browser/editor/page/changes/bar.mjs +6 -14
- package/browser/editor/page/changes/index.mjs +2 -2
- package/browser/editor/page/clipboard/import/html.mjs +29 -6
- package/browser/editor/page/clipboard/import/inline.mjs +32 -0
- package/browser/editor/page/clipboard/import/markdown.mjs +58 -13
- package/browser/editor/page/clipboard/import/read.mjs +6 -1
- package/browser/editor/page/clipboard/import/to-blocks.mjs +44 -12
- package/browser/editor/page/clipboard/import/yuque.mjs +622 -0
- package/browser/editor/page/clipboard/index.mjs +124 -13
- package/browser/editor/page/clipboard/own/blocks.mjs +11 -11
- package/browser/editor/page/clipboard/own/chart-keys.mjs +41 -28
- package/browser/editor/page/clipboard/own/selection.mjs +1 -1
- package/browser/editor/page/columns/index.mjs +48 -46
- package/browser/editor/page/commit.mjs +80 -22
- package/browser/editor/page/conflicts.mjs +7 -7
- package/browser/editor/page/core.mjs +31 -15
- package/browser/editor/page/custom-page.mjs +106 -0
- package/browser/editor/page/editor.mjs +51 -14
- package/browser/editor/page/emoji-picker/styles.mjs +7 -12
- package/browser/editor/page/emoji-picker/upload.mjs +2 -2
- package/browser/editor/page/handle/index.mjs +5 -8
- package/browser/editor/page/history.mjs +24 -4
- package/browser/editor/page/links/index.mjs +5 -3
- package/browser/editor/page/links/pages.mjs +27 -9
- package/browser/editor/page/look.mjs +54 -3
- package/browser/editor/page/margin.mjs +18 -3
- package/browser/editor/page/media-menu/index.mjs +6 -7
- package/browser/editor/page/menu.mjs +18 -7
- package/browser/editor/page/notices.mjs +2 -2
- package/browser/editor/page/page-objects.mjs +13 -2
- package/browser/editor/page/panel.mjs +4 -9
- package/browser/editor/page/present-links.mjs +11 -2
- package/browser/editor/page/resize/index.mjs +42 -29
- package/browser/editor/page/served.mjs +14 -0
- package/browser/editor/page/session.mjs +48 -4
- package/browser/editor/page/slash-menu/index.mjs +3 -3
- package/browser/editor/page/table/cells.mjs +102 -46
- package/browser/editor/page/table/icons.mjs +2 -0
- package/browser/editor/page/table/index.mjs +29 -10
- package/browser/editor/page/table/pictures.mjs +299 -0
- package/browser/editor/page/table/views.mjs +150 -0
- package/browser/editor/page/text-select/index.mjs +26 -12
- package/browser/editor/page/todo-writes.mjs +75 -0
- package/browser/editor/page/typing/index.mjs +53 -3
- package/browser/editor/page/ui.mjs +13 -0
- package/browser/shared/block-packs.mjs +404 -0
- package/browser/shared/board-places.mjs +224 -0
- package/browser/shared/card-size.mjs +59 -0
- package/browser/shared/colors.mjs +3 -2
- package/browser/shared/component-catalog.mjs +323 -46
- package/browser/shared/component-source.mjs +37 -0
- package/browser/shared/components/index.mjs +12 -3
- package/browser/shared/components/installed.mjs +35 -3
- package/browser/shared/components/page.mjs +18 -8
- package/browser/shared/components/state.mjs +5 -1
- package/browser/shared/document-look.mjs +10 -5
- package/browser/shared/drafts.mjs +432 -0
- package/browser/shared/extension-sidebar.mjs +126 -0
- package/browser/shared/extensions.mjs +79 -0
- package/browser/shared/file-table.mjs +101 -0
- package/browser/shared/i18n/en.mjs +307 -27
- package/browser/shared/json-layout.mjs +47 -0
- package/browser/shared/net-cache.mjs +133 -0
- package/browser/shared/net-keys.mjs +32 -0
- package/browser/shared/net-policy.mjs +177 -0
- package/browser/shared/outline-shape.mjs +128 -0
- package/browser/shared/outline.mjs +331 -67
- package/browser/shared/pack-manifest.mjs +77 -0
- package/browser/shared/page-address.mjs +6 -3
- package/browser/shared/page-cards.mjs +308 -0
- package/browser/shared/page-links.mjs +69 -6
- package/browser/shared/pages.mjs +388 -0
- package/browser/shared/paths.mjs +6 -0
- package/browser/shared/preview-server.mjs +3 -7
- package/browser/shared/session.mjs +8 -1
- package/browser/shared/shipped-blocks.mjs +299 -0
- package/browser/shared/table-chart.mjs +33 -1
- package/browser/shared/todos.mjs +83 -0
- package/browser/shared/user-directory.mjs +24 -0
- package/browser/shared/versions.mjs +14 -0
- package/browser/shared/web-links.mjs +134 -0
- package/browser/shared/workspace-columns.mjs +120 -0
- package/browser/shared/workspace-name.mjs +154 -0
- package/browser/shared/workspace-query.mjs +125 -0
- package/browser/shared/workspace-registry.mjs +272 -0
- package/browser/shared/workspace.mjs +171 -20
- package/dist/chunk-2NRBY6AJ.mjs +2 -0
- package/dist/chunk-32ZUEFZ7.mjs +2 -0
- package/dist/chunk-35NQ4PLQ.mjs +2 -0
- package/dist/chunk-3KJHLHUO.mjs +2 -0
- package/dist/chunk-3NJACR4W.mjs +2 -0
- package/dist/chunk-4AV456RQ.mjs +2 -0
- package/dist/chunk-4OZWXZE5.mjs +5 -0
- package/dist/chunk-5XYHDBJ5.mjs +2 -0
- package/dist/chunk-5ZJA7CXT.mjs +2 -0
- package/dist/chunk-6A53MZYZ.mjs +2 -0
- package/dist/chunk-6EXH3ORZ.mjs +166 -0
- package/dist/chunk-6EZ7FNIK.mjs +3 -0
- package/dist/{chunk-V5JTW2LH.mjs → chunk-6QBHU4DF.mjs} +1 -1
- package/dist/{chunk-Y6RLRPG3.mjs → chunk-6VTU6KEO.mjs} +1 -1
- package/dist/chunk-B4P2CM2J.mjs +3 -0
- package/dist/{chunk-FDLXYYG4.mjs → chunk-BPL64HGA.mjs} +1 -1
- package/dist/chunk-BVEFGE4B.mjs +2 -0
- package/dist/{chunk-LS4F7JUM.mjs → chunk-BZ5RAF7L.mjs} +1 -1
- package/dist/chunk-CRJEG7MT.mjs +2 -0
- package/dist/{chunk-LCTHTZIL.mjs → chunk-D4CKRD3V.mjs} +91 -91
- package/dist/chunk-D4EURAX4.mjs +4 -0
- package/dist/chunk-DQCE7TJY.mjs +5 -0
- package/dist/chunk-DR73Y2UJ.mjs +3 -0
- package/dist/{chunk-TMYZB6AV.mjs → chunk-EKNHM3P4.mjs} +1 -1
- package/dist/{chunk-GB5SOYQJ.mjs → chunk-ERLAIBOA.mjs} +2 -2
- package/dist/chunk-EURLTOTZ.mjs +4 -0
- package/dist/chunk-FJYN7RTH.mjs +4 -0
- package/dist/chunk-FWNRPMCJ.mjs +12 -0
- package/dist/chunk-FWW4CSAZ.mjs +2 -0
- package/dist/{chunk-2B5E4CDJ.mjs → chunk-GPIWQ4X4.mjs} +1 -1
- package/dist/chunk-GY3FAUVM.mjs +2 -0
- package/dist/chunk-HLYV7RIH.mjs +2 -0
- package/dist/chunk-HMYTM3GT.mjs +15 -0
- package/dist/chunk-IA4PSIMD.mjs +2 -0
- package/dist/chunk-JEUK3ZO7.mjs +2 -0
- package/dist/chunk-KTKHRC6H.mjs +2 -0
- package/dist/chunk-L7UP52JO.mjs +2 -0
- package/dist/{chunk-SYGN7GLU.mjs → chunk-MHW7ZKOU.mjs} +1 -1
- package/dist/chunk-N76HWBA3.mjs +10 -0
- package/dist/chunk-N7AZZLGT.mjs +548 -0
- package/dist/chunk-NAMN3RAF.mjs +2 -0
- package/dist/{chunk-5ZKJ3H4P.mjs → chunk-NFMCP2HI.mjs} +3 -3
- package/dist/chunk-NG375ILQ.mjs +2 -0
- package/dist/chunk-NVRNLK25.mjs +6 -0
- package/dist/chunk-NWFBE2YA.mjs +2 -0
- package/dist/chunk-NWR2LT5B.mjs +2 -0
- package/dist/chunk-OJKMINIU.mjs +20 -0
- package/dist/{chunk-4FS7Z7WR.mjs → chunk-OUUP3WKT.mjs} +1 -1
- package/dist/{chunk-BGGDRNYQ.mjs → chunk-OW5NWPOJ.mjs} +1 -1
- package/dist/chunk-PAREWQGB.mjs +4 -0
- package/dist/chunk-POQSE4C2.mjs +2 -0
- package/dist/chunk-PUOQ65NC.mjs +2 -0
- package/dist/{chunk-XNROSH2T.mjs → chunk-PVER7LSC.mjs} +2 -2
- package/dist/chunk-PZDLJJTJ.mjs +3 -0
- package/dist/chunk-Q47PLKIJ.mjs +15 -0
- package/dist/chunk-Q4UEPUWF.mjs +2 -0
- package/dist/chunk-QKXMPUXC.mjs +2 -0
- package/dist/chunk-QOUEFUCH.mjs +16 -0
- package/dist/chunk-RFDZXFJF.mjs +13 -0
- package/dist/chunk-RKPWLGZ3.mjs +4 -0
- package/dist/chunk-RMECZA2K.mjs +2 -0
- package/dist/{chunk-7DTINW6U.mjs → chunk-SQ6Y2ZMA.mjs} +2 -2
- package/dist/chunk-SX4LJYT6.mjs +8 -0
- package/dist/chunk-SXHBYZST.mjs +16 -0
- package/dist/chunk-TANZRINB.mjs +2 -0
- package/dist/chunk-TEZAWDSQ.mjs +2 -0
- package/dist/chunk-UBBRTJ2R.mjs +24 -0
- package/dist/chunk-UFNYFFKO.mjs +20 -0
- package/dist/chunk-UGWYKHBL.mjs +170 -0
- package/dist/chunk-UKSHDZZ6.mjs +2 -0
- package/dist/chunk-UNOYVIYR.mjs +2 -0
- package/dist/{chunk-E7LWZRXY.mjs → chunk-V6RIYQZZ.mjs} +1 -1
- package/dist/chunk-VJPFVNNW.mjs +15 -0
- package/dist/chunk-VS3ZMVGX.mjs +5 -0
- package/dist/chunk-VTKNEYT3.mjs +6 -0
- package/dist/chunk-VXACTLO3.mjs +3 -0
- package/dist/chunk-YI43RG4P.mjs +2 -0
- package/dist/chunk-YQGT4AB2.mjs +6 -0
- package/dist/chunk-ZB4H7ZN4.mjs +2 -0
- package/dist/{chunk-IVDLMMBD.mjs → chunk-ZHEHPMBK.mjs} +1 -1
- package/dist/chunk-ZTHICSSF.mjs +2 -0
- package/dist/chunk-ZUNVAXLH.mjs +2 -0
- package/dist/chunk-ZWPMCK7P.mjs +2 -0
- package/dist/cli.mjs +1 -1
- package/dist/server.mjs +1 -1
- package/dist/{chunk-U6KNPJPR.mjs → update-fetch.mjs} +1 -1
- package/dist/worker.mjs +1 -1
- package/kit/board.css +95 -0
- package/kit/board.js +250 -0
- package/kit/charts.js +5 -71
- package/kit/code.js +14 -14
- package/kit/report.css +255 -17
- package/kit/runtime.js +1600 -125
- package/kit/state.js +10 -1
- package/kit/tables.js +128 -43
- package/kit/ui.js +77 -35
- package/package.json +2 -1
- package/packs/gallery/card/component.json +14 -0
- package/packs/gallery/card/example.html +10 -0
- package/packs/gallery/card/preview.svg +1 -0
- package/packs/gallery/card/style.css +6 -0
- package/packs/gallery/card/template.html +6 -0
- package/packs/gallery/card/writing.md +14 -0
- package/packs/gallery/chart-card/component.json +15 -0
- package/packs/gallery/chart-card/example.html +14 -0
- package/packs/gallery/chart-card/kit.js +130 -0
- package/packs/gallery/chart-card/preview.svg +1 -0
- package/packs/gallery/chart-card/style.css +42 -0
- package/packs/gallery/chart-card/template.html +13 -0
- package/packs/gallery/chart-card/writing.md +20 -0
- package/packs/gallery/chart-view/component.json +20 -0
- package/packs/gallery/chart-view/example.html +13 -0
- package/packs/gallery/chart-view/kit.js +355 -0
- package/packs/gallery/chart-view/preview.svg +1 -0
- package/packs/gallery/chart-view/style.css +94 -0
- package/packs/gallery/chart-view/template.html +3 -0
- package/packs/gallery/chart-view/writing.md +22 -0
- package/packs/gallery/countdown/component.json +18 -0
- package/packs/gallery/countdown/example.html +3 -0
- package/packs/gallery/countdown/kit.js +156 -0
- package/packs/gallery/countdown/preview.svg +1 -0
- package/packs/gallery/countdown/style.css +130 -0
- package/packs/gallery/countdown/template.html +3 -0
- package/packs/gallery/countdown/writing.md +22 -0
- package/packs/gallery/habit/component.json +14 -0
- package/packs/gallery/habit/example.html +3 -0
- package/packs/gallery/habit/kit.js +295 -0
- package/packs/gallery/habit/preview.svg +1 -0
- package/packs/gallery/habit/style.css +246 -0
- package/packs/gallery/habit/template.html +3 -0
- package/packs/gallery/habit/writing.md +21 -0
- package/packs/gallery/heatmap/component.json +18 -0
- package/packs/gallery/heatmap/example.html +3 -0
- package/packs/gallery/heatmap/kit.js +351 -0
- package/packs/gallery/heatmap/preview.svg +1 -0
- package/packs/gallery/heatmap/style.css +201 -0
- package/packs/gallery/heatmap/template.html +3 -0
- package/packs/gallery/heatmap/writing.md +21 -0
- package/packs/gallery/kanban/component.json +18 -0
- package/packs/gallery/kanban/example.html +12 -0
- package/packs/gallery/kanban/kit.js +540 -0
- package/packs/gallery/kanban/preview.svg +1 -0
- package/packs/gallery/kanban/style.css +212 -0
- package/packs/gallery/kanban/template.html +3 -0
- package/packs/gallery/kanban/writing.md +20 -0
- package/packs/gallery/metric/component.json +22 -0
- package/packs/gallery/metric/example.html +15 -0
- package/packs/gallery/metric/kit.js +248 -0
- package/packs/gallery/metric/preview.svg +1 -0
- package/packs/gallery/metric/style.css +92 -0
- package/packs/gallery/metric/template.html +3 -0
- package/packs/gallery/metric/writing.md +23 -0
- package/packs/gallery/note/component.json +14 -0
- package/packs/gallery/note/example.html +3 -0
- package/packs/gallery/note/kit.js +102 -0
- package/packs/gallery/note/preview.svg +1 -0
- package/packs/gallery/note/style.css +76 -0
- package/packs/gallery/note/template.html +3 -0
- package/packs/gallery/note/writing.md +18 -0
- package/packs/gallery/pack.json +8 -0
- package/packs/gallery/recent/component.json +13 -0
- package/packs/gallery/recent/example.html +1 -0
- package/packs/gallery/recent/kit.js +238 -0
- package/packs/gallery/recent/preview.svg +1 -0
- package/packs/gallery/recent/style.css +158 -0
- package/packs/gallery/recent/template.html +1 -0
- package/packs/gallery/recent/writing.md +15 -0
- package/packs/gallery/static/component.json +13 -0
- package/packs/gallery/static/example.html +11 -0
- package/packs/gallery/static/preview.svg +1 -0
- package/packs/gallery/static/style.css +138 -0
- package/packs/gallery/static/template.html +1 -0
- package/packs/gallery/static/writing.md +18 -0
- package/packs/gallery/stats/component.json +13 -0
- package/packs/gallery/stats/example.html +1 -0
- package/packs/gallery/stats/kit.js +166 -0
- package/packs/gallery/stats/preview.svg +1 -0
- package/packs/gallery/stats/style.css +151 -0
- package/packs/gallery/stats/template.html +1 -0
- package/packs/gallery/stats/writing.md +11 -0
- package/packs/gallery/today/component.json +12 -0
- package/packs/gallery/today/example.html +1 -0
- package/packs/gallery/today/kit.js +185 -0
- package/packs/gallery/today/preview.svg +1 -0
- package/packs/gallery/today/style.css +120 -0
- package/packs/gallery/today/template.html +1 -0
- package/packs/gallery/today/writing.md +14 -0
- package/packs/gallery/todos/component.json +19 -0
- package/packs/gallery/todos/example.html +3 -0
- package/packs/gallery/todos/kit.js +342 -0
- package/packs/gallery/todos/preview.svg +1 -0
- package/packs/gallery/todos/style.css +267 -0
- package/packs/gallery/todos/template.html +3 -0
- package/packs/gallery/todos/writing.md +30 -0
- package/packs/gallery/weather/component.json +19 -0
- package/packs/gallery/weather/example.html +3 -0
- package/packs/gallery/weather/kit.js +312 -0
- package/packs/gallery/weather/preview.svg +1 -0
- package/packs/gallery/weather/style.css +258 -0
- package/packs/gallery/weather/template.html +3 -0
- package/packs/gallery/weather/writing.md +26 -0
- package/packs/gallery-soft/pack.json +8 -0
- package/release.json +12 -10
- package/sdk/doc-kit.d.ts +396 -5
- package/sdk/doc-state.d.ts +2 -0
- package/skill/SKILL.md +56 -23
- package/skill/references/block-script.md +140 -0
- package/skill/references/building-blocks.md +257 -0
- package/skill/references/extensions.md +59 -0
- package/skill/references/pages-and-data.md +221 -0
- package/skill/references/writing-html.md +6 -4
- package/skill/sdk/doc-kit.d.ts +396 -5
- package/skill/sdk/doc-state.d.ts +2 -0
- package/web/assets/index-BK2e_07w.js +13 -0
- package/web/assets/index-CWFI83mF.css +1 -0
- package/web/index.html +2 -2
- package/dist/chunk-3HIRPVLU.mjs +0 -2
- package/dist/chunk-5MHMDLZD.mjs +0 -4
- package/dist/chunk-64K7IPLO.mjs +0 -255
- package/dist/chunk-6QXGZM36.mjs +0 -8
- package/dist/chunk-6RGJOMJP.mjs +0 -16
- package/dist/chunk-AJ73XJF3.mjs +0 -2
- package/dist/chunk-AUZGSZJH.mjs +0 -13
- package/dist/chunk-BFE45AKL.mjs +0 -2
- package/dist/chunk-BXO2ZY5P.mjs +0 -2
- package/dist/chunk-CEH4MRCC.mjs +0 -2
- package/dist/chunk-CY2FNNAB.mjs +0 -16
- package/dist/chunk-DFUDV4LX.mjs +0 -2
- package/dist/chunk-DKXG4XDG.mjs +0 -2
- package/dist/chunk-EZQ34M3F.mjs +0 -124
- package/dist/chunk-EZY3WC6Z.mjs +0 -15
- package/dist/chunk-FUKQNOQS.mjs +0 -9
- package/dist/chunk-JPOSLGOC.mjs +0 -6
- package/dist/chunk-L3QKH4OK.mjs +0 -26
- package/dist/chunk-LAE5NQ4B.mjs +0 -2
- package/dist/chunk-LEF6DRCK.mjs +0 -59
- package/dist/chunk-NO5NJCHO.mjs +0 -2
- package/dist/chunk-NQPVAU63.mjs +0 -2
- package/dist/chunk-NSKUTQ5J.mjs +0 -5
- package/dist/chunk-O35FIXRB.mjs +0 -2
- package/dist/chunk-P2CAZPDP.mjs +0 -3
- package/dist/chunk-PL6GHLGD.mjs +0 -15
- package/dist/chunk-QJIR2BLP.mjs +0 -6
- package/dist/chunk-QUPLVPB2.mjs +0 -7
- package/dist/chunk-R7BNENLY.mjs +0 -4
- package/dist/chunk-S6O4UHLC.mjs +0 -2
- package/dist/chunk-SGJWQKEI.mjs +0 -2
- package/dist/chunk-TX6JH7TR.mjs +0 -2
- package/dist/chunk-TYK6VNAB.mjs +0 -10
- package/dist/chunk-UALRNVSE.mjs +0 -4
- package/dist/chunk-V3HXVQEM.mjs +0 -2
- package/dist/chunk-V5VXUJKG.mjs +0 -2
- package/dist/chunk-VBXMADMP.mjs +0 -2
- package/dist/chunk-VNV55RUA.mjs +0 -2
- package/dist/chunk-VPD2PS35.mjs +0 -2
- package/dist/chunk-W4VKN3GF.mjs +0 -7
- package/dist/chunk-W5BXXPDJ.mjs +0 -3
- package/dist/chunk-XUNHRCOG.mjs +0 -6
- package/skill/references/building-components.md +0 -367
- package/web/assets/index-Bh74DfsV.css +0 -1
- package/web/assets/index-UW0RyFFt.js +0 -13
|
@@ -0,0 +1,8 @@
|
|
|
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 g}from"./chunk-HYMEEXKN.mjs";import{createRequire as re}from"node:module";import{typescriptFile as ae}from"../browser/shared/paths.mjs";var ce=re(import.meta.url),B=null;function fe(){return B??=ce(ae??"typescript"),B}var b=new Proxy({},{get:(e,n)=>fe()[n]});import _ from"node:fs/promises";import h from"node:path";import{COMPONENTS as D,instancesOf as ue}from"../browser/shared/components/index.mjs";import{PACKAGE_MARK as q}from"../browser/shared/components/installed.mjs";import{MATH_IGNORED_TAGS as pe}from"../browser/shared/components/math.mjs";import{attr as x,elementsOf as O,walk as y}from"../browser/shared/html-tree.mjs";import I from"node:path";import de from"node:vm";var L=()=>{throw new Error("esbuild is not in the release: Gallery 0.1.2 calls it only in a source checkout")},Le=L,J=L;var Te=new Proxy({},{get:L});import{projectRoot as le}from"../browser/shared/paths.mjs";var T=I.join(le,"src","shared","components","index.mjs");function F(e){let{outputFiles:n}=J({stdin:{contents:`import { FLOWS, FLOW_BLOCKS, runtimeDescriptions } from ${JSON.stringify(e)}; module.exports = { descriptions: runtimeDescriptions(), flows: FLOWS, blockFlows: FLOW_BLOCKS };`,resolveDir:I.dirname(e),loader:"js"},bundle:!0,write:!1,format:"cjs",platform:"node",logLevel:"silent"}),s={module:{exports:null}};return de.runInNewContext(n[0].text,s),JSON.parse(JSON.stringify(s.module.exports))}var W=(e=T)=>F(e).descriptions,G=(e=T)=>F(e).flows,U=(e=T)=>F(e).blockFlows;import{kitPublicDirectory as me,projectRoot as H,release as Y,vendorDirectory as z}from"../browser/shared/paths.mjs";var P=h.join(H,"node_modules"),he=h.join(P,"d3","dist","d3.min.js"),S=Y?h.join(z,"katex"):h.join(P,"katex","dist"),xe=h.join(S,"fonts"),He=h.join(S,"contrib","mhchem.min.js"),u=[{id:"styles",file:"report.css",build:{styles:"styles/index.css"},always:!0},{id:"katex-styles",vendor:{path:"/vendor/katex/katex.min.css",source:h.join(S,"katex.min.css")}},{id:"runtime",file:"runtime.js",build:{bundle:"runtime/index.js",options:()=>({minify:!1,define:{__COMPONENT_RUNTIME__:JSON.stringify(W()),__COMPONENT_FLOWS__:JSON.stringify(G()),__COMPONENT_BLOCK_FLOWS__:JSON.stringify(U())}})},api:"DocKit",always:!0},{id:"code",file:"code.js",build:{bundle:"code.js",options:{minify:!0,legalComments:"inline"}},api:"DocCode",after:["runtime"]},{id:"state",file:"state.js",build:{read:"state.js"},api:"DocState",always:!0},{id:"sheets",file:"sheets.js",build:{read:"sheets.js"},api:"DocSheets",after:["runtime","state"]},{id:"tokens",file:"tokens.js",build:{read:"tokens.js"},api:"DocTokens",always:!0},{id:"ui",file:"ui.js",build:{bundle:"ui.js",options:{minify:!1}},added:!0,after:["runtime","state","tokens"]},{id:"dialogs",file:"dialogs.js",build:{read:"dialogs.js"},api:"DocDialogs",after:["runtime"]},{id:"katex",vendor:{path:"/vendor/katex/katex.min.js",source:h.join(S,"katex.min.js")},umd:!0},{id:"katex-auto-render",vendor:{path:"/vendor/katex/auto-render.min.js",source:h.join(S,"contrib","auto-render.min.js")},umd:!0,after:["katex"]},{id:"math",file:"math.js",build:{bundle:"math-bundle.js",options:{minify:!1,legalComments:"inline",alias:{katex:h.join(H,"src","render","kit","page-katex.js")},nodePaths:[h.join(P,"katex")]}},api:"DocMath",after:["runtime","katex-styles","katex","katex-auto-render"]},{id:"d3",vendor:{path:"/vendor/d3.v7.9.0.min.js",source:he},api:"d3",umd:!0},{id:"charts",file:"charts.js",build:{bundle:"charts/index.js",options:{minify:!1}},api:"DocCharts",after:["runtime","tokens"]},{id:"tables",file:"tables.js",build:{bundle:"tables/index.js",options:{minify:!1}},api:"DocTables",after:["runtime"]},{id:"board-styles",file:"board.css",build:{styles:"board/index.css"},page:!0},{id:"board",file:"board.js",build:{bundle:"board/index.js",options:{minify:!1}},page:!0}],m=e=>e.file?`/kit/${e.file}`:e.vendor.path,ge=e=>e.file?h.join(me,e.file):h.join(z,...e.vendor.path.split("/").slice(2));if(Y)for(let e of u)e.vendor&&(e.vendor.source=ge(e));var k=e=>m(e).endsWith(".css"),E=e=>e.file?"data-doc-kit":"data-doc-vendor",C=e=>u.find(n=>n.id===e),w=(e,n=m(e))=>k(e)?`<link rel="stylesheet" href="${n}" ${E(e)}="${e.id}">`:`<script src="${n}" ${E(e)}="${e.id}"></script>`,we=u.map(e=>({id:e.id,tag:w(e),always:!!e.always,element:k(e)?"style":"script",attribute:E(e)}));function Ye(e,n=m){let s=new Set,i=t=>{s.has(t)||(s.add(t),C(t)?.after?.forEach(i))};return e.forEach(i),u.filter(t=>s.has(t.id)&&!t.always&&!t.added).map(t=>w(t,n(t)))}function ye(e=u,n=D){let s=[],i=e.map(t=>t.id);for(let t of new Set(i.filter((a,o)=>i.indexOf(a)!==o)))s.push(`the asset "${t}" is listed twice`);for(let t of e){!!t.file==!!t.vendor&&s.push(`the asset "${t.id}" is a kit file (file) or a vendor file (vendor), one of them`),t.file&&!["read","bundle","styles"].some(o=>typeof t.build?.[o]=="string")&&s.push(`the kit file "${t.file}" does not say how it is made (build: read, bundle or styles)`),t.vendor&&!(t.vendor.path&&t.vendor.source)&&s.push(`the vendor asset "${t.id}" needs its public path and its source`);for(let o of t.after??[])i.includes(o)?i.indexOf(o)>i.indexOf(t.id)&&s.push(`the asset "${t.id}" loads after "${o}", which the list puts after it`):s.push(`the asset "${t.id}" loads after "${o}", which is no asset`);let a=n.filter(o=>(o.assets??[]).includes(t.id));!t.always&&!t.api&&!t.added&&!t.page&&a.length===0&&s.push(`no report would keep the asset "${t.id}": it is not always kept, defines no global and no component needs it`)}for(let t of n)for(let a of t.assets??[])i.includes(a)||s.push(`the component "${t.id}" needs "${a}", which is no asset`);return s}{let e=ye();if(e.length>0)throw new Error(`src/render/assets.mjs: ${e.join("; ")}`)}var K=/^(?:|module|(?:text|application)\/(?:x-)?(?:javascript|ecmascript)|text\/javascript1\.[0-5]|text\/(?:jscript|livescript))$/,be=/^application\/(?:\S+\+)?json$/,N=e=>(x(e,"type")??"").trim().toLowerCase();function V(e){let n=b.createSourceFile("report.js",e,b.ScriptTarget.Latest,!1,b.ScriptKind.JS),s=[],i=[n];for(;i.length>0;){let t=i.pop();if(t.kind>=b.SyntaxKind.FirstJSDocNode&&t.kind<=b.SyntaxKind.LastJSDocNode)continue;let a=t.getChildren(n);a.length===0&&s.push(e.slice(t.getStart(n),t.end));for(let o=a.length-1;o>=0;o-=1)i.push(a[o])}return s.join(" ")}var Q=e=>new RegExp(`\\b(?:${e.filter(n=>n.api).map(n=>n.api).join("|")})\\b`);function $e(e,n){let s=[],i=t=>{n.test(t)&&s.push(V(t))};return y(e,t=>{t.tagName==="script"&&x(t,"src")===void 0&&K.test(N(t))&&i(t.childNodes.map(a=>a.value??"").join(""));for(let{name:a,value:o}of t.attrs??[]){if(/^on/.test(a)){i(o);continue}let c=o.replace(/[\t\n\r]/g,"").replace(/^[\x00-\x20]+/,"");if(!/^javascript:/i.test(c))continue;let r=c.slice(11);try{r=decodeURIComponent(r)}catch{}i(r)}}),s.join(`
|
|
3
|
+
`)}function je(e,n){let s=[],i=(o,c)=>{for(let r of o.childNodes??[]){let f=r.sourceCodeLocation;r.nodeName==="#comment"||c&&r.nodeName==="#text"?f&&s.push([f.startOffset,f.endOffset]):r.tagName==="script"?i(r,be.test(N(r))):r.tagName&&i(r.content??r,c||pe.includes(r.tagName))}};i(e,!1);let t="",a=0;for(let[o,c]of s.sort((r,f)=>r[0]-f[0]))o<a||(t+=`${n.slice(a,o)} `,a=c);return t+n.slice(a)}function R(e,n=u,s=D){let i=n.reduce((f,d)=>f.replaceAll(w(d),""),e),t=g(i),a=je(t,i),o=$e(t,Q(n)),c=new Set,r=f=>{c.has(f)||(c.add(f),(n.find(d=>d.id===f)?.after??[]).forEach(r))};for(let f of s){if(!(f.assets??[]).length)continue;((f.uses??[]).some(l=>l.test(a))||f.match&&ue(t,f).length>0)&&f.assets.forEach(r)}for(let f of n)f.api&&new RegExp(`\\b${f.api}\\b`).test(o)&&r(f.id);return c}function ze(e,n=D){let s=R(e,u,n),i=[];for(let t of u){let a=w(t);if(t.always||t.added||s.has(t.id)||!e.includes(a))continue;let o=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp(`[ \\t]*${o}[ \\t]*\\r?\\n?`),""),i.push(t.id)}return{html:e,removed:i,used:s}}function M(e,n){let s=[];return y(n,i=>{let t=Z(i),a=t===void 0?void 0:u.find(c=>m(c)===t.trim()),o=i.sourceCodeLocation;!a||!o||s.push({asset:a,start:o.startOffset,end:o.endOffset,line:o.startLine,exact:e.slice(o.startOffset,o.endOffset)===w(a)})},{inTemplates:!1}),s}var X=e=>e.tagName==="style"||e.tagName==="link"&&(x(e,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet"),Z=e=>e.tagName==="script"?x(e,"src"):X(e)?x(e,"href"):void 0,j=e=>!!e.sourceCodeLocation,A=e=>e.includes(`\r
|
|
4
|
+
`)?`\r
|
|
5
|
+
`:`
|
|
6
|
+
`;function $(e,n,{closing:s=!1}={}){let i=n===0?0:e.lastIndexOf(`
|
|
7
|
+
`,n-1)+1,t=e.slice(i,n);if(!/^[ \t]*$/.test(t))return{at:n,text:o=>o};let a=s?`${t} `:t;return{at:i,text:o=>`${a}${o}${A(e)}`}}function v(e,n){let s=/^[ \t]*/.exec(e.slice(e.lastIndexOf(`
|
|
8
|
+
`,n-1)+1))[0];return{at:n,text:i=>`${A(e)}${s}${i}`}}function ee(e){let n;return y(e,s=>{!n&&s.tagName==="main"&&(n=s)},{inTemplates:!1}),n}var ke="http://www.w3.org/1999/xhtml";function Oe(e){let n=e;for(let s=e.parentNode;s?.tagName;s=s.parentNode)s.namespaceURI!==ke&&(n=s);return n}function te(e,n,s){let i=O(n).find(o=>o.tagName==="html"),t=O(i??{}).find(o=>o.tagName==="head"),a=O(i??{}).find(o=>o.tagName==="body");if(s){let o=O(t??{}).filter(j),c=o.find(X);if(c)return $(e,c.sourceCodeLocation.startOffset);if(t?.sourceCodeLocation?.endTag)return $(e,t.sourceCodeLocation.endTag.startOffset,{closing:!0});if(o.length>0)return v(e,o.at(-1).sourceCodeLocation.endOffset);if(t?.sourceCodeLocation)return v(e,t.sourceCodeLocation.startTag.endOffset);let r=a?.sourceCodeLocation?.startTag?.startOffset??O(a??{}).find(j)?.sourceCodeLocation.startOffset;if(r!==void 0)return $(e,r)}else{let o=ee(n),c=d=>{for(let l=d.parentNode;l;l=l.parentNode)if(l===o)return!1;return!o?.sourceCodeLocation||d.sourceCodeLocation.startOffset>o.sourceCodeLocation.startOffset},r;if(y(a??{},d=>{!r&&d.tagName==="script"&&j(d)&&K.test(N(d))&&c(d)&&(r=d)},{inTemplates:!1}),r)return $(e,Oe(r).sourceCodeLocation.startOffset);let f=a?.sourceCodeLocation?.endTag??i?.sourceCodeLocation?.endTag;if(f)return $(e,f.startOffset,{closing:!0})}return{at:e.length,text:o=>`${A(e)}${o}`}}function oe(e,n,{free:s}){let i=M(e,n),t=new Map;for(let a of[!0,!1]){let o=u.filter(d=>k(d)===a),c=d=>i.find(l=>l.asset===d),r=o.map(c).find(Boolean),f=r?$(e,r.start):s?te(e,n,a):null;for(let d of o){let l=c(d);l?(t.set(d.id,{at:l.start,written:l}),f=v(e,l.end)):f&&t.set(d.id,f)}}return t}function ne(e,n,{tree:s=g(e),free:i,href:t=m}){let a=[];for(let[r,f]of oe(e,s,{free:i})){let d=C(r);f.written?f.written.exact&&t(d)!==m(d)&&a.push({at:f.written.start,end:f.written.end,text:w(d,t(d))}):n.has(r)&&a.push({at:f.at,end:f.at,text:f.text(w(d,t(d)))})}if(a.length===0)return e;a.sort((r,f)=>r.at-f.at);let o="",c=0;for(let{at:r,end:f,text:d}of a)o+=e.slice(c,r)+d,c=f;return o+e.slice(c)}function Ve(e,{used:n=R(e),href:s=m,page:i=!1}={}){let t=g(e),a=x(ee(t)??{},"data-doc-id")!==void 0,o=new Set(u.filter(c=>c.always||n.has(c.id)||c.added&&(a||i)||c.page&&i).map(c=>c.id));return ne(e,o,{tree:t,free:!0,href:s})}function Qe(e){let n=R(e);return ne(e,new Set(u.filter(s=>!s.always&&!s.added&&n.has(s.id)).map(s=>s.id)),{free:!1})}function Xe(e,{styles:n,scripts:s}){let i=g(e),t=[];y(i,r=>{let f=u.find(d=>m(d)===Z(r)?.trim().split("?")[0]);f&&j(r)&&t.push({style:k(f),end:r.sourceCodeLocation.endOffset})},{inTemplates:!1});let a=[[!0,n],[!1,s]].filter(([,r])=>r.length>0).map(([r,f])=>{let d=t.filter(p=>p.style===r).at(-1),l=d?v(e,d.end):te(e,i,r);return{at:l.at,text:f.map(l.text).join("")}}),o="",c=0;for(let{at:r,text:f}of a.sort((d,l)=>d.at-l.at))o+=e.slice(c,r)+f,c=r;return o+e.slice(c)}function Ze(e,n=g(e)){let s=[],i=[];if(y(n,o=>{let c=["data-doc-kit","data-doc-vendor"].find(r=>x(o,r)?.endsWith("-inline"))??(x(o,q)===void 0?void 0:q);c&&j(o)&&i.push({line:o.sourceCodeLocation.startLine,mark:`${c}="${x(o,c)}"`})},{inTemplates:!1}),i.length>0){let o=i.length>1?`, and ${i.length-1} more on line${i.length>2?"s":""} ${se(i.slice(1).map(({line:c})=>c))}`:"";s.push(`line ${i[0].line}: an export's inline copy of the kit (${i[0].mark}${o}), which a document's source never holds (the kit's tags are put in as the document is shown, so it would load twice): bring an exported file in with \u5BFC\u5165 instead of copying it in`)}let t=M(e,n);for(let{asset:o,line:c,exact:r}of t)r||s.push(`line ${c}: ${m(o)} is not loaded by the kit's own tag, ${w(o)}: take the tag out (the kit's tags are put in as the document is shown and exported)`);for(let o of u){let c=t.filter(r=>r.asset===o).map(r=>r.line);c.length>1&&s.push(`${m(o)} is loaded ${c.length} times (lines ${c.join(", ")}): keep one tag, or none`)}let a=o=>t.find(c=>c.asset===o);for(let o of u){let c=a(o);if(c)for(let r of o.after??[]){let f=a(C(r));f&&f.start>c.start&&s.push(`line ${c.line}: ${m(f.asset)} (line ${f.line}) must load before ${m(o)}`)}}return[...new Set(s)]}var se=e=>e.length>1?`${e.slice(0,-1).join(", ")} and ${e.at(-1)}`:e[0];function et(e,n=g(e)){let s=Q(u),i=[],t;return y(n,a=>{if(a.tagName!=="script"||x(a,"src")!==void 0||!j(a)||N(a)==="module"||!K.test(N(a)))return;let o=a.childNodes.map(p=>p.value??"").join("");if(!s.test(o))return;let c=V(o);t??=oe(e,n,{free:!0});let{startOffset:r,startLine:f}=a.sourceCodeLocation,d=u.filter(p=>p.api&&new RegExp(`\\b${p.api}\\b`).test(c)&&t.get(p.id).at>r),l=d.filter(p=>!t.get(p.id).written);l.length>0&&i.push(`line ${f}: this script names ${se(l.map(p=>p.api))} before the kit's scripts load (they are put in after </main>): move the script after </main>`);for(let p of d.filter(ie=>t.get(ie.id).written))i.push(`line ${f}: this script names ${p.api} before ${m(p)} loads (line ${t.get(p.id).written.line}): move the script after that tag`)},{inTemplates:!1}),i}function tt(e,n){let s=new Set,i="",t=0;for(let{asset:a,start:o,end:c,exact:r}of M(e,g(e)))!r||s.has(a.id)||(s.add(a.id),i+=e.slice(t,o)+n(we.find(f=>f.id===a.id)),t=c);return i+e.slice(t)}var ot=new Set(u.filter(e=>!k(e)).map(m)),nt=new Set(u.filter(k).map(m));async function Se({inlineFonts:e=!1}={}){let n=await _.readFile(C("katex-styles").vendor.source,"utf8");if(n=n.replace(/src:url\((fonts\/[^)]+\.woff2)\) format\("woff2"\),url\(fonts\/[^)]+\.woff\) format\("woff"\),url\(fonts\/[^)]+\.ttf\) format\("truetype"\)/g,'src:url($1) format("woff2")'),!e)return n;let s=[...new Set([...n.matchAll(/url\(fonts\/([^)]+\.woff2)\)/g)].map(i=>i[1]))];for(let i of s){let t=await _.readFile(h.join(xe,i));n=n.replaceAll(`url(fonts/${i})`,`url(data:font/woff2;base64,${t.toString("base64")})`)}return n}function st(e,{inline:n=!1}={}){return e.id==="katex-styles"?Se({inlineFonts:n}):_.readFile(e.vendor.source,"utf8")}export{b as a,Le as b,xe as c,He as d,u as e,m as f,ge as g,Ye as h,ze as i,Ve as j,Qe as k,Xe as l,Ze as m,et as n,tt as o,ot as p,nt as q,st as r};
|
|
@@ -0,0 +1,16 @@
|
|
|
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 Pe}from"./chunk-UMHUSOPJ.mjs";import{d as We,e as Jt,g as Vt,j as Ue,k as ze,l as qe,m as Xt}from"./chunk-FJYN7RTH.mjs";import{B as He,c as lt,d as Ge,q as xt,r as Ke,y as qt,z as ft}from"./chunk-UBBRTJ2R.mjs";import{b as rt,e as co}from"./chunk-A55HN5OK.mjs";co();import ro from"node:path";import{attr as w,curlyQuoted as lo}from"../browser/shared/html-tree.mjs";import{FOLDED_LINES as Je,LINE_START as Ve,NOWRAP as Zt,lineStart as fo,validFolded as uo}from"../browser/shared/code-lines.mjs";import{COLORS as ho}from"../browser/shared/colors.mjs";import{FLOWS as mo,instanceSlots as at,isInstance as it,isSlot as ls,matchesNode as pt}from"../browser/shared/components/index.mjs";import{HEADED as dt}from"../browser/shared/components/dialog.mjs";import{pageLanguage as go}from"../browser/shared/components/page.mjs";import{SHEETS_LABEL as Xe,shortSheets as po}from"../browser/shared/components/sheets.mjs";import{iconMarkup as Ze,iconValueOf as fs}from"../browser/shared/emoji/icon-value.mjs";import{escapeText as ht}from"../browser/shared/escape.mjs";import{COLUMN_GAP as No,READING_WIDTH as Tt,SPAN as Qe,SPAN_SIZE as ut}from"../browser/shared/media.mjs";import{kitNamespace as ds}from"../browser/shared/old-names.mjs";import{CHART_DATA as Oo,CHART_SOURCE as tt,TABLE_READERS as $o,nextChartKey as wo}from"../browser/shared/table-chart.mjs";import{BLOCK_COLORS as ae}from"../browser/editor/components/colors.mjs";import{DETAILS as bo,DIALOG as Yt,PAGE as us,SECTION as ko,SHEETS as Lo}from"../browser/editor/components/kit.mjs";import{DIALOG_TRIGGER as yo}from"../browser/editor/components/dialog/index.mjs";import{CHECKED as ie,FLOW as mt,TODO as te}from"../browser/editor/components/list/index.mjs";import{texSource as vo}from"../browser/editor/components/math/index.mjs";import{BOX_CLASSES as hs,HOLDS_ONE as Co,UNIT_KINDS as So}from"../browser/editor/components/registry.mjs";import{HEADER_LOOK as Ye}from"../browser/editor/components/table/index.mjs";import{backgroundColor as xo,parseColor as To,textColor as Eo}from"../browser/editor/page/clipboard/import/colors.mjs";var ce=new Set(["script","style","template","textarea","noscript","code","svg","math","select","option","button","iframe","video","audio","canvas","object","picture"]),_t=["doc-figure","doc-code","doc-diff","doc-math-inline","doc-math-block","doc-link-mention","doc-sheet-tabs","doc-state-fields","doc-filter-row","doc-image","doc-file","doc-bookmark","doc-embed","doc-icon","doc-title","doc-table-meta"],re=new Set(["p","h1","h2","h3","h4","h5","h6","li","td","th","dt","dd","blockquote","figcaption","caption","summary"]),Et=new Set(["main","section","div","article","aside","blockquote","li","details","dialog"]),Io=new Set(ho.map(({name:e})=>e)),C=e=>(w(e,"class")??"").split(/\s+/).filter(Boolean),ts=e=>C(e).every(o=>ae.includes(o)),Ao=ae.filter(e=>e.startsWith("doc-highlight-")),ct=e=>C(e).some(o=>!ds(o)),D=e=>e.nodeName==="#text",jt=/^[\s\u200b-\u200d\u2060\ufeff]*$/,V=e=>D(e)&&jt.test(e.value),L=e=>(e.childNodes??[]).filter(o=>o.tagName),Z=e=>(e.attrs??[]).map(o=>o.name),G=(e,o)=>Z(e).every(f=>o.includes(f)),_o=[ko.match,bo.match,Yt.match,Lo.match,"table.doc-table"].join(", ");function ms(e){let o=C(e);return o.some(f=>_t.includes(f))||Ge(e)||pt(e,_o)||hs.some(([f])=>o.includes(f))||So.some(f=>f.class&&o.includes(f.class)&&(!f.tag||[f.tag].flat().includes(e.tagName)))}var jo=e=>{for(let o=e.parentNode;o?.tagName&&o.tagName!=="main";o=o.parentNode)if(o.tagName==="figure")return!0;return!1},gs=new Set(["thead","tbody","tfoot","tr","colgroup","col"]),le=e=>ct(e)&&e.tagName!=="figure"&&!re.has(e.tagName)&&!gs.has(e.tagName)&&!ms(e),ps=new Set([...lt].filter(e=>!["header","main","dialog","form","fieldset","caption","dd","dt","figcaption","summary","li","td","th",...gs].includes(e))),Bo=/\\\(([\s\S]*?)\\\)/g,wt=e=>vo(e)&&/\S/.test(e);function Mo(e,o=!0){let f=o?e:/^\s*(?:\\\[[\s\S]*?\\\]|\$\$[\s\S]*?\$\$)/.exec(e)?.[0]??"";return/[<>]/.test(f)&&wt(f.replace(/</g,"\\lt ").replace(/>/g,"\\gt "))}var ee=new Set(["br","wbr","img","input"]),Ns=new Set([...lt,"script","style","template","noscript","link","meta"]),Os=new Set(["input","select","textarea","button","label","option"]),Ro=new Set([...lt,"hgroup","search","center","dir","listing","xmp","plaintext"]),se=e=>L(e).some(o=>Ro.has(o.tagName)||se(o)),$s=new Set(["main","section","div","article","aside","blockquote"]),Do=mo.join(", "),ws=e=>$s.has(e.tagName)&&!ct(e)&&(C(e).length===0||pt(e,Do))||ls(e),et=e=>D(e)?!jt.test(e.value):(e.childNodes??[]).some(et),Fo=hs.filter(([,e])=>Co.has(e)).map(([e])=>e),Go=e=>ws(e)&&C(e).some(o=>Fo.includes(o)),bs=e=>e.childNodes.some(o=>D(o)&&!jt.test(o.value))&&L(e).some(o=>lt.has(o.tagName)),Ko=/^[ \t\n\r\f]*/;function Qt(e){let o=[],f=[];for(let u of e)u.tagName&&Ns.has(u.tagName)?(o.push(f),f=[]):f.push(u);o.push(f);let p=u=>!u.tagName&&!et(u),O=u=>(D(u)||u.tagName&&!Os.has(u.tagName))&&et(u);return o.map(u=>{let $=u.findIndex(h=>!p(h));return $<0?[]:u.slice($,u.findLastIndex(h=>!p(h))+1)}).filter(u=>u.some(O))}function Ho(e){let o=[],f=p=>{for(let O of p.childNodes??[])O.tagName==="style"?o.push(O.childNodes.map(u=>u.value??"").join("")):O.tagName&&O.tagName!=="template"&&f(O)};return f(e),o.flatMap(p=>[...p.replace(/\/\*[\s\S]*?(?:\*\/|$)/g," ").matchAll(/([^{};]*)\{/g)].map(([,O])=>O))}var Po=(e,{tags:o=[],classes:f=[]})=>{let p=[...o.map(u=>`(?<![\\w.#-])${u}`),...f.map(u=>`\\.${u}`)],O=p.length?new RegExp(`(?:${p.join("|")})(?![\\w-])`,"i"):null;return!!O&&e.some(u=>O.test(u))};function Wo(e){let o=[],f=p=>{for(let O of p.childNodes??[])O.tagName==="script"?o.push(O.childNodes.map(u=>u.value??"").join("")):O.tagName&&O.tagName!=="template"&&f(O)};return f(e),o.join(`
|
|
3
|
+
`)}var fe=["contains-task-list","task-list-item"],de=["task-list-item"],ks=["task-list-item-checkbox"],ue=(e,o)=>C(e).every(f=>o.includes(f));function Ls(e){let o=e.childNodes.find(f=>!V(f));return o?.tagName==="input"&&G(o,["type","checked","disabled","class"])&&w(o,"type")?.toLowerCase()==="checkbox"&&ue(o,ks)&&o.sourceCodeLocation?.startTag?o:null}var ys=e=>e.tagName==="li"&&ue(e,de)&&w(e,ie)===void 0&&e.sourceCodeLocation?.startTag&&Ls(e),Uo=e=>e.tagName==="ul"&&ue(e,fe)&&L(e).length>0&&e.childNodes.every(o=>o.tagName==="li"||V(o))&&L(e).every(ys),zo={classes:[...new Set([...fe,...de,...ks])]},qo=/checkbox|task-list/i,oe=e=>e.tagName==="ol"&&(w(e,"data-doc-chart")==="flow"||w(e,"data-flow")!==void 0&&w(e,"data-doc-chart")===void 0),Jo=e=>e?.tagName==="ol"&&!ct(e)&&(C(e).includes(mt)||oe(e)),Vo=e=>e.tagName==="li"&&Jo(e.parentNode),At="doc-icon",Xo=e=>e.some(o=>o.tagName==="strong"||o.tagName==="b")&&e.every(o=>o.tagName==="strong"||o.tagName==="b"||D(o)&&jt.test(o.value)||o.nodeName==="#comment"),Zo=/^(?:inherit|unset|currentcolor|none)$/i,Qo=/^(?:inherit|initial|unset|revert|revert-layer|transparent|none)$/i,U=e=>e.replace(/\s+/g," ").trim(),es=/^\s*--doc-(?:table-height|span)\s*:/i;function ne(e){let o=e.replace(/\/\*[\s\S]*?(?:\*\/|$)/g," "),f=[],p="",O=0,u=0;for(let $=0;$<=o.length;$++){let h=o[$];p?h==="\\"?$++:h===p&&(p=""):h==='"'||h==="'"?p=h:h==="("?O++:h===")"?O=Math.max(0,O-1):(h===";"&&O===0||$===o.length)&&(f.push(o.slice(u,$)),u=$+1)}return f.filter($=>$.trim())}function vs(e){let o=new Map;for(let r of ne(e)){let N=r.indexOf(":"),i=U(N<0?r:r.slice(0,N)).toLowerCase();o.set(i==="background-color"?"background":i,N<0?"":U(r.slice(N+1).replace(/!\s*important\s*$/i,"")))}let f=[],p=[],O,u,$=new Set,h=(r,N,i)=>{if((r==="color"?Zo:Qo).test(N))return;let d=To(N);if(!d||d.a===0&&r==="color"){f.push(r);return}if(d.a===0)return;let g=i(N,{nearest:!0})?.replace(/_background$/,"");if(!g||!Io.has(g)){p.push(`${r} ${N} left out: the ${r==="color"?"text's":"page's"} own is the nearest`);return}return i(N)?.replace(/_background$/,"")!==g&&p.push(`${r} ${N} written as the kit's ${g}${r==="color"?"":" highlight"}`),g};for(let[r,N]of o)r==="color"?O=h(r,N,Eo):r==="background"?u=h(r,N,xo):r==="font-weight"&&/^(?:bold|bolder|[6-9]\d\d)$/i.test(N)?$.add("strong"):r==="font-style"&&/^(?:italic|oblique)\b/i.test(N)?$.add("em"):(r==="text-decoration"||r==="text-decoration-line")&&/^(?:(?:underline|line-through|solid)\s*)+$/i.test(N)&&/underline|line-through/i.test(N)?(/underline/i.test(N)&&$.add("u"),/line-through/i.test(N)&&$.add("s")):f.push(r);if(f.length)return{foreign:[...new Set(f)]};let v=[];O&&v.push([`<span class="doc-text-${O}">`,"</span>"]),u&&v.push([`<span class="doc-highlight-${u}">`,"</span>"]);for(let r of["strong","em","u","s"])$.has(r)&&v.push([`<${r}>`,`</${r}>`]);return{open:v.map(([r])=>r).join(""),close:v.map(([,r])=>r).reverse().join(""),notes:p}}var ss=/^(?:language|lang)-([\w#+.-]+)$/,Yo=new Set(["data-language","data-lang","data-block-id"]),tn=[{name:Ve,names:[Ve,"data-start"],value:e=>fo(e)?.toString()??null,says:"the number of its first line is a whole number from 1"},{name:"data-line-numbers",names:["data-line-numbers"],value:e=>/^\s*(?:true|false)\s*$/i.test(e)?e.trim().toLowerCase():null,says:"false hides its line numbers, true shows them"},{name:Je,names:[Je],value:e=>uo(U(e))?U(e):null,says:"its folded lines are their numbers from 1, spaces between"}],os="data-title",ns="data-wrap",en=e=>L(e).length===1&&L(e)[0].tagName==="code"&&e.childNodes.every(o=>o.tagName||V(o))?L(e)[0]:null,sn=new Set(["a","abbr","b","bdi","bdo","cite","code","data","del","dfn","em","font","i","ins","kbd","mark","q","s","samp","small","span","strike","strong","sub","sup","time","tt","u","var","br","wbr"]),on=new Set(["code","kbd","samp","tt","var"]);function Cs(e){for(let o of e.childNodes){if(D(o))continue;if(!o.tagName)return"a comment in its <figcaption>";if(["img","picture","svg"].includes(o.tagName))return"a picture in its <figcaption>";if(!sn.has(o.tagName))return`a <${o.tagName}> in its <figcaption>`;if(!o.sourceCodeLocation?.startTag||!(o.sourceCodeLocation.endTag||ee.has(o.tagName)))return`a <${o.tagName}> not closed in its <figcaption>`;let f=Cs(o);if(f)return f}return""}function as(e){let o=L(e),f=o.filter(v=>v.tagName==="pre"),p=o.filter(v=>v.tagName==="figcaption");if(!f.length)return null;let[O]=f,[u=null]=p,$=e.childNodes.find(v=>!v.tagName&&!V(v)),h=f.length>1||p.length>1||o.length>f.length+p.length?"more than the pre and one <figcaption> in its <figure>":$?D($)?"words in its <figure> outside its caption":"a comment in its <figure>":u?Z(u).length?`its <figcaption> has an attribute of its own (${Z(u).join(", ")})`:u.sourceCodeLocation?.endTag?Cs(u):"its <figcaption> is not closed in the file":"";return h?{pre:O,caption:u,why:h}:{pre:O,caption:u}}function It(e){let o=(e.attrs??[]).filter(({value:p})=>p.trim()),f=e.tagName==="abbr";return o.map(p=>`${p.name} ${JSON.stringify(U(p.value))} dropped: ${f&&p.name==="title"?"write the full name in the text":"write it in the text if the reader needs it"}`)}var z=e=>e.replace(/&/g,"&").replace(/"/g,""");function nn(e){let o=new Set,f=p=>{for(let O of p.childNodes??[])if(O.tagName){for(let u of[tt,...$o])w(O,u)!==void 0&&o.add(w(O,u));f(O.tagName==="template"?O.content:O)}};return f(e),o}function an(e){let o=new Map,f=p=>{for(let O of p.childNodes??[]){if(!O.tagName)continue;let u=w(O,"id");u!==void 0&&o.set(u,(o.get(u)??0)+1),f(O.tagName==="template"?O.content:O)}};return f(e),o}var cn=/^[A-Za-z][\w-]{0,63}$/;function rn(e){let o=Pe(e),f=rt(o,{sourceCodeLocationInfo:!0}),p=bt(f);if(!p)return{text:o,changes:[]};let O=[],u=[],$=t=>o.slice(0,t).split(`
|
|
4
|
+
`).length,h=(t,s,n=[],l={})=>{let a=$(t.sourceCodeLocation.startOffset);n.length||u.push({line:a,rule:s,...l});for(let c of n)u.push({line:a,rule:s,note:c,...l})},v=0,r=(t,s,n,{opens:l=null,closes:a=null,move:c=null,leaves:m=!1}={})=>O.push({start:t,end:s,text:n,order:v++,opens:l,closes:a,move:c,leaves:m}),N=(t,s,n,l)=>{r(t,t,n,{opens:s}),r(s,s,l,{closes:t})},i=t=>t.sourceCodeLocation?.startTag,d=t=>t.sourceCodeLocation?.endTag,g=(t,s,{drop:n=[]}={})=>{let l=C(t).filter(m=>!n.includes(m)),a=[...l,...s.filter(m=>!l.includes(m))],c=t.sourceCodeLocation.attrs?.class;if(a.join(" ")!==C(t).join(" "))if(c&&a.length)r(c.startOffset,c.endOffset,`class="${z(a.join(" "))}"`);else if(c)S(t,"class");else{let m=i(t).startOffset+1+t.tagName.length;r(m,m,` class="${z(a.join(" "))}"`)}},S=(t,s)=>{let n=t.sourceCodeLocation.attrs[s],l=n.startOffset;for(;/[ \t\n\r\f]/.test(o[l-1]??"");)l--;r(l,n.endOffset,"")},T=(t,s,{classes:n=[],drop:l=[]}={})=>{let a=t.sourceCodeLocation,c=Object.entries(a.attrs??{}).filter(([y])=>y!=="class"&&!l.includes(y)).map(([,y])=>` ${o.slice(y.startOffset,y.endOffset)}`).join(""),m=[...n,...C(t).filter(y=>!n.includes(y))];return`<${s}${m.length?` class="${z(m.join(" "))}"`:""}${c}>`},M,q=t=>Po(M??=Ho(f),t),Q,Bs=t=>t.test(Q??=Wo(f)),K=(t,s,n)=>{r(i(t).startOffset,i(t).endOffset,s),d(t)&&r(d(t).startOffset,d(t).endOffset,n)},Mt=t=>K(t,"",""),P=t=>!!(i(t)&&(d(t)||t.tagName==="img")),me,ge=t=>{let s=w(t,"id");if(t.tagName!=="dialog"||!G(t,["id"])||!cn.test(s??"")||!P(t))return!1;let n=L(t);return!(n.length?ps.has(n[0].tagName)&&P(n[0]):t.childNodes.some(a=>!V(a)&&a.nodeName!=="#comment"))||n.some(a=>a.tagName==="form")?!1:(me??=an(f),me.get(s)===1)},Ms=t=>{let s=L(t)[0];return!pt(s,Yt.short)||Z(s).length?null:t.childNodes.slice(0,t.childNodes.indexOf(s)).every(V)?s:null},pe=t=>t.tagName==="dialog"&&(C(t).includes("doc-dialog")||ge(t)),Rt=(t,s=[])=>{for(let n of t.childNodes??[])if(n!==p){if(it(n)){at(n).forEach(l=>Rt(l,s));continue}pe(n)&&P(n)?s.push(n):Rt(n,s)}return s},Dt=d(p)?Rt(f):[],Ne,Rs=t=>(Ne??=new Set((function s(n,l=[]){for(let a of n.childNodes??[])if(a.tagName){if(it(a)){at(a).forEach(c=>s(c,l));continue}pe(a)&&l.push(w(a,"id")),s(a,l)}return l})({childNodes:[p,...Dt]})),/^#./.test(t??"")&&Ne.has(t.slice(1))),Ds=t=>{let[s,...n]=L(t);if(!s||n.length||!C(s).includes("doc-dialog-panel"))return null;let[l,a,...c]=L(s);if(c.length||!l||!a||!C(l).includes(dt.header)||!C(a).includes("doc-dialog-content"))return null;let m=x=>x.childNodes.some(_=>!_.tagName&&!V(_)&&_.nodeName!=="#comment");if(m(s)||m(l)||!P(l)||!i(a))return null;let y=L(l),k=y.filter(x=>C(x).includes(dt.title)),I=y.filter(x=>!k.includes(x)),A=x=>(C(x).includes(dt.close)||w(x,dt.closeAttribute)!==void 0)&&P(x);return k.length!==1||!P(k[0])||I.length>1||!I.every(A)?null:{header:l,title:k[0],close:I[0]??null,content:a}},Nt,Oe=(t,s=[])=>{for(let n of t.childNodes??[])if(n.tagName){for(let{name:l,value:a}of n.attrs)l!=="id"&&l!=="class"&&s.push(a);(n.tagName==="script"||n.tagName==="style")&&s.push(n.childNodes.map(l=>l.value??"").join("")),Oe(n,s)}return s},Fs=(t,s)=>{Nt??=Oe(f).join(`
|
|
5
|
+
`);let n=0;for(let l=Nt.indexOf(t);l>=0;l=Nt.indexOf(t,l+t.length))!/[\w-]/.test(Nt[l-1]??"")&&!/[\w-]/.test(Nt[l+t.length]??"")&&n++;return n>(s?1:0)};function Gs(t){let s=Ds(t);if(!s)return;let{header:n,title:l,close:a,content:c}=s,m=w(l,"id"),y=!!m&&w(t,"aria-labelledby")?.trim()===m;y&&S(t,"aria-labelledby"),r(i(n).startOffset,i(n).endOffset,o.slice(i(c).startOffset,i(c).endOffset));let k=i(l).startOffset+1;r(k,k+l.tagName.length,"h3"),g(l,[],{drop:[dt.title]}),m!==void 0&&!(m&&Fs(m,y))&&S(l,"id"),r(d(l).startOffset,d(l).endOffset,"</h3>"),a&&r(a.sourceCodeLocation.startOffset,a.sourceCodeLocation.endOffset,""),r(d(n).startOffset,d(n).endOffset,""),r(i(c).startOffset,i(c).endOffset,"")}let Ft=t=>{for(let s of t.childNodes??[]){if(it(s)){at(s).forEach(Ft);continue}s.tagName&&pt(s,Yt.match)&&Gs(s),Ft(s)}},$e=new Set;function we(t){let s=t.tagName;if(!P(t))return!1;let n=[];if(s==="mark"&&G(t,[]))K(t,'<span class="doc-highlight-yellow">',"</span>");else if((s==="del"||s==="strike")&&G(t,["cite","datetime"]))K(t,"<s>","</s>"),n=It(t);else if(s==="ins"&&G(t,["cite","datetime"]))K(t,"<u>","</u>"),n=It(t);else{if(["kbd","samp","tt","var"].includes(s)&&G(t,[]))return K(t,"<code>","</code>"),$e.add(t),h(t,s),!0;if(s==="a"&&G(t,["href"])&&Rs(w(t,"href")))return g(t,[yo]),h(t,"dialog link"),!1;if(s==="small"&&G(t,[]))K(t,'<span class="doc-text-gray">',"</span>");else if(s==="q"&&G(t,["cite"]))K(t,"\u201C","\u201D"),n=It(t);else if(["abbr","cite","dfn","time","bdi","data"].includes(s)&&G(t,["title","datetime","value"]))Mt(t),n=It(t);else if(s==="span"&&G(t,[])||s==="font"&&G(t,["color"])&&!w(t,"color")?.trim())Mt(t);else if(s==="span"&&G(t,["style"])||s==="font"&&G(t,["color"])){let l=vs(s==="span"?w(t,"style")??"":`color: ${w(t,"color")}`);if(l.foreign)return!1;K(t,l.open,l.close),n=l.notes}else return!1}return $e.add(t),h(t,s,n),!1}function Ks(t){let{startOffset:s,endOffset:n}=t.sourceCodeLocation,l=o.slice(s,n);for(let a of l.matchAll(Bo))N(s+a.index,s+a.index+a[0].length,'<span class="doc-math-inline">',"</span>"),u.push({line:$(s+a.index),rule:"formula"})}let Gt=new Set,be=new Set;function kt(t,s=()=>!1){for(let n of Qt(t)){if(!n.every(k=>k.tagName?i(k)&&(d(k)||ee.has(k.tagName))&&!se(k):k.sourceCodeLocation))continue;let l=n[0].sourceCodeLocation.startOffset,a=n.at(-1).sourceCodeLocation.endOffset,c=o.slice(l,a),m=l+Ko.exec(c)[0].length,y=a-/[ \t\n\r\f]*$/.exec(c)[0].length;if(n.every(D)&&wt(o.slice(m,y)))N(m,y,'<div class="doc-math-block">',"</div>"),u.push({line:$(m),rule:"display formula"}),n.forEach(k=>be.add(k));else if(s(n)){let k=Xo(n);N(m,y,k?"<p>":"<p><strong>",k?"</p>":"</strong></p>"),u.push({line:$(m),rule:"step title",...Le(n[0].parentNode)}),n.forEach(I=>Gt.add(I))}else N(m,y,"<p>","</p>"),u.push({line:$(m),rule:"loose words"}),n.forEach(k=>Gt.add(k))}}let Hs=t=>t[0].parentNode.childNodes.slice(0,t[0].parentNode.childNodes.indexOf(t[0])).every(s=>!s.tagName||C(s).includes(At)),ke=new Set,Le=t=>ke.has(t.parentNode)?{}:(ke.add(t.parentNode),{note:"a step's own words written as its title, the first block of its node: <li><p><strong>\u2026</strong></p> then its content (a paragraph, a list\u2026)</li>"}),Ps=t=>{if(kt(t.childNodes,Hs),t.childNodes.filter(a=>a.tagName&&!C(a).includes(At)).length>0||Qt(t.childNodes).length>0||!i(t)||!d(t))return;let l=t.childNodes.filter(a=>a.tagName).at(-1)?.sourceCodeLocation?.endOffset??i(t).endOffset;r(l,l,"<p></p>"),u.push({line:$(l),rule:"step title",...Le(t)})},Kt,ye=()=>{Kt??=nn(f);let t=wo(Kt);return Kt.add(t),t},Ws=(t,s)=>`<div data-doc-chart="${z(w(t,"data-doc-chart"))}" ${Oo}="${z(s)}"></div>`,Ot=o.includes(`\r
|
|
6
|
+
`)?`\r
|
|
7
|
+
`:`
|
|
8
|
+
`,ve=t=>/^[ \t]*/.exec(o.slice(o.lastIndexOf(`
|
|
9
|
+
`,t-1)+1))[0];function Ce(t,s,n,l=null){let a=Se(t),c=a?ft(o,a.sourceCodeLocation.startOffset,a.sourceCodeLocation.endOffset):null,m=!!c&&(c.start!==a.sourceCodeLocation.startOffset||c.end!==a.sourceCodeLocation.endOffset),y=a?{from:i(a).endOffset,to:d(a).startOffset}:null,k=_=>`<figure class="doc-figure">${_?`<h3>${_}</h3>`:""}${Ws(t,n)}</figure>`,I=_=>y?_:_(""),A=m?`${Ot}${ve(i(s).startOffset)}`:"",x=!!(l??d(s));if(x){let _=l?d(t).endOffset:d(s).endOffset;r(_,_,I(F=>`${l??""}${A}${k(F)}`),{closes:i(s).startOffset,move:y}),u.push({line:$(_),rule:"chart",key:n})}else r(i(s).startOffset,i(s).startOffset,I(_=>`${k(_)}${A}`),{opens:i(s).endOffset,move:y}),u.push({line:$(i(s).startOffset),rule:"chart",key:n});return c&&r(c.start,c.end,""),x&&!!l}let[Us]=Ye,Se=t=>{let s=t.childNodes.find(n=>!V(n));return s?.tagName!=="caption"||!P(s)||Z(s).length>0||!et(s)||!s.childNodes.every(n=>D(n)||n.tagName&&!Ns.has(n.tagName)&&!Os.has(n.tagName)&&!se(n))||s.childNodes.every(D)&&wt(o.slice(i(s).endOffset,d(s).startOffset))||q({tags:["caption"]})?null:s},zs=t=>{let s=w(t,"rowspan");return s===void 0||/^\s*\d+\s*$/.test(s)&&Number(s)===1},qs=t=>(w(t,"scope")??"").trim().toLowerCase()==="row";function Js(t){let s=L(t).filter(m=>["thead","tbody","tfoot"].includes(m.tagName)),n=s.flatMap(m=>L(m)).flatMap(m=>L(m)).filter(m=>m.tagName==="th"&&i(m)),l=!q({tags:["th","thead"]});if(l)for(let m of n)qs(m)||g(m,ae.some(y=>C(m).includes(y))?[Us]:Ye);let a=l||!n.length?[]:["its th as written (no header look, no thead): the document's own <style> styles th"],c=m=>m.length>0&&m.every(y=>y.tagName==="tr"&&P(y));for(let m of s){let y=L(m);if(m.tagName!=="tbody"||!c(y))continue;let[k,...I]=y,A=l&&s.length===1&&I.length>0&&L(k).length>0&&L(k).every(F=>F.tagName==="th"&&zs(F)),x=i(m);if(x){if(!A||!d(m))continue;r(x.startOffset,x.endOffset,"<thead>"),r(k.sourceCodeLocation.endOffset,k.sourceCodeLocation.endOffset,`</thead>${o.slice(x.startOffset,x.endOffset)}`),h(k,"header row");continue}A&&(N(k.sourceCodeLocation.startOffset,k.sourceCodeLocation.endOffset,"<thead>","</thead>"),h(k,"header row"));let _=A?I:y;N(_[0].sourceCodeLocation.startOffset,_.at(-1).sourceCodeLocation.endOffset,"<tbody>","</tbody>")}return a}let Ht,Vs=()=>{Ht??=(function s(n,l=new Set){for(let a of n.childNodes??[])a.tagName&&(w(a,"data-doc-sheets")!==void 0&&l.add(w(a,"data-doc-sheets")),s(a.tagName==="template"?a.content:a,l));return l})(f);let t=1;for(;Ht.has(`tabs-${t}`);)t++;return Ht.add(`tabs-${t}`),`tabs-${t}`},xe=new Set,Xs=t=>{let s=[],n=a=>a.childNodes.map(c=>D(c)?c.sourceCodeLocation?o.slice(c.sourceCodeLocation.startOffset,c.sourceCodeLocation.endOffset):c.value:c.tagName?(i(c)&&s.push(U(o.slice(i(c).startOffset,i(c).endOffset))),c.tagName==="br"?" ":n(c)):"").join(""),l=a=>a.childNodes.map(c=>D(c)?c.value:c.tagName==="br"?" ":c.tagName?l(c):"").join("");return{raw:U(n(t)),plain:U(l(t)),left:[...new Set(s)]}},Zs=(t,s,n)=>{let l=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+/,"").slice(0,48).replace(/-+$/,"")||`tab-${s+1}`,a=l;for(let c=2;n.has(a);c++)a=`${l}-${c}`;return n.add(a),a};function Qs(t,s){let n=go(o),l=Xe[n]??Xe.zh,a=w(t,"data-doc-sheets")?.trim()?null:Vs(),c=new Set,m=[],y=s.map(({section:I,heading:A},x)=>{let{raw:_,plain:F,left:Y}=Xs(A),st=Zs(F,x,c);Z(A).length&&m.push(`${Z(A).join(", ")} of the heading "${F}" left out: a tab is its name alone`);for(let ot of Y)m.push(`${ot} in the heading "${F}" left out: a tab's name is plain text`);K(I,`<div data-doc-sheet="${st}">`,"</div>"),xe.add(A);let{startOffset:J,endOffset:X}=A.sourceCodeLocation,W=ft(o,J,X);return r(W.start,W.end,Ot.repeat(o.slice(W.start,W.end).split(`
|
|
10
|
+
`).length-1)),He({sheet:st,title:_})}),k=T(t,t.tagName,{classes:["doc-sheet-shell"],drop:a?["data-doc-sheets"]:[]});a&&(k=k.replace(/>$/,` data-doc-sheets="${a}">`)),w(t,"aria-label")===void 0&&(k=k.replace(/>$/,` aria-label="${l}">`)),r(i(t).startOffset,i(t).endOffset,`${k}<div class="doc-sheet-tabs" aria-label="${l}">${y.join("")}</div>`),h(t,"sheets",m)}let Ys=t=>{let s=L(t)[0];return L(t).length===1&&s.tagName==="a"&&C(s).join(" ")==="doc-bookmark"&&G(s,["class","href","title","target","rel"])&&!!w(s,"href")?.trim()&&P(s)&&s.childNodes.every(D)&&t.childNodes.every(n=>n===s||V(n))};function to(t){let s=L(t)[0],n=w(s,"href").trim(),l=U(w(s,"title")??""),a=n;try{a=new URL(n).hostname||n}catch{}let c=[],m=w(s,"target");m!==void 0&&m.trim()!=="_blank"&&c.push(`target ${JSON.stringify(U(m))} left out: a bookmark opens its page in a new tab`);let y=w(s,"rel");y!==void 0&&y.split(/\s+/).some(A=>A&&!["noopener","noreferrer"].includes(A.toLowerCase()))&&c.push(`rel ${JSON.stringify(U(y))} left out: a bookmark's link is rel="noopener noreferrer"`),r(i(t).startOffset,i(t).endOffset,T(t,"figure",{classes:["doc-bookmark"]}));let k=et(s)?"":ht(a);r(i(s).startOffset,i(s).endOffset,`<a class="doc-bookmark-card" href="${z(n)}" target="_blank" rel="noopener noreferrer"><span class="doc-bookmark-text"><span class="doc-bookmark-title">${k}`);let I=l?`<span class="doc-bookmark-description">${ht(l)}</span>`:"";r(d(s).startOffset,d(s).endOffset,`</span>${I}<span class="doc-bookmark-url"><span class="doc-bookmark-href">${ht(n)}</span></span></span></a>`),r(d(t).startOffset,d(t).endOffset,"<figcaption></figcaption></figure>"),h(t,"bookmark",c)}let eo=t=>{let s=t?.parentNode;if(!t?.tagName||!C(t).includes("doc-column")||!s?.tagName||!C(s).includes("doc-columns"))return null;let n=c=>Number(/--doc-column-ratio\s*:\s*(\d*\.?\d+)/i.exec(w(c,"style")??"")?.[1]??1)||1,l=L(s).filter(c=>C(c).includes("doc-column")),a=l.reduce((c,m)=>c+n(m),0);return(Tt-No*(l.length-1))/Tt*(n(t)/a)},Pt=(t,s,n)=>{let l=w(t,"width"),a=/^\s*(\d+(?:\.\d+)?)\s*(px|%)?\s*$/i.exec(l??""),c=(s?w(s,"style")??"":"").trim().replace(/;\s*$/,""),m=t.sourceCodeLocation.attrs?.width;if(!a||!m||/--doc-span\s*:/i.test(c))return null;let y=a[2]==="%",k=y?eo(n):null,I=y?Number(a[1])/100*(k??1):Number(a[1])/Tt,A=Math.round(Math.min(ut.max,Math.max(ut.min,I))*1e3)/1e3,x=m.startOffset;for(;/[ \t\n\r\f]/.test(o[x-1]??"");)x--;r(x,m.endOffset,"");let _=I<ut.min||I>ut.max?`, within ${ut.min} to ${ut.max}`:"",F=y?k===null?"a share of the width it stands in":`a share of the width it stands in, its column ${Math.round(k*1e3)/1e3} of the reading width`:`${Number(a[1])}px of the ${Tt}px reading width`;return{attribute:` style="${z(`${c?`${c}; `:""}${Qe}: ${A}`)}"`,note:`width="${l}" written as ${Qe}: ${A} on its figure (${F}${_}; at most the width it stands in)`}},Wt=(t,s)=>{let n=t?T(t,"figure",{classes:["doc-image"],drop:s?.attribute?["style"]:[]}):'<figure class="doc-image">';return s?.attribute?`${n.slice(0,-1)}${s.attribute}>`:n},so=t=>L(t).filter(s=>s.tagName==="img").length===1&&L(t).every(s=>s.tagName==="img"||s.tagName==="figcaption")&&t.childNodes.every(s=>s.tagName||V(s)),oo=t=>L(t).length===1&&L(t)[0].tagName==="img"&&t.childNodes.every(s=>s.tagName||V(s)),no=t=>t.childNodes.length>0&&t.childNodes.every(D)&&wt(o.slice(i(t).endOffset,d(t).startOffset)),Ut=new Set,Te=()=>q(zo)||Bs(qo),Ee=t=>Uo(t)&&!Te();function Ie(t,s=null,n=null,l=[]){let a=en(t),c=[t,a].filter(Boolean),m=[s,...c].filter(Boolean),y=c.flatMap(C).map(b=>ss.exec(b)?.[1]).find(Boolean)??m.map(b=>w(b,"data-language")??w(b,"data-lang")).find(Boolean),k=b=>m.find(E=>E.sourceCodeLocation.attrs?.[b]),I=(b,E)=>{let B=b?.sourceCodeLocation.attrs[E];return B?` ${o.slice(B.startOffset,B.endOffset)}`:""},A=k("id"),x=[...l],_=new Map(m.map(b=>[b,new Set])),F=b=>b.flatMap(E=>m.filter(B=>w(B,E)!==void 0).map(B=>(_.get(B).add(E),{element:B,name:E,value:w(B,E)}))),Y=(b,E)=>x.push(`${b.name} ${JSON.stringify(U(b.value))} left out (its <${b.element.tagName}>'s): ${E}`),st=tn.flatMap(({name:b,names:E,value:B,says:H})=>{let nt=F(E),R=nt.find(j=>B(j.value)!==null);for(let j of nt)j!==R&&Y(j,B(j.value)===null?H:`the block takes its <${R.element.tagName}>'s ${R.name}`);return R?[` ${b}="${z(B(R.value))}"`]:[]}),J=F([ns]),X=J.find(b=>/^\s*(?:true|false)\s*$/i.test(b.value));for(let b of J)b!==X&&Y(b,X?`the block takes its <${X.element.tagName}>'s ${ns}`:"false keeps its long lines on one line (they scroll), true wraps them");let W=X?X.value.trim().toLowerCase()==="false":c.some(b=>C(b).includes(Zt)),ot=c.flatMap(C).find(b=>Ao.includes(b)),je=F([os]),yt=n?null:je[0],Be=yt?ht(U(yt.value)):"";for(let b of je)b!==yt&&Y(b,n?"its caption is its title":`the block takes its <${yt.element.tagName}>'s ${os}`);let Me=b=>Object.keys(b.sourceCodeLocation.attrs??{}).filter(E=>E!=="class"&&!Yo.has(E)&&!(E==="id"&&b===A)&&!_.get(b).has(E)),Re=b=>{let E=C(b).filter(j=>!ss.test(j)&&j!==Zt&&j!==ot),B=Me(b),nt=(b.attrs.find(j=>j.name==="style")?.value??"").split(";").map(j=>j.trim()).filter(Boolean).every(j=>/^--doc-code-height\s*:/i.test(j)),R=[...E.length?[`class ${JSON.stringify(E.join(" "))}`]:[],...B.filter(j=>!(j==="style"&&nt))];return R.length&&x.push(`${R.join(", ")} kept on its <${b.tagName}>`),`<${b.tagName}${E.length?` class="${z(E.join(" "))}"`:""}${B.map(j=>I(b,j)).join("")}>`},zt=s?Me(s):[],De=`<div class="doc-code${W?` ${Zt}`:""}${ot?` ${ot}`:""}"${I(A,"id")}${I(k("data-block-id"),"data-block-id")}${y?` data-language="${z(y.toLowerCase())}"`:""}${st.join("")}${zt.map(b=>I(s,b)).join("")}>`;zt.length&&x.push(`${zt.join(", ")} kept on the block (its <figure>'s)`);let Fe=Re(t),vt=b=>a?`${b}${Fe}`:`${b}${Fe}<code>`,Ct=a&&P(a)?"</pre>":"</code></pre>",St=b=>`<div class="doc-code-title">${b}</div>`;if(!s)K(t,vt(`${De}${St(Be)}`),`${Ct}</div>`);else if(K(s,De,"</div>"),!n)K(t,vt(St(Be)),Ct);else{let{startOffset:b,endOffset:E}=n.sourceCodeLocation,B={from:i(n).endOffset,to:d(n).startOffset},H=R=>R.replace(/[ \t\n\r\f]+/g," ").trim(),nt=(R,j)=>o.slice(R,j).split(`
|
|
11
|
+
`).length-1;if(b<t.sourceCodeLocation.startOffset)r(b,E,R=>`${St(H(R))}${Ot.repeat(nt(b,E))}`,{move:B}),K(t,vt(""),Ct);else{let R=ft(o,b,E),j=nt(R.start,R.end),ao=j?`${Ot.repeat(j)}${ve(i(t).startOffset)}`:"";r(i(t).startOffset,i(t).endOffset,io=>vt(`${St(H(io))}${ao}`),{move:B}),r(R.start,R.end,""),d(t)&&r(d(t).startOffset,d(t).endOffset,Ct)}}if(a&&Z(a).length&&r(i(a).startOffset,i(a).endOffset,Re(a)),n){let b=new Set,E=B=>{for(let H of L(B))(!on.has(H.tagName)||Z(H).length)&&b.add(U(o.slice(i(H).startOffset,i(H).endOffset))),ee.has(H.tagName)?r(i(H).startOffset,i(H).endOffset,H.tagName==="br"?" ":""):(Mt(H),E(H))};E(n);for(let B of b)x.push(`${B} in its caption left out: a code block's title is plain text`)}h(s??t,"code",x)}function Ae(t,s){let n=t.tagName;if(!P(t))return!1;if((n==="p"||n==="div"&&C(t).length===0)&&no(t))return K(t,T(t,"div",{classes:["doc-math-block"]}),"</div>"),h(t,"display formula"),!0;if(n==="figure"&&C(t).length===0&&so(t)){let c=Pt(L(t).find(m=>m.tagName==="img"),t,s);return r(i(t).startOffset,i(t).endOffset,Wt(t,c)),L(t).some(m=>m.tagName==="figcaption")||r(d(t).startOffset,d(t).startOffset,"<figcaption></figcaption>"),h(t,"figure",c?[c.note]:[]),!0}if(n==="img"&&Et.has(s?.tagName)){let c=Pt(t,null,s);return N(i(t).startOffset,i(t).endOffset,Wt(null,c),"<figcaption></figcaption></figure>"),h(t,"picture",c?[c.note]:[]),!0}if(n==="p"&&Et.has(s?.tagName)&&Ys(t))return to(t),!0;if(w(t,"data-doc-sheets")!==void 0){let c=po(t)?.tabs;return c&&Qs(t,c),!1}if(n==="p"&&oo(t)){let c=Pt(L(t)[0],t,s);return K(t,Wt(t,c),"<figcaption></figcaption></figure>"),h(t,"picture",c?[c.note]:[]),!0}let l=n==="figure"&&C(t).length===0?as(t):null;if(l&&!l.why&&P(l.pre))return Ie(l.pre,t,l.caption),!0;if(n==="pre"&&!C(s??{}).includes("doc-code")){let m=s?.tagName==="figure"&&C(s).length===0&&L(s).some(k=>k.tagName==="figcaption")?as(s):null,y=m?.pre===t?m.why:"";return Ie(t,null,null,y?[`its <figure>'s caption stays a caption beside it: ${y}; a <figure> holding the pre and one <figcaption> of words alone makes them its title`]:[]),!0}if(n==="figure")return!Et.has(s?.tagName)||jo(t)?!0:(g(t,["doc-figure"]),h(t,"figure"),ct(t));let a=n==="table"&&C(s??{}).includes("doc-table-wrap");if(n==="table"&&w(t,"data-doc-chart")!==void 0&&!Et.has((a?s.parentNode:s)?.tagName))return!1;if(n==="table"&&w(t,"data-doc-chart")!==void 0&&a&&i(s)){let c=w(s,tt)??ye();if(Ce(t,s,c),w(s,tt)===void 0){let m=i(s).endOffset-1;r(m,m,` ${tt}="${z(c)}"`)}return r(i(t).startOffset,i(t).endOffset,T(t,"table",{drop:["data-doc-chart"]})),!1}if(n==="table"&&(!ct(t)||ms(t))&&!C(s??{}).includes("doc-table-wrap")){let c=t.sourceCodeLocation.attrs?.["data-block-id"],m=w(t,"data-doc-chart")!==void 0,k=(w(t,tt)?.trim()||null)??(m?ye():null),I=w(t,"style"),A=I===void 0?[]:ne(I).filter(W=>es.test(W)),x=A.length?ne(I).filter(W=>!es.test(W)):[],_=W=>` style="${z(W.map(ot=>ot.trim()).join("; "))}"`,F=`<div class="doc-table-wrap"${c?` ${o.slice(c.startOffset,c.endOffset)}`:""}${k?` ${tt}="${z(k)}"`:""}${A.length?_(A):""}>`,Y=T(t,"table",{classes:["doc-table"],drop:["data-block-id",...w(t,tt)!==void 0?[tt]:[],...m?["data-doc-chart"]:[],...A.length?["style"]:[]]}),st=x.length?`${Y.slice(0,-1)}${_(x)}>`:Y,J=m?null:Se(t),X=!1;if(m&&(X=Ce(t,t,k,"</div>")),J){let W=o.slice(i(t).endOffset,J.sourceCodeLocation.startOffset);r(i(t).startOffset,i(J).endOffset,'<p class="doc-note">'),r(d(J).startOffset,d(J).endOffset,`</p>${W}${F}${st}`),h(J,"caption")}else r(i(t).startOffset,i(t).startOffset,F,{opens:d(t).endOffset}),r(i(t).startOffset,i(t).endOffset,st);return X||r(d(t).endOffset,d(t).endOffset,"</div>",{closes:i(t).startOffset}),h(t,"table",Js(t)),!1}if(n==="details"&&ts(t)){let c=L(t)[0]?.tagName==="summary"?L(t)[0]:null;return!c||!P(c)||(r(i(t).startOffset,i(t).endOffset,T(t,"details",{classes:["doc-details"]})),L(c).some(m=>C(m).includes("doc-details-summary-label"))||N(i(c).endOffset,d(c).startOffset,'<span class="doc-details-summary-label">',"</span>"),N(d(c).endOffset,d(t).startOffset,'<div class="doc-details-content">',"</div>"),kt(t.childNodes.slice(t.childNodes.indexOf(c)+1)),h(t,"details")),!1}if(n==="dialog"&&ge(t)){let c=Ms(t);return r(i(t).startOffset,i(t).endOffset,T(t,"dialog",{classes:["doc-dialog"]})),N(i(t).endOffset,d(t).startOffset,'<div class="doc-dialog-panel"><div class="doc-dialog-content">',"</div></div>"),c&&K(c,"<h3>","</h3>"),kt(t.childNodes.slice(c?t.childNodes.indexOf(c)+1:0)),h(t,"dialog"),!1}if(n==="aside"&&ts(t)&&!q({tags:["aside"]}))return g(t,["doc-panel"]),Ut.add(t),h(t,"aside"),!1;if(n==="ul"&&Ee(t)){g(t,[te],{drop:fe});for(let c of L(t))_e(c);return h(t,"task list"),!1}if(oe(t)&&!ct(t))return r(i(t).startOffset,i(t).endOffset,T(t,"ol",{classes:[mt],drop:["data-doc-chart","data-flow"]})),h(t,"flowchart"),!1;if(n==="ul"&&C(t).includes(te)&&!ct(t)){let c=L(t).filter(ys);if(c.length&&!Te()){for(let m of c)_e(m);h(t,"task list")}return!1}return!1}function _e(t){let s=Ls(t);if(g(t,[],{drop:de}),w(s,"checked")!==void 0){let a=i(t).startOffset+1+t.tagName.length;r(a,a,` ${ie}`)}let{startOffset:n,endOffset:l}=s.sourceCodeLocation;r(n,l+(o[l]===" "?1:0),"")}function $t(t,s=null,n=!1){let l=()=>Qt(t.childNodes).length>0;ws(t)&&(bs(t)||(Ut.has(t)||Go(t))&&l())?kt(t.childNodes):Vo(t)&&i(t)&&Ps(t);for(let a of t.childNodes??[]){if(D(a)){a.sourceCodeLocation&&a.value.includes("\\(")&&!be.has(a)&&Ks(a);continue}if(!(!a.tagName||ce.has(a.tagName)||xe.has(a))){if(it(a)){for(let c of at(a))Ut.add(c),$t(c,c);continue}if(!(w(a,"data-doc-chart")!==void 0&&a.tagName!=="table"&&!oe(a)||w(a,"contenteditable")!==void 0)&&!C(a).some(c=>_t.includes(c))){if(a.tagName==="pre"){Ae(a,t);continue}if(!(le(a)&&!Ee(a))){if(Gt.has(a)){we(a)||$t(a,a,!0);continue}Ae(a,t)||n&&we(a)||$t(a,a,n||re.has(a.tagName))}}}}}$t(p,p),$t({childNodes:Dt}),o.includes(dt.header)&&Ft(f);for(let t of Dt){let{startOffset:s,endOffset:n}=t.sourceCodeLocation,l=ft(o,s,n),a=d(p).startOffset,c=l.end>n?qt(o,a):null;r(a,a,m=>c===null?m:`${m}${Ot}${c}`,{move:{from:s,to:n}}),r(l.start,l.end,"",{leaves:!0}),h(t,"card outside main")}if(!O.length)return{text:o,changes:[]};let Lt=O;for(let t of O.filter(s=>s.move)){let{from:s,to:n}=t.move,l=Lt.filter(a=>!a.move&&!a.leaves&&a.start>=s&&a.end<=n);Lt=Lt.filter(a=>!l.includes(a)),t.text=t.text(is(o.slice(s,n),l,s)),t.move=null}return{text:is(o,Lt),changes:u.sort((t,s)=>t.line-s.line)}}function is(e,o,f=0){let p=h=>h.closes!==null?0:h.opens!==null?2:1,O=(h,v)=>p(h)-p(v)||(h.closes!==null?v.closes-h.closes||v.order-h.order:0)||(h.opens!==null?v.opens-h.opens:0)||h.order-v.order,u=[...o].sort((h,v)=>v.start-h.start||v.end-h.end||(h.start===h.end?O(v,h):v.order-h.order)),$=e;for(let{start:h,end:v,text:r}of u)$=$.slice(0,h-f)+r+$.slice(v-f);return $}function Ss(e,{finish:o=f=>f}={}){let{text:f,changes:p}=rn(e);return{text:p.length?o(f):f,changes:p}}function Kn(e,{finish:o,next:f,metadata:p=null}={}){let O=Xt(e);if(O.length)return{text:e,changes:[],added:0,given:[],repeated:O,title:null,icon:null};let u=Ss(e,{finish:o}),{text:$,added:h,given:v}=Ue(u.text,f),r=Ts($,p);return{...r,changes:u.changes,added:h,given:qe(r.text,v),repeated:O}}function Hn(e){return Xt(e).length?[]:ze(Ss(e).text)}var xs=e=>e.units.find(o=>o.kind==="icon"&&e.boxes[o.box]?.kind==="header")??null;function Ts(e,o=null){let f=rt(e,{sourceCodeLocationInfo:!0}),p=bt(f),O=p&>(p,r=>pt(r,us.title)),u=O?.sourceCodeLocation?.endTag?xt(e.slice(O.sourceCodeLocation.startTag.endOffset,O.sourceCodeLocation.endTag.startOffset)):"",$=e,h=null;if(u){let r=gt(f,S=>S.tagName==="head"),i=(r&>(r,S=>S.tagName==="title"))?.sourceCodeLocation,d=typeof o?.title=="string"?o.title:null,g=!1;if(i?.startTag&&i.endTag){let S=xt(e.slice(i.startTag.endOffset,i.endTag.startOffset));if(!(d&&d!==u&&d.includes(u)?S.split(d).join("\0").includes(u):S.includes(u))){let M=d&&d!==u&&Ke(e,{from:d,to:u})||{start:i.startTag.endOffset,end:i.endTag.startOffset,text:ht(u)};$=e.slice(0,M.start)+M.text+e.slice(M.end),g=!0}}(g||d!==null&&d!==u)&&(h={from:d,to:u,page:g})}let v=null;if(p&&o&&typeof o=="object"){let r=Vt(e),N=xs(r),i=N?fs(e.slice(N.start,N.end)):null,d=o.icon??null;N?i!==null&&i!==d&&(v={from:d,to:i}):v=d===null?null:{from:d,to:d,missing:!0}}return{text:$,title:h,icon:v}}function Pn(e,{title:o,icon:f}={}){let p=N=>{let i=bt(rt(N,{sourceCodeLocationInfo:!0})),d=i&>(i,g=>pt(g,us.title));return d?.sourceCodeLocation?.endTag?d.sourceCodeLocation:null},O=N=>xs(Vt(N)),u=p(e);if(!u)return{missing:!0};let $=xt(e.slice(u.startTag.endOffset,u.endTag.startOffset)),h=O(e),v={title:$,icon:h?fs(e.slice(h.start,h.end)):null},r=e;if(f!==void 0&&f!==v.icon){if(h&&f===null){let N=ft(r,h.start,h.end);r=r.slice(0,N.start)+r.slice(N.end)}else if(h){let N=/\sdata-block-id="[^"]*"/.exec(/^<[^>]*>/.exec(r.slice(h.start,h.end))?.[0]??"")?.[0]??"";r=r.slice(0,h.start)+Ze(f,N)+r.slice(h.end)}else{let N=qt(r,u.startTag.startOffset);r=r.slice(0,u.startTag.startOffset)+Ze(f)+(N===null?"":`
|
|
12
|
+
${N}`)+r.slice(u.startTag.startOffset)}u=p(r)}return o!==void 0&&(r=r.slice(0,u.startTag.endOffset)+ht(o)+r.slice(u.endTag.startOffset),r=Ts(r,{title:$||null}).text),{text:r,before:v}}var cs={table:"a table is the kit's framed table","header row":"a header row is a thead, its cells highlighted",caption:"a table's caption is a note line above it (p.doc-note)",figure:"a figure is the kit's card",picture:"a picture is the kit's picture block",details:"a details is the kit's disclosure",dialog:"a dialog is a detail card",aside:"an aside is a highlight panel","task list":"a task list is the kit's to-do list",flowchart:"a marked list is a flowchart",sheets:"headings become tabs",bookmark:"a link card is a bookmark","display formula":"a display formula is the kit's math block","card outside main":"a card outside main moved to main's end"};function Wn(e,o,{dryRun:f=!1,pending:p=!1,reread:O=!f&&!p}={}){let u=new Map;for(let{rule:N,line:i}of o)u.set(N,[...new Set([...u.get(N)??[],i])]);let $=[...u].map(([N,i])=>`${N} (line${i.length>1?"s":""} ${i.join(", ")})`).join(", "),h=ro.resolve(e),v=[...u.keys()].filter(N=>cs[N]).map(N=>cs[N]).join("; "),r=`${v?`; ${v}`:""}; the words and numbers are unchanged`;return[p?`natural ${h}: ${$} not rewritten yet: the export rewrites them in this file as the kit's markup (nothing to fix)${r}`:`natural ${h}: ${$}${f?" would be":""} rewritten in this file as the kit's markup (nothing to fix)${r}`,...o.filter(N=>N.note).map(({line:N,rule:i,note:d})=>` line ${N}, ${i}: ${d}`),...O?[" re-read the file before editing it"]:[]]}var rs="strong, em, b, i, u, s, code, a, sub, sup and br, the kit's colors (doc-text-*, doc-highlight-*) and formulas",he=`write a to-do list as ul.${te} \u203A li, li[${ie}] for a checked item (a GFM task list, every item starting with its box, is made one unless the document's own style or script uses GFM's classes or the boxes)`,Es=e=>C(e).every(ds),Is=e=>L(e).flatMap(o=>[...o.tagName==="span"&&!(G(o,["class"])&&Es(o))?[o]:[],...Is(o)]),As=e=>L(e).some(o=>o.tagName==="img"||As(o)),_s=e=>L(e).flatMap(o=>o.tagName==="img"?[o]:_s(o)),js=e=>L(e).some(o=>o.tagName==="svg"||o.tagName==="canvas"||js(o)),Bt=e=>L(e).some(o=>o.tagName==="input"&&w(o,"type")?.toLowerCase()==="checkbox"||Bt(o)),ln=(e,o)=>{if(e==="tag:img")return"a picture amid the words: give it a paragraph of its own";if(e==="picture"){let f=_s(o).map(We).find(Boolean);return`a picture in a cell written another way${f?` (${f})`:""}: the preview edits <img src="assets/<file>" alt="\u2026" width="N"> (N pixels, or no width), no other attribute`}if(e==="tag:span"){let f=Is(o).filter(p=>G(p,["style","class"])&&w(p,"style")!==void 0&&Es(p)).map(p=>vs(w(p,"style")).foreign).find(Boolean);return f?`a span with a style the kit has no format for (${f.join(", ")}): left as written`:`a <span> with a class or attribute of the document's own (the preview edits ${rs})`}return e==="tag:input"&&Bt(o)?`a checkbox amid the words: ${he}`:e.startsWith("tag:")&<.has(e.slice(4))?`a block (<${e.slice(4)}>) amid the words: give the words a paragraph of their own`:e.startsWith("tag:")?`<${e.slice(4)}> amid the words (the preview edits ${rs})`:e==="comment"?"an HTML comment amid the words":e==="markup"?"an element not closed in the file (the parser closed it)":e==="mention"?'a page block written another way: the preview edits only <a class="doc-link-mention" href="../<slug>/doc.html"><span class="doc-link-mention-icon"></span>title</a>, its title plain words, no other attribute':e==="link"?"a javascript: or data: link":e},fn=new Set([...$s,"details"]);function Un(e){let o=rt(e,{sourceCodeLocationInfo:!0}),f=bt(o);if(!f)return[];let p=N=>e.slice(0,N).split(`
|
|
13
|
+
`).length,O=new Map,u=[],$=N=>{fn.has(N.tagName)&&N.sourceCodeLocation?.startTag&&bs(N)&&u.push({line:p(N.sourceCodeLocation.startOffset),text:`<${N.tagName}>: words straight in it, outside any paragraph: give them a <p> (the preview cannot reach them, nor move its blocks one by one)`})},h=(N,i=()=>!1)=>{for(let d of L(N)){if(i(d))continue;let g=d.sourceCodeLocation?.startTag;g&&O.set(g.endOffset-1,d),h(d,i)}},v=N=>{for(let i of N.childNodes??[]){if(!i.tagName||ce.has(i.tagName))continue;if(it(i)){h(i,ls),at(i).forEach(v);continue}if(w(i,"data-doc-chart")!==void 0||C(i).some(S=>_t.includes(S))||le(i))continue;let d=i.sourceCodeLocation?.startTag;d&&O.set(d.endOffset-1,i);let g=i.sourceCodeLocation?.endTag;if(re.has(i.tagName)&&d&&i.childNodes.some(S=>D(S)&&/\\\[|\$\$/.test(S.value))&&!(g&&i.childNodes.every(D)&&wt(e.slice(d.endOffset,g.startOffset)))){let S=Mo(e.slice(d.endOffset,g?g.startOffset:i.sourceCodeLocation.endOffset),!!g);u.push({line:p(d.startOffset),text:S?`<${i.tagName}>: the formula holds a bare < or >: write \\lt / \\gt (or < / >)`:`<${i.tagName}>: a display formula (\\[\u2026\\] or $$\u2026$$) amid the words: give it a paragraph of its own`})}i.tagName==="caption"&&d&&(et(i)||L(i).length>0)&&u.push({line:p(d.startOffset),text:'<caption>: the preview cannot edit a table caption; write the line above the table as <p class="doc-note">'}),$(i),v(i)}};$(f),v(f);let r=new Set;for(let{at:N,reason:i}of Jt(e).locks){let d=O.get(N);if(!d)continue;let g=i==="tag:input"&&d.tagName==="li"&&Bt(d)&&d.parentNode?.sourceCodeLocation?.startTag?d.parentNode:null;g&&r.has(g)||(g&&r.add(g),g?u.push({line:p(g.sourceCodeLocation.startOffset),text:`<${g.tagName}>: checkboxes in its items: ${he}`}):u.push({line:p(d.sourceCodeLocation.startOffset),text:`<${d.tagName}>: ${ln(i,d)}`}))}return u.sort((N,i)=>N.line-i.line).map(({line:N,text:i})=>`line ${N}: ${i}`)}function zn(e){let o=rt(e,{sourceCodeLocationInfo:!0}),f=bt(o);if(!f)return[];let p=d=>e.slice(0,d).split(`
|
|
14
|
+
`).length,O=[],u=[],$=d=>{for(let g of d.childNodes??[])g.tagName==="style"?u.push((g.childNodes??[]).map(S=>S.value??"").join("")):$(g)};$(o);let h=u.join(`
|
|
15
|
+
`).replace(/\/\*[\s\S]*?\*\//g,""),v=d=>new RegExp(`\\.${d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![\\w-])`).test(h),r=d=>{for(let g of L(d).filter(S=>S.tagName==="colgroup"&&w(S,"data-doc-columns")===void 0)){let S=[g,...L(g)].filter(M=>w(M,"width")!==void 0||/(?:^|;)\s*(?:min-|max-)?width\s*:/i.test(w(M,"style")??"")),T=(g.sourceCodeLocation?g:L(g)[0])?.sourceCodeLocation;S.length&&T&&O.push({line:p(T.startOffset),text:`<${g.sourceCodeLocation?"colgroup":"col"}> widths: the kit sizes columns itself; a merged table uses yours`})}},N=d=>{for(let g of d.childNodes??[]){if(!g.tagName||ce.has(g.tagName))continue;if(it(g)){at(g).forEach(N);continue}if(w(g,"data-doc-chart")!==void 0||C(g).some(T=>_t.includes(T)))continue;if(le(g)){let T=g.sourceCodeLocation,M=lo(e,g).some(({name:q})=>q==="class");if(ps.has(g.tagName)&&T?.startTag&&!M&&(et(g)||As(g))&&!js(g)&&!C(g).some(v)){let q=(g.tagName==="ul"||g.tagName==="ol")&&Bt(g)?`; for its checkboxes, ${he}`:"";O.push({line:p(T.startOffset),text:`<${g.tagName} class="${w(g,"class").trim()}"> is a whole block (\u6574\u4F53\u5757): the reader moves it whole and edits its words in place; right for a layout of yours that is no figure (a figure, a diagram or a timeline, goes in <figure class="doc-figure">); drop its class only if its contents were meant as ordinary blocks${q}`})}continue}g.tagName==="table"&&r(g);let S=g.tagName==="ol"&&C(g).includes(mt)?L(g).find(T=>T.tagName!=="li"&&T.sourceCodeLocation):null;if(S&&O.push({line:p(S.sourceCodeLocation.startOffset),text:`<ol class="${mt}"> holds a <${S.tagName}> outside its items: a flowchart's steps are its <li>s (what one holds after its words, a paragraph or a list, is that step's content)`}),g.tagName==="ol"&&C(g).includes(mt))for(let T of L(g).filter(M=>M.tagName==="li")){let M=L(T).find(Q=>!C(Q).includes(At)),q=M?T.childNodes.slice(0,T.childNodes.indexOf(M)):[];M&&M.tagName!=="p"&&M.sourceCodeLocation&&!q.some(Q=>!C(Q).includes(At)&&et(Q))&&O.push({line:p(M.sourceCodeLocation.startOffset),text:`a step of <ol class="${mt}"> begins with a <${M.tagName}>: a step's first block is its title, a paragraph (<p><strong>\u2026</strong></p>), the blocks after it its content`})}N(g)}};return N(f),i(f,(d,g)=>O.push({line:d,text:`a ${dn[g]} in the text: the page shows it as a break or an empty line, not as a character (a tool that decodes \\u2028 or \\u2029 escapes writes one); write the break the text means (<br>, a new paragraph, a new line in code) or take it out`})),O.sort((d,g)=>d.line-g.line).map(({line:d,text:g})=>`line ${d}: ${g}`);function i(d,g){for(let S of d.childNodes??[])if(!(S.tagName==="script"||S.tagName==="style")){if(it(S)){at(S).forEach(T=>i(T,g));continue}if(D(S)&&S.sourceCodeLocation&&/[\u2028\u2029]/.test(S.value)){let{startOffset:T,endOffset:M}=S.sourceCodeLocation,Q=e.slice(T,M).search(/[\u2028\u2029]/);g(p(T+Math.max(Q,0)),S.value.match(/[\u2028\u2029]/)[0])}i(S,g)}}}function qn(e){let o=$=>e.slice(0,$).split(`
|
|
16
|
+
`).length,f=$=>D($)?$.value:($.childNodes??[]).map(f).join(""),p=$=>f($).replace(/\s+/g," ").trim(),O=$=>L($).find(h=>/^h[1-6]$/.test(h.tagName)),u=[];for(let $ of Jt(e).units){if($.keep?.reason!=="script"||!$.keep.own)continue;let h=$.node.parentNode;for(;h&&h.tagName!=="section";)h=h.parentNode;let v=$.tag==="section"&&O($.node)?` ${p(O($.node))}`:"",r=h?.tagName&&O(h)?` in ${p(O(h))}`:"";u.push({line:o($.elStart),text:`<${$.tag}>${v}${r} kept by the script: ${$.keep.names.join(", ")} (the reader cannot delete or convert it; rename any of these the script does not select it by)`})}return u.sort(($,h)=>$.line-h.line).map(({line:$,text:h})=>`line ${$}: ${h}`)}var dn={"\u2028":"line separator (U+2028)","\u2029":"paragraph separator (U+2029)"};function bt(e){return gt(e,o=>o.tagName==="main")}function gt(e,o){if(e.tagName&&o(e))return e;for(let f of e.childNodes??[]){let p=gt(f,o);if(p)return p}return null}export{rn as a,Ss as b,Kn as c,Hn as d,Ts as e,Pn as f,Wn as g,Un as h,zn as i,qn as j};
|
|
@@ -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,m,n,o,p,q,r,s,t,u,v,w,x,y}from"./chunk-EURLTOTZ.mjs";import"./chunk-Q4UEPUWF.mjs";import"./chunk-5L7RYZCL.mjs";export{d as CACHE_FILE,e as FRESH,c as NEWER_LINE,a as PACKAGE,f as RETRY,b as SKILL_LINE,g as TIMEOUT,j as cacheDirectory,h as checkOff,r as claimCheck,o as latestUrl,w as newerLine,l as npmSettings,k as parseNpmrc,p as readCache,s as refreshCache,n as refreshEnv,m as registryOf,u as skillFolders,v as skillLine,x as skillLines,q as stale,t as startRefresh,y as versionNotes,i as viaNpx};
|
|
@@ -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}from"./chunk-ZB4H7ZN4.mjs";import"./chunk-NFMCP2HI.mjs";import"./chunk-KTKHRC6H.mjs";import"./chunk-YI43RG4P.mjs";import"./chunk-NAMN3RAF.mjs";import"./chunk-JEUK3ZO7.mjs";import"./chunk-RKPWLGZ3.mjs";import"./chunk-N7AZZLGT.mjs";import"./chunk-4OZWXZE5.mjs";import"./chunk-PAREWQGB.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{a as DEFAULT_DESCRIPTION,c as run,b as slugRefused};
|
|
@@ -0,0 +1,24 @@
|
|
|
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{g as St,r as nt,t as Ct}from"./chunk-FWNRPMCJ.mjs";import{a as Lt,b as st,c as z,e as vt}from"./chunk-A55HN5OK.mjs";import{createHash as Ee}from"node:crypto";import{BLOCK_LEVEL as ot}from"../browser/shared/html-tree.mjs";var wt=t=>Ee("sha256").update(t).digest("hex").slice(0,16),M=t=>t.nodeName==="#text"&&!t.value.trim();function at(t,e){for(let s of t.childNodes??[]){if(s.tagName===e)return s;let o=s.tagName&&at(s,e);if(o)return o}return null}import{ATTRIBUTES as an,BOX_CLASSES as on,COMPONENT_ATTRIBUTES as rn,COMPONENT_CLASSES as cn,GROUPING as ln,IDENTITY as R,TOGGLES as fn,UNIT_KINDS as dn}from"../browser/editor/components/registry.mjs";import{attr as I,hasClass as kt}from"../browser/shared/html-tree.mjs";import{idsNamed as un}from"../browser/shared/copy-ids.mjs";import{DIALOG as pn,PAGE as mn,SECTION as gn,SHEETS as K,TABLE as Le}from"../browser/editor/components/kit.mjs";import{matchesNode as q,partOf as bt}from"../browser/shared/components/index.mjs";import{escapeMarkup as V}from"../browser/shared/escape.mjs";import{imageFile as Ae}from"../browser/shared/media.mjs";import{emptyFigure as Ie}from"../browser/editor/components/media/write.mjs";var _e=t=>typeof t=="string"&&t.length<=2e3&&/^https?:\/\/[^\s"<>]+$/.test(t),Et=(t,e)=>typeof t=="string"&&t.length<=e&&!/[\u0000-\u001f]/.test(t),At=t=>t.href===""&&!t.title&&!t.description&&!t.icon&&!t.cover&&t.caption==="",It=t=>t==null||Ae(t),_t={bookmark:{check:(t,{validLeaf:e})=>At(t)||_e(t.href)&&Et(t.title,300)&&Et(t.description??"",600)&&It(t.icon)&&It(t.cover)&&typeof t.caption=="string"&&(t.caption===""||e({tag:"figcaption"},t.caption)),write(t,e){if(At(t))return Ie("bookmark",e);let s=t.title.trim()||new URL(t.href).hostname,o=[`<span class="doc-bookmark-title">${V(s)}</span>`,t.description?`<span class="doc-bookmark-description">${V(t.description)}</span>`:"",`<span class="doc-bookmark-url">${t.icon?`<img class="doc-bookmark-icon" src="${t.icon}" alt="">`:""}<span class="doc-bookmark-href">${V(t.href)}</span></span>`].join(""),n=t.cover?`<span class="doc-bookmark-cover"><img src="${t.cover}" alt=""></span>`:"",a=`<a class="doc-bookmark-card" href="${V(t.href)}" target="_blank" rel="noopener noreferrer"><span class="doc-bookmark-text">${o}</span>${n}</a>`;return e.block(`<figure class="doc-bookmark"${e.id}>`,[a,`<figcaption>${t.caption}</figcaption>`],"</figure>")}}};import{BLOCK_TYPES as Be,sizeValue as Me}from"../browser/editor/components/registry.mjs";import{LINE_START as Mt,lineStart as je}from"../browser/shared/code-lines.mjs";import{hasClass as Bt}from"../browser/shared/html-tree.mjs";import{CODE_HEIGHT as rt,FOLDED_LINES as jt,validFolded as Re,validLanguage as De}from"../browser/editor/components/code/index.mjs";var ze=(t,e,s,o,n="",a="",r="",i="")=>`<div class="${t.className}"${s?` data-language="${s}"`:""}${i?` ${Mt}="${i}"`:""}${r?` ${jt}="${r}"`:""}${o?` style="${rt}: ${o}"`:""}${n}><div class="doc-code-title">${a}</div><pre><code>${e}</code></pre></div>`,Ue=(t,e)=>t==="data-language"||t===jt||t===Mt||t==="style"&&new RegExp(`^\\s*${rt}\\s*:[^;]*;?\\s*$`).test(e??""),We=t=>typeof t=="string"&&t.length<=200&&!/[<>\n]|&(?!(amp|lt|gt|quot|#39);)/.test(t),Fe=t=>(t.language===void 0||De(t.language))&&(t.folded===void 0||Re(t.folded))&&(t.height===void 0||Me("code",rt,t.height)===t.height)&&(t.title===void 0||We(t.title))&&(t.lineStart===void 0||typeof t.lineStart=="string"&&String(je(t.lineStart))===t.lineStart);function Ke(t){let{node:e}=t;if(t.tag!=="div"||t.nested||!Bt(e,Be.code.className))return!1;let s=(n,a)=>{let r=n.childNodes??[],i=r.filter(f=>f.tagName);return i.length===a.length&&i.every((f,l)=>f.tagName===a[l])&&r.every(f=>f.tagName||!(f.value??"").trim())?i:null},o=s(e,["div","pre"]);return!!o&&Bt(o[0],"doc-code-title")&&!!s(o[1],["code"])}var Rt={code:{fields:["language","folded","height","title","lineStart"],check:Fe,leaf:(t,e,s)=>ze(t,e.html,e.language,e.height,s,e.title,e.folded,e.lineStart),written:Ke,attribute:Ue}};import{sizeValue as He}from"../browser/editor/components/registry.mjs";import{MIN_COLUMNS as Pe,RATIO as Dt}from"../browser/editor/components/columns/index.mjs";var zt={columns:{check:t=>t.children.length>=Pe&&t.children.every(e=>e.type==="column")},column:{check:t=>t.ratio===void 0||He("column",Dt,t.ratio)===t.ratio,write(t,e){let s=t.ratio===void 0?"":` style="${Dt}: ${t.ratio}"`;return e.block(`<div class="doc-column"${s}${e.id}>`,e.children(e.inner),"</div>")}}};var Ut={details:{empty:!0,check:(t,{validLeaf:e})=>t.title===""||e({tag:"span"},t.title),write(t,e){let s=e.inner===null?null:e.inner+e.step,o=e.block('<div class="doc-details-content">',e.children(s),"</div>",e.inner,s),n=t.classes?.length?` ${t.classes.join(" ")}`:"";return e.block(`<details class="doc-details${n}"${e.id}>`,[`<summary><span class="doc-details-summary-label">${t.title}</span></summary>`,t.children.length>0?o:'<div class="doc-details-content"></div>'],"</details>")}}};var Wt={dialog:{empty:!0,check(t,{usedIds:e}){return typeof t.id!="string"||!/^[A-Za-z][\w-]{0,63}$/.test(t.id)||e.has(t.id)?!1:(e.add(t.id),!0)},write(t,e){let s=t.children.length>0?e.block('<div class="doc-dialog-content">',e.children(e.deep(3)),"</div>",e.deep(2),e.deep(3)):'<div class="doc-dialog-content"></div>',o=e.block('<div class="doc-dialog-panel">',[s],"</div>",e.deep(1),e.deep(2));return e.block(`<dialog class="doc-dialog" id="${t.id}">`,[o],"</dialog>")}}};import{escapeAttribute as Ge}from"../browser/shared/escape.mjs";import{embedFile as Ft}from"../browser/shared/media.mjs";import{emptyFigure as qe}from"../browser/editor/components/media/write.mjs";import{FILE_SANDBOX as Ve,WEB_SANDBOX as Xe}from"../browser/editor/components/embed/index.mjs";var Ye=t=>typeof t=="string"&&t.length<=2e3&&/^https:\/\/[^\s"<>]+$/.test(t),Kt=t=>t.src===""&&t.height===void 0&&t.caption==="",Ht={embed:{check:(t,{validLeaf:e})=>Kt(t)||(Ye(t.src)||Ft(t.src))&&(t.height===void 0||/^\d{2,4}px$/.test(t.height))&&typeof t.caption=="string"&&(t.caption===""||e({tag:"figcaption"},t.caption)),write(t,e){if(Kt(t))return qe("embed",e);let s=Ft(t.src),o=s?/\.pdf$/i.test(t.src)?"":` sandbox="${Ve}"`:` sandbox="${Xe}" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen`,n=`<iframe class="doc-embed-frame" src="${Ge(t.src)}"${o} loading="lazy"></iframe>`,a=t.height?` style="--doc-embed-height: ${t.height}"`:"";return e.block(`<figure class="doc-embed${s?" doc-embed--file":""}"${a}${e.id}>`,[n,`<figcaption>${t.caption}</figcaption>`],"</figure>")}}};import{escapeMarkup as Pt}from"../browser/shared/escape.mjs";import{assetFile as Ze}from"../browser/shared/media.mjs";import{emptyFigure as Je}from"../browser/editor/components/media/write.mjs";var Gt=t=>t.href===""&&t.name===""&&t.size===void 0&&t.caption==="",Qe=t=>typeof t=="string"&&t.trim()!==""&&t.length<=120&&!/[\u0000-\u001f<>:"/\\|?*]/.test(t),qt={file:{check:(t,{validLeaf:e})=>Gt(t)||Ze(t.href)&&Qe(t.name)&&(t.size===void 0||/^\d+(\.\d)? (B|KiB|MiB|GiB)$/.test(t.size))&&typeof t.caption=="string"&&(t.caption===""||e({tag:"figcaption"},t.caption)),write(t,e){if(Gt(t))return Je("file",e);let s=t.size?`<span class="doc-file-size">${t.size}</span>`:"",o=`<a class="doc-file-link" href="${t.href}" download="${Pt(t.name)}"><span class="doc-file-name">${Pt(t.name)}</span>${s}</a>`;return e.block(`<figure class="doc-file"${e.id}>`,[o,`<figcaption>${t.caption}</figcaption>`],"</figure>")}}};import{FLOW as ts,FLOW_DIRECTION as Vt,FLOW_RATIO as Xt}from"../browser/editor/components/flowchart/index.mjs";import{START as es,validDirection as Yt,validStart as ss}from"../browser/editor/components/list/index.mjs";import{sizeValue as ns,TOGGLES as as}from"../browser/editor/components/registry.mjs";var Zt={flowchart:{check:t=>(t.start===void 0||ss(t.start))&&(t.direction===void 0||Yt(t.direction))&&t.children.length>0,write:(t,e)=>e.block(`<ol class="${ts}"${t.start?` ${es}="${t.start}"`:""}${t.direction?` ${Vt}="${t.direction}"`:""}${e.id}>`,e.children(e.inner),"</ol>")},step:{check:t=>(t.classes===void 0||Array.isArray(t.classes)&&new Set(t.classes).size===t.classes.length&&t.classes.every(e=>(as.step??[]).includes(e)))&&(t.ratio===void 0||ns("step",Xt,t.ratio)===t.ratio)&&(t.direction===void 0||Yt(t.direction))&&t.children.length>0,write(t,e){let s=t.classes?.length?` class="${t.classes.join(" ")}"`:"",o=t.direction?` ${Vt}="${t.direction}"`:"",n=t.ratio===void 0?"":` style="${Xt}: ${t.ratio}"`;return e.block(`<li${s}${o}${n}${e.id}>`,e.children(e.inner),"</li>")}}};import{SPAN as os,SPAN_SIZE as Jt,imageFile as Qt}from"../browser/shared/media.mjs";import{emptyFigure as rs}from"../browser/editor/components/media/write.mjs";var is=/^\d{1,3}(\.\d{1,3})?( \d{1,3}(\.\d{1,3})?){3}$/,te=t=>t.src===""&&t.caption===""&&t.span===void 0&&t.original===void 0&&t.classes===void 0,cs=t=>typeof t=="number"&&Number.isFinite(t)&&t>=Jt.min&&t<=Jt.max,ee={image:{check:(t,{validLeaf:e})=>te(t)||Qt(t.src)&&typeof t.caption=="string"&&(t.caption===""||e({tag:"figcaption"},t.caption))&&(t.span===void 0||cs(t.span))&&(t.original===void 0||Qt(t.original)&&typeof t.crop=="string"&&is.test(t.crop)),write(t,e){if(te(t))return rs("image",e);let s=["doc-image",...t.classes??[]].join(" "),o=t.span===void 0?"":` style="${os}: ${Math.round(t.span*1e3)/1e3}"`,n=t.original===void 0?"":` data-original="${t.original}" data-crop="${t.crop}"`;return e.block(`<figure class="${s}"${o}${e.id}>`,[`<img src="${t.src}" alt=""${n}>`,`<figcaption>${t.caption}</figcaption>`],"</figure>")}}};vt();import{heldByNode as ls,instanceSlots as fs,isInstance as lt,isSlot as ds,ownSlots as us,partOf as ft}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as G,DATA_MOST as ps,NO_TEXT as ms,PACKAGE_ID as se,SCHEMA as ne,SLOT as ae,fitsDataScript as gs,isDataScript as hs,noDataPart as $s,refusedInCopy as Ns,refusedInData as Os,schemaAhead as oe}from"../browser/shared/components/installed.mjs";import{attr as B,walk as re}from"../browser/shared/html-tree.mjs";import{CHART_KEY as bs,VIEW_FROM as it}from"../browser/shared/table-chart.mjs";var P=(t,e)=>{for(let s=t.parentNode;s;s=s.parentNode)if(s===e)return!0;return!1},xs=t=>{let e=t.parentNode;for(;e&&!lt(e);)e=e.parentNode;return e??null},dt=(t,e)=>xs(t)===e&&ls(t)===e&&!ds(t);function ct(t,e){let o=Object.entries(e.get(B(t,G))?.parts??{}).filter(([,{edit:n}])=>n==="data").map(([n,{at:a}])=>[n,ft(t,a).find(r=>r.sourceCodeLocation&&!lt(r)&&dt(r,t))]).filter(([,n])=>n);return o.filter(([,n],a)=>!o.some(([,r],i)=>P(n,r)||r===n&&i<a))}var ys=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]),ks="http://www.w3.org/1999/xhtml",Ts=t=>(t.content??t).childNodes;function ie(t,e,s,o){let n=s;for(let a of Ts(t)){let r=a.sourceCodeLocation;if(r?.startOffset!==n)return!1;if(a.tagName){let{startTag:i,endTag:f}=r,l=ys.has(a.tagName)||a.namespaceURI!==ks&&e.startsWith("/>",r.endOffset-2);if(f?!ie(a,e,i.endOffset,f.startOffset):!l)return!1}n=r.endOffset}return n===o}function Ls(t,e,s){if(e.tagName==="script")return hs(e.tagName,e.attrs)&&gs(s);if($s(e.tagName))return!1;let{startTag:o,endTag:n}=e.sourceCodeLocation,a=t.slice(o.startOffset,o.endOffset),r=`${a}${s}${t.slice(n.startOffset,n.endOffset)}`,[i,...f]=z(e.parentNode,r,{sourceCodeLocationInfo:!0}).childNodes;if(f.length>0||i?.tagName!==e.tagName||i.sourceCodeLocation?.endOffset!==r.length||!i.sourceCodeLocation.endTag||!ie(i,r,a.length,a.length+s.length))return!1;let l=!1;return re(i,m=>{l||=Os(m.tagName,m.attrs)}),!l}var vs=(t,e)=>Object.values(e.get(B(t,G))?.parts??{}).filter(({edit:s})=>s==="text"||s==="data").flatMap(({at:s})=>ft(t,s).filter(o=>dt(o,t))),ce={installed:{slots(t,e){let s=vs(t,e);return fs(t).filter(o=>!s.some(n=>P(o,n)))},boxes(t,e){return this.slots(t,e).map(s=>({element:s,kind:"slot",key:B(s,ae)}))},textParts(t,e){let s=e.get(B(t,G));if(oe(B(t,ne),s?.schema))return[];let o=Object.values(s?.parts??{}).filter(({edit:r})=>r==="text"),n=ct(t,e).map(([,r])=>r),a=[...new Set(o.flatMap(({at:r})=>ft(t,r)))].filter(r=>r.sourceCodeLocation&&!lt(r)&&!ms.has(r.tagName)&&dt(r,t)).filter(r=>!n.some(i=>i===r||P(r,i)||P(i,r)));return a.filter(r=>!a.some(i=>P(r,i))).map(r=>({kind:"installed",part:r}))},source({package:t,html:e,children:s,boxKeys:o,from:n},{packages:a,written:r}){if(typeof t!="string"||!se.test(t))return null;let i=s!==void 0;if(i&&!(Array.isArray(s)&&Array.isArray(o)&&o.length===s.length)||n!=null&&(typeof n!="string"||!bs.test(n)))return null;let f=e===void 0?a.has(t)?Ct(a.get(t)):null:e,l=typeof f=="string"?nt(f,t):null;if(l&&(typeof n=="string"||n===null&&B(l.root,it)!==void 0)&&(l.root.attrs=[...l.root.attrs.filter(({name:L})=>L!==it),...n===null?[]:[{name:it,value:n}]],l=nt(Lt(l.root),t)),!l)return null;let m=us(l.root),u=L=>!L.childNodes.every(N=>N.nodeName==="#text"&&!N.value.trim());if((e!==void 0||!i)&&m.some(u)||i&&!o.every(L=>m.some(N=>B(N,ae)===L)))return null;if(e!==void 0){let L=!1;if(re({childNodes:[l.root]},N=>{L||=Ns(N.tagName,N.attrs)}),L)return null}let v=m.map(L=>L.sourceCodeLocation).sort((L,N)=>N.startOffset-L.startOffset).reduce((L,{startTag:N,endTag:b})=>L.slice(0,N.endOffset)+L.slice(b.startOffset),l.markup);return r(i?v:l.markup)},unwritten:({package:t,html:e},{packages:s})=>e===void 0&&se.test(t)&&!s.has(t)?"no-package":"invalid",definition:(t,e)=>e.get(B(t,G))?.definition,dataOf(t,e,s){let o=ct(e,s).filter(([,n])=>n.sourceCodeLocation.endTag);return o.length>0?Object.fromEntries(o.map(([n,a])=>[n,t.slice(a.sourceCodeLocation.startTag.endOffset,a.sourceCodeLocation.endTag.startOffset)])):null},rewrite(t,e,s,{packages:o}){let n=new Map(ct(e,o)),a=Object.keys(s),r=a.map(f=>s[f]);if(oe(B(e,ne),o.get(B(e,G))?.schema)||a.length===0||!r.every(f=>typeof f=="string")||!a.every(f=>n.has(f))||r.reduce((f,l)=>f+Buffer.byteLength(l),0)>ps||!a.every(f=>n.get(f).sourceCodeLocation.endTag&&Ls(t,n.get(f),s[f])))return null;let i=t.includes(`\r
|
|
3
|
+
`)?`\r
|
|
4
|
+
`:`
|
|
5
|
+
`;return a.map(f=>{let{startTag:l,endTag:m}=n.get(f).sourceCodeLocation;return{start:l.endOffset,end:m.startOffset,text:s[f].replace(/\r?\n/g,i)}})}}};vt();import{IDENTITY as Ss}from"../browser/editor/components/registry.mjs";import{SHEETS as X,TABLE as le}from"../browser/editor/components/kit.mjs";import{escapeAttribute as Y,escapeText as ut}from"../browser/shared/escape.mjs";import{isInstance as Cs,matchesNode as pt}from"../browser/shared/components/index.mjs";import{attr as j}from"../browser/shared/html-tree.mjs";import{CHART_SOURCE as fe,TABLE_READERS as ws}from"../browser/shared/table-chart.mjs";import{freshPrefix as Es,referencedIds as As,rewrite as Is}from"../browser/shared/copy-ids.mjs";var de=(t={})=>Object.entries(t).map(([e,s])=>s===""?` ${e}`:` ${e}="${Y(String(s))}"`).join(""),ue=(t,e)=>t[e-1]==="/"?e-1:e;function Z(t,e,s){let o=e;for(;o>0&&/\s/.test(t[o-1]);)o--;return{start:o,end:s}}function Sa(t){let e=s=>s.nodeName==="#text"?s.value:(s.childNodes??[]).map(e).join("");return e(z(t)).replace(/\s+/g," ").trim()}function Ca(t,{from:e,to:s}){let n=pe(st(t,{sourceCodeLocationInfo:!0}))?.sourceCodeLocation;if(!n?.endTag)return null;let a=t.slice(n.startTag.endOffset,n.endTag.startOffset);if(!e)return a.trim()===""?{start:n.startTag.endOffset,end:n.endTag.startOffset,text:ut(s)}:null;let r=ut(e),i=a.indexOf(r);if(i<0||a.indexOf(r,i+1)>=0)return null;let f=n.startTag.endOffset+i;return{start:f,end:f+r.length,text:ut(s)}}function pe(t){for(let e of t.childNodes??[]){if(e.tagName==="title")return e;if(e.tagName==="body")continue;let s=e.tagName&&pe(e);if(s)return s}return null}function _s(t){let e=[],s=0,o=null,n=0;for(let a=0;a<t.length;a++){let r=t[a];if(r==="&"){let i=/^&(#\d+|#x[\da-f]+|[a-z]\w*);/i.exec(t.slice(a));i&&(a+=i[0].length-1)}else o?r===o?o=null:r==="\\"&&a++:r==='"'||r==="'"?o=r:r==="("?s++:r===")"?s=Math.max(0,s-1):r===";"&&s===0&&(e.push(t.slice(n,a)),n=a+1)}return e.push(t.slice(n)),e.map(a=>a.trim()).filter(Boolean)}function ht(t,e){let s=_s(t);for(let[o,n]of e){let a=s.findIndex(r=>r.slice(0,r.indexOf(":")).trim()===o);n===null?a>=0&&s.splice(a,1):a>=0?s[a]=`${o}: ${n}`:s.push(`${o}: ${n}`)}return s.join("; ")}var Bs=new Set(["pre","textarea","script","style"]);function wa(t){if(typeof t!="string"||!t.trim())return null;let s=z(t,{sourceCodeLocationInfo:!0}).childNodes.filter(f=>f.nodeName!=="#comment"&&!(f.nodeName==="#text"&&!f.value.trim())),[o,n]=s;if(s.length===2&&o.tagName==="button"&&pt(o,X.tab)&&n.tagName&&n.sourceCodeLocation?.endTag&&j(o,X.tabKey)&&j(n,X.panelKey)===j(o,X.tabKey)){let f=o.sourceCodeLocation.endOffset;return{element:o,source:t.slice(0,f),panel:t.slice(f).replace(/^\s+/,""),kind:"tab"}}let a=s.at(-1),r=s.length===2?s[0]:null;if(!a?.tagName||!a.sourceCodeLocation?.startTag||s.length>2||r&&!(r.tagName&&pt(r,le.lead)&&pt(a,le.frame)))return null;let i=W(a);return{element:a,source:t,kind:i}}function Ms(t){let e=[],s=o=>{for(let n of o.childNodes??[]){if(!n.tagName)continue;let a=j(n,"id");a&&e.push(a),s(n.tagName==="template"?n.content:n)}};return s(st(t)),e}var Ea=(t,e)=>`${mt(t.slice(e.start,e.end),U(t,e.start),"")}
|
|
6
|
+
${mt(t.slice(e.companion.start,e.companion.end),U(t,e.companion.start),"")}`;function Aa(t,e,{keys:s=null,taken:o=null}={}){let n=t.slice(e.start,e.end),a=[],r=z(n,{sourceCodeLocationInfo:!0}),i=[],f=N=>{for(let b of N.childNodes??[])b.tagName&&(i.push(b),f(b.tagName==="template"?b.content:b))};f(r);let l=As(i.flatMap(N=>N.attrs)),m=new Set(i.map(N=>j(N,"id")).filter(N=>N&&l.has(N))),u=new Map;if(m.size>0){let N=o??new Set(Ms(t)),b=Es(N);for(let S of m)u.set(S,`${b}${S}`),N.add(`${b}${S}`)}let v=N=>{for(let b of N.childNodes??[])if(b.tagName){for(let S of[Ss,"id"]){let p=b.sourceCodeLocation?.attrs?.[S];p&&(S==="id"&&u.has(j(b,"id"))?a.push({start:p.startOffset,end:p.endOffset,text:`id="${Y(u.get(j(b,"id")))}"`}):a.push(Z(n,p.startOffset,p.endOffset)))}for(let{name:S,prefix:p,value:$}of u.size>0?b.attrs:[]){let w=p?`${p}:${S}`:S,d=Is(w,$,u),g=b.sourceCodeLocation?.attrs?.[w];d!==null&&g&&a.push({start:g.startOffset,end:g.endOffset,text:`${w}="${Y(d)}"`})}for(let S of[...ws,fe]){let p=b.sourceCodeLocation?.attrs?.[S],$=j(b,S);!p||!s||!Object.hasOwn(s,$)||(s[$]!==null?a.push({start:p.startOffset,end:p.endOffset,text:`${S}="${Y(s[$])}"`}):S===fe&&a.push(Z(n,p.startOffset,p.endOffset)))}v(b.tagName==="template"?b.content:b)}};v(r);let L=a.sort((N,b)=>b.start-N.start).reduce((N,{start:b,end:S,text:p=""})=>N.slice(0,b)+p+N.slice(S),n);return mt(L,U(t,e.start),"")}function mt(t,e,s){if(e===null||s===null||e===s||!t.includes(`
|
|
7
|
+
`))return t;let o=[],n=i=>{for(let f of i.childNodes??[]){if(!f.tagName)continue;let l=f.sourceCodeLocation;(Bs.has(f.tagName)||Cs(f))&&l?.startTag&&l.endTag?o.push([l.startTag.endOffset,l.endTag.startOffset]):n(f.tagName==="template"?f.content:f)}};n(z(t,{sourceCodeLocationInfo:!0}));let a="",r=0;for(let i of t.split(/(?<=\n)/)){let f=o.some(([m,u])=>r>m&&r<=u),l=i===`
|
|
8
|
+
`||i===`\r
|
|
9
|
+
`;a+=r>0&&!f&&!l&&i.startsWith(e)?s+i.slice(e.length):i,r+=i.length}return a}function U(t,e){let s=t.slice(t.lastIndexOf(`
|
|
10
|
+
`,e-1)+1,e);return/^[ \t]*$/.test(s)?s:null}function js(t,e,s){let o=t.lastIndexOf(`
|
|
11
|
+
`,e-1)+1,n=t.indexOf(`
|
|
12
|
+
`,s),a=n<0?t.length:n+1;return/^[ \t]*$/.test(t.slice(o,e))&&/^[ \t]*\r?\n?$/.test(t.slice(s,a))?{start:o,end:a,text:""}:{start:e,end:s,text:""}}function Ia(t,e,s){let o=/^\s*(?=<\/li\s*>)/i.exec(t.slice(s,s+400));if(o)return{start:e-/\s*$/.exec(t.slice(Math.max(0,e-400),e))[0].length,end:s+o[0].length,text:""};let n=js(t,e,s);if(n.start===e&&n.end===s)return n;let a=/^[ \t]*\r?\n$/,r=t.indexOf(`
|
|
13
|
+
`,n.end),i=r>=0&&a.test(t.slice(n.end,r+1)),f=t.lastIndexOf(`
|
|
14
|
+
`,n.start-2)+1,l=n.start>0&&a.test(t.slice(f,n.start)),m=t.slice(0,e).trimEnd(),u=m.endsWith(">")?m.slice(m.lastIndexOf("<")):"",v=/^<[a-z]/i.test(u)&&!/\/\s*>$/.test(u)&&!gt.has(u.match(/^<([a-z0-9-]+)/i)?.[1].toLowerCase()),L=/^\s*<\//.test(t.slice(s,s+200));return i&&(l||v)?{...n,end:r+1}:l&&L?{...n,start:f}:n}import{CONTINUE as Rs,START as Ds,validStart as zs}from"../browser/editor/components/list/index.mjs";var me={item:{children:(t,e)=>t.children.length>0&&t.children.every(s=>e(s,"nest")),write:(t,e)=>e.block(`<li${t.classes?.length?` class="${t.classes.join(" ")}"`:""}${de(t.attributes)}${e.id}>${t.html}`,e.children(e.inner),"</li>")},numbers:{check:t=>(t.start===void 0||zs(t.start))&&(t.continue===void 0||t.continue===!0),write:(t,e)=>e.block(`<ol${t.start?` ${Ds}="${t.start}"`:""}${t.continue?` ${Rs}`:""}${e.id}>`,e.children(e.inner),"</ol>")}};import{iconKind as Us}from"../browser/shared/emoji/icon-value.mjs";import{SHEETS_LABEL as Ws}from"../browser/shared/components/sheets.mjs";var ge=/^[a-z0-9][a-z0-9_-]{0,63}$/i,Fs=(t,e="")=>`<button class="doc-sheet-tab" type="button" data-sheet-tab="${t.sheet}"${t.icon?` data-tab-icon="${t.icon}"`:""}${e}>${t.title}</button>`,he={sheets:{check:t=>typeof t.name=="string"&&ge.test(t.name)&&t.children.length>=1&&t.children.every(e=>e.type==="tab")&&new Set(t.children.map(e=>e.sheet)).size===t.children.length,write(t,e){let s=e.inner===null?null:e.inner+e.step,o=Ws[e.language],n=e.block(`<div class="doc-sheet-tabs" aria-label="${o}">`,t.children.map(r=>Fs(r,e.idOf(r))),"</div>",e.inner,s),a=t.children.map(r=>r.children.length===0?`<div data-doc-sheet="${r.sheet}"></div>`:e.block(`<div data-doc-sheet="${r.sheet}">`,r.children.map(i=>e.render(i,s)),"</div>",e.inner,s));return e.block(`<section class="doc-sheet-shell" data-doc-sheets="${t.name}" aria-label="${o}"${e.id}>`,[n,...a],"</section>")}},tab:{empty:!0,check:t=>typeof t.title=="string"&&t.title.trim()!==""&&t.title.length<=200&&!/[<>\r\n]/.test(t.title)&&typeof t.sheet=="string"&&ge.test(t.sheet)&&(t.icon===void 0||Us(t.icon)==="emoji")}};import{COLUMN_WIDTH as Zs,NUMBERS as Js,tableTiling as Qs,validTable as tn}from"../browser/editor/components/table/index.mjs";import{CHART_SOURCE as en}from"../browser/shared/table-chart.mjs";import{widthHolder as sn}from"../browser/shared/table-slots.mjs";import{CELL_LOOKS as Ps,COLUMN_WIDTH as Oe,validLook as Gs,validWidth as qs}from"../browser/editor/components/table/index.mjs";import{tileSpans as be}from"../browser/shared/table-slots.mjs";import{attr as Nt}from"../browser/shared/html-tree.mjs";function Ks(t,e){let s=t.slice(e.startOffset,e.endOffset),o=/^[^=\s]+\s*=\s*(["'])([\s\S]*)\1$/.exec(s);return o?{value:o[2],quote:o[1]}:{value:s.replace(/^[^=\s]+\s*=?\s*/,""),quote:'"'}}function Hs(t,e,s){let o=ue(t,e.endOffset-1);for(;o-1>e.startOffset&&/\s/.test(t[o-1]);)o--;let n=[];for(let[a,r]of s){let i=e.attrs?.[a],f=i?Ks(t,i):null,l=typeof r=="function"?r(f):r,m=f&&typeof r=="function"?f.quote:'"',u=l===null?"":l===""&&typeof r!="function"?a:`${a}=${m}${l}${m}`;i&&l===null?n.push({...Z(t,i.startOffset,i.endOffset),text:u}):i?n.push({start:i.startOffset,end:i.endOffset,text:u}):l!==null&&n.push({start:o,end:o,text:` ${u}`})}return n}function $e(t,e,s,o){let n=e.sourceCodeLocation.startTag,a=t.slice(n.startOffset,n.endOffset),r=Hs(t,n,s).map((i,f)=>({...i,index:f}));for(let{start:i,end:f,text:l}of r.sort((m,u)=>u.start-m.start||u.index-m.index))a=a.slice(0,i-n.startOffset)+l+a.slice(f-n.startOffset);return o?a.replace(/^<\w+/,`<${o}`):a}function Ot(t){let e=t?.tagName==="table"?t:t?.childNodes?.find(u=>u.tagName==="table"),s=u=>!!(u?.sourceCodeLocation?.startTag&&u.sourceCodeLocation.endTag),o=u=>u.childNodes.filter(v=>v.tagName),n=u=>u.childNodes.every(v=>v.tagName||M(v));if(!s(e)||!n(e))return null;let a=o(e);if(a.some(u=>!["thead","tbody","colgroup","caption"].includes(u.tagName)))return null;let r=a.filter(u=>u.tagName==="thead"),i=a.filter(u=>u.tagName==="tbody");if(r.length>1||i.length!==1||r.length===1&&a.indexOf(r[0])>a.indexOf(i[0]))return null;let f=u=>u.tagName==="tr"&&s(u)&&n(u)&&o(u).every(v=>(v.tagName==="td"||v.tagName==="th")&&s(v)&&F(v,"rowspan")!==null&&F(v,"colspan")!==null),l=[...r,...i];if(!l.every(u=>s(u)&&n(u)&&o(u).every(f)))return null;let m=l.flatMap(u=>o(u).map(v=>({node:v,head:u.tagName==="thead",cells:o(v)})));return be(m.map(u=>({head:u.head,cells:u.cells.map(v=>[F(v,"rowspan"),F(v,"colspan")])})))?{table:e,head:r[0]??null,body:i[0],rows:m}:null}var xe=1e3;function F(t,e){let s=Nt(t,e);return s===void 0?1:/^\s*\d{1,4}\s*$/.test(s)&&Number(s)>=1&&Number(s)<=xe?Number(s):null}var Ne=t=>t===void 0||Number.isInteger(t)&&t>=1&&t<=xe,$t=(t,e)=>t.slice(e.sourceCodeLocation.startTag.startOffset,e.sourceCodeLocation.startTag.endOffset),Vs=(t,e)=>t.slice(e.sourceCodeLocation.startTag.endOffset,e.sourceCodeLocation.endTag.startOffset),ye=(t,e)=>[...(t??"").split(/\s+/).filter(s=>s&&!Ps.includes(s)),...e.split(" ").filter(Boolean)].join(" "),Xs=(t,e)=>`${e>1?` colspan="${e}"`:""}${t>1?` rowspan="${t}"`:""}`,Ys=(t,e,s,o,n,a,r)=>$e(t,e,[...n!==void 0?[["class",i=>ye(i?.value,n)||null]]:[],...a!==void 0?[["style",i=>ht(i?.value??"",[[Oe,a]])||null]]:[],["scope",o],...r!==void 0?[["colspan",r[1]>1?String(r[1]):null],["rowspan",r[0]>1?String(r[0]):null]]:[]],s);function ke(t,e,s,{validCell:o}){let n=Ot(e);if(!n||!Array.isArray(s?.rows)||s.rows.length===0||s.rows.length>2e3)return null;let{table:a,rows:r}=n,i=new Set;if(!s.rows.every((c,h)=>c&&typeof c.head=="boolean"&&(h===0||!c.head||s.rows[h-1].head)&&(c.from===null||Number.isInteger(c.from)&&r[c.from])&&Array.isArray(c.cells)&&c.cells.length<=5e3&&c.cells.every(k=>{if(!k||!["td","th"].includes(k.tag)||![void 0,null,"row","col"].includes(k.scope)||k.look!==void 0&&!Gs(k.look)||k.width!==void 0&&!qs(k.width)||!Ne(k.rowspan)||!Ne(k.colspan)||k.rowspan===void 0!=(k.colspan===void 0)||k.scope&&k.tag!=="th")return!1;if(k.from!==null){let[O,C]=Array.isArray(k.from)?k.from:[];if(!r[O]?.cells[C]||i.has(`${O}:${C}`))return!1;i.add(`${O}:${C}`)}else if(typeof k.html!="string")return!1;return k.html===void 0||typeof k.html=="string"&&k.html.length<=1e5&&(k.html===""||o(k.tag,k.html))}))||!s.rows.some(c=>!c.head))return null;let l=c=>c.rowspan!==void 0?[c.rowspan,c.colspan]:c.from===null?[1,1]:[F(r[c.from[0]].cells[c.from[1]],"rowspan"),F(r[c.from[0]].cells[c.from[1]],"colspan")],m=be(s.rows.map(c=>({head:c.head,cells:c.cells.map(l)})));if(!m||s.rows.length*m.columns>5e3)return null;let u=c=>r.find(h=>h.node.parentNode===c)?.node??r[0]?.node??null,v=c=>{let h=u(c);return h?U(t,h.sourceCodeLocation.startOffset):null},L=U(t,n.body.sourceCodeLocation.startOffset),N=U(t,a.sourceCodeLocation.startOffset),b=t.includes(`\r
|
|
15
|
+
`)?`\r
|
|
16
|
+
`:`
|
|
17
|
+
`,S=c=>{if(c.from===null){let tt=c.look?` class="${ye("",c.look)}"`:"",T=c.width?` style="${ht("",[[Oe,c.width]])}"`:"";return`<${c.tag}${tt}${T}${c.scope?` scope="${c.scope}"`:""}${Xs(c.rowspan??1,c.colspan??1)}>${c.html}</${c.tag}>`}let[h,k]=c.from,O=r[h].cells[k],C=c.tag==="th"?c.scope??null:null;return`${O.tagName===c.tag&&(Nt(O,"scope")??null)===C&&c.look===void 0&&c.width===void 0&&c.rowspan===void 0?$t(t,O):Ys(t,O,c.tag,C,c.look,c.width,c.rowspan===void 0?void 0:[c.rowspan,c.colspan])}${c.html??Vs(t,O)}</${c.tag}>`},p=c=>{let h=c.from===null?null:r[c.from];return h&&h.cells.length===c.cells.length&&c.cells.every((O,C)=>O.from?.[0]===c.from&&O.from[1]===C&&O.html===void 0&&O.look===void 0&&O.width===void 0&&O.rowspan===void 0&&O.tag===h.cells[C].tagName&&(O.tag!=="th"||(O.scope??null)===(Nt(h.cells[C],"scope")??null)))?t.slice(h.node.sourceCodeLocation.startOffset,h.node.sourceCodeLocation.endOffset):`${h?$t(t,h.node):"<tr>"}${c.cells.map(S).join("")}</tr>`},$=(c,h,k)=>{let O=k?$t(t,k):`<${c}>`,C=v(k??(r.some(A=>A.head)?n.head:n.body));return C===null||L===null?`${O}${h.map(p).join("")}</${c}>`:`${O}${h.map(A=>`${b}${C}${p(A)}`).join("")}${b}${L}</${c}>`},w=s.rows.filter(c=>c.head),d=s.rows.filter(c=>!c.head),y=[...a.childNodes.filter(c=>c.tagName==="caption"||c.tagName==="colgroup").map(c=>t.slice(c.sourceCodeLocation.startOffset,c.sourceCodeLocation.endOffset)),...w.length?[$("thead",w,n.head)]:[],$("tbody",d,n.body)],x=L===null||N===null?y.join(""):`${y.map(c=>`${b}${L}${c}`).join("")}${b}${N}`;return{start:a.sourceCodeLocation.startTag.endOffset,end:a.sourceCodeLocation.endTag.startOffset,text:x}}var Te={table:{rewrite:ke,plain:t=>Ot(t)!==null,check:(t,{validLeaf:e})=>tn(t,s=>typeof s=="string"&&e({tag:"td"},s,{empty:!0})),write(t,e){let s=Qs(t),o=(N,b)=>t.spans?.[N]?.[b]??[1,1],n=new Map((t.widths??[]).map((N,b)=>[sn(s,b),N]).filter(([N,b])=>N&&b)),a=(N,b)=>{let[S,p]=o(N,b),$=n.get(`${N}:${b}`);return`${t.looks?.[N]?.[b]?` class="${t.looks[N][b]}"`:""}${$?` style="${Zs}: ${$}"`:""}${p>1?` colspan="${p}"`:""}${S>1?` rowspan="${S}"`:""}`},r=(N,b,S)=>`<tr>${N.map((p,$)=>b?`<th${a(S,$)}>${p}</th>`:t.column&&s.places.get(`${S}:${$}`).c===0?`<th${a(S,$)} scope="row">${p}</th>`:`<td${a(S,$)}>${p}</td>`).join("")}</tr>`,i=e.inner===null?null:e.inner+e.step,f=i===null?null:i+e.step,[l,...m]=t.rows,u=[];t.header&&u.push(e.block("<thead>",[r(l,!0,0)],"</thead>",i,f));let v=t.header?m:t.rows,L=t.header?1:0;return v.length>0&&u.push(e.block("<tbody>",v.map((N,b)=>r(N,!1,b+L)),"</tbody>",i,f)),e.block(`<div class="doc-table-wrap"${t.numbers===!1?` ${Js}="off"`:""}${t.chart?` ${en}="${t.chart}"`:""}${e.id}>`,[e.block('<table class="doc-table">',u,"</table>",e.inner,i)],"</div>")}}};var J={..._t,...Rt,...zt,...Ut,...Wt,...Ht,...qt,...Zt,...ee,...ce,...me,...he,...Te},nn=Object.entries(J).flatMap(([t,e])=>(e.fields??[]).map(s=>[s,t])),mo=t=>nn.some(([e,s])=>t[e]!==void 0&&t.type!==s);import{FLOW as Q,HELD_TAGS as yt}from"../browser/editor/components/list/index.mjs";var hn=new Set(["section","div","blockquote","ul","ol","aside","article"]),Ce=new Set(["script","style","template","noscript","link","meta","header","dialog","form","fieldset","label","input","select","textarea","button","summary","main","caption","dd","dt","tbody","thead","tfoot","tr","td","th","figcaption"]),we=new Set(["img","picture","svg","canvas","video","audio","iframe","object"]),gt=new Set(["hr","img"]),$n=new Set(["label","input","select","textarea","button"]),Nn=t=>cn.some(e=>kt(t,e))||rn.some(e=>I(t,e)!==void 0);function On(t){let e=t.childNodes??[],s=e.findIndex(n=>yt.has(n.tagName));if(s<0)return[];let o=e.slice(s);return o.every(n=>yt.has(n.tagName)||M(n))?o.filter(n=>n.tagName):null}function bn(t){return t.tagName==="li"&&t.parentNode?.tagName==="ol"&&kt(t.parentNode,Q)&&t.childNodes.some(e=>e.tagName)&&t.childNodes.every(e=>e.tagName?yt.has(e.tagName):e.nodeName!=="#text"||!e.value.trim())}function ve(t){let e=t.tagName,s=t.sourceCodeLocation;return Ce.has(e)||!(ot.has(e)||we.has(e))||I(t,"contenteditable")!==void 0?!1:!!(s?.startTag&&(s.endTag||gt.has(e)))}var xn=(t,e=W(t))=>(J[e]?.boxes?.(t,St().packages)??[]).filter(({element:s})=>Tt(s)||s.sourceCodeLocation?.endTag&&s.childNodes.every(M));function Tt(t){if(!t.childNodes.every(s=>s.nodeName!=="#text"||!s.value.trim()))return!1;let e=t.childNodes.filter(s=>s.tagName);return e.length>0&&!e.some(s=>$n.has(s.tagName)||!(ot.has(s.tagName)||we.has(s.tagName)||Ce.has(s.tagName)))}function xt(t,e=null){let s=t.tagName;if(!hn.has(s)||Nn(t)||I(t,"contenteditable")!==void 0)return null;let o=(I(t,"class")??"").split(/\s+/).filter(Boolean),n=t.childNodes.filter(l=>l.tagName),a=()=>n.every(l=>l.tagName==="li")&&t.childNodes.every(l=>l.tagName||!l.value?.trim());if(s==="ol"&&o.includes(Q))return o.every(l=>l===Q)&&a()?"flowchart":null;if(s==="ul"||s==="ol")return o.every(l=>(fn.list??[]).includes(l))&&a()?"list":null;let r=t.childNodes.every(l=>l.nodeName!=="#text"||!l.value.trim()),i=q(t,gn.match);if(s==="section"&&(o.length===0||i))return r&&(n.length>0||i)?"section":null;let f=on.find(([l])=>o.includes(l))?.[1];return f&&r&&n.length===0?f:Tt(t)?f||(o.length>0?null:s==="blockquote"?"quote":ln.has(e)?"plain":null):null}var yn=(t,e,s=()=>!1)=>Object.entries(e.sourceCodeLocation.attrs??{}).filter(([o])=>o!=="class"&&o!==R&&!s(o,I(e,o))).sort((o,n)=>o[1].startOffset-n[1].startOffset).map(([,o])=>` ${t.slice(o.startOffset,o.endOffset)}`).join("");function W(t,e=t.parentNode){let s=(n,a,r)=>(!a||[a].flat().includes(n?.tagName))&&(!r||kt(n,r));return dn.find(({tag:n,class:a,attr:r,parent:i})=>s(t,n,a)&&(!r||I(t,r)!==void 0)&&(!i||e?.tagName&&s(e,i.tag,i.class)))?.kind??"block"}var kn={flowchart:{tagName:"ol",attrs:[{name:"class",value:Q}]}},Lo=(t,e)=>W(t,kn[e]??null);function vo(t,e){let s=[],o=[],n=d=>d.parentNode.childNodes,a=d=>n(d)[n(d).indexOf(d)-1]??null,r=d=>/^[ \t]*$/.test(e.slice(e.lastIndexOf(`
|
|
18
|
+
`,d-1)+1,d)),i=d=>{let g=a(d);for(;g&&M(g);)g=a(g);return g?.tagName?g:null},f=d=>{if(!q(d,Le.frame))return null;let g=i(d);return g&&q(g,Le.lead)&&g.sourceCodeLocation?.endTag?g:null},l=(d,g)=>{let y=d.sourceCodeLocation.startOffset;for(let x=a(d);x;)if(M(x)&&(x.value.match(/\n/g)?.length??0)<=1)x=a(x);else if(x.nodeName==="#comment"&&x.sourceCodeLocation&&r(x.sourceCodeLocation.startOffset))g.add(x),y=x.sourceCodeLocation.startOffset,x=a(x);else break;return y},m=(d,g,y,x)=>{let c=d.sourceCodeLocation,h=f(d),k=c.attrs?.class,O={id:s.length,tag:d.tagName,kind:W(d),box:g.id,parent:y?.id??null,start:l(h??d,x),end:c.endOffset,elStart:c.startOffset,at:c.startTag.endOffset-1,lead:h?h.sourceCodeLocation.startTag.endOffset-1:null,classAttr:k?{start:k.startOffset,end:k.endOffset,value:I(d,"class")}:null,attrs:d.attrs.map(({name:C,value:A})=>({name:C,value:A})),blockId:I(d,R)??null,carried:yn(e,d,C=>!!an[W(d)]?.[C]),blockIdAttr:c.attrs?.[R]?{start:c.attrs[R].startOffset,end:c.attrs[R].endOffset}:null,companion:null,keep:null,node:d,nodes:h?[h,d]:[d]};return s.push(O),h&&x.add(h),O},u=(d,g,y,x=null)=>{let c=d.sourceCodeLocation,h={id:o.length,kind:g,unit:y?.id??null,key:x,at:c.startTag.endOffset-1,innerEnd:c.endTag?.startOffset??null,pure:!0};return o.push(h),h},v=(d,g,y)=>{let x=u(d,"tabs",g),c=new Set;for(let h of d.childNodes){if(!h.tagName){h.nodeName==="#text"&&h.value.trim()&&(x.pure=!1);continue}let k=I(h,K.tabKey),O=k&&y.find(H=>I(H,K.panelKey)===k);if(h.tagName!=="button"||!q(h,K.tab)||!O?.sourceCodeLocation?.endTag||!h.sourceCodeLocation?.endTag){x.pure=!1;continue}let C=m(h,x,g,c);C.kind="tab",C.key=k;let A=O.sourceCodeLocation;C.companion={tag:O.tagName,start:l(O,new Set),end:A.endOffset,elStart:A.startOffset},C.nodes.push(O)}for(let h of d.childNodes)h.nodeName==="#comment"&&!c.has(h)&&(x.pure=!1)},L=(d,g,y,x=null)=>{let c=u(d,g,y,x),h=new Set,k=d.childNodes.filter(O=>O.tagName);k.forEach((O,C)=>{if(k[C+1]&&f(k[C+1])===O)return;if(g==="header"&&O.tagName==="h1"||!ve(O)){c.pure=!1,O.tagName==="dialog"&&b(O,y),g==="main"&&q(O,mn.header)&&O.sourceCodeLocation?.endTag&&L(O,"header",null);return}N(O,m(O,c,y,h),g)});for(let O of d.childNodes)(O.nodeName==="#text"?O.value.trim():!O.tagName&&!h.has(O))&&(c.pure=!1)},N=(d,g,y)=>{if(g.kind==="sheets"){let x=bt(d,K.panels),[c]=bt(d,K.row);c&&v(c,g,x);for(let h of x)(Tt(h)||h.sourceCodeLocation?.endTag&&h.childNodes.every(M))&&L(h,"panel",g,I(h,K.panelKey))}else if(d.tagName==="details")for(let x of d.childNodes)x.tagName&&xt(x)==="details"&&L(x,"details",g);else if(d.tagName==="li"&&bn(d))L(d,"node",g);else if(d.tagName==="li")S.push([d,g]);else{let x=xt(d,y);x&&L(d,x,g);for(let c of J[g.kind]?.boxes?xn(d,g.kind):[])L(c.element,c.kind,g,c.key)}},b=(d,g)=>{let[y]=bt(d,pn.content);y&&xt(y)==="dialog"&&L(y,"dialog",g,I(d,"id")??null)},S=[],p=(d,g)=>{let y=On(d);if(y===null||!d.sourceCodeLocation?.endTag)return;let x=u(d,"nest",g);x.pure=!1,g.nested=y.length>0;let c=new Set;for(let h of y)ve(h)&&N(h,m(h,x,g,c),"nest")},$=at(t,"main");$?.sourceCodeLocation?.startTag&&L($,"main",null);for(let d=0;d<S.length;d++)p(...S[d]);let w=En(t,s);return{units:s,boxes:o,referenced:w}}var Tn=t=>t===void 0||/^\s*(?:module|(?:text|application)\/(?:x-)?(?:javascript|ecmascript)|text\/javascript1\.[0-5]|text\/(?:jscript|livescript))?\s*$/i.test(t);function Ln(t){let e=vn(t),s=new Set,o=[],n=/(["'`])((?:(?!\1)[^\\\n]|\\.)*)\1/g,a=m=>m.split(/\s+/).filter(Boolean).forEach(u=>s.add(u)),r=/(?:\bclassList\s*\.\s*(?:add|remove|toggle|contains|replace)|\.classed|\bgetElementsByClassName|\.(?:has|add|remove|toggle)Class|\bclassName\s*\.\s*(?:includes|indexOf|startsWith|endsWith)|\bclassName\s*\.\s*split\s*\([^)]*\)\s*\.\s*(?:includes|indexOf))\s*\(\s*((?:(["'`])(?:(?!\2)[^\\\n]|\\.)*\2\s*,?\s*)+)/g;for(let[,m]of t.matchAll(r))for(let[,,u]of m.matchAll(n))a(u);if(/(["'`])[^"'`\n]*\.\1\s*\+|\.\$\{/.test(t)||/(?:\bclassList\s*\.\s*(?:add|remove|toggle|contains|replace)|\.classed|\.(?:has|add|remove|toggle)Class)\s*\(\s*[A-Za-z_$][\w$.]*\s*[,)]/.test(t))for(let m of e)/^-?[A-Za-z_][\w-]*$/.test(m)&&s.add(m);let f=/\bclassName\s*(?:[!=]==?|=)\s*(["'`])((?:(?!\1)[^\\\n]|\\.)*)\1|(["'`])((?:(?!\3)[^\\\n]|\\.)*)\3\s*[!=]==?\s*[\w$.]*\bclassName\b/g;for(let m of t.matchAll(f))a(m[2]??m[4]);let l=/\[\s*class\s*([~|^$*]?)=\s*(?:"([^"]*)"|'([^']*)'|([^\]\s]+))\s*(?:[is]\s*)?\]/g;for(let m of e)for(let u of m.matchAll(l)){let v=u[2]??u[3]??u[4];u[1]===""||u[1]==="~"||u[1]==="|"?a(v):o.push(v)}return{names:s,partial:o,selectors:e.join(`
|
|
19
|
+
`)}}function vn(t){let e=[],s=[],o=0,n="",a=0,r=i=>{let f="";for(let l=i;l<t.length;l++){let m=t[l];if(m==="\\"){f+=t.slice(l,l+2),l++;continue}if(m==="`")return e.push(f),l+1;if(m==="$"&&t[l+1]==="{")return e.push(f),s.push(o),l+2;f+=m}return e.push(f),t.length};for(;a<t.length;){let i=t[a],f=t[a+1];if(i==="/"&&f==="/"){let l=t.indexOf(`
|
|
20
|
+
`,a);a=l<0?t.length:l;continue}if(i==="/"&&f==="*"){let l=t.indexOf("*/",a+2);a=l<0?t.length:l+2;continue}if(i==='"'||i==="'"){let l=a+1,m="";for(;l<t.length&&t[l]!==i&&t[l]!==`
|
|
21
|
+
`;)t[l]==="\\"?(m+=t.slice(l,l+2),l+=2):m+=t[l++];e.push(m),a=l+1,n="a";continue}if(i==="`"){a=r(a+1),n="a";continue}if(i==="}"&&s.length&&s.at(-1)===o){s.pop(),a=r(a+1),n="a";continue}if(i==="/"&&(!/[\w$)\]}]/.test(n)||/(?:^|[^\w$.])(?:return|typeof|case|in|of|void|delete|throw|yield|await|else|do)\s*$/.test(t.slice(Math.max(0,a-12),a)))){let l=a+1,m=!1;for(;l<t.length&&t[l]!==`
|
|
22
|
+
`&&(m||t[l]!=="/");)t[l]==="\\"?l++:t[l]==="["?m=!0:t[l]==="]"&&(m=!1),l++;if(t[l]==="/"){for(a=l+1;/[a-z]/i.test(t[a]??"");)a++;n="a";continue}}i==="{"?o++:i==="}"&&o--,/\s/.test(i)||(n=i),a++}return e}var Sn=/\bDocSheets\b|["'`]sheets-|\bactiveSheet\b|data-active-sheet|["'`]sheet["'`]|\bsheet\s*:/,Cn=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");function wn(t,e){if(!Sn.test(e))return!1;let s=Cn(t),o=`(["'\`])${s}\\1`;return[`\\bsheet["'\`]?\\s*:\\s*${o}`,`\\.set\\(\\s*(["'\`])${s}\\1`,`\\.set\\(\\s*(["'\`])sheet\\1\\s*,\\s*(["'\`])${s}\\2`,`[!=]==?\\s*${o}`,`${o}\\s*[!=]==?`,`\\bcase\\s+${o}\\s*:`,`active-sheet\\s*=\\s*["']?${s}["'\\]]`].some(n=>new RegExp(n).test(e))}function En(t,e){let s=[],o=new Map,n=p=>{for(let $ of p.childNodes??[]){if(!$.tagName)continue;let w=$.sourceCodeLocation?.startOffset??-1;$.tagName==="script"&&I($,"src")===void 0&&s.push({at:w,code:Tn(I($,"type")),text:$.childNodes.map(d=>d.value??"").join("")});for(let{name:d,value:g}of $.attrs)if(!(d==="aria-labelledby"&&$.tagName==="section"))for(let y of un(d,g))(o.get(y)??o.set(y,[]).get(y)).push(w);n($.tagName==="template"?$.content:$)}};n(t);let a=p=>p.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=p=>p.slice(5).replace(/-([a-z])/g,($,w)=>w.toUpperCase()),i=s.filter(p=>p.code),f=i.map(p=>p.text).join(`
|
|
23
|
+
`),l=p=>i.some($=>p($.at))?i.filter($=>!p($.at)).map($=>$.text).join(`
|
|
24
|
+
`):f,m=new Map,u=(p,$)=>(w,d)=>{if(d!==f)return $(w,d);let g=`${p} ${w}`;return m.has(g)||m.set(g,$(w,d)),m.get(g)},v=u("id",(p,$)=>new RegExp(`#${a(p)}(?![\\w-])|(["'\`])${a(p)}\\1`).test($)),L=u("data",(p,$)=>new RegExp(`${a(p)}(?![\\w-])|dataset\\.${r(p)}(?![\\w$])`).test($)),N=new Map,b=u("class",(p,$)=>{N.has($)||N.set($,Ln($));let{names:w,partial:d,selectors:g}=N.get($);return w.has(p)||d.some(y=>y.includes(p))||new RegExp(`\\.${a(p)}(?![\\w-])`).test(g)}),S=p=>p.split(/\s+/).filter($=>$&&!/^(doc-|katex)/.test($));for(let p of e){let $=[[p.start,p.end],...p.companion?[[p.companion.start,p.companion.end]]:[]],w=T=>$.some(([E,_])=>T>=E&&T<_),d=new Map,g=new Map,y=new Map,x=(T,E,_)=>(T.get(E)??T.set(E,[]).get(E)).push(_),c=T=>{if(!T.tagName)return;let E=T.sourceCodeLocation?.startOffset??p.start;for(let{name:_,value:D}of T.attrs)_==="id"&&D?x(d,D,E):_.startsWith("data-")&&_!==R?x(g,_,E):_==="class"&&S(D).forEach(et=>x(y,et,E));(T.tagName==="template"?T.content:T).childNodes?.forEach(c)};p.nodes.forEach(c);let h=l(w),k=(T,E,_)=>[...T].filter(([D])=>E(D)).map(([D,et])=>({name:_(D),at:et})),O=[...p.key&&s.some(T=>!w(T.at)&&wn(p.key,T.text))?[{name:`"${p.key}"`,at:[p.start]}]:[],...k(d,T=>v(T,h),T=>`#${T}`),...k(g,T=>L(T,h),T=>`[${T}]`),...k(y,T=>b(T,h),T=>`.${T}`)],C=k(d,T=>(o.get(T)??[]).some(E=>!w(E)),T=>`#${T}`),A=O.length>0?O:C,H=A.flatMap(T=>T.at),tt=H.some(T=>!e.some(E=>E!==p&&p.start<=E.start&&E.end<=p.end&&E.start<=T&&T<E.end));p.keep=A.length>0?{reason:O.length>0?"script":"ref",names:A.map(T=>T.name),at:H,own:tt}:null}return p=>{let $=p.sourceCodeLocation;if(!$||!p.attrs.some(({name:y})=>y==="id"||y==="class"||y.startsWith("data-")))return null;let w=y=>y>=$.startOffset&&y<$.endOffset,d=l(w),g=null;for(let{name:y,value:x}of p.attrs)if(y==="id"&&x){if(v(x,d))return"script";(o.get(x)??[]).some(c=>!w(c))&&(g="ref")}else{if(y.startsWith("data-")&&y!==R&&L(y,d))return"script";if(y==="class"&&S(x).some(c=>b(c,d)))return"script"}return g}}function An(t,e){let s=[],o=n=>{let a=n.sourceCodeLocation?.attrs?.[R];if(a){let r=a.startOffset>0&&/\s/.test(t[a.startOffset-1])?a.startOffset-1:a.startOffset;s.push({start:r,end:a.endOffset})}for(let r of n.content?.childNodes??n.childNodes??[])o(r)};return e.forEach(o),s.sort((n,a)=>n.start-a.start)}var Se=(t,e,s,o)=>{let n="",a=e;for(let r of o)r.start<a||r.end>s||(n+=t.slice(a,r.start),a=r.end);return n+t.slice(a,s)},So=(t,e)=>{let s=An(t,e.nodes),o=Se(t,e.start,e.end,s);return wt(e.companion?`${o}\0${Se(t,e.companion.start,e.companion.end,s)}`:o)};export{wt as a,at as b,ot as c,Nn as d,On as e,bn as f,xn as g,yn as h,W as i,Lo as j,vo as k,An as l,So as m,de as n,ue as o,Z as p,Sa as q,Ca as r,ht as s,wa as t,Ms as u,Ea as v,Aa as w,mt as x,U as y,js as z,Ia as A,Fs as B,Hs as C,J as D,mo as E};
|
|
@@ -0,0 +1,20 @@
|
|
|
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{c as ye,d as Z,f as se,h as ae,i as Ce,l as ie}from"./chunk-D4EURAX4.mjs";import{D as oe}from"./chunk-UBBRTJ2R.mjs";import{a as X,f as Oe,g as be,n as $e,t as Se}from"./chunk-FWNRPMCJ.mjs";import{b as xe,e as dt}from"./chunk-A55HN5OK.mjs";dt();import{createHash as lt}from"node:crypto";import{cellsOf as ft}from"../browser/shared/card-size.mjs";import{escapeAttribute as ce}from"../browser/shared/escape.mjs";import{attr as N,elementsOf as de,hasClass as je,walk as Ae}from"../browser/shared/html-tree.mjs";import{ATTRIBUTE as ve}from"../browser/shared/components/installed.mjs";var q=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,Ut=Object.freeze(["data-board-id","data-card-id","data-x","data-y","data-w","data-h"]),_e="gallery-board",Le="gallery-card",Ee=e=>(e.tagName==="div"||e.tagName==="section")&&N(e,ve)!==void 0,ut=e=>lt("sha256").update(e.replace(/\r\n?/g,`
|
|
3
|
+
`)).digest("hex").slice(0,16),pt=e=>xe(e.replace(/^/," "),{sourceCodeLocationInfo:!0});function j(e){let n=[];return Ae(pt(e),r=>{if(!je(r,_e))return;let f=de(r).filter(s=>je(s,Le)&&s.sourceCodeLocation).map(s=>{let a=de(s).find(Ee)??null;a||Ae(s,x=>{a??=Ee(x)?x:null});let h=s.sourceCodeLocation,g={x:N(s,"data-x"),y:N(s,"data-y"),w:N(s,"data-w"),h:N(s,"data-h")};return{id:N(s,"data-card-id")??null,node:s,board:N(r,"data-board-id")??null,...ft({dataset:g}),instance:a,block:a?N(a,ve):null,start:h.startOffset,end:h.endOffset,closed:!!h.endTag}});n.push({id:N(r,"data-board-id")??null,node:r,cards:f})},{inTemplates:!1}),{boards:n,cards:n.flatMap(r=>r.cards)}}function mt(e){let n=new Set(e.map(({id:s})=>s).filter(s=>typeof s=="string"&&q.test(s))),r=new Set,f=1;return e.map(({id:s})=>{if(typeof s=="string"&&q.test(s)&&!r.has(s))return r.add(s),s;for(;n.has(`c${f}`)||r.has(`c${f}`);)f++;let a=`c${f}`;return r.add(a),a})}function le(e){let n=new Set(e),r=1;for(;n.has(`c${r}`);)r++;return`c${r}`}function ee(e,n,r){let{startTag:f}=n.sourceCodeLocation,s=f.attrs??{},a=[],h=[];for(let[g,x]of Object.entries(r)){let S=s[g];S?(a.push({start:S.startOffset,end:S.endOffset,text:x===null?"":`${g}="${ce(String(x))}"`}),x===null&&e[S.startOffset-1]===" "&&(a.at(-1).start-=1)):x!==null&&h.push(` ${g}="${ce(String(x))}"`)}if(h.length){let g=s.class?.endOffset??f.startOffset+1+n.tagName.length;a.push({start:g,end:g,text:h.join("")})}return a}function te(e,n){return[...n].sort((r,f)=>f.start-r.start||f.end-r.end).reduce((r,{start:f,end:s,text:a})=>r.slice(0,f)+a+r.slice(s),e)}function W(e){let{cards:n}=j(e),r=mt(n),f=n.flatMap((s,a)=>s.id===r[a]?[]:ee(e,s.node,{"data-card-id":r[a]}));return{text:f.length?te(e,f):e,filled:n.flatMap((s,a)=>s.id===r[a]?[]:[r[a]])}}var V=(e,n)=>ut(e.slice(n.start,n.end));function ze(e){let n=W(e).text;return j(n).cards.map(r=>({id:r.id,board:r.board,x:r.x,y:r.y,w:r.w,h:r.h,base:V(n,r),block:r.block}))}var Ie=e=>[e.board,...["x","y","w","h"].map(n=>N(e.node,`data-${n}`))].join(",");function Te(e,n){let r=n.node.sourceCodeLocation.startTag.endOffset;return e.slice(n.start,r).replace(/\s+data-[xywh]="[^"]*"/g,"")+e.slice(r,n.end)}function Me(e,n){let[r,f]=[W(e).text,W(n).text],[s,a]=[j(r).cards,j(f).cards],h={};for(let g of s)a.some(x=>x.id===g.id)||(h[g.id]=["removed"]);for(let g of a){let x=s.find(v=>v.id===g.id);if(!x){h[g.id]=["added"];continue}let S=[...Ie(x)!==Ie(g)?["cells"]:[],...Te(r,x)!==Te(f,g)?["content"]:[]];S.length&&(h[g.id]=S)}return h}function Y(e,n){let{cards:r}=j(e),f=r.flatMap(s=>{let a=n.get(s.id);if(!a)return[];let h={};for(let g of["x","y","w","h"])a[g]!==void 0&&N(s.node,`data-${g}`)!==String(a[g])&&(h[`data-${g}`]=a[g]);return Object.keys(h).length?ee(e,s.node,h):[]});return f.length?te(e,f):e}function ht(e,n,r){let f=e.lastIndexOf(`
|
|
4
|
+
`,n-1)+1,s=e.indexOf(`
|
|
5
|
+
`,r),a=s===-1?e.slice(r):e.slice(r,s);return!/^[ \t]*$/.test(e.slice(f,n))||!/^[ \t\r]*$/.test(a)?{from:n,to:r}:{from:f,to:s===-1?e.length:s+1}}function Pe(e,n){let r=j(e).cards.find(a=>a.id===n);if(!r)return null;let{from:f,to:s}=ht(e,r.start,r.end);return{text:e.slice(0,f)+e.slice(s),html:e.slice(r.start,r.end)}}var Ne=(e,n)=>/^[ \t]*/.exec(e.slice(e.lastIndexOf(`
|
|
6
|
+
`,n-1)+1))[0],gt=(e,n)=>e.replace(/\r?\n/g,r=>`${r}${n}`);function Re({id:e,x:n,y:r,w:f,h:s},a,h="",g=`
|
|
7
|
+
`){return`${`<section class="${Le}" data-card-id="${ce(e)}" data-x="${n}" data-y="${r}" data-w="${f}" data-h="${s}">`}${g}${h} ${gt(a.trim().replace(/\r?\n/g,g),`${h} `)}${g}${h}</section>`}function fe(e,n,r){let f=j(e).boards.find(A=>A.id===n);if(!f)return null;let{node:s}=f,a=s.sourceCodeLocation,h=e.includes(`\r
|
|
8
|
+
`)?`\r
|
|
9
|
+
`:`
|
|
10
|
+
`,g=f.cards.at(-1),x=g?Ne(e,g.start):`${Ne(e,a.startOffset)} `,S=r.match(/\n([ \t]*)<\/[a-z]+>\s*$/)?.[1]??"",v=r.trim().replace(/\r?\n/g,`
|
|
11
|
+
`).split(`
|
|
12
|
+
`).map((A,_)=>_===0||S===x?A:A.startsWith(S)?`${x}${A.slice(S.length)}`:A).join(h);if(a.endTag){let A=a.endTag.startOffset,_=e.lastIndexOf(`
|
|
13
|
+
`,A-1)+1,R=/^[ \t]*$/.test(e.slice(_,A)),L=R?_:A,H=`${R?"":h}${x}${v}${h}`;return{text:e.slice(0,L)+H+e.slice(L),start:L+H.indexOf(v)}}let I=a.endOffset,P=`${h}${x}${v}`;return{text:e.slice(0,I)+P+e.slice(I),start:I+P.indexOf(v)}}function Gt(e,{blockOf:n=()=>null}={}){let r=W(e).text,f=[];for(let s of j(r).cards){let a=s.block?n(s.block):null,h={"data-ge-base":V(r,s)};a?.fit==="content"&&(h["data-ge-fit"]="content"),a?.bare&&(h["data-ge-bare"]="");let g=s.block===null?null:a?.state??"missing";if(g&&g!=="page"&&(h["data-ge-state"]=g),f.push(...ee(r,s.node,h)),s.instance&&a&&g!=="page"&&g!=="missing"){let{startOffset:x,endOffset:S}=s.instance.sourceCodeLocation;f.push({start:x,end:x,text:"<template data-ge-held>"},{start:S,end:S,text:"</template>"})}}return te(r,f)}function Fe(e){let n=`<!doctype html><html><head></head><body><div class="${_e}">`,r=`${n}${e}</div></body></html>`,[f]=j(r).boards;return{text:r,board:f,from:n.length,to:n.length+e.length}}function De(e){let{board:n}=Fe(e);if(!n||n.cards.length!==1)return null;let r=de(n.node).length!==1||n.node.childNodes.some(s=>s.nodeName==="#text"&&s.value.trim()),[f]=n.cards;return r||!f.closed||!f.instance||f.instance.parentNode!==f.node?null:f}function He(e,{id:n,x:r,y:f,w:s,h:a}){let{text:h,board:g,from:x,to:S}=Fe(e),v={"data-card-id":n,"data-x":r,"data-y":f,"data-w":s,"data-h":a},I=ee(h,g.cards[0].node,v),P=I.reduce((A,{start:_,end:R,text:L})=>A+L.length-(R-_),0);return te(h,I).slice(x,S+P)}import{readFileSync as Be}from"node:fs";import M from"node:fs/promises";import F from"node:path";import{refusedInCopy as Je}from"../browser/shared/components/installed.mjs";import{writeAtomic as We}from"../browser/shared/files.mjs";import{sendJson as re}from"../browser/shared/http.mjs";import{jsonIn as wt}from"../browser/shared/json-layout.mjs";import{defaultSize as ue,freeSpot as kt,onBoard as pe,pushDown as me,settle as xt,sizeFor as Ue}from"../browser/shared/board-places.mjs";import{FIRST_BOARD as Ge,HOME as Ke,HOME_CARDS as Ot,closeHomeHint as bt,pageExists as he,pageFiles as $t,pageVersion as Ve,tellHomeCards as Ye}from"../browser/shared/pages.mjs";import{sameDirectory as St}from"../browser/shared/preview-server.mjs";import{walk as yt}from"../browser/shared/html-tree.mjs";var Ct=20,ge="writes.jsonl",jt=200;async function dr(e,n,r){return(await M.readFile(F.join(e,"pages",n,ge),"utf8").catch(()=>"")).split(`
|
|
14
|
+
`).flatMap(s=>{try{let a=JSON.parse(s);return a&&typeof a.at=="number"&&a.at>=r&&a.cards&&typeof a.cards=="object"?[a]:[]}catch{return[]}})}var At=["place","arrange","add","remove","edit","settings","restore-defaults"],U=e=>Number.isInteger(e)&&e>=0,ne=e=>Number.isInteger(e)&&e>=1,Et=/^\d{4}-\d{2}-\d{2}$/,O=(e,n,r)=>[e,{ok:!1,reason:n,...r?{message:r}:{}}];function It(e,n){return typeof e=="string"?e.replace(new RegExp(`(^|[\\s"'(,=])/pages/${n}/assets/`,"g"),"$1assets/"):e}var Qe=e=>[409,{ok:!1,refused:e}];function lr(e,n){let r=e.packages.get(n);return r?{state:r.places.includes("page")?"page":"document",card:r.card,settings:r.settings,places:r.places,fit:r.card.fit,bare:r.card.bare,name:r.name,parts:Object.fromEntries(Object.entries(r.parts).filter(([,f])=>f.edit==="data").map(([f,s])=>[f,s.at]))}:e.settings.disabled.includes(n)&&e.problems.has(n)?{state:"disabled",card:null,settings:[],places:[],fit:"fixed",bare:!1,name:null,parts:{}}:null}function Tt(e,{type:n,options:r}){return n==="text"||n==="document"?typeof e=="string"&&e.length<=1e4:n==="number"?typeof e=="number"&&Number.isFinite(e)||e===null:n==="select"?r.includes(e):n==="date"?e===""||typeof e=="string"&&Et.test(e):n==="switch"?typeof e=="boolean":!1}function Xe(e,{x:n,y:r,w:f,h:s}){let a={x:e.x??n,y:e.y??r,w:e.w??f,h:e.h??s};return U(a.x)&&U(a.y)&&ne(a.w)&&ne(a.h)?a:null}function Ze({root:e,edits:n,stateDirectory:r,catalog:f=()=>be(e),catalogTaken:s=()=>{},shipped:a=void 0,log:h=()=>{},shown:g=x=>x}){let x=0;async function S(d,t){let i=F.join(r,"pages",d);await M.mkdir(i,{recursive:!0}),x=(x+1)%1e4,await M.writeFile(F.join(i,`${String(Date.now()).padStart(15,"0")}-${String(x).padStart(4,"0")}.html`),t);let c=(await M.readdir(i)).filter(m=>/^\d{15}-\d{4}\.html$/.test(m)).sort();for(let m of c.slice(0,Math.max(0,c.length-Ct)))await M.rm(F.join(i,m),{force:!0})}async function v(d,t){let i=F.join(r,"pages",d,ge);try{let c=(await M.readFile(i,"utf8").catch(()=>"")).split(`
|
|
15
|
+
`).filter(Boolean);c.push(JSON.stringify({at:Date.now(),...t})),await We(i,`${c.slice(-jt).join(`
|
|
16
|
+
`)}
|
|
17
|
+
`)}catch(c){h(`the write of ${d}'s page.html could not be told in ${ge}: ${c.message}`)}}function I(d,t){if(typeof t.card!="string")return{error:O(400,"card")};let i=j(d).cards.find(c=>c.id===t.card);return i?typeof t.base!="string"||V(d,i)!==t.base?{error:Qe("changed")}:{card:i}:{error:Qe("gone")}}let P=(d,t)=>j(d).cards.filter(i=>i.board===t).map(({id:i,x:c,y:m,w:l,h:u})=>({id:i,x:c,y:m,w:l,h:u})),A=(d,t)=>new Map(t.filter(i=>{let c=d.find(m=>m.id===i.id);return!c||c.x!==i.x||c.y!==i.y||c.w!==i.w||c.h!==i.h}).map(i=>[i.id,i])),_=(d,t,i)=>oe.installed.dataOf(d,t.instance,i)??{};function R(d,t,i,c){if(!t.instance||!c.has(t.block))return{error:O(409,"block")};let m=_(d,t,c),l=oe.installed.rewrite(d,t.instance,i,{packages:c});if(!l)return{error:O(400,"part")};let u=[...l].sort((p,k)=>k.start-p.start).reduce((p,{start:k,end:b,text:y})=>p.slice(0,k)+y+p.slice(b),d),w=_(u,j(u).cards.find(p=>p.id===t.id),c);return{text:u,parts:Object.fromEntries(Object.keys(i).map(p=>[p,{was:m[p]??"",now:w[p]??""}]))}}function L(d,t){return Object.fromEntries(Object.entries(d).map(([i,{was:c,now:m}])=>[i,{was:g(c,t),now:g(m,t)}]))}let H={place(d,t,{packages:i}){let{card:c,error:m}=I(d,t);if(m)return{error:m};let l=Xe(t,c);if(!l)return{error:O(400,"cells")};let u=i.get(c.block);if(l.w!==c.w||l.h!==c.h){let p=u&&!u.card.sizes&&u.card.h===null&&l.w===c.w;if(u&&!u.card.resize&&!p)return{error:O(409,"resize")};u&&!p&&(l={...l,...Ue(u.card,l)})}let w=P(d,c.board);return{text:Y(d,A(w,me(w,{id:c.id,...l})))}},arrange(d,t){if(!Array.isArray(t.cards)||t.cards.length===0)return{error:O(400,"cards")};let i=[];for(let m of t.cards){let{card:l,error:u}=I(d,m??{});if(u)return{error:u};let w=Xe(m,l);if(!w)return{error:O(400,"cells")};i.push({card:l,cells:pe(w)})}let c=d;for(let m of new Set(i.map(({card:l})=>l.board))){let l=P(c,m),u=i.filter(({card:p})=>p.board===m),w=l.map(p=>({...p,...u.find(({card:k})=>k.id===p.id)?.cells??{}}));c=Y(c,A(l,xt(w,u.map(({card:p})=>p.id))))}return{text:c}},async add(d,t,i){let{boards:c,cards:m}=j(d);if(t.html!==void 0)return nt(d,t,{boards:c,cards:m});if(typeof t.block!="string")return{error:O(400,"block")};let l=typeof t.board=="string"?c.find(C=>C.id===t.board):c.find(C=>C.id===Ge)??c[0];if(!l)return{error:O(409,"board")};se(t.block,a)&&ie(e,{ids:[t.block],directory:a,log:h}).updated.length>0&&(s(),i.refresh());let u=i.packages.get(t.block),w=i.catalog.settings.disabled.includes(t.block);if(!u&&!w&&!i.catalog.problems.has(t.block)&&se(t.block,a)){let C=Z(a).find(({id:K})=>K===t.block);C&&C.places.includes("page")&&!ae(e,C).added&&(Ce(e,C),h(`${t.block} added to the workspace for a card of a custom page`),s(),i.refresh(),u=i.packages.get(t.block))}if(!u)return{error:O(409,i.catalog.settings.disabled.includes(t.block)?"disabled":"missing")};if(!u.places.includes("page"))return{error:O(409,"places")};let p=Se(u);if(!p)return{error:O(409,"template")};if(t.w!==void 0&&!ne(t.w)||t.h!==void 0&&!ne(t.h))return{error:O(400,"cells")};let k=ue(u.card),b=t.w!==void 0||t.h!==void 0?Ue(u.card,{w:t.w??k.w,h:t.h??k.h}):k,y=l.cards.map(({id:C,x:K,y:it,w:ot,h:ct})=>({id:C,x:K,y:it,w:ot,h:ct})),o=t.x!==void 0||t.y!==void 0?{x:t.x??0,y:t.y??0}:kt(y,b);if(!U(o.x)||!U(o.y))return{error:O(400,"cells")};let $=le(m.map(C=>C.id)),T=pe({...o,w:b.w,h:b.h}),B=d.includes(`\r
|
|
18
|
+
`)?`\r
|
|
19
|
+
`:`
|
|
20
|
+
`,E=Re({id:$,...T},p,"",B),G=fe(d,l.id,E),Q=A(y,me(y,{id:$,...T}).filter(C=>C.id!==$)),z=Y(G.text,Q),J=j(z).cards.find(C=>C.id===$);if(t.settings!==void 0){let C=H.settings(z,{card:$,base:V(z,J),values:t.settings},i);if(C.error)return C;z=C.text,J=j(z).cards.find(K=>K.id===$)}return{text:z,extra:{card:$,html:z.slice(J.start,J.end),measure:k.measured&&t.h===void 0,pushed:[...Q.keys()]}}},remove(d,t){let{card:i,error:c}=I(d,t);if(c)return{error:c};let{text:m,html:l}=Pe(d,i.id);return{text:m,extra:{removed:{id:i.id,board:i.board,html:l}}}},edit(d,t,{packages:i,slug:c}){let{card:m,error:l}=I(d,t);if(l)return{error:l};let u=t.parts!==void 0?t.parts:typeof t.part=="string"?{[t.part]:t.html}:null;if(!u||typeof u!="object"||Array.isArray(u)||Object.keys(u).length===0)return{error:O(400,"part")};let w=Object.fromEntries(Object.entries(u).map(([k,b])=>[k,It(b,c)])),p=R(d,m,w,i);return p.error?p:{text:p.text,extra:{parts:L(p.parts,c)}}},settings(d,t,{packages:i,slug:c}){let{card:m,error:l}=I(d,t);if(l)return{error:l};let u=i.get(m.block),w=u?.settings??[];if(!u||w.length===0)return{error:O(409,"settings")};let p=t.values;if(!p||typeof p!="object"||Array.isArray(p))return{error:O(400,"values")};for(let[T,B]of Object.entries(p)){let E=w.find(G=>G.key===T);if(!E||!Tt(B,E))return{error:O(400,"values",T)}}let k=_(d,m,i)[X];if(k===void 0)return{error:O(409,"settings")};let b={};try{b=k.trim()?JSON.parse(k):{}}catch{b={}}(!b||typeof b!="object"||Array.isArray(b))&&(b={});let y={...b,...p};if(JSON.stringify(y)===JSON.stringify(b))return{text:d,extra:{parts:L({[X]:{was:k,now:k}},c)}};let o=k.trim()?wt(k,y):JSON.stringify(y),$=R(d,m,{[X]:o},i);return $.error?$:{text:$.text,extra:{parts:L($.parts,c)}}},async"restore-defaults"(d,t,i){if(i.slug!==Ke)return{error:O(409,"home")};let c=new Set(j(d).cards.map(w=>w.block)),m=d,l=[],u=[];for(let w of Ot){if(c.has(w))continue;let p=await H.add(m,{op:"add",block:w},i),k=i.packages.get(w)?.name??Z(a).find(({id:b})=>b===w)?.title??null;if(p.error){u.push({block:w,reason:p.error[1].reason,name:k});continue}m=p.text,l.push({card:p.extra.card,block:w,html:p.extra.html,name:k})}return{text:m,extra:{added:l,skipped:u}}}};function nt(d,t,{boards:i,cards:c}){if(typeof t.html!="string"||t.html.length>11e5)return{error:O(400,"html")};let m=t.html.trim(),l=De(m);if(!l)return{error:O(400,"html")};let u=Je(l.node.tagName,l.node.attrs??[]);if(yt(l.node,E=>{u||=Je(E.tagName,E.attrs??[])}),u)return{error:O(400,"html")};let w=i.find(E=>E.id===(typeof t.board=="string"?t.board:Ge))??i[0];if(!w)return{error:O(409,"board")};if(t.x!==void 0&&!U(t.x)||t.y!==void 0&&!U(t.y))return{error:O(400,"cells")};let p=c.map(E=>E.id),k=l.id&&!p.includes(l.id)&&q.test(l.id)?l.id:le(p),b=pe({x:t.x??l.x,y:t.y??l.y,w:l.w,h:l.h}),y=w.cards.map(({id:E,x:G,y:Q,w:z,h:J})=>({id:E,x:G,y:Q,w:z,h:J})),o=fe(d,w.id,He(m,{id:k,...b})),$=A(y,me(y,{id:k,...b}).filter(E=>E.id!==k)),T=Y(o.text,$),B=j(T).cards.find(E=>E.id===k);return{text:T,extra:{card:k,html:T.slice(B.start,B.end),pushed:[...$.keys()]}}}async function we(d,t,{by:i}={}){if(!t||typeof t!="object"||!At.includes(t.op))return O(400,"op");if(t.workspace!==void 0&&(typeof t.workspace!="string"||!St(t.workspace,e)))return O(409,"elsewhere","\u8FD9\u4E2A\u9884\u89C8\u670D\u52A1\u5668\u7BA1\u7684\u662F\u53E6\u4E00\u4E2A\u76EE\u5F55\u7684\u6587\u6863");if(!he(d,e))return O(404,"missing");let c=$t(d,e);for(let m=0;m<3;m++){let[l,u]=await Promise.all([M.readFile(c.html,"utf8").catch(()=>null),M.readFile(c.json,"utf8").catch(()=>"")]);if(l===null)return O(404,"missing");if(Buffer.byteLength(l)>1e6)return O(413,"size");let w=Ve(l,u),p=W(l).text,k=f(),b={slug:d,get catalog(){return k},get packages(){return k.packages},refresh:()=>{k=f()}},y=await H[t.op](p,t,b);if(y.error)return y.error;let o=y.text;if(Buffer.byteLength(o)>1e6)return O(413,"size");if(o!==l){if(await S(d,l),!await We(c.html,o,{expect:l}))continue;await v(d,{op:t.op,by:i==="gallery"?"gallery":t.agent===!0?"agent":"page",cards:Me(l,o)})}return t.op==="restore-defaults"&&await Ye(e).catch(()=>{}),[200,{ok:!0,version:Ve(o,u),before:w,cards:ze(o),...y.extra??{}}]}return O(409,"busy")}function ke(d="zh"){ie(e,{directory:a,log:h}).updated.length>0&&s();let t=f(),i=t.settings.packsOff??[],c=o=>o.split("/")[0],m=o=>!t.settings.unlisted.includes(o)&&!i.includes(c(o)),l=o=>t.packs?.get(c(o))??null,u=[...t.packages.values()].filter(o=>o.places.includes("page")&&m(o.id)).map(o=>({id:o.id,name:o.name,description:o.description,preview:o.files.includes("preview.svg")?$e(o,"preview.svg"):null,size:ue(o.card),installed:!0,settings:o.settings.length>0,pack:{id:c(o.id),name:l(o.id)}}));for(let o of Z(a)){if(!o.places.includes("page")||t.packages.has(o.id)||t.problems.has(o.id)||t.settings.disabled.includes(o.id)||!m(o.id)||ae(e,o).added)continue;let $=null;try{$=`data:image/svg+xml;base64,${Be(F.join(o.folder,"preview.svg")).toString("base64")}`}catch{}let T=null;try{T=JSON.parse(Be(F.join(o.folder,"component.json"),"utf8")).card??null}catch{}u.push({id:o.id,name:o.title,description:o.description,preview:$,size:ue(T),installed:!1,settings:!1,pack:{id:o.pack,name:l(o.id)}})}let w=o=>o.name?.[d]??o.name?.zh??o.id,p=new Map;for(let o of u)p.set(w(o),(p.get(w(o))??0)+1);for(let o of u)p.get(w(o))>1&&(o.of=o.pack.name?.[d]??o.pack.id);let k=ye(a),b=o=>k.includes(o.pack.id),y=o=>b(o)?k.indexOf(o.pack.id):k.length;return u.sort((o,$)=>b(o)===b($)?w(o).localeCompare(w($),"zh-CN")||y(o)-y($)||(o.id<$.id?-1:1):b(o)?-1:1)}async function st(d,t){return d!==Ke?O(409,"home"):he(d,e)?(t?.cards===!0?await Ye(e):await bt(e),[200,{ok:!0}]):O(404,"missing")}function at(d,t,i,c){if((c==="cards"||c==="hint")&&d.method==="POST")return n.respond(async l=>{let u=await n.check(l);return u.error?u.error:c==="hint"?st(i,u.body):we(i,u.body)})(d,t);if(c==="library"&&d.method==="GET"){let l=d.headers.host??"",u=d.socket.localPort;if(l!==`127.0.0.1:${u}`&&l!==`localhost:${u}`)return re(t,403,{ok:!1,reason:"host"});if(!he(i,e))return re(t,404,{ok:!1,reason:"missing"});let w=new URL(d.url??"/","http://localhost").searchParams.get("language")==="en"?"en":"zh";return re(t,200,{ok:!0,blocks:ke(w)})}let m=["cards","library","hint"].includes(c);return re(t,m?405:404,{ok:!1,reason:m?"method":"unknown"})}return{handle:at,apply:we,library:ke}}import{readFileSync as Nt}from"node:fs";import{HOME as D,HOME_TITLE as vt,createPage as _t,markHomeMade as qe,pageExists as et,pageFiles as tt,pageSlugRefused as Lt,pagesSettings as zt}from"../browser/shared/pages.mjs";import{layoutOf as rt,markerOf as Mt}from"../browser/shared/workspace.mjs";var Pt="GALLERY_NO_DEFAULT_HOME",Rt=(e=process.env)=>!["","0","false",void 0].includes(e[Pt]);async function wr(e,{shipped:n=void 0,stateDirectory:r=rt(e).state,env:f=process.env}={}){if(Rt(f))return{did:"off"};let s={ours:!1};try{s=Mt(Nt(rt(e).marker,"utf8"))}catch{}if(!s.ours)return{did:"unread"};if(zt(e).homeMade)return{did:"done"};let a="mark";try{if(et(D,e))return await qe(e),{did:"kept"};a="page";let h=await Lt(D,e);if(h)return{did:"taken",why:h};await _t(D,vt,{root:e}),a="cards";let g=Ze({root:e,edits:null,stateDirectory:r,catalog:()=>Oe(e),shipped:n}),[,x]=await g.apply(D,{op:"restore-defaults"},{by:"gallery"});return a="mark",await qe(e),{did:"made",file:tt(D,e).html,cards:(x.added??[]).map(({card:S})=>S),skipped:x.skipped??[]}}catch(h){return{did:"failed",stage:a,file:et(D,e)?tt(D,e).html:null,why:h?.message??String(h)}}}function kr({stage:e,file:n,why:r}){return e==="mark"?`The default home page ${n} is there, but gallery.json could not say it was made (${r}); a later start tries again.`:e==="cards"?`The default home page ${n} was made without its cards (${r}): \u6062\u590D\u9ED8\u8BA4\u5361\u7247 in its menu in the sidebar puts them on.`:`The default home page was not made (${r}); a later start tries again.`}export{q as a,j as b,W as c,Te as d,Gt as e,dr as f,lr as g,Ze as h,Rt as i,wr as j,kr as k};
|