@bendyline/squisq 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE.md +24 -0
- package/README.md +8 -8
- package/dist/{ContentContainer-BXUlIf18.d.ts → ContentContainer-B2w9sUoL.d.ts} +15 -0
- package/dist/{Doc-DynJleo-.d.ts → Doc-COe-rPQB.d.ts} +7 -5
- package/dist/{ImageEditDoc-Ca4Tr9uN.d.ts → ImageEditDoc-dtKahVyD.d.ts} +1 -1
- package/dist/{annotationCoercion-Dr_DY9Hx.d.ts → annotationCoercion-PtRQhk5V.d.ts} +1 -1
- package/dist/{chunk-VWCJ2WXC.js → chunk-2ZWIXGAC.js} +0 -1
- package/dist/{chunk-VYFRI7R6.js → chunk-32R2RZAO.js} +72 -3
- package/dist/chunk-3IGPAPQ7.js +645 -0
- package/dist/{chunk-QE7TWGVT.js → chunk-4VOD55SX.js} +0 -1
- package/dist/{chunk-3E5F2XMR.js → chunk-67L6WRJN.js} +0 -1
- package/dist/{chunk-5DKBFXPY.js → chunk-6ECMNUIP.js} +26 -18
- package/dist/{chunk-DBS6RIFL.js → chunk-7N4G32LG.js} +0 -1
- package/dist/{chunk-JOQYPRDZ.js → chunk-7YEZFHLS.js} +10 -8
- package/dist/{chunk-2UQOHYE2.js → chunk-7ZAAICW4.js} +0 -1
- package/dist/{chunk-66QO7XFB.js → chunk-ACZOVWX3.js} +117 -7
- package/dist/{chunk-5J4HKRJF.js → chunk-BAOV476U.js} +0 -1
- package/dist/chunk-BCCXTMN5.js +699 -0
- package/dist/{chunk-JHZWYRSW.js → chunk-C33GTPUZ.js} +11 -4
- package/dist/{chunk-XNLB57UD.js → chunk-EK446BUE.js} +18 -2
- package/dist/{chunk-VR7UPJ7C.js → chunk-FCG3BIZN.js} +12 -1
- package/dist/{chunk-JI77MGAK.js → chunk-GIIOY6XR.js} +2178 -1291
- package/dist/{chunk-Q7LROV2H.js → chunk-NKNMGIIN.js} +0 -1
- package/dist/chunk-OPO5K4DZ.js +241 -0
- package/dist/{chunk-TUWMK62B.js → chunk-PUS54YU6.js} +45 -2
- package/dist/{chunk-OTKVFVL6.js → chunk-QNTQIEIV.js} +130 -47
- package/dist/{chunk-5UYI3RJB.js → chunk-QWCFK5FN.js} +55 -40
- package/dist/{chunk-GZY66SDN.js → chunk-R3KTTOMS.js} +0 -1
- package/dist/{chunk-ILWDXLUK.js → chunk-RS5AP3J4.js} +49 -10
- package/dist/{chunk-QUUPYOSP.js → chunk-SPTY4C6F.js} +136 -5
- package/dist/{chunk-4X3JQXNM.js → chunk-XOFT65EX.js} +1 -2
- package/dist/{chunk-FVTQSNR7.js → chunk-XRW6P7IF.js} +13 -5
- package/dist/{chunk-R2YZTCLO.js → chunk-ZQKZSJAX.js} +1 -2
- package/dist/doc/index.d.ts +311 -13
- package/dist/doc/index.js +25 -17
- package/dist/generate/index.d.ts +2 -2
- package/dist/generate/index.js +1 -3
- package/dist/icons/index.js +2 -4
- package/dist/icons/inlineIconMarker.js +1 -2
- package/dist/imageEdit/index.d.ts +48 -17
- package/dist/imageEdit/index.js +3 -4
- package/dist/index.d.ts +13 -13
- package/dist/index.js +67 -33
- package/dist/jsonForm/index.d.ts +10 -3
- package/dist/jsonForm/index.js +8 -7
- package/dist/markdown/index.d.ts +75 -11
- package/dist/markdown/index.js +32 -7
- package/dist/{materializePageSection-DDzubQXo.d.ts → materializePageSection-BSMOocve.d.ts} +2 -2
- package/dist/narration/index.d.ts +16 -3
- package/dist/narration/index.js +12 -14
- package/dist/random/index.d.ts +11 -2
- package/dist/random/index.js +1 -3
- package/dist/recommend/index.d.ts +1 -1
- package/dist/recommend/index.js +2 -4
- package/dist/schemas/index.d.ts +18 -6
- package/dist/schemas/index.js +7 -6
- package/dist/spatial/index.d.ts +2 -1
- package/dist/spatial/index.js +1 -2
- package/dist/storage/index.d.ts +4 -2
- package/dist/storage/index.js +1 -2
- package/dist/{themeLibrary-B72m0W1y.d.ts → themeLibrary-BUTWjufL.d.ts} +1 -1
- package/dist/timing/index.js +2 -4
- package/dist/transform/index.d.ts +3 -3
- package/dist/transform/index.js +6 -7
- package/dist/{types-C4kiRn_k.d.ts → types-8QjefM9J.d.ts} +38 -2
- package/dist/{types-BwMPl2CB.d.ts → types-CUNc9biN.d.ts} +24 -1
- package/dist/versions/index.d.ts +14 -11
- package/dist/versions/index.js +2 -3
- package/package.json +8 -3
- package/dist/chunk-2UQOHYE2.js.map +0 -1
- package/dist/chunk-3E5F2XMR.js.map +0 -1
- package/dist/chunk-4X3JQXNM.js.map +0 -1
- package/dist/chunk-5DKBFXPY.js.map +0 -1
- package/dist/chunk-5J4HKRJF.js.map +0 -1
- package/dist/chunk-5UYI3RJB.js.map +0 -1
- package/dist/chunk-66QO7XFB.js.map +0 -1
- package/dist/chunk-AMIR72JP.js +0 -380
- package/dist/chunk-AMIR72JP.js.map +0 -1
- package/dist/chunk-DBS6RIFL.js.map +0 -1
- package/dist/chunk-DNJKBAI7.js +0 -1
- package/dist/chunk-DNJKBAI7.js.map +0 -1
- package/dist/chunk-ET53IIEP.js +0 -1
- package/dist/chunk-ET53IIEP.js.map +0 -1
- package/dist/chunk-FVTQSNR7.js.map +0 -1
- package/dist/chunk-GZY66SDN.js.map +0 -1
- package/dist/chunk-ILWDXLUK.js.map +0 -1
- package/dist/chunk-JHZWYRSW.js.map +0 -1
- package/dist/chunk-JI77MGAK.js.map +0 -1
- package/dist/chunk-JOQYPRDZ.js.map +0 -1
- package/dist/chunk-OTKVFVL6.js.map +0 -1
- package/dist/chunk-PGGGKYWG.js +0 -1
- package/dist/chunk-PGGGKYWG.js.map +0 -1
- package/dist/chunk-Q7LROV2H.js.map +0 -1
- package/dist/chunk-QE7TWGVT.js.map +0 -1
- package/dist/chunk-QUUPYOSP.js.map +0 -1
- package/dist/chunk-R2GC6RLD.js +0 -344
- package/dist/chunk-R2GC6RLD.js.map +0 -1
- package/dist/chunk-R2YZTCLO.js.map +0 -1
- package/dist/chunk-S7A5D7ZJ.js +0 -174
- package/dist/chunk-S7A5D7ZJ.js.map +0 -1
- package/dist/chunk-TUWMK62B.js.map +0 -1
- package/dist/chunk-V543AI2F.js +0 -1
- package/dist/chunk-V543AI2F.js.map +0 -1
- package/dist/chunk-VR7UPJ7C.js.map +0 -1
- package/dist/chunk-VWCJ2WXC.js.map +0 -1
- package/dist/chunk-VYFRI7R6.js.map +0 -1
- package/dist/chunk-XNLB57UD.js.map +0 -1
- package/dist/chunk-ZLQKNOZQ.js +0 -1
- package/dist/chunk-ZLQKNOZQ.js.map +0 -1
- package/dist/doc/index.js.map +0 -1
- package/dist/generate/index.js.map +0 -1
- package/dist/icons/index.js.map +0 -1
- package/dist/icons/inlineIconMarker.js.map +0 -1
- package/dist/imageEdit/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jsonForm/index.js.map +0 -1
- package/dist/markdown/index.js.map +0 -1
- package/dist/narration/index.js.map +0 -1
- package/dist/random/index.js.map +0 -1
- package/dist/recommend/index.js.map +0 -1
- package/dist/schemas/index.js.map +0 -1
- package/dist/spatial/index.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/timing/index.js.map +0 -1
- package/dist/transform/index.js.map +0 -1
- package/dist/versions/index.js.map +0 -1
- package/src/__tests__/animationUtils.test.ts +0 -117
- package/src/__tests__/annotationCoercion.test.ts +0 -243
- package/src/__tests__/applyNarrationTiming.test.ts +0 -190
- package/src/__tests__/applyRenderStyle.test.ts +0 -146
- package/src/__tests__/asciiDiagramBattle.test.ts +0 -246
- package/src/__tests__/asciiDiagramDetect.test.ts +0 -162
- package/src/__tests__/asciiDiagramMapping.test.ts +0 -38
- package/src/__tests__/asciiDiagramParse.test.ts +0 -233
- package/src/__tests__/asciiDiagramPipeline.test.ts +0 -273
- package/src/__tests__/asciiDiagramRender.test.ts +0 -162
- package/src/__tests__/asciiDiagramRepair.test.ts +0 -84
- package/src/__tests__/asciiTimelineDetect.test.ts +0 -157
- package/src/__tests__/asciiTimelineParse.test.ts +0 -205
- package/src/__tests__/asciiTimelinePipeline.test.ts +0 -349
- package/src/__tests__/asciiTimelineRender.test.ts +0 -376
- package/src/__tests__/atmosphereLayers.test.ts +0 -108
- package/src/__tests__/attrTokens.test.ts +0 -167
- package/src/__tests__/colorUtils.test.ts +0 -112
- package/src/__tests__/contentContainer.test.ts +0 -325
- package/src/__tests__/contentExtractor.test.ts +0 -243
- package/src/__tests__/coverBlock.test.ts +0 -310
- package/src/__tests__/customTemplateSample.test.ts +0 -144
- package/src/__tests__/customTemplatesFrontmatter.test.ts +0 -221
- package/src/__tests__/customThemesFrontmatter.test.ts +0 -146
- package/src/__tests__/dataTable.test.ts +0 -145
- package/src/__tests__/diagramBlock.test.ts +0 -122
- package/src/__tests__/diagramLayout.test.ts +0 -134
- package/src/__tests__/diagramText.test.ts +0 -26
- package/src/__tests__/docToMarkdownMedia.test.ts +0 -83
- package/src/__tests__/drawing.test.ts +0 -109
- package/src/__tests__/drawingBlock.test.ts +0 -124
- package/src/__tests__/drawingLayout.test.ts +0 -171
- package/src/__tests__/fixtures/asciiDiagramBattle.ts +0 -512
- package/src/__tests__/fixtures/asciiDiagrams.ts +0 -287
- package/src/__tests__/fixtures/asciiTimelines.ts +0 -35
- package/src/__tests__/fixtures/treeviewFixtures.ts +0 -243
- package/src/__tests__/geohash.test.ts +0 -110
- package/src/__tests__/getLayers.test.ts +0 -243
- package/src/__tests__/getLayersFallback.test.ts +0 -103
- package/src/__tests__/haversine.test.ts +0 -63
- package/src/__tests__/iconResolve.test.ts +0 -122
- package/src/__tests__/imageEditExportSvg.test.ts +0 -70
- package/src/__tests__/imageEditState.test.ts +0 -74
- package/src/__tests__/imageEditVersions.test.ts +0 -243
- package/src/__tests__/inferDocumentTitle.test.ts +0 -50
- package/src/__tests__/inlineIconMarker.test.ts +0 -36
- package/src/__tests__/inputDescriptors.test.ts +0 -162
- package/src/__tests__/jsonForm.chooseControl.test.ts +0 -86
- package/src/__tests__/jsonForm.evaluateWhen.test.ts +0 -59
- package/src/__tests__/jsonForm.inferSchema.test.ts +0 -25
- package/src/__tests__/jsonForm.pointer.test.ts +0 -149
- package/src/__tests__/jsonForm.tokens.test.ts +0 -84
- package/src/__tests__/layoutBlock.test.ts +0 -83
- package/src/__tests__/layoutLayout.test.ts +0 -169
- package/src/__tests__/localForageAdapter.test.ts +0 -155
- package/src/__tests__/majorApiTypes.test.ts +0 -18
- package/src/__tests__/markdown.test.ts +0 -1009
- package/src/__tests__/markdownIcons.test.ts +0 -104
- package/src/__tests__/markdownSanitize.test.ts +0 -81
- package/src/__tests__/markdownToDoc.test.ts +0 -957
- package/src/__tests__/matchFontFamily.test.ts +0 -114
- package/src/__tests__/materializeBlockLayers.test.ts +0 -167
- package/src/__tests__/materializePageSections.test.ts +0 -404
- package/src/__tests__/materializeTestUtils.ts +0 -17
- package/src/__tests__/mediaAnnotations.test.ts +0 -91
- package/src/__tests__/mediaSchedule.test.ts +0 -118
- package/src/__tests__/narrationAlign.test.ts +0 -150
- package/src/__tests__/narrationFeatures.test.ts +0 -71
- package/src/__tests__/narrationNuclei.test.ts +0 -45
- package/src/__tests__/narrationPacing.test.ts +0 -189
- package/src/__tests__/narrationScript.test.ts +0 -149
- package/src/__tests__/narrationSessionRepro.test.ts +0 -62
- package/src/__tests__/narrationSidecar.test.ts +0 -88
- package/src/__tests__/narrationSyllables.test.ts +0 -65
- package/src/__tests__/narrationTestSignals.ts +0 -167
- package/src/__tests__/narrationVad.test.ts +0 -66
- package/src/__tests__/pageStyle.test.ts +0 -258
- package/src/__tests__/pandocAttrParse.test.ts +0 -187
- package/src/__tests__/recommendTemplates.test.ts +0 -183
- package/src/__tests__/resolveDocTheme.test.ts +0 -69
- package/src/__tests__/rootExports.test.ts +0 -61
- package/src/__tests__/scopedContentContainer.test.ts +0 -109
- package/src/__tests__/seededRandom.test.ts +0 -142
- package/src/__tests__/shapeGeometry.test.ts +0 -138
- package/src/__tests__/shapeVocabulary.test.ts +0 -133
- package/src/__tests__/storage.test.ts +0 -60
- package/src/__tests__/structuredData.test.ts +0 -249
- package/src/__tests__/surface.test.ts +0 -68
- package/src/__tests__/templateAnnotationParse.test.ts +0 -173
- package/src/__tests__/templateInputs.test.ts +0 -69
- package/src/__tests__/templateMetadata.test.ts +0 -32
- package/src/__tests__/templates.test.ts +0 -710
- package/src/__tests__/themeCompile.test.ts +0 -225
- package/src/__tests__/themeValidator.test.ts +0 -131
- package/src/__tests__/timing.test.ts +0 -167
- package/src/__tests__/transformProvenance.test.ts +0 -160
- package/src/__tests__/transformV2.test.ts +0 -163
- package/src/__tests__/transitionNormalize.test.ts +0 -61
- package/src/__tests__/treeviewBattle.test.ts +0 -76
- package/src/__tests__/treeviewDetect.test.ts +0 -168
- package/src/__tests__/treeviewParse.test.ts +0 -118
- package/src/__tests__/treeviewPipeline.test.ts +0 -183
- package/src/__tests__/treeviewRender.test.ts +0 -91
- package/src/__tests__/validateDoc.test.ts +0 -260
- package/src/__tests__/versions.test.ts +0 -459
- package/src/doc/annotationBlocks.ts +0 -117
- package/src/doc/applyNarrationTiming.ts +0 -244
- package/src/doc/asciiDiagram/chars.ts +0 -210
- package/src/doc/asciiDiagram/detect.ts +0 -175
- package/src/doc/asciiDiagram/index.ts +0 -38
- package/src/doc/asciiDiagram/mapping.ts +0 -225
- package/src/doc/asciiDiagram/parse.ts +0 -1095
- package/src/doc/asciiDiagram/render.ts +0 -963
- package/src/doc/asciiDiagram/repair.ts +0 -400
- package/src/doc/asciiDiagram/types.ts +0 -65
- package/src/doc/asciiTimeline/detect.ts +0 -138
- package/src/doc/asciiTimeline/index.ts +0 -26
- package/src/doc/asciiTimeline/mapping.ts +0 -43
- package/src/doc/asciiTimeline/parse.ts +0 -870
- package/src/doc/asciiTimeline/render.ts +0 -427
- package/src/doc/asciiTimeline/types.ts +0 -73
- package/src/doc/asciiTimeline/wrappedFlow.ts +0 -427
- package/src/doc/audioMapping.ts +0 -442
- package/src/doc/customTemplatesFrontmatter.ts +0 -273
- package/src/doc/customThemesFrontmatter.ts +0 -95
- package/src/doc/docToMarkdown.ts +0 -284
- package/src/doc/index.ts +0 -161
- package/src/doc/markdownToDoc.ts +0 -1054
- package/src/doc/materializeBlockLayers.ts +0 -465
- package/src/doc/mediaAnnotations.ts +0 -120
- package/src/doc/page/PageSection.ts +0 -174
- package/src/doc/page/materializePageSection.ts +0 -616
- package/src/doc/page/resolvePageBlock.ts +0 -108
- package/src/doc/page/sectionExtractors.ts +0 -466
- package/src/doc/pageCss.ts +0 -628
- package/src/doc/resolveDocTheme.ts +0 -56
- package/src/doc/standaloneAnnotation.ts +0 -58
- package/src/doc/structuredData.ts +0 -301
- package/src/doc/templateInputs.ts +0 -424
- package/src/doc/templates/__tests__/customTemplate.test.ts +0 -170
- package/src/doc/templates/__tests__/customTemplateRegistry.test.ts +0 -124
- package/src/doc/templates/__tests__/listBlock.test.ts +0 -64
- package/src/doc/templates/accentImage.ts +0 -362
- package/src/doc/templates/captionUtils.ts +0 -56
- package/src/doc/templates/comparisonBar.ts +0 -173
- package/src/doc/templates/coverBlock.ts +0 -255
- package/src/doc/templates/customTemplate.ts +0 -51
- package/src/doc/templates/dataTable.ts +0 -102
- package/src/doc/templates/dateEvent.ts +0 -147
- package/src/doc/templates/definitionCard.ts +0 -140
- package/src/doc/templates/diagramBlock.ts +0 -403
- package/src/doc/templates/diagramLayout.ts +0 -159
- package/src/doc/templates/drawingBlock.ts +0 -325
- package/src/doc/templates/drawingLayout.ts +0 -539
- package/src/doc/templates/factCard.ts +0 -146
- package/src/doc/templates/fallbackBlock.ts +0 -123
- package/src/doc/templates/featureBlock.ts +0 -209
- package/src/doc/templates/fullBleedQuote.ts +0 -83
- package/src/doc/templates/imageWithCaption.ts +0 -186
- package/src/doc/templates/index.ts +0 -642
- package/src/doc/templates/inputDescriptors.ts +0 -451
- package/src/doc/templates/layoutBlock.ts +0 -43
- package/src/doc/templates/layoutLayout.ts +0 -243
- package/src/doc/templates/listBlock.ts +0 -207
- package/src/doc/templates/mapBlock.ts +0 -138
- package/src/doc/templates/metadata.ts +0 -130
- package/src/doc/templates/persistentLayers.ts +0 -526
- package/src/doc/templates/photoGrid.ts +0 -190
- package/src/doc/templates/pullQuote.ts +0 -141
- package/src/doc/templates/quoteBlock.ts +0 -141
- package/src/doc/templates/registry.ts +0 -88
- package/src/doc/templates/sectionHeader.ts +0 -120
- package/src/doc/templates/statHighlight.ts +0 -146
- package/src/doc/templates/templateNames.ts +0 -22
- package/src/doc/templates/timelineBlock.ts +0 -613
- package/src/doc/templates/titleBlock.ts +0 -150
- package/src/doc/templates/tokens/__tests__/resolveTokens.test.ts +0 -487
- package/src/doc/templates/tokens/resolveTokens.ts +0 -453
- package/src/doc/templates/treeBlock.ts +0 -131
- package/src/doc/templates/twoColumn.ts +0 -263
- package/src/doc/templates/videoPullQuote.ts +0 -142
- package/src/doc/templates/videoWithCaption.ts +0 -135
- package/src/doc/treeview/chars.ts +0 -72
- package/src/doc/treeview/detect.ts +0 -145
- package/src/doc/treeview/index.ts +0 -30
- package/src/doc/treeview/mapping.ts +0 -95
- package/src/doc/treeview/parse.ts +0 -201
- package/src/doc/treeview/render.ts +0 -41
- package/src/doc/treeview/types.ts +0 -43
- package/src/doc/utils/animationUtils.ts +0 -399
- package/src/doc/utils/applyRenderStyle.ts +0 -106
- package/src/doc/utils/diagramText.ts +0 -78
- package/src/doc/utils/imageTreatment.ts +0 -70
- package/src/doc/utils/nearest.ts +0 -59
- package/src/doc/utils/shapeGeometry.ts +0 -614
- package/src/doc/utils/themeUtils.ts +0 -243
- package/src/doc/validate.ts +0 -575
- package/src/generate/contentExtractor.ts +0 -921
- package/src/generate/index.ts +0 -18
- package/src/generate/templateMapper.ts +0 -177
- package/src/icons/iconData.ts +0 -31
- package/src/icons/index.ts +0 -26
- package/src/icons/inlineIconMarker.ts +0 -73
- package/src/icons/resolve.ts +0 -139
- package/src/imageEdit/ImageEditVersionManager.ts +0 -73
- package/src/imageEdit/export.ts +0 -410
- package/src/imageEdit/index.ts +0 -72
- package/src/imageEdit/persistence.ts +0 -113
- package/src/imageEdit/state.ts +0 -112
- package/src/imageEdit/versionPaths.ts +0 -44
- package/src/imageEdit/versions.ts +0 -152
- package/src/index.ts +0 -15
- package/src/internal/immutable.ts +0 -58
- package/src/jsonForm/chooseControl.ts +0 -88
- package/src/jsonForm/evaluateWhen.ts +0 -59
- package/src/jsonForm/index.ts +0 -32
- package/src/jsonForm/inferSchema.ts +0 -25
- package/src/jsonForm/pointer.ts +0 -154
- package/src/jsonForm/tokens.ts +0 -78
- package/src/jsonForm/types.ts +0 -167
- package/src/markdown/annotationCoercion.ts +0 -295
- package/src/markdown/attrTokens.ts +0 -243
- package/src/markdown/convert.ts +0 -1353
- package/src/markdown/htmlParse.ts +0 -212
- package/src/markdown/index.ts +0 -152
- package/src/markdown/parse.ts +0 -103
- package/src/markdown/sanitize.ts +0 -318
- package/src/markdown/stringify.ts +0 -207
- package/src/markdown/types.ts +0 -710
- package/src/markdown/utils.ts +0 -459
- package/src/narration/align.ts +0 -514
- package/src/narration/features.ts +0 -231
- package/src/narration/index.ts +0 -86
- package/src/narration/nuclei.ts +0 -118
- package/src/narration/pacing.ts +0 -211
- package/src/narration/script.ts +0 -239
- package/src/narration/session.ts +0 -100
- package/src/narration/sidecar.ts +0 -187
- package/src/narration/syllables.ts +0 -85
- package/src/narration/trace.ts +0 -50
- package/src/narration/types.ts +0 -299
- package/src/narration/vad.ts +0 -131
- package/src/ngeohash.d.ts +0 -11
- package/src/random/SeededRandom.ts +0 -127
- package/src/random/index.ts +0 -1
- package/src/recommend/index.ts +0 -16
- package/src/recommend/numberHighlight.ts +0 -25
- package/src/recommend/templates.ts +0 -393
- package/src/schemas/BlockTemplates.ts +0 -1046
- package/src/schemas/CustomTemplates.ts +0 -126
- package/src/schemas/Doc.ts +0 -1073
- package/src/schemas/ImageEditDoc.ts +0 -102
- package/src/schemas/LayoutStrategy.ts +0 -178
- package/src/schemas/Media.ts +0 -179
- package/src/schemas/MediaProvider.ts +0 -70
- package/src/schemas/PageStyle.ts +0 -213
- package/src/schemas/Theme.ts +0 -413
- package/src/schemas/Transitions.ts +0 -224
- package/src/schemas/Types.ts +0 -15
- package/src/schemas/Viewport.ts +0 -91
- package/src/schemas/colorUtils.ts +0 -219
- package/src/schemas/fontStacks.ts +0 -339
- package/src/schemas/index.ts +0 -31
- package/src/schemas/pageStyleDefaults.ts +0 -204
- package/src/schemas/themeCompile.ts +0 -244
- package/src/schemas/themeConstants.ts +0 -2
- package/src/schemas/themeLibrary.ts +0 -60
- package/src/schemas/themeValidator.ts +0 -609
- package/src/schemas/themes/bold.json +0 -77
- package/src/schemas/themes/cinematic.json +0 -143
- package/src/schemas/themes/documentary.json +0 -125
- package/src/schemas/themes/gezellig.json +0 -123
- package/src/schemas/themes/index.ts +0 -53
- package/src/schemas/themes/magazine.json +0 -126
- package/src/schemas/themes/minimalist.json +0 -74
- package/src/schemas/themes/morning-light.json +0 -117
- package/src/schemas/themes/standard-dark.json +0 -109
- package/src/schemas/themes/standard.json +0 -98
- package/src/schemas/themes/tech-dark.json +0 -143
- package/src/schemas/themes/warm-earth.json +0 -74
- package/src/spatial/Geohash.ts +0 -196
- package/src/spatial/Haversine.ts +0 -59
- package/src/spatial/index.ts +0 -2
- package/src/storage/ContentContainer.ts +0 -220
- package/src/storage/LocalForageAdapter.ts +0 -103
- package/src/storage/LocalStorageAdapter.ts +0 -57
- package/src/storage/MediaProviderFromContainer.ts +0 -92
- package/src/storage/MemoryStorageAdapter.ts +0 -37
- package/src/storage/ScopedContentContainer.ts +0 -143
- package/src/storage/Storage.ts +0 -28
- package/src/storage/index.ts +0 -9
- package/src/timing/index.ts +0 -17
- package/src/timing/narrationTiming.ts +0 -220
- package/src/timing/readingTime.ts +0 -94
- package/src/transform/applyTransform.ts +0 -122
- package/src/transform/blockAnalyzer.ts +0 -181
- package/src/transform/index.ts +0 -23
- package/src/transform/registry.ts +0 -217
- package/src/transform/styles/dataDriven.ts +0 -18
- package/src/transform/styles/documentary.ts +0 -18
- package/src/transform/styles/index.ts +0 -5
- package/src/transform/styles/magazine.ts +0 -19
- package/src/transform/styles/minimal.ts +0 -18
- package/src/transform/styles/narrative.ts +0 -19
- package/src/transform/templateSelector.ts +0 -389
- package/src/transform/timingAllocator.ts +0 -257
- package/src/transform/types.ts +0 -158
- package/src/versions/DocumentVersionManager.ts +0 -70
- package/src/versions/gitignore.ts +0 -34
- package/src/versions/index.ts +0 -56
- package/src/versions/operations.ts +0 -144
- package/src/versions/paths.ts +0 -51
- package/src/versions/snapshotStore.ts +0 -202
- package/src/versions/timestamp.ts +0 -48
- package/src/versions/types.ts +0 -93
|
@@ -24,24 +24,27 @@ import {
|
|
|
24
24
|
templateRegistry,
|
|
25
25
|
writeCustomTemplatesToFrontmatter,
|
|
26
26
|
writeCustomThemesToFrontmatter
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-GIIOY6XR.js";
|
|
28
28
|
import {
|
|
29
29
|
ASCII_TREE_VOCAB,
|
|
30
30
|
ASCII_VOCAB,
|
|
31
|
+
MAX_BRIDGE_GAP,
|
|
31
32
|
UNICODE_TREE_VOCAB,
|
|
32
33
|
UNICODE_VOCAB,
|
|
33
34
|
arrowDirection,
|
|
35
|
+
cellWidth,
|
|
34
36
|
detectAsciiDiagram,
|
|
35
37
|
isHoriz,
|
|
36
38
|
isJunction,
|
|
37
39
|
isVert,
|
|
40
|
+
toCells,
|
|
38
41
|
toGrid,
|
|
39
42
|
traceBoxes
|
|
40
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-QWCFK5FN.js";
|
|
41
44
|
import {
|
|
42
45
|
defaultPageStyle,
|
|
43
46
|
resolveMediaSchedule
|
|
44
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-2ZWIXGAC.js";
|
|
45
48
|
import {
|
|
46
49
|
DEFAULT_THEME,
|
|
47
50
|
FRONTMATTER_CUSTOM_TEMPLATES_KEY,
|
|
@@ -49,27 +52,27 @@ import {
|
|
|
49
52
|
hexHueDegrees,
|
|
50
53
|
resolveFontFamily,
|
|
51
54
|
resolveTheme
|
|
52
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-C33GTPUZ.js";
|
|
53
56
|
import {
|
|
54
57
|
VIEWPORT_PRESETS,
|
|
55
58
|
isTemplateBlock
|
|
56
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-BAOV476U.js";
|
|
57
60
|
import {
|
|
58
61
|
parseMarkdown
|
|
59
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-ACZOVWX3.js";
|
|
60
63
|
import {
|
|
61
64
|
KNOWN_BLOCK_META_KEYS,
|
|
62
65
|
coerceAnnotationValues,
|
|
63
66
|
serializeAnnotation
|
|
64
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-ZQKZSJAX.js";
|
|
65
68
|
import {
|
|
66
69
|
extractPlainText,
|
|
67
70
|
getChildren,
|
|
68
71
|
readFrontmatterThemeId
|
|
69
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-BCCXTMN5.js";
|
|
70
73
|
import {
|
|
71
74
|
estimateTimeFromText
|
|
72
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-67L6WRJN.js";
|
|
73
76
|
|
|
74
77
|
// src/doc/utils/animationUtils.ts
|
|
75
78
|
function getAnimationStyle(animation, _currentTime = 0) {
|
|
@@ -330,7 +333,9 @@ function cssFilterForTreatment(treatment, blur) {
|
|
|
330
333
|
|
|
331
334
|
// src/doc/docToMarkdown.ts
|
|
332
335
|
var TRANSITION_PARAM_KEYS = ["transition", "transitionDuration", "transitionDirection"];
|
|
333
|
-
|
|
336
|
+
var DEFAULT_TEMPLATE = "sectionHeader";
|
|
337
|
+
function docToMarkdown(doc, options = {}) {
|
|
338
|
+
const defaultTemplate = resolveTemplateName(options.defaultTemplate ?? DEFAULT_TEMPLATE);
|
|
334
339
|
const children = [];
|
|
335
340
|
const blockIds = new Set(flattenBlocks(doc.blocks).map((b) => b.id));
|
|
336
341
|
const docMediaByBlock = /* @__PURE__ */ new Map();
|
|
@@ -349,7 +354,7 @@ function docToMarkdown(doc) {
|
|
|
349
354
|
}
|
|
350
355
|
function emitBlock(block) {
|
|
351
356
|
if (block.sourceHeading) {
|
|
352
|
-
const heading = ensureAnnotation(block, block.sourceHeading);
|
|
357
|
+
const heading = ensureAnnotation(block, block.sourceHeading, defaultTemplate);
|
|
353
358
|
children.push(heading);
|
|
354
359
|
} else if (block.standaloneAnnotation) {
|
|
355
360
|
children.push(synthesizeAnnotationParagraph(block));
|
|
@@ -423,15 +428,16 @@ function synthesizeMediaParagraph(clip) {
|
|
|
423
428
|
children: [{ type: "text", value: serializeAnnotation(clip.kind, params) }]
|
|
424
429
|
};
|
|
425
430
|
}
|
|
426
|
-
function ensureAnnotation(block, heading) {
|
|
431
|
+
function ensureAnnotation(block, heading, defaultTemplate) {
|
|
427
432
|
const { attributes, transitionParams } = ensureTransitionMetadata(block, heading);
|
|
428
|
-
const
|
|
429
|
-
const
|
|
430
|
-
|
|
431
|
-
|
|
433
|
+
const existing = heading.templateAnnotation;
|
|
434
|
+
const template = resolveAnnotationTemplate(block, existing, defaultTemplate);
|
|
435
|
+
const overrides = block.templateOverrides && Object.keys(block.templateOverrides).length > 0 ? block.templateOverrides : void 0;
|
|
436
|
+
let templateAnnotation;
|
|
437
|
+
if (template !== void 0 || overrides !== void 0) {
|
|
432
438
|
templateAnnotation = {
|
|
433
|
-
...
|
|
434
|
-
...
|
|
439
|
+
...template !== void 0 ? { template } : {},
|
|
440
|
+
...overrides ? { params: overrides } : {}
|
|
435
441
|
};
|
|
436
442
|
}
|
|
437
443
|
if (transitionParams) {
|
|
@@ -443,11 +449,33 @@ function ensureAnnotation(block, heading) {
|
|
|
443
449
|
}
|
|
444
450
|
};
|
|
445
451
|
}
|
|
452
|
+
if (annotationsEqual(existing, templateAnnotation)) templateAnnotation = existing;
|
|
446
453
|
if (attributes === heading.attributes && templateAnnotation === heading.templateAnnotation) {
|
|
447
454
|
return heading;
|
|
448
455
|
}
|
|
449
456
|
return { ...heading, children: [...heading.children], attributes, templateAnnotation };
|
|
450
457
|
}
|
|
458
|
+
function resolveAnnotationTemplate(block, existing, defaultTemplate) {
|
|
459
|
+
if (!block.template || block.autoTemplate === true) return existing?.template;
|
|
460
|
+
const template = resolveTemplateName(block.template);
|
|
461
|
+
if (existing?.template && resolveTemplateName(existing.template) === template) {
|
|
462
|
+
return existing.template;
|
|
463
|
+
}
|
|
464
|
+
if (template === defaultTemplate) return void 0;
|
|
465
|
+
return block.template;
|
|
466
|
+
}
|
|
467
|
+
function annotationsEqual(a, b) {
|
|
468
|
+
if (a === b) return true;
|
|
469
|
+
if (!a || !b) return false;
|
|
470
|
+
return a.template === b.template && paramsEqual(a.params, b.params);
|
|
471
|
+
}
|
|
472
|
+
function paramsEqual(a, b) {
|
|
473
|
+
if (a === b) return true;
|
|
474
|
+
if (!a || !b) return false;
|
|
475
|
+
const keys = Object.keys(a);
|
|
476
|
+
if (keys.length !== Object.keys(b).length) return false;
|
|
477
|
+
return keys.every((key) => Object.prototype.hasOwnProperty.call(b, key) && a[key] === b[key]);
|
|
478
|
+
}
|
|
451
479
|
function ensureTransitionMetadata(block, heading) {
|
|
452
480
|
const transition = block.transition;
|
|
453
481
|
if (!transition) {
|
|
@@ -509,8 +537,12 @@ function resolvePageBlock(block) {
|
|
|
509
537
|
};
|
|
510
538
|
const coercedParams = coerceTemplateParams(rawName, rawParams).input;
|
|
511
539
|
let base;
|
|
540
|
+
let derivedInputs = null;
|
|
512
541
|
if (annotation) {
|
|
513
542
|
const headingText = extractPlainText(block.sourceHeading);
|
|
543
|
+
derivedInputs = deriveTemplateInputs(rawName, headingText, block.contents, {
|
|
544
|
+
placeholders: true
|
|
545
|
+
});
|
|
514
546
|
base = {
|
|
515
547
|
id: block.id,
|
|
516
548
|
template: rawName,
|
|
@@ -520,9 +552,7 @@ function resolvePageBlock(block) {
|
|
|
520
552
|
title: headingText,
|
|
521
553
|
contents: block.contents,
|
|
522
554
|
children: block.children,
|
|
523
|
-
...
|
|
524
|
-
placeholders: true
|
|
525
|
-
}) ?? {}
|
|
555
|
+
...derivedInputs ?? {}
|
|
526
556
|
};
|
|
527
557
|
} else {
|
|
528
558
|
base = {
|
|
@@ -538,6 +568,14 @@ function resolvePageBlock(block) {
|
|
|
538
568
|
...block.templateData ?? {},
|
|
539
569
|
...coercedParams
|
|
540
570
|
};
|
|
571
|
+
const explicitQuote = Object.prototype.hasOwnProperty.call(coercedParams, "quote") ? coercedParams.quote : block.templateData?.quote;
|
|
572
|
+
if (templateName === "quote" && derivedInputs && !Object.prototype.hasOwnProperty.call(derivedInputs, "title") && !(typeof explicitQuote === "string" && explicitQuote.trim())) {
|
|
573
|
+
const quoteInput = templateBlock;
|
|
574
|
+
quoteInput.quote = derivedInputs.quote;
|
|
575
|
+
if (!Object.prototype.hasOwnProperty.call(block.templateData ?? {}, "title") && !Object.prototype.hasOwnProperty.call(coercedParams, "title")) {
|
|
576
|
+
delete quoteInput.title;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
541
579
|
return { templated: true, templateName, templateBlock };
|
|
542
580
|
}
|
|
543
581
|
|
|
@@ -614,6 +652,7 @@ var quote = (input) => {
|
|
|
614
652
|
kind: "quote-band",
|
|
615
653
|
variant: "plain",
|
|
616
654
|
slots: {
|
|
655
|
+
title: q.title,
|
|
617
656
|
body: { text: q.quote ?? "" },
|
|
618
657
|
attribution: q.attribution,
|
|
619
658
|
media: accentImageMedia(q.accentImage)
|
|
@@ -2068,10 +2107,11 @@ async function discoverNarrationAudio(container) {
|
|
|
2068
2107
|
let timing = null;
|
|
2069
2108
|
if (consolidatedSections) {
|
|
2070
2109
|
const audioBase = stripAudioExtension(filename);
|
|
2110
|
+
let matchedName = "";
|
|
2071
2111
|
for (const [sectionName, sectionTiming] of Object.entries(consolidatedSections)) {
|
|
2072
|
-
if (audioBase.endsWith(`-${sectionName}`)) {
|
|
2112
|
+
if (audioBase.endsWith(`-${sectionName}`) && sectionName.length > matchedName.length) {
|
|
2113
|
+
matchedName = sectionName;
|
|
2073
2114
|
timing = sectionTiming;
|
|
2074
|
-
break;
|
|
2075
2115
|
}
|
|
2076
2116
|
}
|
|
2077
2117
|
}
|
|
@@ -2508,6 +2548,17 @@ function truncate(text, max = 40) {
|
|
|
2508
2548
|
}
|
|
2509
2549
|
|
|
2510
2550
|
// src/doc/asciiDiagram/render.ts
|
|
2551
|
+
function normalizeLabelLines(label) {
|
|
2552
|
+
return label.split("\n").map((line) => line.trim()).filter((line) => line.length > 0);
|
|
2553
|
+
}
|
|
2554
|
+
function normalizeEdgeLabel(label) {
|
|
2555
|
+
if (label === void 0) return void 0;
|
|
2556
|
+
const collapsed = label.replace(/\s+/gu, " ").trim();
|
|
2557
|
+
return collapsed.length > 0 ? collapsed : void 0;
|
|
2558
|
+
}
|
|
2559
|
+
function edgeLabelFitsBridge(text) {
|
|
2560
|
+
return text.length <= MAX_BRIDGE_GAP;
|
|
2561
|
+
}
|
|
2511
2562
|
var SIDE_MARGIN = 1;
|
|
2512
2563
|
function renderAsciiDiagram(diagram2, options = {}) {
|
|
2513
2564
|
const vocab = (options.style ?? diagram2.style) === "ascii" ? ASCII_VOCAB : UNICODE_VOCAB;
|
|
@@ -2591,10 +2642,10 @@ function layoutNodes(nodes, edges) {
|
|
|
2591
2642
|
};
|
|
2592
2643
|
const layoutSubtree = (id, depth) => {
|
|
2593
2644
|
const node = byId.get(id);
|
|
2594
|
-
const labelLines = node.label
|
|
2645
|
+
const labelLines = normalizeLabelLines(node.label);
|
|
2595
2646
|
const children = childIds.get(id) ?? [];
|
|
2596
2647
|
if (children.length === 0) {
|
|
2597
|
-
const innerW = labelLines.reduce((w, l) => Math.max(w, l
|
|
2648
|
+
const innerW = labelLines.reduce((w, l) => Math.max(w, cellWidth(l)), 0);
|
|
2598
2649
|
const deg = sideDeg.get(id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
2599
2650
|
const horizDeg = Math.max(deg.top, deg.bottom);
|
|
2600
2651
|
const vertDeg = Math.max(deg.left, deg.right);
|
|
@@ -2617,14 +2668,15 @@ function layoutNodes(nodes, edges) {
|
|
|
2617
2668
|
const childRects = placeSiblings(children, (childId) => layoutSubtree(childId, depth + 1));
|
|
2618
2669
|
const bbox = unionRects(childRects);
|
|
2619
2670
|
const extraRows = Math.max(0, labelLines.length - 1);
|
|
2620
|
-
const titleLen = (labelLines[0] ?? "")
|
|
2671
|
+
const titleLen = cellWidth(labelLines[0] ?? "");
|
|
2621
2672
|
const rect = {
|
|
2622
2673
|
r0: bbox.r0 - 2 - extraRows,
|
|
2623
2674
|
c0: bbox.c0 - 2,
|
|
2624
2675
|
r1: bbox.r1 + 2,
|
|
2625
2676
|
c1: bbox.c1 + 2
|
|
2626
2677
|
};
|
|
2627
|
-
const
|
|
2678
|
+
const innerLinesW = labelLines.slice(1).reduce((w, l) => Math.max(w, cellWidth(l)), 0);
|
|
2679
|
+
const minW = Math.max(titleLen > 0 ? titleLen + 6 : 3, innerLinesW > 0 ? innerLinesW + 4 : 3);
|
|
2628
2680
|
if (rect.c1 - rect.c0 + 1 < minW) rect.c1 = rect.c0 + minW - 1;
|
|
2629
2681
|
if (rect.c1 - rect.c0 + 1 < node.wCols) rect.c1 = rect.c0 + node.wCols - 1;
|
|
2630
2682
|
placed.set(id, { node, rect, labelLines, isContainer: true, depth });
|
|
@@ -2718,7 +2770,7 @@ function drawBox(canvas, p, vocab) {
|
|
|
2718
2770
|
const innerW = rect.c1 - rect.c0 - 1;
|
|
2719
2771
|
canvas.set(rect.r0, rect.c0, vocab.tl, "border");
|
|
2720
2772
|
canvas.set(rect.r0, rect.c1, vocab.tr, "border");
|
|
2721
|
-
const title2 = isContainer && labelLines.length > 0 ? ` ${labelLines[0]} ` : null;
|
|
2773
|
+
const title2 = isContainer && labelLines.length > 0 ? toCells(` ${labelLines[0]} `) : null;
|
|
2722
2774
|
if (title2 && title2.length <= innerW - 2) {
|
|
2723
2775
|
const left = Math.floor((innerW - title2.length) / 2);
|
|
2724
2776
|
for (let i = 0; i < innerW; i++) {
|
|
@@ -2741,9 +2793,10 @@ function drawBox(canvas, p, vocab) {
|
|
|
2741
2793
|
const innerH = rect.r1 - rect.r0 - 1;
|
|
2742
2794
|
const startRow = isContainer ? rect.r0 + 1 : rect.r0 + 1 + Math.max(0, Math.floor((innerH - interiorLines.length) / 2));
|
|
2743
2795
|
interiorLines.forEach((line, i) => {
|
|
2744
|
-
const
|
|
2745
|
-
|
|
2746
|
-
|
|
2796
|
+
const cells = toCells(line);
|
|
2797
|
+
const pad = Math.max(0, Math.floor((innerW - cells.length) / 2));
|
|
2798
|
+
for (let j = 0; j < cells.length && pad + j < innerW; j++) {
|
|
2799
|
+
canvas.set(startRow + i, rect.c0 + 1 + pad + j, cells[j], "label");
|
|
2747
2800
|
}
|
|
2748
2801
|
});
|
|
2749
2802
|
}
|
|
@@ -2795,24 +2848,25 @@ function drawEdges(canvas, edges, placed, vocab) {
|
|
|
2795
2848
|
)
|
|
2796
2849
|
);
|
|
2797
2850
|
for (const req of sideLabelRequests) {
|
|
2851
|
+
const cells = toCells(req.label);
|
|
2798
2852
|
let done = false;
|
|
2799
2853
|
for (const side of ["right", "left"]) {
|
|
2800
2854
|
if (done) break;
|
|
2801
2855
|
for (const { row, col } of req.candidates) {
|
|
2802
2856
|
if (canvas.kindAt(row, col) !== "line-v") continue;
|
|
2803
|
-
const startCol = side === "right" ? col + 2 : col - 1 -
|
|
2857
|
+
const startCol = side === "right" ? col + 2 : col - 1 - cells.length;
|
|
2804
2858
|
if (startCol < 0) continue;
|
|
2805
2859
|
const gapCol = side === "right" ? col + 1 : col - 1;
|
|
2806
2860
|
let free = canvas.kindAt(row, gapCol) === "empty";
|
|
2807
|
-
for (let i = 0; free && i <
|
|
2861
|
+
for (let i = 0; free && i < cells.length; i++) {
|
|
2808
2862
|
if (canvas.kindAt(row, startCol + i) !== "empty") free = false;
|
|
2809
2863
|
}
|
|
2810
2864
|
if (free && side === "left" && startCol > 0) {
|
|
2811
2865
|
free = canvas.kindAt(row, startCol - 1) === "empty";
|
|
2812
2866
|
}
|
|
2813
2867
|
if (!free) continue;
|
|
2814
|
-
for (let i = 0; i <
|
|
2815
|
-
canvas.set(row, startCol + i,
|
|
2868
|
+
for (let i = 0; i < cells.length; i++) {
|
|
2869
|
+
canvas.set(row, startCol + i, cells[i], "label");
|
|
2816
2870
|
}
|
|
2817
2871
|
done = true;
|
|
2818
2872
|
break;
|
|
@@ -2891,7 +2945,7 @@ function routeEdge(canvas, plan, planIdx, placed, attachment, vocab, deferSideLa
|
|
|
2891
2945
|
canvas,
|
|
2892
2946
|
directed: plan.edge.directed,
|
|
2893
2947
|
biDir: plan.biDir,
|
|
2894
|
-
label: plan.edge.label,
|
|
2948
|
+
label: normalizeEdgeLabel(plan.edge.label),
|
|
2895
2949
|
vocab,
|
|
2896
2950
|
junction,
|
|
2897
2951
|
stagger,
|
|
@@ -2989,8 +3043,8 @@ function drawVertical(args, s, t, exitCol, enterCol, dir) {
|
|
|
2989
3043
|
const hi = Math.max(exitCol, enterCol);
|
|
2990
3044
|
let segment = [];
|
|
2991
3045
|
for (let c = lo + 1; c <= hi - 1; c++) segment.push(vocab.h);
|
|
2992
|
-
|
|
2993
|
-
|
|
3046
|
+
const text = label ? toCells(` ${label} `) : null;
|
|
3047
|
+
if (text && edgeLabelFitsBridge(text) && segment.length >= text.length + 2) {
|
|
2994
3048
|
const left = Math.floor((segment.length - text.length) / 2);
|
|
2995
3049
|
segment = segment.map((ch, i) => i >= left && i < left + text.length ? text[i - left] : ch);
|
|
2996
3050
|
labelEmbedded = true;
|
|
@@ -3045,15 +3099,22 @@ function drawHorizontal(args, s, t, exitRow, enterRow, dir) {
|
|
|
3045
3099
|
const firstFree = exitCol + dir;
|
|
3046
3100
|
const lastFree = enterCol - dir;
|
|
3047
3101
|
const gap = (lastFree - firstFree) * dir + 1;
|
|
3048
|
-
const drawH = (row, cA, cB, hostLabel) => {
|
|
3102
|
+
const drawH = (row, cA, cB, hostLabel, reserveLo = 0, reserveHi = 0) => {
|
|
3049
3103
|
const lo = Math.min(cA, cB);
|
|
3050
3104
|
const hi = Math.max(cA, cB);
|
|
3051
3105
|
let segment = [];
|
|
3052
3106
|
for (let c = lo; c <= hi; c++) segment.push(vocab.h);
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
const
|
|
3056
|
-
|
|
3107
|
+
const text = hostLabel && label ? toCells(` ${label} `) : null;
|
|
3108
|
+
if (text && edgeLabelFitsBridge(text)) {
|
|
3109
|
+
const from = reserveLo;
|
|
3110
|
+
const to = segment.length - 1 - reserveHi;
|
|
3111
|
+
const room = to - from + 1;
|
|
3112
|
+
if (room >= text.length + 2) {
|
|
3113
|
+
const left = from + Math.floor((room - text.length) / 2);
|
|
3114
|
+
segment = segment.map(
|
|
3115
|
+
(ch, i) => i >= left && i < left + text.length ? text[i - left] : ch
|
|
3116
|
+
);
|
|
3117
|
+
}
|
|
3057
3118
|
}
|
|
3058
3119
|
segment.forEach((ch, i) => {
|
|
3059
3120
|
canvas.drawEdgeCell(row, lo + i, ch, ch === vocab.h ? "line-h" : "label", vocab);
|
|
@@ -3066,7 +3127,14 @@ function drawHorizontal(args, s, t, exitRow, enterRow, dir) {
|
|
|
3066
3127
|
junction(sRow, exitCol, dir === 1 ? "right" : "left");
|
|
3067
3128
|
junction(tRow, enterCol, dir === 1 ? "left" : "right");
|
|
3068
3129
|
if (sRow === tRow && gap >= 1) {
|
|
3069
|
-
drawH(
|
|
3130
|
+
drawH(
|
|
3131
|
+
sRow,
|
|
3132
|
+
firstFree,
|
|
3133
|
+
lastFree,
|
|
3134
|
+
true,
|
|
3135
|
+
(dir === 1 ? biDir : directed) ? 1 : 0,
|
|
3136
|
+
(dir === 1 ? directed : biDir) ? 1 : 0
|
|
3137
|
+
);
|
|
3070
3138
|
if (directed) {
|
|
3071
3139
|
canvas.drawEdgeCell(
|
|
3072
3140
|
sRow,
|
|
@@ -3095,7 +3163,16 @@ function drawHorizontal(args, s, t, exitRow, enterRow, dir) {
|
|
|
3095
3163
|
);
|
|
3096
3164
|
junction(exitRow, exitCol, dir === 1 ? "right" : "left");
|
|
3097
3165
|
junction(enterRow, enterCol, dir === 1 ? "left" : "right");
|
|
3098
|
-
if (Math.abs(midCol - exitCol) >= 2)
|
|
3166
|
+
if (Math.abs(midCol - exitCol) >= 2) {
|
|
3167
|
+
drawH(
|
|
3168
|
+
exitRow,
|
|
3169
|
+
firstFree,
|
|
3170
|
+
midCol - dir,
|
|
3171
|
+
true,
|
|
3172
|
+
dir === 1 && biDir ? 1 : 0,
|
|
3173
|
+
dir === -1 && biDir ? 1 : 0
|
|
3174
|
+
);
|
|
3175
|
+
}
|
|
3099
3176
|
if (Math.abs(enterCol - midCol) >= 2) drawH(enterRow, midCol + dir, lastFree, false);
|
|
3100
3177
|
if (exitRow === enterRow) {
|
|
3101
3178
|
canvas.drawEdgeCell(exitRow, midCol, vocab.h, "line-h", vocab);
|
|
@@ -3670,10 +3747,17 @@ function formatCoordinate(value) {
|
|
|
3670
3747
|
}
|
|
3671
3748
|
|
|
3672
3749
|
// src/doc/treeview/render.ts
|
|
3750
|
+
function normalizeText(text) {
|
|
3751
|
+
return text.replace(/\s+/gu, " ").trim();
|
|
3752
|
+
}
|
|
3673
3753
|
function renderTree(tree2, options = {}) {
|
|
3674
3754
|
const vocab = (options.style ?? tree2.style) === "ascii" ? ASCII_TREE_VOCAB : UNICODE_TREE_VOCAB;
|
|
3675
3755
|
const lines = [];
|
|
3676
|
-
const label = (node) =>
|
|
3756
|
+
const label = (node) => {
|
|
3757
|
+
const text = normalizeText(node.label);
|
|
3758
|
+
const comment = node.comment ? normalizeText(node.comment) : "";
|
|
3759
|
+
return comment ? `${text} # ${comment}` : text;
|
|
3760
|
+
};
|
|
3677
3761
|
const walk = (nodes, prefix) => {
|
|
3678
3762
|
nodes.forEach((node, i) => {
|
|
3679
3763
|
const last = i === nodes.length - 1;
|
|
@@ -3717,4 +3801,3 @@ export {
|
|
|
3717
3801
|
renderAsciiTimeline,
|
|
3718
3802
|
renderTree
|
|
3719
3803
|
};
|
|
3720
|
-
//# sourceMappingURL=chunk-OTKVFVL6.js.map
|
|
@@ -2,9 +2,15 @@ import {
|
|
|
2
2
|
extractPlainText,
|
|
3
3
|
findNodesByType,
|
|
4
4
|
walkMarkdownTree
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-BCCXTMN5.js";
|
|
6
6
|
|
|
7
7
|
// src/doc/asciiDiagram/chars.ts
|
|
8
|
+
function toCells(s) {
|
|
9
|
+
return Array.from(s);
|
|
10
|
+
}
|
|
11
|
+
function cellWidth(s) {
|
|
12
|
+
return toCells(s).length;
|
|
13
|
+
}
|
|
8
14
|
var TL_CORNERS = /* @__PURE__ */ new Set(["\u250C", "\u256D", "\u250F", "\u2554"]);
|
|
9
15
|
var TR_CORNERS = /* @__PURE__ */ new Set(["\u2510", "\u256E", "\u2513", "\u2557"]);
|
|
10
16
|
var BL_CORNERS = /* @__PURE__ */ new Set(["\u2514", "\u2570", "\u2517", "\u255A"]);
|
|
@@ -326,39 +332,14 @@ function traceBoxFrom(grid, r0, c0, repair = false) {
|
|
|
326
332
|
const H = grid.length;
|
|
327
333
|
const W = grid[0]?.length ?? 0;
|
|
328
334
|
const trCandidates = [];
|
|
329
|
-
let
|
|
330
|
-
let c = c0 + 1;
|
|
331
|
-
while (c < W) {
|
|
335
|
+
for (let c = c0 + 1; c < W; c++) {
|
|
332
336
|
const ch = grid[r0][c];
|
|
333
337
|
if (isTrCorner(ch)) {
|
|
334
338
|
trCandidates.push(c);
|
|
335
|
-
break;
|
|
336
|
-
}
|
|
337
|
-
if (isPlus(ch) || isJunction(ch)) {
|
|
338
|
-
trCandidates.push(c);
|
|
339
|
-
c++;
|
|
340
|
-
continue;
|
|
341
|
-
}
|
|
342
|
-
if (isFlatBorderChar(ch)) {
|
|
343
|
-
c++;
|
|
339
|
+
if (isSideBorderChar(grid[r0 + 1]?.[c] ?? " ")) break;
|
|
344
340
|
continue;
|
|
345
341
|
}
|
|
346
|
-
if (
|
|
347
|
-
c++;
|
|
348
|
-
continue;
|
|
349
|
-
}
|
|
350
|
-
if (titleRun) break;
|
|
351
|
-
let end = c;
|
|
352
|
-
let sawText = false;
|
|
353
|
-
while (end < W && end - c <= MAX_TITLE_RUN) {
|
|
354
|
-
const tch = grid[r0][end];
|
|
355
|
-
if (isFlatBorderChar(tch) || isTrCorner(tch) || arrowDirection(tch) !== null) break;
|
|
356
|
-
if (tch !== " ") sawText = true;
|
|
357
|
-
end++;
|
|
358
|
-
}
|
|
359
|
-
if (end >= W || end - c > MAX_TITLE_RUN || !sawText || end === c) break;
|
|
360
|
-
titleRun = { from: c, to: end - 1 };
|
|
361
|
-
c = end;
|
|
342
|
+
if (isPlus(ch) || isJunction(ch)) trCandidates.push(c);
|
|
362
343
|
}
|
|
363
344
|
if (trCandidates.length === 0) return null;
|
|
364
345
|
const leftCandidates = walkSideWall(grid, c0, r0, H, isBlCorner, repair);
|
|
@@ -366,6 +347,8 @@ function traceBoxFrom(grid, r0, c0, repair = false) {
|
|
|
366
347
|
const leftSet = new Set(leftCandidates);
|
|
367
348
|
for (const c1 of trCandidates) {
|
|
368
349
|
if (c1 < c0 + 2) continue;
|
|
350
|
+
const titleScan = scanBorderTitle(grid[r0], c0, c1);
|
|
351
|
+
if (!titleScan.ok) continue;
|
|
369
352
|
const rightCandidates = walkSideWall(grid, c1, r0, H, isBrCorner, repair);
|
|
370
353
|
for (const r1 of rightCandidates) {
|
|
371
354
|
if (r1 < r0 + 2) continue;
|
|
@@ -386,12 +369,22 @@ function traceBoxFrom(grid, r0, c0, repair = false) {
|
|
|
386
369
|
if (hasSideBorderNear(grid[ir], c1, win)) rightBorders++;
|
|
387
370
|
}
|
|
388
371
|
if (leftBorders === 0 || rightBorders === 0) continue;
|
|
389
|
-
|
|
390
|
-
return { r0, c0, r1, c1, ...title ? { borderTitle: title } : {} };
|
|
372
|
+
return { r0, c0, r1, c1, ...titleScan.title ? { borderTitle: titleScan.title } : {} };
|
|
391
373
|
}
|
|
392
374
|
}
|
|
393
375
|
return null;
|
|
394
376
|
}
|
|
377
|
+
function scanBorderTitle(row, c0, c1) {
|
|
378
|
+
const isFiller = (ch) => isFlatBorderChar(ch) || arrowDirection(ch) !== null;
|
|
379
|
+
let lo = c0 + 1;
|
|
380
|
+
let hi = c1 - 1;
|
|
381
|
+
while (lo <= hi && isFiller(row[lo])) lo++;
|
|
382
|
+
while (hi >= lo && isFiller(row[hi])) hi--;
|
|
383
|
+
if (lo > hi) return { ok: true };
|
|
384
|
+
if (hi - lo + 1 > MAX_TITLE_RUN) return { ok: false };
|
|
385
|
+
const title = row.slice(lo, hi + 1).join("").trim();
|
|
386
|
+
return title.length > 0 ? { ok: true, title } : { ok: true };
|
|
387
|
+
}
|
|
395
388
|
function hasSideBorderNear(row, col, win) {
|
|
396
389
|
for (let c = col - win; c <= col + win; c++) {
|
|
397
390
|
const ch = row[c];
|
|
@@ -488,6 +481,7 @@ function buildBoxes(grid, rects, warnings) {
|
|
|
488
481
|
return boxes;
|
|
489
482
|
}
|
|
490
483
|
function isDividerRow(rowText) {
|
|
484
|
+
if (rowText.length === 0 || rowText !== rowText.trim()) return false;
|
|
491
485
|
let sawLine = false;
|
|
492
486
|
for (const ch of rowText) {
|
|
493
487
|
if (ch === " ") continue;
|
|
@@ -543,17 +537,17 @@ function extractEdges(grid, mask, perimeterOwners, boxes, warnings) {
|
|
|
543
537
|
while (g < W && g - runEnd - 1 <= MAX_BRIDGE_GAP) {
|
|
544
538
|
const gch = grid[r][g];
|
|
545
539
|
const gidx = r * W + g;
|
|
546
|
-
if (mask[gidx]
|
|
540
|
+
if (mask[gidx]) {
|
|
547
541
|
failed = true;
|
|
548
542
|
break;
|
|
549
543
|
}
|
|
550
|
-
if (isHoriz(gch))
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
544
|
+
if (isHoriz(gch)) {
|
|
545
|
+
if (horizRunReachesStructure(grid, mask, r, g, W)) break;
|
|
546
|
+
while (g < W && isHoriz(grid[r][g])) g++;
|
|
547
|
+
sawText = true;
|
|
548
|
+
continue;
|
|
554
549
|
}
|
|
555
|
-
|
|
556
|
-
if (asc && asciiArrowGate(grid, r, g, asc)) {
|
|
550
|
+
if (isStructuralInGap(grid, r, g)) {
|
|
557
551
|
failed = true;
|
|
558
552
|
break;
|
|
559
553
|
}
|
|
@@ -816,6 +810,24 @@ function extractEdges(grid, mask, perimeterOwners, boxes, warnings) {
|
|
|
816
810
|
for (const idx of sideLabelCells) edgeCells.add(idx);
|
|
817
811
|
return { edges, edgeCells };
|
|
818
812
|
}
|
|
813
|
+
function horizRunReachesStructure(grid, mask, r, c, W) {
|
|
814
|
+
let end = c;
|
|
815
|
+
while (end < W && isHoriz(grid[r][end]) && !mask[r * W + end]) end++;
|
|
816
|
+
if (end >= W || mask[r * W + end]) return true;
|
|
817
|
+
const ch = grid[r][end];
|
|
818
|
+
if (isLineChar(ch) || arrowDirection(ch) !== null) return true;
|
|
819
|
+
const asc = asciiArrowDirection(ch);
|
|
820
|
+
return asc !== null && asciiArrowGate(grid, r, end, asc);
|
|
821
|
+
}
|
|
822
|
+
function isStructuralInGap(grid, r, c) {
|
|
823
|
+
const ch = grid[r][c];
|
|
824
|
+
if (arrowDirection(ch) !== null) return true;
|
|
825
|
+
const asc = asciiArrowDirection(ch);
|
|
826
|
+
if (asc !== null && asciiArrowGate(grid, r, c, asc)) return true;
|
|
827
|
+
if (!isLineChar(ch)) return false;
|
|
828
|
+
const isDrawing = (x) => x !== void 0 && (isLineChar(x) || arrowDirection(x) !== null);
|
|
829
|
+
return isDrawing(grid[r - 1]?.[c]) || isDrawing(grid[r + 1]?.[c]);
|
|
830
|
+
}
|
|
819
831
|
function asciiArrowGate(grid, r, c, dir) {
|
|
820
832
|
const behind = dir === "down" ? grid[r - 1]?.[c] : dir === "up" ? grid[r + 1]?.[c] : dir === "right" ? grid[r]?.[c - 1] : grid[r]?.[c + 1];
|
|
821
833
|
if (behind === void 0) return false;
|
|
@@ -2122,7 +2134,7 @@ function analyzeLine(line) {
|
|
|
2122
2134
|
let label = chars.slice(i).join("").replace(/\s+$/u, "");
|
|
2123
2135
|
if (label.length === 0) return null;
|
|
2124
2136
|
let comment;
|
|
2125
|
-
const commentMatch = /\s
|
|
2137
|
+
const commentMatch = /\s{2,}(?:#|<--|\/\/)\s?(.*)$/.exec(label);
|
|
2126
2138
|
if (commentMatch) {
|
|
2127
2139
|
comment = commentMatch[1].trim() || void 0;
|
|
2128
2140
|
label = label.slice(0, commentMatch.index).replace(/\s+$/u, "");
|
|
@@ -2445,6 +2457,7 @@ function pickAutoTemplate(profile, blockIndex = 0) {
|
|
|
2445
2457
|
if (profile.hasTimeline) return "timeline";
|
|
2446
2458
|
if (profile.hasTree) return "tree";
|
|
2447
2459
|
if (profile.hasTable) return "dataTable";
|
|
2460
|
+
if (profile.hasVideo) return "videoWithCaption";
|
|
2448
2461
|
if (profile.imageCount >= 2) return "photoGrid";
|
|
2449
2462
|
if (profile.hasImage) return blockIndex % 2 === 0 ? "leftFeature" : "rightFeature";
|
|
2450
2463
|
if (profile.hasBlockquote) return "quote";
|
|
@@ -2465,12 +2478,15 @@ function recommendTemplatesForBlock(profile, allNames) {
|
|
|
2465
2478
|
|
|
2466
2479
|
export {
|
|
2467
2480
|
matchNumberHighlight,
|
|
2481
|
+
toCells,
|
|
2482
|
+
cellWidth,
|
|
2468
2483
|
isHoriz,
|
|
2469
2484
|
isVert,
|
|
2470
2485
|
isJunction,
|
|
2471
2486
|
arrowDirection,
|
|
2472
2487
|
UNICODE_VOCAB,
|
|
2473
2488
|
ASCII_VOCAB,
|
|
2489
|
+
MAX_BRIDGE_GAP,
|
|
2474
2490
|
parseAsciiDiagram,
|
|
2475
2491
|
traceBoxes,
|
|
2476
2492
|
toGrid,
|
|
@@ -2500,4 +2516,3 @@ export {
|
|
|
2500
2516
|
pickAutoTemplate,
|
|
2501
2517
|
recommendTemplatesForBlock
|
|
2502
2518
|
};
|
|
2503
|
-
//# sourceMappingURL=chunk-5UYI3RJB.js.map
|