@bendyline/squisq 2.0.1 → 2.2.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/dist/{ContentContainer-BXUlIf18.d.ts → ContentContainer-B2w9sUoL.d.ts} +15 -0
- package/dist/{Doc-ylqWKDc_.d.ts → Doc-BubIpWsp.d.ts} +160 -3
- package/dist/{ImageEditDoc-D828IXJ1.d.ts → ImageEditDoc-CGxk5CHc.d.ts} +1 -1
- package/dist/{annotationCoercion-Dr_DY9Hx.d.ts → annotationCoercion-PtRQhk5V.d.ts} +1 -1
- package/dist/chunk-2L55443L.js +0 -0
- package/dist/chunk-2ZWIXGAC.js +214 -0
- package/dist/{chunk-2PWOO4ZE.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-X6DUONGT.js → chunk-7ARJZYQY.js} +280 -128
- 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-W4O2TX5I.js → chunk-C33GTPUZ.js} +579 -4
- package/dist/{chunk-MMPBOUK7.js → chunk-CB45YGAM.js} +7 -2
- package/dist/{chunk-CY2R2VPR.js → chunk-DYPMOPIW.js} +18 -2
- package/dist/{chunk-VR7UPJ7C.js → chunk-FCG3BIZN.js} +12 -1
- package/dist/{chunk-5UYI3RJB.js → chunk-FDYDYL77.js} +54 -40
- package/dist/{chunk-TFJVXUHH.js → chunk-I2O6W7DX.js} +1513 -79
- 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-QKPXHDLR.js +0 -0
- package/dist/{chunk-GZY66SDN.js → chunk-R3KTTOMS.js} +0 -1
- package/dist/{chunk-PXLVXTLW.js → chunk-RS5AP3J4.js} +72 -15
- package/dist/chunk-WV5ARNDA.js +0 -0
- package/dist/{chunk-4X3JQXNM.js → chunk-XOFT65EX.js} +1 -2
- package/dist/{chunk-FVTQSNR7.js → chunk-XRW6P7IF.js} +13 -5
- package/dist/chunk-XWNNA3KE.js +0 -0
- package/dist/chunk-YZNGMV3G.js +0 -0
- package/dist/{chunk-R2YZTCLO.js → chunk-ZQKZSJAX.js} +1 -2
- package/dist/doc/index.d.ts +166 -12
- package/dist/doc/index.js +36 -17
- package/dist/generate/index.d.ts +2 -2
- package/dist/generate/index.js +2 -3
- package/dist/icons/index.js +3 -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 -12
- package/dist/index.js +118 -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-wSLA2A1g.d.ts +223 -0
- package/dist/narration/index.d.ts +16 -3
- package/dist/narration/index.js +13 -14
- package/dist/random/index.d.ts +11 -2
- package/dist/random/index.js +2 -3
- package/dist/recommend/index.d.ts +1 -1
- package/dist/recommend/index.js +3 -4
- package/dist/schemas/index.d.ts +31 -6
- package/dist/schemas/index.js +43 -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-RjVgLpUi.d.ts → themeLibrary-DU9mUmVl.d.ts} +1 -1
- package/dist/timing/index.js +3 -4
- package/dist/transform/index.d.ts +9 -10
- 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 +4 -2
- package/dist/chunk-2PWOO4ZE.js.map +0 -1
- 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-CY2R2VPR.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-FVJUUTEM.js +0 -74
- package/dist/chunk-FVJUUTEM.js.map +0 -1
- package/dist/chunk-FVTQSNR7.js.map +0 -1
- package/dist/chunk-GZY66SDN.js.map +0 -1
- package/dist/chunk-JOQYPRDZ.js.map +0 -1
- package/dist/chunk-MMPBOUK7.js.map +0 -1
- package/dist/chunk-PGGGKYWG.js +0 -1
- package/dist/chunk-PGGGKYWG.js.map +0 -1
- package/dist/chunk-PXLVXTLW.js.map +0 -1
- package/dist/chunk-Q7LROV2H.js.map +0 -1
- package/dist/chunk-QE7TWGVT.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-TFJVXUHH.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-W4O2TX5I.js.map +0 -1
- package/dist/chunk-X6DUONGT.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 -135
- 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__/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 -160
- 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 -127
- package/src/doc/markdownToDoc.ts +0 -1054
- package/src/doc/materializeBlockLayers.ts +0 -304
- package/src/doc/mediaAnnotations.ts +0 -120
- 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 -423
- 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 -1052
- 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/Theme.ts +0 -406
- 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 -29
- package/src/schemas/themeCompile.ts +0 -237
- package/src/schemas/themeConstants.ts +0 -2
- package/src/schemas/themeLibrary.ts +0 -60
- package/src/schemas/themeValidator.ts +0 -426
- package/src/schemas/themes/bold.json +0 -48
- package/src/schemas/themes/cinematic.json +0 -111
- package/src/schemas/themes/documentary.json +0 -96
- package/src/schemas/themes/gezellig.json +0 -93
- package/src/schemas/themes/index.ts +0 -53
- package/src/schemas/themes/magazine.json +0 -89
- package/src/schemas/themes/minimalist.json +0 -45
- package/src/schemas/themes/morning-light.json +0 -85
- package/src/schemas/themes/standard-dark.json +0 -85
- package/src/schemas/themes/standard.json +0 -74
- package/src/schemas/themes/tech-dark.json +0 -101
- package/src/schemas/themes/warm-earth.json +0 -50
- 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 -198
- package/src/transform/styles/dataDriven.ts +0 -17
- package/src/transform/styles/documentary.ts +0 -17
- package/src/transform/styles/index.ts +0 -5
- package/src/transform/styles/magazine.ts +0 -18
- package/src/transform/styles/minimal.ts +0 -17
- package/src/transform/styles/narrative.ts +0 -18
- package/src/transform/templateSelector.ts +0 -389
- package/src/transform/timingAllocator.ts +0 -257
- package/src/transform/types.ts +0 -151
- 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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
anchorPoint,
|
|
3
|
+
base64ToUtf8,
|
|
3
4
|
connectorPath,
|
|
4
5
|
lineStyleDasharray,
|
|
5
6
|
shapePath,
|
|
6
7
|
snapEndpoints
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PUS54YU6.js";
|
|
8
9
|
import {
|
|
9
10
|
detectAsciiDiagram,
|
|
10
11
|
detectAsciiTimeline,
|
|
@@ -19,7 +20,7 @@ import {
|
|
|
19
20
|
parseAsciiTimeline,
|
|
20
21
|
pickAutoTemplate,
|
|
21
22
|
profileBlockContents
|
|
22
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-FDYDYL77.js";
|
|
23
24
|
import {
|
|
24
25
|
DEFAULT_THEME,
|
|
25
26
|
FRONTMATTER_CUSTOM_TEMPLATES_KEY,
|
|
@@ -30,7 +31,7 @@ import {
|
|
|
30
31
|
resolveFontFamily,
|
|
31
32
|
validateTheme,
|
|
32
33
|
withAlpha
|
|
33
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-C33GTPUZ.js";
|
|
34
35
|
import {
|
|
35
36
|
VIEWPORT_PRESETS,
|
|
36
37
|
cloneData,
|
|
@@ -39,7 +40,7 @@ import {
|
|
|
39
40
|
isPersistentLayerTemplate,
|
|
40
41
|
isTemplateBlock,
|
|
41
42
|
scaledFontSize2 as scaledFontSize
|
|
42
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-BAOV476U.js";
|
|
43
44
|
import {
|
|
44
45
|
KNOWN_BLOCK_META_KEYS,
|
|
45
46
|
coerceAnnotationValues,
|
|
@@ -48,25 +49,25 @@ import {
|
|
|
48
49
|
parseTimeSeconds,
|
|
49
50
|
splitKeyValueToken,
|
|
50
51
|
tokenizeAttrTokens
|
|
51
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-ZQKZSJAX.js";
|
|
52
53
|
import {
|
|
53
54
|
extractPlainText,
|
|
54
55
|
readFrontmatterThemeId,
|
|
55
56
|
walkMarkdownTree
|
|
56
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-BCCXTMN5.js";
|
|
57
58
|
import {
|
|
58
59
|
resolveBlockTransition
|
|
59
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-4VOD55SX.js";
|
|
60
61
|
import {
|
|
61
62
|
estimateReadingTime
|
|
62
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-XOFT65EX.js";
|
|
63
64
|
import {
|
|
64
65
|
estimateSpokenWordCount
|
|
65
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-67L6WRJN.js";
|
|
66
67
|
import {
|
|
67
68
|
SeededRandom,
|
|
68
69
|
hashString
|
|
69
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-XRW6P7IF.js";
|
|
70
71
|
|
|
71
72
|
// src/doc/templates/persistentLayers.ts
|
|
72
73
|
var GRADIENT_PRESETS = {
|
|
@@ -198,14 +199,19 @@ function expandTitleCaption(config) {
|
|
|
198
199
|
const isBottom = config.position.includes("bottom");
|
|
199
200
|
const isLeft = config.position.includes("left");
|
|
200
201
|
const pad = 3;
|
|
202
|
+
const thumbPad = 1.5;
|
|
201
203
|
const pillHeight = hasSubtitle ? "15%" : "7%";
|
|
202
204
|
const bgYPos = isBottom ? hasSubtitle ? "78%" : "84%" : "2%";
|
|
203
|
-
const
|
|
204
|
-
const
|
|
205
|
+
const pillW = config.showThumbnail ? 30 : 28;
|
|
206
|
+
const pillX = isLeft ? pad : 100 - pad - pillW;
|
|
207
|
+
const bgXPos = `${pillX}%`;
|
|
208
|
+
const thumbWNum = hasSubtitle ? 6 : 5;
|
|
209
|
+
const thumbW = `${thumbWNum}%`;
|
|
205
210
|
const thumbH = hasSubtitle ? "10%" : "5%";
|
|
206
|
-
const
|
|
207
|
-
const
|
|
208
|
-
const
|
|
211
|
+
const innerX = pillX + thumbPad;
|
|
212
|
+
const innerW = pillW - thumbPad * 2;
|
|
213
|
+
const textX = config.showThumbnail && isLeft ? `${innerX + thumbWNum + thumbPad}%` : `${innerX}%`;
|
|
214
|
+
const textWidth = config.showThumbnail ? `${innerW - thumbWNum - thumbPad}%` : `${innerW}%`;
|
|
209
215
|
const titleYPos = isBottom ? hasSubtitle ? "80%" : "86%" : "4%";
|
|
210
216
|
layers.push({
|
|
211
217
|
type: "shape",
|
|
@@ -218,12 +224,12 @@ function expandTitleCaption(config) {
|
|
|
218
224
|
position: {
|
|
219
225
|
x: bgXPos,
|
|
220
226
|
y: bgYPos,
|
|
221
|
-
width:
|
|
227
|
+
width: `${pillW}%`,
|
|
222
228
|
height: pillHeight
|
|
223
229
|
}
|
|
224
230
|
});
|
|
225
231
|
if (config.showThumbnail && config.thumbnailSrc) {
|
|
226
|
-
const thumbX = isLeft ? `${
|
|
232
|
+
const thumbX = isLeft ? `${innerX}%` : `${pillX + pillW - thumbPad - thumbWNum}%`;
|
|
227
233
|
const thumbY = isBottom ? hasSubtitle ? `${78 + thumbPad}%` : "85%" : "3%";
|
|
228
234
|
layers.push({
|
|
229
235
|
type: "image",
|
|
@@ -620,84 +626,6 @@ function titleBlock(input, context) {
|
|
|
620
626
|
return layers;
|
|
621
627
|
}
|
|
622
628
|
|
|
623
|
-
// src/doc/templates/sectionHeader.ts
|
|
624
|
-
function sectionHeader(input, context) {
|
|
625
|
-
const { title = "", colorScheme = "blue", imageSrc, imageAlt, ambientMotion } = input;
|
|
626
|
-
const { theme, layout } = context;
|
|
627
|
-
const treatment = themedImageTreatment(context, input.imageTreatment);
|
|
628
|
-
const colors = resolveColorScheme(context, colorScheme);
|
|
629
|
-
const titleFontSize = themedFontSize(84, context, true);
|
|
630
|
-
const layers = [];
|
|
631
|
-
if (imageSrc) {
|
|
632
|
-
layers.push({
|
|
633
|
-
type: "image",
|
|
634
|
-
id: "bg-image",
|
|
635
|
-
content: {
|
|
636
|
-
src: imageSrc,
|
|
637
|
-
alt: imageAlt || title,
|
|
638
|
-
fit: "cover",
|
|
639
|
-
...treatment ? { treatment } : {}
|
|
640
|
-
},
|
|
641
|
-
position: { x: 0, y: 0, width: "100%", height: "100%" },
|
|
642
|
-
animation: ambientMotion ? { type: ambientMotion, duration: 8 } : { type: "slowZoom", duration: 8, direction: "in" }
|
|
643
|
-
});
|
|
644
|
-
layers.push({
|
|
645
|
-
type: "shape",
|
|
646
|
-
id: "overlay",
|
|
647
|
-
content: {
|
|
648
|
-
shape: "rect",
|
|
649
|
-
fill: themedScrim(context)
|
|
650
|
-
},
|
|
651
|
-
position: { x: 0, y: 0, width: "100%", height: "100%" }
|
|
652
|
-
});
|
|
653
|
-
} else {
|
|
654
|
-
layers.push({
|
|
655
|
-
type: "shape",
|
|
656
|
-
id: "bg",
|
|
657
|
-
content: {
|
|
658
|
-
shape: "rect",
|
|
659
|
-
fill: colors.bg
|
|
660
|
-
},
|
|
661
|
-
position: { x: 0, y: 0, width: "100%", height: "100%" }
|
|
662
|
-
});
|
|
663
|
-
layers.push({
|
|
664
|
-
type: "shape",
|
|
665
|
-
id: "line-top",
|
|
666
|
-
content: { shape: "rect", fill: `${colors.text}33` },
|
|
667
|
-
position: { x: "50%", y: "40%", width: "20%", height: "2px", anchor: "center" }
|
|
668
|
-
});
|
|
669
|
-
layers.push({
|
|
670
|
-
type: "shape",
|
|
671
|
-
id: "line-bottom",
|
|
672
|
-
content: { shape: "rect", fill: `${colors.text}33` },
|
|
673
|
-
position: { x: "50%", y: "60%", width: "20%", height: "2px", anchor: "center" }
|
|
674
|
-
});
|
|
675
|
-
}
|
|
676
|
-
layers.push({
|
|
677
|
-
type: "text",
|
|
678
|
-
id: "title",
|
|
679
|
-
content: {
|
|
680
|
-
text: title,
|
|
681
|
-
style: {
|
|
682
|
-
fontSize: titleFontSize,
|
|
683
|
-
fontFamily: getThemeFont(context, "title"),
|
|
684
|
-
fontWeight: "bold",
|
|
685
|
-
color: imageSrc ? theme.colors.text : colors.text,
|
|
686
|
-
textAlign: "center",
|
|
687
|
-
shadow: shouldUseShadow(context)
|
|
688
|
-
}
|
|
689
|
-
},
|
|
690
|
-
position: {
|
|
691
|
-
x: "50%",
|
|
692
|
-
y: "50%",
|
|
693
|
-
anchor: "center",
|
|
694
|
-
width: layout.maxTextWidth
|
|
695
|
-
},
|
|
696
|
-
animation: themedEntrance(context, "text", { type: "fadeIn", duration: 1.5 })
|
|
697
|
-
});
|
|
698
|
-
return layers;
|
|
699
|
-
}
|
|
700
|
-
|
|
701
629
|
// src/doc/templates/accentImage.ts
|
|
702
630
|
var PERCENTAGE_RE = /^(\d+(?:\.\d+)?)\s*%?$/;
|
|
703
631
|
var DEFAULT_LAYOUT = {
|
|
@@ -928,6 +856,92 @@ function adjustY(originalY, layout) {
|
|
|
928
856
|
return yStr;
|
|
929
857
|
}
|
|
930
858
|
|
|
859
|
+
// src/doc/templates/sectionHeader.ts
|
|
860
|
+
function sectionHeader(input, context) {
|
|
861
|
+
const { title = "", colorScheme = "blue", imageSrc, imageAlt, ambientMotion } = input;
|
|
862
|
+
const { theme, layout } = context;
|
|
863
|
+
const treatment = themedImageTreatment(context, input.imageTreatment);
|
|
864
|
+
const colors = resolveColorScheme(context, colorScheme);
|
|
865
|
+
const titleFontSize = themedFontSize(84, context, true);
|
|
866
|
+
const layers = [];
|
|
867
|
+
if (imageSrc) {
|
|
868
|
+
layers.push({
|
|
869
|
+
type: "image",
|
|
870
|
+
id: "bg-image",
|
|
871
|
+
content: {
|
|
872
|
+
src: imageSrc,
|
|
873
|
+
alt: imageAlt || title,
|
|
874
|
+
fit: "cover",
|
|
875
|
+
...treatment ? { treatment } : {}
|
|
876
|
+
},
|
|
877
|
+
position: { x: 0, y: 0, width: "100%", height: "100%" },
|
|
878
|
+
// Route through mapAmbientMotion like every other image template: the
|
|
879
|
+
// authored vocabulary (`zoomIn`/`panLeft`/…) are NOT AnimationTypes, so
|
|
880
|
+
// passing them raw produced an unknown animation here while the same
|
|
881
|
+
// input animated correctly on imageWithCaption/coverBlock/accentImage.
|
|
882
|
+
animation: mapAmbientMotion(ambientMotion, 8) ?? {
|
|
883
|
+
type: "slowZoom",
|
|
884
|
+
duration: 8,
|
|
885
|
+
direction: "in"
|
|
886
|
+
}
|
|
887
|
+
});
|
|
888
|
+
layers.push({
|
|
889
|
+
type: "shape",
|
|
890
|
+
id: "overlay",
|
|
891
|
+
content: {
|
|
892
|
+
shape: "rect",
|
|
893
|
+
fill: themedScrim(context)
|
|
894
|
+
},
|
|
895
|
+
position: { x: 0, y: 0, width: "100%", height: "100%" }
|
|
896
|
+
});
|
|
897
|
+
} else {
|
|
898
|
+
layers.push({
|
|
899
|
+
type: "shape",
|
|
900
|
+
id: "bg",
|
|
901
|
+
content: {
|
|
902
|
+
shape: "rect",
|
|
903
|
+
fill: colors.bg
|
|
904
|
+
},
|
|
905
|
+
position: { x: 0, y: 0, width: "100%", height: "100%" }
|
|
906
|
+
});
|
|
907
|
+
layers.push({
|
|
908
|
+
type: "shape",
|
|
909
|
+
id: "line-top",
|
|
910
|
+
content: { shape: "rect", fill: withAlpha(colors.text, 0.2) },
|
|
911
|
+
position: { x: "50%", y: "40%", width: "20%", height: "2px", anchor: "center" }
|
|
912
|
+
});
|
|
913
|
+
layers.push({
|
|
914
|
+
type: "shape",
|
|
915
|
+
id: "line-bottom",
|
|
916
|
+
content: { shape: "rect", fill: withAlpha(colors.text, 0.2) },
|
|
917
|
+
position: { x: "50%", y: "60%", width: "20%", height: "2px", anchor: "center" }
|
|
918
|
+
});
|
|
919
|
+
}
|
|
920
|
+
layers.push({
|
|
921
|
+
type: "text",
|
|
922
|
+
id: "title",
|
|
923
|
+
content: {
|
|
924
|
+
text: title,
|
|
925
|
+
style: {
|
|
926
|
+
fontSize: titleFontSize,
|
|
927
|
+
fontFamily: getThemeFont(context, "title"),
|
|
928
|
+
fontWeight: "bold",
|
|
929
|
+
color: imageSrc ? theme.colors.text : colors.text,
|
|
930
|
+
textAlign: "center",
|
|
931
|
+
shadow: shouldUseShadow(context)
|
|
932
|
+
}
|
|
933
|
+
},
|
|
934
|
+
position: {
|
|
935
|
+
x: "50%",
|
|
936
|
+
y: "50%",
|
|
937
|
+
anchor: "center",
|
|
938
|
+
width: layout.maxTextWidth
|
|
939
|
+
},
|
|
940
|
+
animation: themedEntrance(context, "text", { type: "fadeIn", duration: 1.5 })
|
|
941
|
+
});
|
|
942
|
+
return layers;
|
|
943
|
+
}
|
|
944
|
+
|
|
931
945
|
// src/doc/templates/statHighlight.ts
|
|
932
946
|
function statHighlight(input, context) {
|
|
933
947
|
const { stat, description, detail, colorScheme = "blue", accentImage } = input;
|
|
@@ -1520,7 +1534,7 @@ function imageWithCaption(input, context) {
|
|
|
1520
1534
|
imageSrc,
|
|
1521
1535
|
imageAlt,
|
|
1522
1536
|
caption: rawCaption,
|
|
1523
|
-
captionPosition
|
|
1537
|
+
captionPosition = "bottom",
|
|
1524
1538
|
ambientMotion,
|
|
1525
1539
|
isTitle,
|
|
1526
1540
|
subtitle,
|
|
@@ -1612,6 +1626,8 @@ function imageWithCaption(input, context) {
|
|
|
1612
1626
|
return layers;
|
|
1613
1627
|
}
|
|
1614
1628
|
if (caption) {
|
|
1629
|
+
const captionBgY = captionPosition === "top" ? "7%" : captionPosition === "center" ? "42%" : "68%";
|
|
1630
|
+
const captionY = captionPosition === "top" ? "13%" : captionPosition === "center" ? "48%" : "74%";
|
|
1615
1631
|
layers.push({
|
|
1616
1632
|
type: "shape",
|
|
1617
1633
|
id: "caption-gradient",
|
|
@@ -1621,7 +1637,7 @@ function imageWithCaption(input, context) {
|
|
|
1621
1637
|
},
|
|
1622
1638
|
position: {
|
|
1623
1639
|
x: 0,
|
|
1624
|
-
y:
|
|
1640
|
+
y: captionBgY,
|
|
1625
1641
|
width: "100%",
|
|
1626
1642
|
height: "16%"
|
|
1627
1643
|
}
|
|
@@ -1643,7 +1659,7 @@ function imageWithCaption(input, context) {
|
|
|
1643
1659
|
},
|
|
1644
1660
|
position: {
|
|
1645
1661
|
x: "50%",
|
|
1646
|
-
y:
|
|
1662
|
+
y: captionY,
|
|
1647
1663
|
anchor: "center",
|
|
1648
1664
|
width: "78%"
|
|
1649
1665
|
},
|
|
@@ -2158,6 +2174,8 @@ function getGridPositions(count, gridHeight, stacked) {
|
|
|
2158
2174
|
const halfW = 50 - GAP / 2;
|
|
2159
2175
|
const halfH = gridHeight / 2 - GAP / 2;
|
|
2160
2176
|
switch (count) {
|
|
2177
|
+
case 1:
|
|
2178
|
+
return [{ x: 0, y: 0, w: 100, h: gridHeight }];
|
|
2161
2179
|
case 2:
|
|
2162
2180
|
if (stacked) {
|
|
2163
2181
|
return [
|
|
@@ -2322,12 +2340,14 @@ function comparisonBar(input, context) {
|
|
|
2322
2340
|
const barHeight = 6;
|
|
2323
2341
|
const topBarY = 36;
|
|
2324
2342
|
const bottomBarY = 58;
|
|
2325
|
-
const
|
|
2343
|
+
const leftExtent = Math.max(0, leftValue);
|
|
2344
|
+
const rightExtent = Math.max(0, rightValue);
|
|
2345
|
+
const maxValue = Math.max(leftExtent, rightExtent, 1);
|
|
2326
2346
|
const longestLabelPx = Math.max(leftDisplay.length, rightDisplay.length) * valueFontSize * 0.58;
|
|
2327
2347
|
const labelWidthPct = longestLabelPx / viewport.width * 100;
|
|
2328
2348
|
const maxBarWidth = Math.max(20, Math.min(65, 96 - barStartX - labelWidthPct - 2));
|
|
2329
|
-
const leftBarWidth =
|
|
2330
|
-
const rightBarWidth =
|
|
2349
|
+
const leftBarWidth = leftExtent / maxValue * maxBarWidth;
|
|
2350
|
+
const rightBarWidth = rightExtent / maxValue * maxBarWidth;
|
|
2331
2351
|
return [
|
|
2332
2352
|
// Background
|
|
2333
2353
|
{
|
|
@@ -2461,7 +2481,10 @@ function pullQuote(input, context) {
|
|
|
2461
2481
|
...treatment ? { treatment } : {}
|
|
2462
2482
|
},
|
|
2463
2483
|
position: { x: 0, y: 0, width: "100%", height: "100%" },
|
|
2464
|
-
|
|
2484
|
+
// Same authored `ambientMotion` vocabulary as every other image
|
|
2485
|
+
// template — map it to a real Ken Burns animation rather than passing
|
|
2486
|
+
// the token straight through as an animation type.
|
|
2487
|
+
animation: mapAmbientMotion(ambientMotion, 15)
|
|
2465
2488
|
},
|
|
2466
2489
|
// Dark overlay for text readability
|
|
2467
2490
|
{
|
|
@@ -5227,7 +5250,7 @@ function fallbackBlockLayers(block, context, notice) {
|
|
|
5227
5250
|
style: {
|
|
5228
5251
|
fontSize: themedFontSize(18, context),
|
|
5229
5252
|
fontFamily: getThemeFont(context, "body"),
|
|
5230
|
-
color:
|
|
5253
|
+
color: withAlpha(colors.text, 0.6),
|
|
5231
5254
|
textAlign: "center"
|
|
5232
5255
|
}
|
|
5233
5256
|
},
|
|
@@ -5255,9 +5278,10 @@ function materializeBlockLayersWithRuntime(block, options, runtime) {
|
|
|
5255
5278
|
const effectivePersistentLayers = options.persistentLayers === false ? void 0 : options.persistentLayers ?? theme.persistentLayers;
|
|
5256
5279
|
const existingLayers = block.layers;
|
|
5257
5280
|
if (existingLayers && existingLayers.length > 0 && !isTemplateBlock(block)) {
|
|
5281
|
+
const layers = appendMermaidLayers(cloneData(existingLayers), block, theme, viewport);
|
|
5258
5282
|
return {
|
|
5259
5283
|
layers: injectPersistentLayers(
|
|
5260
|
-
|
|
5284
|
+
layers,
|
|
5261
5285
|
block,
|
|
5262
5286
|
theme,
|
|
5263
5287
|
effectivePersistentLayers,
|
|
@@ -5267,15 +5291,16 @@ function materializeBlockLayersWithRuntime(block, options, runtime) {
|
|
|
5267
5291
|
};
|
|
5268
5292
|
}
|
|
5269
5293
|
if (!isTemplateBlock(block)) {
|
|
5294
|
+
const layers = appendMermaidLayers([], block, theme, viewport);
|
|
5270
5295
|
return {
|
|
5271
5296
|
layers: injectPersistentLayers(
|
|
5272
|
-
|
|
5297
|
+
layers,
|
|
5273
5298
|
block,
|
|
5274
5299
|
theme,
|
|
5275
5300
|
effectivePersistentLayers,
|
|
5276
5301
|
runtime.expandedPersistentLayers
|
|
5277
5302
|
),
|
|
5278
|
-
source: "empty"
|
|
5303
|
+
source: layers.length > 0 ? "rich-content" : "empty"
|
|
5279
5304
|
};
|
|
5280
5305
|
}
|
|
5281
5306
|
const context = runtime.templateContext ? cloneData(runtime.templateContext) : createTemplateContext(theme, blockIndex, totalBlocks, viewport);
|
|
@@ -5283,9 +5308,10 @@ function materializeBlockLayersWithRuntime(block, options, runtime) {
|
|
|
5283
5308
|
const execution = executeTemplateMaterialization(block, context, runtime.registry);
|
|
5284
5309
|
if (execution.status === "ok") {
|
|
5285
5310
|
const styledLayers = runtime.applyRenderStyle !== false ? applyRenderStyleToLayers(execution.layers, block, theme) : execution.layers;
|
|
5311
|
+
const layers = appendMermaidLayers(styledLayers, block, theme, viewport);
|
|
5286
5312
|
return {
|
|
5287
5313
|
layers: injectPersistentLayers(
|
|
5288
|
-
|
|
5314
|
+
layers,
|
|
5289
5315
|
block,
|
|
5290
5316
|
theme,
|
|
5291
5317
|
effectivePersistentLayers,
|
|
@@ -5296,21 +5322,28 @@ function materializeBlockLayersWithRuntime(block, options, runtime) {
|
|
|
5296
5322
|
}
|
|
5297
5323
|
const diagnostic = toLayerMaterializationDiagnostic(block.template, execution);
|
|
5298
5324
|
if ((options.failureMode ?? "fallback") === "empty") {
|
|
5325
|
+
const layers = appendMermaidLayers([], block, theme, viewport);
|
|
5299
5326
|
return {
|
|
5300
5327
|
layers: injectPersistentLayers(
|
|
5301
|
-
|
|
5328
|
+
layers,
|
|
5302
5329
|
block,
|
|
5303
5330
|
theme,
|
|
5304
5331
|
effectivePersistentLayers,
|
|
5305
5332
|
runtime.expandedPersistentLayers
|
|
5306
5333
|
),
|
|
5307
|
-
source: "empty",
|
|
5334
|
+
source: layers.length > 0 ? "rich-content" : "empty",
|
|
5308
5335
|
diagnostic
|
|
5309
5336
|
};
|
|
5310
5337
|
}
|
|
5338
|
+
const fallbackLayers = appendMermaidLayers(
|
|
5339
|
+
fallbackBlockLayers(block, context, diagnostic.message),
|
|
5340
|
+
block,
|
|
5341
|
+
theme,
|
|
5342
|
+
viewport
|
|
5343
|
+
);
|
|
5311
5344
|
return {
|
|
5312
5345
|
layers: injectPersistentLayers(
|
|
5313
|
-
|
|
5346
|
+
fallbackLayers,
|
|
5314
5347
|
block,
|
|
5315
5348
|
theme,
|
|
5316
5349
|
effectivePersistentLayers,
|
|
@@ -5320,6 +5353,109 @@ function materializeBlockLayersWithRuntime(block, options, runtime) {
|
|
|
5320
5353
|
diagnostic
|
|
5321
5354
|
};
|
|
5322
5355
|
}
|
|
5356
|
+
function mermaidSources(block) {
|
|
5357
|
+
return (block.contents ?? []).filter(
|
|
5358
|
+
(node) => node.type === "code" && node.lang?.trim().toLowerCase() === "mermaid"
|
|
5359
|
+
).map((node) => node.value).filter((source) => source.trim().length > 0);
|
|
5360
|
+
}
|
|
5361
|
+
function resolvePositionValue(value, dimension) {
|
|
5362
|
+
if (value === void 0) return 0;
|
|
5363
|
+
if (typeof value === "number") return value;
|
|
5364
|
+
const percent = value.match(/^\s*(-?\d+(?:\.\d+)?)%\s*$/);
|
|
5365
|
+
if (percent) return Number(percent[1]) / 100 * dimension;
|
|
5366
|
+
const numeric = Number.parseFloat(value);
|
|
5367
|
+
return Number.isFinite(numeric) ? numeric : 0;
|
|
5368
|
+
}
|
|
5369
|
+
function positionRect(position, viewport, fallbackWidth, fallbackHeight) {
|
|
5370
|
+
const width = position.width ? resolvePositionValue(position.width, viewport.width) : fallbackWidth;
|
|
5371
|
+
const height = position.height ? resolvePositionValue(position.height, viewport.height) : fallbackHeight;
|
|
5372
|
+
let x = resolvePositionValue(position.x, viewport.width);
|
|
5373
|
+
let y = resolvePositionValue(position.y, viewport.height);
|
|
5374
|
+
const anchor = position.anchor ?? "top-left";
|
|
5375
|
+
if (anchor === "center") {
|
|
5376
|
+
x -= width / 2;
|
|
5377
|
+
y -= height / 2;
|
|
5378
|
+
} else {
|
|
5379
|
+
if (anchor.endsWith("right")) x -= width;
|
|
5380
|
+
if (anchor.startsWith("bottom")) y -= height;
|
|
5381
|
+
}
|
|
5382
|
+
return { x, y, width, height };
|
|
5383
|
+
}
|
|
5384
|
+
function overlapArea(a, b) {
|
|
5385
|
+
const width = Math.max(0, Math.min(a.x + a.width, b.x + b.width) - Math.max(a.x, b.x));
|
|
5386
|
+
const height = Math.max(0, Math.min(a.y + a.height, b.y + b.height) - Math.max(a.y, b.y));
|
|
5387
|
+
return width * height;
|
|
5388
|
+
}
|
|
5389
|
+
function mermaidRegion(layers, viewport) {
|
|
5390
|
+
const occupied = layers.filter((layer) => layer.type !== "shape" && layer.type !== "path" && layer.type !== "mermaid").map(
|
|
5391
|
+
(layer) => positionRect(
|
|
5392
|
+
layer.position,
|
|
5393
|
+
viewport,
|
|
5394
|
+
layer.type === "text" ? viewport.width * 0.45 : viewport.width * 0.5,
|
|
5395
|
+
layer.type === "text" ? viewport.height * 0.2 : viewport.height * 0.55
|
|
5396
|
+
)
|
|
5397
|
+
);
|
|
5398
|
+
if (occupied.length === 0) {
|
|
5399
|
+
return {
|
|
5400
|
+
x: viewport.width * 0.06,
|
|
5401
|
+
y: viewport.height * 0.08,
|
|
5402
|
+
width: viewport.width * 0.88,
|
|
5403
|
+
height: viewport.height * 0.84
|
|
5404
|
+
};
|
|
5405
|
+
}
|
|
5406
|
+
const candidates = [
|
|
5407
|
+
{
|
|
5408
|
+
x: viewport.width * 0.52,
|
|
5409
|
+
y: viewport.height * 0.12,
|
|
5410
|
+
width: viewport.width * 0.44,
|
|
5411
|
+
height: viewport.height * 0.76
|
|
5412
|
+
},
|
|
5413
|
+
{
|
|
5414
|
+
x: viewport.width * 0.04,
|
|
5415
|
+
y: viewport.height * 0.12,
|
|
5416
|
+
width: viewport.width * 0.44,
|
|
5417
|
+
height: viewport.height * 0.76
|
|
5418
|
+
},
|
|
5419
|
+
{
|
|
5420
|
+
x: viewport.width * 0.15,
|
|
5421
|
+
y: viewport.height * 0.53,
|
|
5422
|
+
width: viewport.width * 0.7,
|
|
5423
|
+
height: viewport.height * 0.41
|
|
5424
|
+
}
|
|
5425
|
+
];
|
|
5426
|
+
return candidates.reduce((best, candidate) => {
|
|
5427
|
+
const score = occupied.reduce((sum, rect) => sum + overlapArea(candidate, rect), 0);
|
|
5428
|
+
const bestScore = occupied.reduce((sum, rect) => sum + overlapArea(best, rect), 0);
|
|
5429
|
+
return score < bestScore ? candidate : best;
|
|
5430
|
+
});
|
|
5431
|
+
}
|
|
5432
|
+
function appendMermaidLayers(layers, block, theme, viewport) {
|
|
5433
|
+
const sources = mermaidSources(block);
|
|
5434
|
+
if (sources.length === 0 || layers.some((layer) => layer.type === "mermaid")) return layers;
|
|
5435
|
+
const region = mermaidRegion(layers, viewport);
|
|
5436
|
+
const columns = sources.length === 1 ? 1 : 2;
|
|
5437
|
+
const rows = Math.ceil(sources.length / columns);
|
|
5438
|
+
const gap = Math.min(viewport.width, viewport.height) * 0.018;
|
|
5439
|
+
const width = (region.width - gap * (columns - 1)) / columns;
|
|
5440
|
+
const height = (region.height - gap * (rows - 1)) / rows;
|
|
5441
|
+
const mermaidLayers = sources.map((source, index) => ({
|
|
5442
|
+
id: `${block.id}-mermaid-${index + 1}`,
|
|
5443
|
+
type: "mermaid",
|
|
5444
|
+
position: {
|
|
5445
|
+
x: region.x + index % columns * (width + gap),
|
|
5446
|
+
y: region.y + Math.floor(index / columns) * (height + gap),
|
|
5447
|
+
width,
|
|
5448
|
+
height
|
|
5449
|
+
},
|
|
5450
|
+
content: {
|
|
5451
|
+
source,
|
|
5452
|
+
background: theme.colors.backgroundLight,
|
|
5453
|
+
foreground: theme.colors.text,
|
|
5454
|
+
padding: Math.max(12, Math.round(Math.min(width, height) * 0.025))
|
|
5455
|
+
}
|
|
5456
|
+
}));
|
|
5457
|
+
return [...layers, ...mermaidLayers];
|
|
5458
|
+
}
|
|
5323
5459
|
function executeTemplateMaterialization(templateBlock, context, registry) {
|
|
5324
5460
|
const safeTemplateBlock = cloneData(templateBlock);
|
|
5325
5461
|
const safeContext = cloneData(context);
|
|
@@ -5497,6 +5633,17 @@ function isStandardLightCover(context) {
|
|
|
5497
5633
|
const { theme } = context;
|
|
5498
5634
|
return theme.id === "standard" && relativeLuminance(theme.colors.background) > 0.85;
|
|
5499
5635
|
}
|
|
5636
|
+
var COVER_SCRIM_STOPS = [
|
|
5637
|
+
{ pos: 0, alpha: 0.95 },
|
|
5638
|
+
{ pos: 38, alpha: 0.86 },
|
|
5639
|
+
{ pos: 58, alpha: 0.4 },
|
|
5640
|
+
{ pos: 78, alpha: 0.1 },
|
|
5641
|
+
{ pos: 100, alpha: 0 }
|
|
5642
|
+
];
|
|
5643
|
+
function coverScrimGradient(background) {
|
|
5644
|
+
const stops = COVER_SCRIM_STOPS.map((s) => `${withAlpha(background, s.alpha)} ${s.pos}%`);
|
|
5645
|
+
return `linear-gradient(0deg, ${stops.join(", ")})`;
|
|
5646
|
+
}
|
|
5500
5647
|
function coverBlock(input, context) {
|
|
5501
5648
|
const treatment = themedImageTreatment(context, input.imageTreatment);
|
|
5502
5649
|
const { heroSrc, heroAlt, title, subtitle, ambientMotion, heroCredit, heroLicense } = input;
|
|
@@ -5527,7 +5674,7 @@ function coverBlock(input, context) {
|
|
|
5527
5674
|
id: "cover-gradient",
|
|
5528
5675
|
content: {
|
|
5529
5676
|
shape: "rect",
|
|
5530
|
-
fill:
|
|
5677
|
+
fill: coverScrimGradient(theme.colors.background)
|
|
5531
5678
|
},
|
|
5532
5679
|
position: { x: 0, y: 0, width: "100%", height: "100%" }
|
|
5533
5680
|
}
|
|
@@ -6152,7 +6299,7 @@ function findFirstList(contents) {
|
|
|
6152
6299
|
// src/doc/templateInputs.ts
|
|
6153
6300
|
function extractBodyPlainText(contents) {
|
|
6154
6301
|
if (!contents || contents.length === 0) return "";
|
|
6155
|
-
return contents.map((n) => extractPlainText(n)).join("\n").trim();
|
|
6302
|
+
return contents.filter((node) => !(node.type === "code" && node.lang?.trim().toLowerCase() === "mermaid")).map((n) => extractPlainText(n)).join("\n").trim();
|
|
6156
6303
|
}
|
|
6157
6304
|
function extractListItems(contents) {
|
|
6158
6305
|
if (!contents) return [];
|
|
@@ -6489,15 +6636,6 @@ function renameKeys(value, map) {
|
|
|
6489
6636
|
function isDefaultViewport(v) {
|
|
6490
6637
|
return !v || v.width === DEFAULT_VIEWPORT.width && v.height === DEFAULT_VIEWPORT.height;
|
|
6491
6638
|
}
|
|
6492
|
-
function base64ToUtf8(b64) {
|
|
6493
|
-
if (typeof globalThis.atob === "function") {
|
|
6494
|
-
const binary = globalThis.atob(b64);
|
|
6495
|
-
const bytes = new Uint8Array(binary.length);
|
|
6496
|
-
for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
|
|
6497
|
-
return new TextDecoder().decode(bytes);
|
|
6498
|
-
}
|
|
6499
|
-
return Buffer.from(b64, "base64").toString("utf-8");
|
|
6500
|
-
}
|
|
6501
6639
|
function readCustomTemplatesFromFrontmatter(frontmatter) {
|
|
6502
6640
|
if (!frontmatter) return void 0;
|
|
6503
6641
|
const candidates = normalizeCandidates(frontmatter[FRONTMATTER_CUSTOM_TEMPLATES_KEY]);
|
|
@@ -6977,10 +7115,18 @@ function expandStandaloneAnnotations(blocks, makeId, defaultDuration) {
|
|
|
6977
7115
|
makeId,
|
|
6978
7116
|
defaultDuration
|
|
6979
7117
|
});
|
|
6980
|
-
if (produced.length
|
|
6981
|
-
block
|
|
7118
|
+
if (produced.length === 0) {
|
|
7119
|
+
out.push(block);
|
|
7120
|
+
continue;
|
|
7121
|
+
}
|
|
7122
|
+
block.contents = leading;
|
|
7123
|
+
const nestable = (block.children?.length ?? 0) > 0 && !isContainerTemplate(block.template);
|
|
7124
|
+
if (nestable) {
|
|
7125
|
+
block.children = [...produced, ...block.children];
|
|
7126
|
+
out.push(block);
|
|
7127
|
+
} else {
|
|
7128
|
+
out.push(block, ...produced);
|
|
6982
7129
|
}
|
|
6983
|
-
out.push(block, ...produced);
|
|
6984
7130
|
}
|
|
6985
7131
|
return out;
|
|
6986
7132
|
}
|
|
@@ -7701,7 +7847,11 @@ function buildNarrationTimingJson(script, alignment, durationSec, options) {
|
|
|
7701
7847
|
duration: Number.isFinite(durationSec) && durationSec >= 0 ? durationSec : 0,
|
|
7702
7848
|
bookmarks,
|
|
7703
7849
|
blocks,
|
|
7704
|
-
|
|
7850
|
+
// Write only what `parseNarrationTimingJson` will read back, so the codec
|
|
7851
|
+
// is a round-trip pair. A non-finite value would serialize to `null`
|
|
7852
|
+
// (JSON has no NaN) and be dropped on parse anyway — omitting it here
|
|
7853
|
+
// keeps the emitted sidecar honest rather than carrying a dead field.
|
|
7854
|
+
...finiteNumber(options?.cameraOffsetSec) ? { cameraOffsetSec: options.cameraOffsetSec } : {},
|
|
7705
7855
|
generator: {
|
|
7706
7856
|
name: "squisq-teleprompter",
|
|
7707
7857
|
method: "dsp-align",
|
|
@@ -7712,6 +7862,9 @@ function buildNarrationTimingJson(script, alignment, durationSec, options) {
|
|
|
7712
7862
|
function finiteNonNegative(value) {
|
|
7713
7863
|
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
7714
7864
|
}
|
|
7865
|
+
function finiteNumber(value) {
|
|
7866
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
7867
|
+
}
|
|
7715
7868
|
function parseNarrationTimingJson(data) {
|
|
7716
7869
|
try {
|
|
7717
7870
|
const text = typeof data === "string" ? data : new TextDecoder().decode(data instanceof Uint8Array ? data : new Uint8Array(data));
|
|
@@ -7765,7 +7918,7 @@ function parseNarrationTimingJson(data) {
|
|
|
7765
7918
|
duration: raw.duration,
|
|
7766
7919
|
bookmarks,
|
|
7767
7920
|
blocks,
|
|
7768
|
-
...
|
|
7921
|
+
...finiteNumber(raw.cameraOffsetSec) ? { cameraOffsetSec: raw.cameraOffsetSec } : {},
|
|
7769
7922
|
...typeof raw.generator === "object" && raw.generator !== null ? { generator: raw.generator } : {}
|
|
7770
7923
|
};
|
|
7771
7924
|
} catch {
|
|
@@ -7795,11 +7948,11 @@ export {
|
|
|
7795
7948
|
themedScrim,
|
|
7796
7949
|
getTemplateHint,
|
|
7797
7950
|
titleBlock,
|
|
7798
|
-
sectionHeader,
|
|
7799
7951
|
DEFAULT_LAYOUT,
|
|
7800
7952
|
getAccentLayout,
|
|
7801
7953
|
createAccentLayers,
|
|
7802
7954
|
adjustY,
|
|
7955
|
+
sectionHeader,
|
|
7803
7956
|
statHighlight,
|
|
7804
7957
|
quoteBlock,
|
|
7805
7958
|
factCard,
|
|
@@ -7897,4 +8050,3 @@ export {
|
|
|
7897
8050
|
buildNarrationTimingJson,
|
|
7898
8051
|
parseNarrationTimingJson
|
|
7899
8052
|
};
|
|
7900
|
-
//# sourceMappingURL=chunk-X6DUONGT.js.map
|