@bendyline/squisq 1.4.0 → 1.4.1
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/dist/doc/index.d.ts +5 -10
- package/dist/doc/index.js +145 -7
- package/dist/doc/index.js.map +1 -1
- package/dist/generate/index.d.ts +99 -7
- package/dist/generate/index.js +16 -3
- package/dist/generate/index.js.map +1 -1
- package/dist/icons/index.d.ts +84 -9
- package/dist/icons/index.js +16 -9
- package/dist/icons/index.js.map +1 -1
- package/dist/imageEdit/index.d.ts +213 -11
- package/dist/imageEdit/index.js +53 -21
- package/dist/imageEdit/index.js.map +1 -1
- package/dist/index.d.ts +21 -13
- package/dist/index.js +461 -12
- package/dist/index.js.map +1 -1
- package/dist/jsonForm/index.d.ts +189 -12
- package/dist/jsonForm/index.js +26 -11
- package/dist/jsonForm/index.js.map +1 -1
- package/dist/markdown/index.d.ts +265 -19
- package/dist/markdown/index.js +39 -33
- package/dist/markdown/index.js.map +1 -1
- package/dist/random/index.d.ts +51 -2
- package/dist/random/index.js +9 -1
- package/dist/random/index.js.map +1 -1
- package/dist/recommend/index.d.ts +39 -13
- package/dist/recommend/index.js +9 -14
- package/dist/recommend/index.js.map +1 -1
- package/dist/schemas/index.d.ts +188 -15
- package/dist/schemas/index.js +120 -11
- package/dist/schemas/index.js.map +1 -1
- package/dist/spatial/index.d.ts +111 -3
- package/dist/spatial/index.js +24 -2
- package/dist/spatial/index.js.map +1 -1
- package/dist/storage/index.d.ts +159 -10
- package/dist/storage/index.js +20 -6
- package/dist/storage/index.js.map +1 -1
- package/dist/timing/index.d.ts +109 -4
- package/dist/timing/index.js +23 -2
- package/dist/timing/index.js.map +1 -1
- package/dist/transform/index.d.ts +175 -6
- package/dist/transform/index.js +490 -3
- package/dist/transform/index.js.map +1 -1
- package/dist/versions/index.d.ts +123 -24
- package/dist/versions/index.js +34 -27
- package/dist/versions/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/animationUtils.test.d.ts +0 -2
- package/dist/__tests__/animationUtils.test.d.ts.map +0 -1
- package/dist/__tests__/animationUtils.test.js +0 -60
- package/dist/__tests__/animationUtils.test.js.map +0 -1
- package/dist/__tests__/colorUtils.test.d.ts +0 -2
- package/dist/__tests__/colorUtils.test.d.ts.map +0 -1
- package/dist/__tests__/colorUtils.test.js +0 -94
- package/dist/__tests__/colorUtils.test.js.map +0 -1
- package/dist/__tests__/contentContainer.test.d.ts +0 -2
- package/dist/__tests__/contentContainer.test.d.ts.map +0 -1
- package/dist/__tests__/contentContainer.test.js +0 -234
- package/dist/__tests__/contentContainer.test.js.map +0 -1
- package/dist/__tests__/contentExtractor.test.d.ts +0 -2
- package/dist/__tests__/contentExtractor.test.d.ts.map +0 -1
- package/dist/__tests__/contentExtractor.test.js +0 -151
- package/dist/__tests__/contentExtractor.test.js.map +0 -1
- package/dist/__tests__/coverBlock.test.d.ts +0 -2
- package/dist/__tests__/coverBlock.test.d.ts.map +0 -1
- package/dist/__tests__/coverBlock.test.js +0 -197
- package/dist/__tests__/coverBlock.test.js.map +0 -1
- package/dist/__tests__/dataTable.test.d.ts +0 -2
- package/dist/__tests__/dataTable.test.d.ts.map +0 -1
- package/dist/__tests__/dataTable.test.js +0 -110
- package/dist/__tests__/dataTable.test.js.map +0 -1
- package/dist/__tests__/geohash.test.d.ts +0 -2
- package/dist/__tests__/geohash.test.d.ts.map +0 -1
- package/dist/__tests__/geohash.test.js +0 -87
- package/dist/__tests__/geohash.test.js.map +0 -1
- package/dist/__tests__/getLayers.test.d.ts +0 -2
- package/dist/__tests__/getLayers.test.d.ts.map +0 -1
- package/dist/__tests__/getLayers.test.js +0 -191
- package/dist/__tests__/getLayers.test.js.map +0 -1
- package/dist/__tests__/haversine.test.d.ts +0 -2
- package/dist/__tests__/haversine.test.d.ts.map +0 -1
- package/dist/__tests__/haversine.test.js +0 -56
- package/dist/__tests__/haversine.test.js.map +0 -1
- package/dist/__tests__/iconResolve.test.d.ts +0 -2
- package/dist/__tests__/iconResolve.test.d.ts.map +0 -1
- package/dist/__tests__/iconResolve.test.js +0 -99
- package/dist/__tests__/iconResolve.test.js.map +0 -1
- package/dist/__tests__/imageEditState.test.d.ts +0 -2
- package/dist/__tests__/imageEditState.test.d.ts.map +0 -1
- package/dist/__tests__/imageEditState.test.js +0 -61
- package/dist/__tests__/imageEditState.test.js.map +0 -1
- package/dist/__tests__/imageEditVersions.test.d.ts +0 -2
- package/dist/__tests__/imageEditVersions.test.d.ts.map +0 -1
- package/dist/__tests__/imageEditVersions.test.js +0 -141
- package/dist/__tests__/imageEditVersions.test.js.map +0 -1
- package/dist/__tests__/inferDocumentTitle.test.d.ts +0 -2
- package/dist/__tests__/inferDocumentTitle.test.d.ts.map +0 -1
- package/dist/__tests__/inferDocumentTitle.test.js +0 -42
- package/dist/__tests__/inferDocumentTitle.test.js.map +0 -1
- package/dist/__tests__/jsonForm.chooseControl.test.d.ts +0 -2
- package/dist/__tests__/jsonForm.chooseControl.test.d.ts.map +0 -1
- package/dist/__tests__/jsonForm.chooseControl.test.js +0 -74
- package/dist/__tests__/jsonForm.chooseControl.test.js.map +0 -1
- package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts +0 -2
- package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts.map +0 -1
- package/dist/__tests__/jsonForm.evaluateWhen.test.js +0 -51
- package/dist/__tests__/jsonForm.evaluateWhen.test.js.map +0 -1
- package/dist/__tests__/jsonForm.inferSchema.test.d.ts +0 -2
- package/dist/__tests__/jsonForm.inferSchema.test.d.ts.map +0 -1
- package/dist/__tests__/jsonForm.inferSchema.test.js +0 -23
- package/dist/__tests__/jsonForm.inferSchema.test.js.map +0 -1
- package/dist/__tests__/jsonForm.pointer.test.d.ts +0 -2
- package/dist/__tests__/jsonForm.pointer.test.d.ts.map +0 -1
- package/dist/__tests__/jsonForm.pointer.test.js +0 -94
- package/dist/__tests__/jsonForm.pointer.test.js.map +0 -1
- package/dist/__tests__/localForageAdapter.test.d.ts +0 -8
- package/dist/__tests__/localForageAdapter.test.d.ts.map +0 -1
- package/dist/__tests__/localForageAdapter.test.js +0 -130
- package/dist/__tests__/localForageAdapter.test.js.map +0 -1
- package/dist/__tests__/markdown.test.d.ts +0 -2
- package/dist/__tests__/markdown.test.d.ts.map +0 -1
- package/dist/__tests__/markdown.test.js +0 -715
- package/dist/__tests__/markdown.test.js.map +0 -1
- package/dist/__tests__/markdownIcons.test.d.ts +0 -2
- package/dist/__tests__/markdownIcons.test.d.ts.map +0 -1
- package/dist/__tests__/markdownIcons.test.js +0 -93
- package/dist/__tests__/markdownIcons.test.js.map +0 -1
- package/dist/__tests__/markdownToDoc.test.d.ts +0 -2
- package/dist/__tests__/markdownToDoc.test.d.ts.map +0 -1
- package/dist/__tests__/markdownToDoc.test.js +0 -458
- package/dist/__tests__/markdownToDoc.test.js.map +0 -1
- package/dist/__tests__/recommendTemplates.test.d.ts +0 -2
- package/dist/__tests__/recommendTemplates.test.d.ts.map +0 -1
- package/dist/__tests__/recommendTemplates.test.js +0 -158
- package/dist/__tests__/recommendTemplates.test.js.map +0 -1
- package/dist/__tests__/scopedContentContainer.test.d.ts +0 -2
- package/dist/__tests__/scopedContentContainer.test.d.ts.map +0 -1
- package/dist/__tests__/scopedContentContainer.test.js +0 -74
- package/dist/__tests__/scopedContentContainer.test.js.map +0 -1
- package/dist/__tests__/seededRandom.test.d.ts +0 -2
- package/dist/__tests__/seededRandom.test.d.ts.map +0 -1
- package/dist/__tests__/seededRandom.test.js +0 -125
- package/dist/__tests__/seededRandom.test.js.map +0 -1
- package/dist/__tests__/slideshowGenerator.test.d.ts +0 -2
- package/dist/__tests__/slideshowGenerator.test.d.ts.map +0 -1
- package/dist/__tests__/slideshowGenerator.test.js +0 -114
- package/dist/__tests__/slideshowGenerator.test.js.map +0 -1
- package/dist/__tests__/storage.test.d.ts +0 -2
- package/dist/__tests__/storage.test.d.ts.map +0 -1
- package/dist/__tests__/storage.test.js +0 -51
- package/dist/__tests__/storage.test.js.map +0 -1
- package/dist/__tests__/surface.test.d.ts +0 -2
- package/dist/__tests__/surface.test.d.ts.map +0 -1
- package/dist/__tests__/surface.test.js +0 -57
- package/dist/__tests__/surface.test.js.map +0 -1
- package/dist/__tests__/templateAnnotationParse.test.d.ts +0 -2
- package/dist/__tests__/templateAnnotationParse.test.d.ts.map +0 -1
- package/dist/__tests__/templateAnnotationParse.test.js +0 -42
- package/dist/__tests__/templateAnnotationParse.test.js.map +0 -1
- package/dist/__tests__/templates.test.d.ts +0 -2
- package/dist/__tests__/templates.test.d.ts.map +0 -1
- package/dist/__tests__/templates.test.js +0 -298
- package/dist/__tests__/templates.test.js.map +0 -1
- package/dist/__tests__/themeCompile.test.d.ts +0 -2
- package/dist/__tests__/themeCompile.test.d.ts.map +0 -1
- package/dist/__tests__/themeCompile.test.js +0 -134
- package/dist/__tests__/themeCompile.test.js.map +0 -1
- package/dist/__tests__/themeValidator.test.d.ts +0 -2
- package/dist/__tests__/themeValidator.test.d.ts.map +0 -1
- package/dist/__tests__/themeValidator.test.js +0 -107
- package/dist/__tests__/themeValidator.test.js.map +0 -1
- package/dist/__tests__/timing.test.d.ts +0 -2
- package/dist/__tests__/timing.test.d.ts.map +0 -1
- package/dist/__tests__/timing.test.js +0 -131
- package/dist/__tests__/timing.test.js.map +0 -1
- package/dist/__tests__/versions.test.d.ts +0 -2
- package/dist/__tests__/versions.test.d.ts.map +0 -1
- package/dist/__tests__/versions.test.js +0 -339
- package/dist/__tests__/versions.test.js.map +0 -1
- package/dist/doc/audioMapping.d.ts +0 -36
- package/dist/doc/audioMapping.d.ts.map +0 -1
- package/dist/doc/audioMapping.js +0 -350
- package/dist/doc/audioMapping.js.map +0 -1
- package/dist/doc/docToMarkdown.d.ts +0 -41
- package/dist/doc/docToMarkdown.d.ts.map +0 -1
- package/dist/doc/docToMarkdown.js +0 -88
- package/dist/doc/docToMarkdown.js.map +0 -1
- package/dist/doc/getLayers.d.ts +0 -65
- package/dist/doc/getLayers.d.ts.map +0 -1
- package/dist/doc/getLayers.js +0 -114
- package/dist/doc/getLayers.js.map +0 -1
- package/dist/doc/index.d.ts.map +0 -1
- package/dist/doc/markdownToDoc.d.ts +0 -75
- package/dist/doc/markdownToDoc.d.ts.map +0 -1
- package/dist/doc/markdownToDoc.js +0 -432
- package/dist/doc/markdownToDoc.js.map +0 -1
- package/dist/doc/templates/accentImage.d.ts +0 -59
- package/dist/doc/templates/accentImage.d.ts.map +0 -1
- package/dist/doc/templates/accentImage.js +0 -275
- package/dist/doc/templates/accentImage.js.map +0 -1
- package/dist/doc/templates/captionUtils.d.ts +0 -20
- package/dist/doc/templates/captionUtils.d.ts.map +0 -1
- package/dist/doc/templates/captionUtils.js +0 -29
- package/dist/doc/templates/captionUtils.js.map +0 -1
- package/dist/doc/templates/comparisonBar.d.ts +0 -13
- package/dist/doc/templates/comparisonBar.d.ts.map +0 -1
- package/dist/doc/templates/comparisonBar.js +0 -145
- package/dist/doc/templates/comparisonBar.js.map +0 -1
- package/dist/doc/templates/coverBlock.d.ts +0 -51
- package/dist/doc/templates/coverBlock.d.ts.map +0 -1
- package/dist/doc/templates/coverBlock.js +0 -153
- package/dist/doc/templates/coverBlock.js.map +0 -1
- package/dist/doc/templates/dataTable.d.ts +0 -14
- package/dist/doc/templates/dataTable.d.ts.map +0 -1
- package/dist/doc/templates/dataTable.js +0 -73
- package/dist/doc/templates/dataTable.js.map +0 -1
- package/dist/doc/templates/dateEvent.d.ts +0 -15
- package/dist/doc/templates/dateEvent.d.ts.map +0 -1
- package/dist/doc/templates/dateEvent.js +0 -114
- package/dist/doc/templates/dateEvent.js.map +0 -1
- package/dist/doc/templates/definitionCard.d.ts +0 -13
- package/dist/doc/templates/definitionCard.d.ts.map +0 -1
- package/dist/doc/templates/definitionCard.js +0 -117
- package/dist/doc/templates/definitionCard.js.map +0 -1
- package/dist/doc/templates/factCard.d.ts +0 -15
- package/dist/doc/templates/factCard.d.ts.map +0 -1
- package/dist/doc/templates/factCard.js +0 -104
- package/dist/doc/templates/factCard.js.map +0 -1
- package/dist/doc/templates/featureBlock.d.ts +0 -18
- package/dist/doc/templates/featureBlock.d.ts.map +0 -1
- package/dist/doc/templates/featureBlock.js +0 -180
- package/dist/doc/templates/featureBlock.js.map +0 -1
- package/dist/doc/templates/fullBleedQuote.d.ts +0 -25
- package/dist/doc/templates/fullBleedQuote.d.ts.map +0 -1
- package/dist/doc/templates/fullBleedQuote.js +0 -67
- package/dist/doc/templates/fullBleedQuote.js.map +0 -1
- package/dist/doc/templates/imageWithCaption.d.ts +0 -13
- package/dist/doc/templates/imageWithCaption.d.ts.map +0 -1
- package/dist/doc/templates/imageWithCaption.js +0 -146
- package/dist/doc/templates/imageWithCaption.js.map +0 -1
- package/dist/doc/templates/index.d.ts +0 -129
- package/dist/doc/templates/index.d.ts.map +0 -1
- package/dist/doc/templates/index.js +0 -478
- package/dist/doc/templates/index.js.map +0 -1
- package/dist/doc/templates/listBlock.d.ts +0 -13
- package/dist/doc/templates/listBlock.d.ts.map +0 -1
- package/dist/doc/templates/listBlock.js +0 -109
- package/dist/doc/templates/listBlock.js.map +0 -1
- package/dist/doc/templates/mapBlock.d.ts +0 -17
- package/dist/doc/templates/mapBlock.d.ts.map +0 -1
- package/dist/doc/templates/mapBlock.js +0 -115
- package/dist/doc/templates/mapBlock.js.map +0 -1
- package/dist/doc/templates/persistentLayers.d.ts +0 -39
- package/dist/doc/templates/persistentLayers.d.ts.map +0 -1
- package/dist/doc/templates/persistentLayers.js +0 -447
- package/dist/doc/templates/persistentLayers.js.map +0 -1
- package/dist/doc/templates/photoGrid.d.ts +0 -20
- package/dist/doc/templates/photoGrid.d.ts.map +0 -1
- package/dist/doc/templates/photoGrid.js +0 -175
- package/dist/doc/templates/photoGrid.js.map +0 -1
- package/dist/doc/templates/pullQuote.d.ts +0 -13
- package/dist/doc/templates/pullQuote.d.ts.map +0 -1
- package/dist/doc/templates/pullQuote.js +0 -113
- package/dist/doc/templates/pullQuote.js.map +0 -1
- package/dist/doc/templates/quoteBlock.d.ts +0 -15
- package/dist/doc/templates/quoteBlock.d.ts.map +0 -1
- package/dist/doc/templates/quoteBlock.js +0 -101
- package/dist/doc/templates/quoteBlock.js.map +0 -1
- package/dist/doc/templates/sectionHeader.d.ts +0 -14
- package/dist/doc/templates/sectionHeader.d.ts.map +0 -1
- package/dist/doc/templates/sectionHeader.js +0 -97
- package/dist/doc/templates/sectionHeader.js.map +0 -1
- package/dist/doc/templates/statHighlight.d.ts +0 -27
- package/dist/doc/templates/statHighlight.d.ts.map +0 -1
- package/dist/doc/templates/statHighlight.js +0 -114
- package/dist/doc/templates/statHighlight.js.map +0 -1
- package/dist/doc/templates/titleBlock.d.ts +0 -24
- package/dist/doc/templates/titleBlock.d.ts.map +0 -1
- package/dist/doc/templates/titleBlock.js +0 -103
- package/dist/doc/templates/titleBlock.js.map +0 -1
- package/dist/doc/templates/twoColumn.d.ts +0 -15
- package/dist/doc/templates/twoColumn.d.ts.map +0 -1
- package/dist/doc/templates/twoColumn.js +0 -225
- package/dist/doc/templates/twoColumn.js.map +0 -1
- package/dist/doc/templates/videoPullQuote.d.ts +0 -20
- package/dist/doc/templates/videoPullQuote.d.ts.map +0 -1
- package/dist/doc/templates/videoPullQuote.js +0 -122
- package/dist/doc/templates/videoPullQuote.js.map +0 -1
- package/dist/doc/templates/videoWithCaption.d.ts +0 -20
- package/dist/doc/templates/videoWithCaption.d.ts.map +0 -1
- package/dist/doc/templates/videoWithCaption.js +0 -107
- package/dist/doc/templates/videoWithCaption.js.map +0 -1
- package/dist/doc/utils/animationUtils.d.ts +0 -34
- package/dist/doc/utils/animationUtils.d.ts.map +0 -1
- package/dist/doc/utils/animationUtils.js +0 -110
- package/dist/doc/utils/animationUtils.js.map +0 -1
- package/dist/doc/utils/themeUtils.d.ts +0 -64
- package/dist/doc/utils/themeUtils.d.ts.map +0 -1
- package/dist/doc/utils/themeUtils.js +0 -136
- package/dist/doc/utils/themeUtils.js.map +0 -1
- package/dist/generate/contentExtractor.d.ts +0 -112
- package/dist/generate/contentExtractor.d.ts.map +0 -1
- package/dist/generate/contentExtractor.js +0 -638
- package/dist/generate/contentExtractor.js.map +0 -1
- package/dist/generate/index.d.ts.map +0 -1
- package/dist/generate/slideshowGenerator.d.ts +0 -72
- package/dist/generate/slideshowGenerator.d.ts.map +0 -1
- package/dist/generate/slideshowGenerator.js +0 -159
- package/dist/generate/slideshowGenerator.js.map +0 -1
- package/dist/generate/templateMapper.d.ts +0 -23
- package/dist/generate/templateMapper.d.ts.map +0 -1
- package/dist/generate/templateMapper.js +0 -114
- package/dist/generate/templateMapper.js.map +0 -1
- package/dist/icons/iconData.d.ts +0 -26
- package/dist/icons/iconData.d.ts.map +0 -1
- package/dist/icons/iconData.js +0 -12
- package/dist/icons/iconData.js.map +0 -1
- package/dist/icons/index.d.ts.map +0 -1
- package/dist/icons/resolve.d.ts +0 -61
- package/dist/icons/resolve.d.ts.map +0 -1
- package/dist/icons/resolve.js +0 -130
- package/dist/icons/resolve.js.map +0 -1
- package/dist/imageEdit/ImageEditVersionManager.d.ts +0 -31
- package/dist/imageEdit/ImageEditVersionManager.d.ts.map +0 -1
- package/dist/imageEdit/ImageEditVersionManager.js +0 -39
- package/dist/imageEdit/ImageEditVersionManager.js.map +0 -1
- package/dist/imageEdit/export.d.ts +0 -33
- package/dist/imageEdit/export.d.ts.map +0 -1
- package/dist/imageEdit/export.js +0 -253
- package/dist/imageEdit/export.js.map +0 -1
- package/dist/imageEdit/index.d.ts.map +0 -1
- package/dist/imageEdit/persistence.d.ts +0 -15
- package/dist/imageEdit/persistence.d.ts.map +0 -1
- package/dist/imageEdit/persistence.js +0 -49
- package/dist/imageEdit/persistence.js.map +0 -1
- package/dist/imageEdit/state.d.ts +0 -42
- package/dist/imageEdit/state.d.ts.map +0 -1
- package/dist/imageEdit/state.js +0 -98
- package/dist/imageEdit/state.js.map +0 -1
- package/dist/imageEdit/versionPaths.d.ts +0 -27
- package/dist/imageEdit/versionPaths.d.ts.map +0 -1
- package/dist/imageEdit/versionPaths.js +0 -57
- package/dist/imageEdit/versionPaths.js.map +0 -1
- package/dist/imageEdit/versions.d.ts +0 -67
- package/dist/imageEdit/versions.d.ts.map +0 -1
- package/dist/imageEdit/versions.js +0 -161
- package/dist/imageEdit/versions.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/jsonForm/chooseControl.d.ts +0 -20
- package/dist/jsonForm/chooseControl.d.ts.map +0 -1
- package/dist/jsonForm/chooseControl.js +0 -82
- package/dist/jsonForm/chooseControl.js.map +0 -1
- package/dist/jsonForm/evaluateWhen.d.ts +0 -12
- package/dist/jsonForm/evaluateWhen.d.ts.map +0 -1
- package/dist/jsonForm/evaluateWhen.js +0 -65
- package/dist/jsonForm/evaluateWhen.js.map +0 -1
- package/dist/jsonForm/index.d.ts.map +0 -1
- package/dist/jsonForm/inferSchema.d.ts +0 -12
- package/dist/jsonForm/inferSchema.d.ts.map +0 -1
- package/dist/jsonForm/inferSchema.js +0 -15
- package/dist/jsonForm/inferSchema.js.map +0 -1
- package/dist/jsonForm/pointer.d.ts +0 -26
- package/dist/jsonForm/pointer.d.ts.map +0 -1
- package/dist/jsonForm/pointer.js +0 -102
- package/dist/jsonForm/pointer.js.map +0 -1
- package/dist/jsonForm/types.d.ts +0 -120
- package/dist/jsonForm/types.d.ts.map +0 -1
- package/dist/jsonForm/types.js +0 -10
- package/dist/jsonForm/types.js.map +0 -1
- package/dist/markdown/convert.d.ts +0 -81
- package/dist/markdown/convert.d.ts.map +0 -1
- package/dist/markdown/convert.js +0 -975
- package/dist/markdown/convert.js.map +0 -1
- package/dist/markdown/htmlParse.d.ts +0 -26
- package/dist/markdown/htmlParse.d.ts.map +0 -1
- package/dist/markdown/htmlParse.js +0 -195
- package/dist/markdown/htmlParse.js.map +0 -1
- package/dist/markdown/index.d.ts.map +0 -1
- package/dist/markdown/parse.d.ts +0 -27
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js +0 -90
- package/dist/markdown/parse.js.map +0 -1
- package/dist/markdown/stringify.d.ts +0 -32
- package/dist/markdown/stringify.d.ts.map +0 -1
- package/dist/markdown/stringify.js +0 -108
- package/dist/markdown/stringify.js.map +0 -1
- package/dist/markdown/types.d.ts +0 -531
- package/dist/markdown/types.d.ts.map +0 -1
- package/dist/markdown/types.js +0 -17
- package/dist/markdown/types.js.map +0 -1
- package/dist/markdown/utils.d.ts +0 -118
- package/dist/markdown/utils.d.ts.map +0 -1
- package/dist/markdown/utils.js +0 -308
- package/dist/markdown/utils.js.map +0 -1
- package/dist/random/SeededRandom.d.ts +0 -50
- package/dist/random/SeededRandom.d.ts.map +0 -1
- package/dist/random/SeededRandom.js +0 -115
- package/dist/random/SeededRandom.js.map +0 -1
- package/dist/random/index.d.ts.map +0 -1
- package/dist/recommend/index.d.ts.map +0 -1
- package/dist/recommend/templates.d.ts +0 -39
- package/dist/recommend/templates.d.ts.map +0 -1
- package/dist/recommend/templates.js +0 -235
- package/dist/recommend/templates.js.map +0 -1
- package/dist/schemas/BlockTemplates.d.ts +0 -638
- package/dist/schemas/BlockTemplates.d.ts.map +0 -1
- package/dist/schemas/BlockTemplates.js +0 -72
- package/dist/schemas/BlockTemplates.js.map +0 -1
- package/dist/schemas/Doc.d.ts +0 -503
- package/dist/schemas/Doc.d.ts.map +0 -1
- package/dist/schemas/Doc.js +0 -90
- package/dist/schemas/Doc.js.map +0 -1
- package/dist/schemas/ImageEditDoc.d.ts +0 -81
- package/dist/schemas/ImageEditDoc.d.ts.map +0 -1
- package/dist/schemas/ImageEditDoc.js +0 -20
- package/dist/schemas/ImageEditDoc.js.map +0 -1
- package/dist/schemas/LayoutStrategy.d.ts +0 -84
- package/dist/schemas/LayoutStrategy.d.ts.map +0 -1
- package/dist/schemas/LayoutStrategy.js +0 -123
- package/dist/schemas/LayoutStrategy.js.map +0 -1
- package/dist/schemas/MediaProvider.d.ts +0 -65
- package/dist/schemas/MediaProvider.d.ts.map +0 -1
- package/dist/schemas/MediaProvider.js +0 -13
- package/dist/schemas/MediaProvider.js.map +0 -1
- package/dist/schemas/Theme.d.ts +0 -233
- package/dist/schemas/Theme.d.ts.map +0 -1
- package/dist/schemas/Theme.js +0 -129
- package/dist/schemas/Theme.js.map +0 -1
- package/dist/schemas/Types.d.ts +0 -14
- package/dist/schemas/Types.d.ts.map +0 -1
- package/dist/schemas/Types.js +0 -5
- package/dist/schemas/Types.js.map +0 -1
- package/dist/schemas/Viewport.d.ts +0 -74
- package/dist/schemas/Viewport.d.ts.map +0 -1
- package/dist/schemas/Viewport.js +0 -63
- package/dist/schemas/Viewport.js.map +0 -1
- package/dist/schemas/colorUtils.d.ts +0 -51
- package/dist/schemas/colorUtils.d.ts.map +0 -1
- package/dist/schemas/colorUtils.js +0 -154
- package/dist/schemas/colorUtils.js.map +0 -1
- package/dist/schemas/fontStacks.d.ts +0 -57
- package/dist/schemas/fontStacks.d.ts.map +0 -1
- package/dist/schemas/fontStacks.js +0 -227
- package/dist/schemas/fontStacks.js.map +0 -1
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/themeCompile.d.ts +0 -45
- package/dist/schemas/themeCompile.d.ts.map +0 -1
- package/dist/schemas/themeCompile.js +0 -160
- package/dist/schemas/themeCompile.js.map +0 -1
- package/dist/schemas/themeLibrary.d.ts +0 -37
- package/dist/schemas/themeLibrary.d.ts.map +0 -1
- package/dist/schemas/themeLibrary.js +0 -49
- package/dist/schemas/themeLibrary.js.map +0 -1
- package/dist/schemas/themeValidator.d.ts +0 -26
- package/dist/schemas/themeValidator.d.ts.map +0 -1
- package/dist/schemas/themeValidator.js +0 -352
- package/dist/schemas/themeValidator.js.map +0 -1
- package/dist/schemas/themes/bold.json +0 -48
- package/dist/schemas/themes/cinematic.json +0 -54
- package/dist/schemas/themes/documentary.json +0 -49
- package/dist/schemas/themes/gezellig.json +0 -44
- package/dist/schemas/themes/index.d.ts +0 -26
- package/dist/schemas/themes/index.d.ts.map +0 -1
- package/dist/schemas/themes/index.js +0 -49
- package/dist/schemas/themes/index.js.map +0 -1
- package/dist/schemas/themes/magazine.json +0 -44
- package/dist/schemas/themes/minimalist.json +0 -45
- package/dist/schemas/themes/morning-light.json +0 -42
- package/dist/schemas/themes/standard-dark.json +0 -50
- package/dist/schemas/themes/standard.json +0 -42
- package/dist/schemas/themes/tech-dark.json +0 -48
- package/dist/schemas/themes/warm-earth.json +0 -50
- package/dist/spatial/Geohash.d.ts +0 -85
- package/dist/spatial/Geohash.d.ts.map +0 -1
- package/dist/spatial/Geohash.js +0 -142
- package/dist/spatial/Geohash.js.map +0 -1
- package/dist/spatial/Haversine.d.ts +0 -24
- package/dist/spatial/Haversine.d.ts.map +0 -1
- package/dist/spatial/Haversine.js +0 -48
- package/dist/spatial/Haversine.js.map +0 -1
- package/dist/spatial/index.d.ts.map +0 -1
- package/dist/storage/ContentContainer.d.ts +0 -87
- package/dist/storage/ContentContainer.d.ts.map +0 -1
- package/dist/storage/ContentContainer.js +0 -131
- package/dist/storage/ContentContainer.js.map +0 -1
- package/dist/storage/LocalForageAdapter.d.ts +0 -36
- package/dist/storage/LocalForageAdapter.d.ts.map +0 -1
- package/dist/storage/LocalForageAdapter.js +0 -82
- package/dist/storage/LocalForageAdapter.js.map +0 -1
- package/dist/storage/LocalStorageAdapter.d.ts +0 -16
- package/dist/storage/LocalStorageAdapter.d.ts.map +0 -1
- package/dist/storage/LocalStorageAdapter.js +0 -50
- package/dist/storage/LocalStorageAdapter.js.map +0 -1
- package/dist/storage/MediaProviderFromContainer.d.ts +0 -21
- package/dist/storage/MediaProviderFromContainer.d.ts.map +0 -1
- package/dist/storage/MediaProviderFromContainer.js +0 -79
- package/dist/storage/MediaProviderFromContainer.js.map +0 -1
- package/dist/storage/MemoryStorageAdapter.d.ts +0 -15
- package/dist/storage/MemoryStorageAdapter.d.ts.map +0 -1
- package/dist/storage/MemoryStorageAdapter.js +0 -34
- package/dist/storage/MemoryStorageAdapter.js.map +0 -1
- package/dist/storage/ScopedContentContainer.d.ts +0 -44
- package/dist/storage/ScopedContentContainer.d.ts.map +0 -1
- package/dist/storage/ScopedContentContainer.js +0 -94
- package/dist/storage/ScopedContentContainer.js.map +0 -1
- package/dist/storage/Storage.d.ts +0 -23
- package/dist/storage/Storage.d.ts.map +0 -1
- package/dist/storage/Storage.js +0 -9
- package/dist/storage/Storage.js.map +0 -1
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/timing/index.d.ts.map +0 -1
- package/dist/timing/narrationTiming.d.ts +0 -54
- package/dist/timing/narrationTiming.d.ts.map +0 -1
- package/dist/timing/narrationTiming.js +0 -190
- package/dist/timing/narrationTiming.js.map +0 -1
- package/dist/timing/readingTime.d.ts +0 -54
- package/dist/timing/readingTime.d.ts.map +0 -1
- package/dist/timing/readingTime.js +0 -49
- package/dist/timing/readingTime.js.map +0 -1
- package/dist/transform/applyTransform.d.ts +0 -22
- package/dist/transform/applyTransform.d.ts.map +0 -1
- package/dist/transform/applyTransform.js +0 -68
- package/dist/transform/applyTransform.js.map +0 -1
- package/dist/transform/blockAnalyzer.d.ts +0 -48
- package/dist/transform/blockAnalyzer.d.ts.map +0 -1
- package/dist/transform/blockAnalyzer.js +0 -135
- package/dist/transform/blockAnalyzer.js.map +0 -1
- package/dist/transform/index.d.ts.map +0 -1
- package/dist/transform/registry.d.ts +0 -19
- package/dist/transform/registry.d.ts.map +0 -1
- package/dist/transform/registry.js +0 -41
- package/dist/transform/registry.js.map +0 -1
- package/dist/transform/styles/dataDriven.d.ts +0 -4
- package/dist/transform/styles/dataDriven.d.ts.map +0 -1
- package/dist/transform/styles/dataDriven.js +0 -15
- package/dist/transform/styles/dataDriven.js.map +0 -1
- package/dist/transform/styles/documentary.d.ts +0 -4
- package/dist/transform/styles/documentary.d.ts.map +0 -1
- package/dist/transform/styles/documentary.js +0 -15
- package/dist/transform/styles/documentary.js.map +0 -1
- package/dist/transform/styles/index.d.ts +0 -6
- package/dist/transform/styles/index.d.ts.map +0 -1
- package/dist/transform/styles/index.js +0 -6
- package/dist/transform/styles/index.js.map +0 -1
- package/dist/transform/styles/magazine.d.ts +0 -4
- package/dist/transform/styles/magazine.d.ts.map +0 -1
- package/dist/transform/styles/magazine.js +0 -15
- package/dist/transform/styles/magazine.js.map +0 -1
- package/dist/transform/styles/minimal.d.ts +0 -4
- package/dist/transform/styles/minimal.d.ts.map +0 -1
- package/dist/transform/styles/minimal.js +0 -15
- package/dist/transform/styles/minimal.js.map +0 -1
- package/dist/transform/styles/narrative.d.ts +0 -4
- package/dist/transform/styles/narrative.d.ts.map +0 -1
- package/dist/transform/styles/narrative.js +0 -15
- package/dist/transform/styles/narrative.js.map +0 -1
- package/dist/transform/templateSelector.d.ts +0 -30
- package/dist/transform/templateSelector.d.ts.map +0 -1
- package/dist/transform/templateSelector.js +0 -218
- package/dist/transform/templateSelector.js.map +0 -1
- package/dist/transform/timingAllocator.d.ts +0 -21
- package/dist/transform/timingAllocator.d.ts.map +0 -1
- package/dist/transform/timingAllocator.js +0 -111
- package/dist/transform/timingAllocator.js.map +0 -1
- package/dist/transform/types.d.ts +0 -86
- package/dist/transform/types.d.ts.map +0 -1
- package/dist/transform/types.js +0 -9
- package/dist/transform/types.js.map +0 -1
- package/dist/versions/DocumentVersionManager.d.ts +0 -31
- package/dist/versions/DocumentVersionManager.d.ts.map +0 -1
- package/dist/versions/DocumentVersionManager.js +0 -33
- package/dist/versions/DocumentVersionManager.js.map +0 -1
- package/dist/versions/index.d.ts.map +0 -1
- package/dist/versions/operations.d.ts +0 -44
- package/dist/versions/operations.d.ts.map +0 -1
- package/dist/versions/operations.js +0 -190
- package/dist/versions/operations.js.map +0 -1
- package/dist/versions/paths.d.ts +0 -29
- package/dist/versions/paths.d.ts.map +0 -1
- package/dist/versions/paths.js +0 -66
- package/dist/versions/paths.js.map +0 -1
- package/dist/versions/timestamp.d.ts +0 -22
- package/dist/versions/timestamp.d.ts.map +0 -1
- package/dist/versions/timestamp.js +0 -44
- package/dist/versions/timestamp.js.map +0 -1
- package/dist/versions/types.d.ts +0 -92
- package/dist/versions/types.d.ts.map +0 -1
- package/dist/versions/types.js +0 -11
- package/dist/versions/types.js.map +0 -1
package/dist/doc/getLayers.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* getLayers — Compute visual layers for a block on demand.
|
|
3
|
-
*
|
|
4
|
-
* This is the preferred way to obtain renderable layers for a block.
|
|
5
|
-
* Instead of storing pre-computed layers on the Block object, call
|
|
6
|
-
* `getLayers(block, context)` to derive them from the block's template
|
|
7
|
-
* name, content, and the current render context (theme, viewport, etc.).
|
|
8
|
-
*
|
|
9
|
-
* For raw blocks that already carry a `layers` array, those layers are
|
|
10
|
-
* returned directly (with optional persistent layer injection).
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* import { getLayers } from '@bendyline/squisq/doc';
|
|
15
|
-
*
|
|
16
|
-
* const layers = getLayers(block, {
|
|
17
|
-
* theme: DEFAULT_THEME,
|
|
18
|
-
* viewport: VIEWPORT_PRESETS.landscape,
|
|
19
|
-
* blockIndex: 0,
|
|
20
|
-
* totalBlocks: 10,
|
|
21
|
-
* });
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
import { VIEWPORT_PRESETS } from '../schemas/Viewport.js';
|
|
25
|
-
import { createTemplateContext, isTemplateBlock } from '../schemas/BlockTemplates.js';
|
|
26
|
-
import { DEFAULT_THEME } from '../schemas/themeLibrary.js';
|
|
27
|
-
import { templateRegistry, resolveTemplateName } from './templates/index.js';
|
|
28
|
-
import { expandPersistentLayers } from './templates/persistentLayers.js';
|
|
29
|
-
// ============================================
|
|
30
|
-
// getLayers
|
|
31
|
-
// ============================================
|
|
32
|
-
/**
|
|
33
|
-
* Compute the visual layers for a block.
|
|
34
|
-
*
|
|
35
|
-
* Resolution order:
|
|
36
|
-
* 1. If the block already has a non-empty `layers` array, use it (raw block).
|
|
37
|
-
* 2. If the block has a `template` name that exists in the registry,
|
|
38
|
-
* call the template function to generate layers.
|
|
39
|
-
* 3. Otherwise return an empty array.
|
|
40
|
-
*
|
|
41
|
-
* Persistent layers (bottom/top) from the render context are injected
|
|
42
|
-
* around the result unless the block opts out via `useBottomLayer: false`
|
|
43
|
-
* or `useTopLayer: false`.
|
|
44
|
-
*
|
|
45
|
-
* @param block A Block or TemplateBlock to render.
|
|
46
|
-
* @param context Render context (theme, viewport, persistent layers, position).
|
|
47
|
-
* @returns The computed Layer[] for the block, ready for BlockRenderer.
|
|
48
|
-
*/
|
|
49
|
-
export function getLayers(block, context = {}) {
|
|
50
|
-
const theme = context.theme ?? DEFAULT_THEME;
|
|
51
|
-
const viewport = context.viewport ?? VIEWPORT_PRESETS.landscape;
|
|
52
|
-
const blockIndex = context.blockIndex ?? 0;
|
|
53
|
-
const totalBlocks = context.totalBlocks ?? 1;
|
|
54
|
-
// 1. Raw block path: block already has pre-computed layers
|
|
55
|
-
const existingLayers = block.layers;
|
|
56
|
-
if (existingLayers && existingLayers.length > 0 && !isTemplateBlock(block)) {
|
|
57
|
-
return injectPersistentLayers(existingLayers, block, context);
|
|
58
|
-
}
|
|
59
|
-
// 2. Template path: look up and call the template function.
|
|
60
|
-
//
|
|
61
|
-
// Resolve through TEMPLATE_ALIASES so legacy ids (`titleBlock`,
|
|
62
|
-
// `quoteBlock`, `mapBlock`, `listBlock`) hit the registry by their
|
|
63
|
-
// canonical short names. Without this the block-section path renders
|
|
64
|
-
// an empty SVG card: `hasTemplate()` accepts the alias (so
|
|
65
|
-
// `isAnnotatedBlock` returns true and the card wrapper renders), but
|
|
66
|
-
// a raw `block.template in templateRegistry` check below misses it
|
|
67
|
-
// and the layer list comes back empty.
|
|
68
|
-
if (isTemplateBlock(block)) {
|
|
69
|
-
const resolved = resolveTemplateName(block.template);
|
|
70
|
-
if (resolved in templateRegistry) {
|
|
71
|
-
const templateName = resolved;
|
|
72
|
-
const templateCtx = createTemplateContext(theme, blockIndex, totalBlocks, viewport);
|
|
73
|
-
let layers;
|
|
74
|
-
try {
|
|
75
|
-
// Each registry entry accepts its specific TemplateBlock variant; the
|
|
76
|
-
// discriminated union guarantees the shapes match at runtime.
|
|
77
|
-
const templateFn = templateRegistry[templateName];
|
|
78
|
-
layers = templateFn(block, templateCtx);
|
|
79
|
-
if (!Array.isArray(layers)) {
|
|
80
|
-
console.error(`Template ${templateName} did not return an array, got:`, typeof layers);
|
|
81
|
-
layers = [];
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch (err) {
|
|
85
|
-
console.error(`Error expanding template ${templateName}:`, err);
|
|
86
|
-
layers = [];
|
|
87
|
-
}
|
|
88
|
-
return injectPersistentLayers(layers, block, context);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// 3. Fallback: no layers and no known template
|
|
92
|
-
return injectPersistentLayers([], block, context);
|
|
93
|
-
}
|
|
94
|
-
// ============================================
|
|
95
|
-
// Internal helpers
|
|
96
|
-
// ============================================
|
|
97
|
-
/**
|
|
98
|
-
* Inject persistent bottom/top layers around the block's own layers,
|
|
99
|
-
* respecting per-block opt-out flags.
|
|
100
|
-
*/
|
|
101
|
-
function injectPersistentLayers(layers, block, context) {
|
|
102
|
-
const { persistentLayers } = context;
|
|
103
|
-
if (!persistentLayers)
|
|
104
|
-
return layers;
|
|
105
|
-
const bottomLayers = expandPersistentLayers(persistentLayers.bottomLayers);
|
|
106
|
-
const topLayers = expandPersistentLayers(persistentLayers.topLayers);
|
|
107
|
-
if (bottomLayers.length === 0 && topLayers.length === 0)
|
|
108
|
-
return layers;
|
|
109
|
-
const templateBlock = block;
|
|
110
|
-
const useBottom = templateBlock.useBottomLayer !== false;
|
|
111
|
-
const useTop = templateBlock.useTopLayer !== false;
|
|
112
|
-
return [...(useBottom ? bottomLayers : []), ...layers, ...(useTop ? topLayers : [])];
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=getLayers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getLayers.js","sourceRoot":"","sources":["../../src/doc/getLayers.ts"],"names":[],"mappings":"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"}
|
package/dist/doc/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9F,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Markdown → Doc Conversion
|
|
3
|
-
*
|
|
4
|
-
* Converts a MarkdownDocument into a hierarchical Doc whose Block tree
|
|
5
|
-
* mirrors the heading structure of the markdown. Every heading (H1–H6)
|
|
6
|
-
* becomes a Block; body content between headings populates `contents`;
|
|
7
|
-
* sub-headings nest as `children`.
|
|
8
|
-
*
|
|
9
|
-
* This enables using BlockTemplates to supply alternate visualizations
|
|
10
|
-
* for each section of a markdown document.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* import { parseMarkdown } from '@bendyline/squisq/markdown';
|
|
15
|
-
* import { markdownToDoc } from '@bendyline/squisq/doc';
|
|
16
|
-
*
|
|
17
|
-
* const md = parseMarkdown('# Intro\n\nHello world\n\n## Details\n\nMore text');
|
|
18
|
-
* const doc = markdownToDoc(md);
|
|
19
|
-
* // doc.blocks[0].sourceHeading.depth === 1 ("# Intro")
|
|
20
|
-
* // doc.blocks[0].contents → [paragraph("Hello world")]
|
|
21
|
-
* // doc.blocks[0].children[0].sourceHeading.depth === 2 ("## Details")
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
import type { Doc, Block } from '../schemas/Doc.js';
|
|
25
|
-
import type { MarkdownDocument, MarkdownHeading } from '../markdown/types.js';
|
|
26
|
-
/**
|
|
27
|
-
* Options for markdownToDoc().
|
|
28
|
-
*/
|
|
29
|
-
export interface MarkdownToDocOptions {
|
|
30
|
-
/** Article ID for the generated Doc. Default: 'markdown-doc' */
|
|
31
|
-
articleId?: string;
|
|
32
|
-
/** Default template name for heading blocks. Default: 'sectionHeader' */
|
|
33
|
-
defaultTemplate?: string;
|
|
34
|
-
/** Default duration per block in seconds. Default: 5 */
|
|
35
|
-
defaultDuration?: number;
|
|
36
|
-
/** Custom ID generator. Receives the heading node and its index. */
|
|
37
|
-
generateId?: (heading: MarkdownHeading, index: number) => string;
|
|
38
|
-
/**
|
|
39
|
-
* Whether to auto-generate a cover startBlock from the first H1 heading.
|
|
40
|
-
* When true (default), a StartBlockConfig is created using the first H1's
|
|
41
|
-
* text as the title. If the document contains an image, the first image
|
|
42
|
-
* is used as the hero. Set to false to suppress automatic cover generation.
|
|
43
|
-
*/
|
|
44
|
-
generateCoverBlock?: boolean;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Convert a MarkdownDocument into a Doc with a heading-driven Block hierarchy.
|
|
48
|
-
*
|
|
49
|
-
* **Algorithm:**
|
|
50
|
-
* 1. Walk the document's top-level children sequentially
|
|
51
|
-
* 2. Each MarkdownHeading starts a new block at its depth level
|
|
52
|
-
* 3. Non-heading nodes accumulate as `contents` on the current block
|
|
53
|
-
* 4. Sub-headings (deeper depth) nest as `children` of the current block
|
|
54
|
-
* 5. Same-level or shallower headings close the current block and start a sibling/ancestor
|
|
55
|
-
* 6. Content before the first heading goes into a "preamble" block with no sourceHeading
|
|
56
|
-
*
|
|
57
|
-
* @param markdownDoc - A parsed MarkdownDocument
|
|
58
|
-
* @param options - Conversion options
|
|
59
|
-
* @returns A Doc whose blocks mirror the markdown heading structure
|
|
60
|
-
*/
|
|
61
|
-
export declare function markdownToDoc(markdownDoc: MarkdownDocument, options?: MarkdownToDocOptions): Doc;
|
|
62
|
-
/**
|
|
63
|
-
* Flatten a nested block tree into a depth-first ordered array.
|
|
64
|
-
* Useful for calculating sequential timing or iterating all blocks.
|
|
65
|
-
*/
|
|
66
|
-
export declare function flattenBlocks(blocks: Block[]): Block[];
|
|
67
|
-
/**
|
|
68
|
-
* Count the total number of blocks in a nested tree (including children at all levels).
|
|
69
|
-
*/
|
|
70
|
-
export declare function countBlocks(blocks: Block[]): number;
|
|
71
|
-
/**
|
|
72
|
-
* Get the heading depth for a block. Returns 0 for preamble blocks (no heading).
|
|
73
|
-
*/
|
|
74
|
-
export declare function getBlockDepth(block: Block): number;
|
|
75
|
-
//# sourceMappingURL=markdownToDoc.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdownToDoc.d.ts","sourceRoot":"","sources":["../../src/doc/markdownToDoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAiD,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAS9B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAEjE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAiDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,GAAG,CAqLhG;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAStD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAElD"}
|
|
@@ -1,432 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Markdown → Doc Conversion
|
|
3
|
-
*
|
|
4
|
-
* Converts a MarkdownDocument into a hierarchical Doc whose Block tree
|
|
5
|
-
* mirrors the heading structure of the markdown. Every heading (H1–H6)
|
|
6
|
-
* becomes a Block; body content between headings populates `contents`;
|
|
7
|
-
* sub-headings nest as `children`.
|
|
8
|
-
*
|
|
9
|
-
* This enables using BlockTemplates to supply alternate visualizations
|
|
10
|
-
* for each section of a markdown document.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* import { parseMarkdown } from '@bendyline/squisq/markdown';
|
|
15
|
-
* import { markdownToDoc } from '@bendyline/squisq/doc';
|
|
16
|
-
*
|
|
17
|
-
* const md = parseMarkdown('# Intro\n\nHello world\n\n## Details\n\nMore text');
|
|
18
|
-
* const doc = markdownToDoc(md);
|
|
19
|
-
* // doc.blocks[0].sourceHeading.depth === 1 ("# Intro")
|
|
20
|
-
* // doc.blocks[0].contents → [paragraph("Hello world")]
|
|
21
|
-
* // doc.blocks[0].children[0].sourceHeading.depth === 2 ("## Details")
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
import { extractPlainText } from '../markdown/utils.js';
|
|
25
|
-
import { estimateReadingTime } from '../timing/readingTime.js';
|
|
26
|
-
import { resolveTemplateName } from './templates/index.js';
|
|
27
|
-
// ============================================
|
|
28
|
-
// ID Generation
|
|
29
|
-
// ============================================
|
|
30
|
-
/**
|
|
31
|
-
* Convert text to a URL-friendly slug.
|
|
32
|
-
* "Getting Started & More" → "getting-started-more"
|
|
33
|
-
*/
|
|
34
|
-
const SLUG_NON_WORD_RE = /[^\w\s-]/g;
|
|
35
|
-
const SLUG_SPACES_RE = /[\s_]+/g;
|
|
36
|
-
const SLUG_MULTI_HYPHEN_RE = /-+/g;
|
|
37
|
-
const SLUG_TRIM_HYPHEN_RE = /^-|-$/g;
|
|
38
|
-
function slugify(text) {
|
|
39
|
-
return (text
|
|
40
|
-
.toLowerCase()
|
|
41
|
-
.replace(SLUG_NON_WORD_RE, '') // Remove non-word chars (except spaces and hyphens)
|
|
42
|
-
.replace(SLUG_SPACES_RE, '-') // Replace spaces/underscores with hyphens
|
|
43
|
-
.replace(SLUG_MULTI_HYPHEN_RE, '-') // Collapse multiple hyphens
|
|
44
|
-
.replace(SLUG_TRIM_HYPHEN_RE, '') || // Trim leading/trailing hyphens
|
|
45
|
-
'block'); // Fallback for empty result
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Creates an ID generator that produces unique slugified IDs.
|
|
49
|
-
* Appends -2, -3, etc. for duplicate headings.
|
|
50
|
-
*/
|
|
51
|
-
function createIdGenerator() {
|
|
52
|
-
const used = new Map();
|
|
53
|
-
return (heading, _index) => {
|
|
54
|
-
const text = extractPlainText(heading);
|
|
55
|
-
const base = slugify(text);
|
|
56
|
-
const count = used.get(base) ?? 0;
|
|
57
|
-
used.set(base, count + 1);
|
|
58
|
-
if (count === 0)
|
|
59
|
-
return base;
|
|
60
|
-
return `${base}-${count + 1}`;
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
// ============================================
|
|
64
|
-
// Core Conversion
|
|
65
|
-
// ============================================
|
|
66
|
-
/**
|
|
67
|
-
* Convert a MarkdownDocument into a Doc with a heading-driven Block hierarchy.
|
|
68
|
-
*
|
|
69
|
-
* **Algorithm:**
|
|
70
|
-
* 1. Walk the document's top-level children sequentially
|
|
71
|
-
* 2. Each MarkdownHeading starts a new block at its depth level
|
|
72
|
-
* 3. Non-heading nodes accumulate as `contents` on the current block
|
|
73
|
-
* 4. Sub-headings (deeper depth) nest as `children` of the current block
|
|
74
|
-
* 5. Same-level or shallower headings close the current block and start a sibling/ancestor
|
|
75
|
-
* 6. Content before the first heading goes into a "preamble" block with no sourceHeading
|
|
76
|
-
*
|
|
77
|
-
* @param markdownDoc - A parsed MarkdownDocument
|
|
78
|
-
* @param options - Conversion options
|
|
79
|
-
* @returns A Doc whose blocks mirror the markdown heading structure
|
|
80
|
-
*/
|
|
81
|
-
export function markdownToDoc(markdownDoc, options) {
|
|
82
|
-
const articleId = options?.articleId ?? 'markdown-doc';
|
|
83
|
-
const defaultTemplate = options?.defaultTemplate ?? 'sectionHeader';
|
|
84
|
-
const defaultDuration = options?.defaultDuration ?? 5;
|
|
85
|
-
const generateId = options?.generateId ?? createIdGenerator();
|
|
86
|
-
const rootBlocks = [];
|
|
87
|
-
let headingIndex = 0;
|
|
88
|
-
// Stack tracks the nesting context: each entry is a block and its heading depth.
|
|
89
|
-
// We push when we go deeper, pop when we come back up.
|
|
90
|
-
const stack = [];
|
|
91
|
-
// Accumulator for content nodes that appear before any heading (preamble)
|
|
92
|
-
// or between the current heading and the next heading/sub-heading.
|
|
93
|
-
let pendingContents = [];
|
|
94
|
-
let currentBlock = null;
|
|
95
|
-
function flushContents() {
|
|
96
|
-
if (currentBlock && pendingContents.length > 0) {
|
|
97
|
-
currentBlock.contents = (currentBlock.contents ?? []).concat(pendingContents);
|
|
98
|
-
pendingContents = [];
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
function makeBlock(heading) {
|
|
102
|
-
const id = heading ? generateId(heading, headingIndex++) : 'preamble';
|
|
103
|
-
// Use template from annotation if present, otherwise fall back to default.
|
|
104
|
-
// Legacy template ids (e.g. `titleBlock`) are normalized to their canonical
|
|
105
|
-
// short form (`title`) so downstream comparisons can rely on the new names
|
|
106
|
-
// without sprinkling alias resolution everywhere.
|
|
107
|
-
const annotation = heading?.templateAnnotation;
|
|
108
|
-
const rawTemplate = annotation?.template ?? (heading ? defaultTemplate : undefined);
|
|
109
|
-
const template = rawTemplate != null ? resolveTemplateName(rawTemplate) : undefined;
|
|
110
|
-
// Extract heading text so templates (e.g. sectionHeader) that expect a
|
|
111
|
-
// `title` property receive it without having to reach into sourceHeading.
|
|
112
|
-
const title = heading ? extractPlainText(heading) : undefined;
|
|
113
|
-
const block = {
|
|
114
|
-
id,
|
|
115
|
-
startTime: 0,
|
|
116
|
-
duration: defaultDuration,
|
|
117
|
-
audioSegment: 0,
|
|
118
|
-
template,
|
|
119
|
-
...(heading ? { sourceHeading: heading } : {}),
|
|
120
|
-
...(title ? { title } : {}),
|
|
121
|
-
};
|
|
122
|
-
// Propagate key-value params from annotation to templateOverrides
|
|
123
|
-
if (annotation?.params) {
|
|
124
|
-
block.templateOverrides = annotation.params;
|
|
125
|
-
}
|
|
126
|
-
return block;
|
|
127
|
-
}
|
|
128
|
-
for (const node of markdownDoc.children) {
|
|
129
|
-
if (node.type === 'heading') {
|
|
130
|
-
const heading = node;
|
|
131
|
-
const depth = heading.depth;
|
|
132
|
-
// Flush any accumulated content to the current block
|
|
133
|
-
flushContents();
|
|
134
|
-
// Create the new block for this heading
|
|
135
|
-
const newBlock = makeBlock(heading);
|
|
136
|
-
if (stack.length === 0) {
|
|
137
|
-
// If there's a preamble block with no heading, push it first
|
|
138
|
-
if (currentBlock && !currentBlock.sourceHeading) {
|
|
139
|
-
rootBlocks.push(currentBlock);
|
|
140
|
-
}
|
|
141
|
-
// This is a root-level block (or the first heading)
|
|
142
|
-
rootBlocks.push(newBlock);
|
|
143
|
-
stack.push({ block: newBlock, depth });
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
// Find where this heading fits in the hierarchy
|
|
147
|
-
// Pop blocks from the stack until we find a parent with lower depth
|
|
148
|
-
while (stack.length > 0 && stack[stack.length - 1].depth >= depth) {
|
|
149
|
-
stack.pop();
|
|
150
|
-
}
|
|
151
|
-
if (stack.length === 0) {
|
|
152
|
-
// Same level as root or shallower — new root block
|
|
153
|
-
rootBlocks.push(newBlock);
|
|
154
|
-
stack.push({ block: newBlock, depth });
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
// Deeper — child of the current stack top
|
|
158
|
-
const parent = stack[stack.length - 1].block;
|
|
159
|
-
if (!parent.children)
|
|
160
|
-
parent.children = [];
|
|
161
|
-
parent.children.push(newBlock);
|
|
162
|
-
stack.push({ block: newBlock, depth });
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
currentBlock = newBlock;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
// Non-heading block node — accumulate as content
|
|
169
|
-
if (!currentBlock) {
|
|
170
|
-
// Content before any heading → create preamble block
|
|
171
|
-
currentBlock = makeBlock(null);
|
|
172
|
-
}
|
|
173
|
-
pendingContents.push(node);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
// Flush remaining content
|
|
177
|
-
flushContents();
|
|
178
|
-
// If we only had preamble content (no headings at all), push it
|
|
179
|
-
if (currentBlock && !currentBlock.sourceHeading && !rootBlocks.includes(currentBlock)) {
|
|
180
|
-
rootBlocks.push(currentBlock);
|
|
181
|
-
}
|
|
182
|
-
// Calculate reading-time-based durations and generate captions
|
|
183
|
-
const allBlocks = flattenBlocks(rootBlocks);
|
|
184
|
-
const minDuration = 3; // seconds — minimum for blocks with little/no text
|
|
185
|
-
const phrases = [];
|
|
186
|
-
// First pass: compute duration from body-content reading time
|
|
187
|
-
for (const block of allBlocks) {
|
|
188
|
-
const bodyText = getBlockBodyText(block);
|
|
189
|
-
if (bodyText.length > 0) {
|
|
190
|
-
const estimate = estimateReadingTime(bodyText);
|
|
191
|
-
block.duration = Math.max(minDuration, estimate.seconds);
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
block.duration = defaultDuration;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
// Second pass: assign start times sequentially and build caption phrases
|
|
198
|
-
let currentTime = 0;
|
|
199
|
-
for (const block of allBlocks) {
|
|
200
|
-
block.startTime = currentTime;
|
|
201
|
-
// Generate caption phrases from the block's body content
|
|
202
|
-
const bodyText = getBlockBodyText(block);
|
|
203
|
-
if (bodyText.length > 0) {
|
|
204
|
-
const sentences = splitIntoSentences(bodyText);
|
|
205
|
-
if (sentences.length > 0) {
|
|
206
|
-
const timePerSentence = block.duration / sentences.length;
|
|
207
|
-
for (let i = 0; i < sentences.length; i++) {
|
|
208
|
-
phrases.push({
|
|
209
|
-
text: sentences[i],
|
|
210
|
-
startTime: currentTime + i * timePerSentence,
|
|
211
|
-
endTime: currentTime + (i + 1) * timePerSentence,
|
|
212
|
-
audioSegment: 0,
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
currentTime += block.duration;
|
|
218
|
-
}
|
|
219
|
-
const captions = phrases.length > 0 ? { phrases, generatedAt: new Date().toISOString(), version: 1 } : undefined;
|
|
220
|
-
const doc = {
|
|
221
|
-
articleId,
|
|
222
|
-
duration: currentTime,
|
|
223
|
-
blocks: rootBlocks,
|
|
224
|
-
audio: {
|
|
225
|
-
segments: [],
|
|
226
|
-
},
|
|
227
|
-
...(captions ? { captions } : {}),
|
|
228
|
-
...(markdownDoc.frontmatter ? { frontmatter: markdownDoc.frontmatter } : {}),
|
|
229
|
-
};
|
|
230
|
-
// Auto-generate cover startBlock from the first H1 heading
|
|
231
|
-
if (options?.generateCoverBlock ?? true) {
|
|
232
|
-
const coverConfig = buildStartBlock(markdownDoc, rootBlocks);
|
|
233
|
-
if (coverConfig) {
|
|
234
|
-
doc.startBlock = coverConfig;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
return doc;
|
|
238
|
-
}
|
|
239
|
-
// ============================================
|
|
240
|
-
// Utilities
|
|
241
|
-
// ============================================
|
|
242
|
-
/**
|
|
243
|
-
* Flatten a nested block tree into a depth-first ordered array.
|
|
244
|
-
* Useful for calculating sequential timing or iterating all blocks.
|
|
245
|
-
*/
|
|
246
|
-
export function flattenBlocks(blocks) {
|
|
247
|
-
const result = [];
|
|
248
|
-
for (const block of blocks) {
|
|
249
|
-
result.push(block);
|
|
250
|
-
if (block.children) {
|
|
251
|
-
result.push(...flattenBlocks(block.children));
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
return result;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Count the total number of blocks in a nested tree (including children at all levels).
|
|
258
|
-
*/
|
|
259
|
-
export function countBlocks(blocks) {
|
|
260
|
-
let count = 0;
|
|
261
|
-
for (const block of blocks) {
|
|
262
|
-
count += 1;
|
|
263
|
-
if (block.children) {
|
|
264
|
-
count += countBlocks(block.children);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return count;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Get the heading depth for a block. Returns 0 for preamble blocks (no heading).
|
|
271
|
-
*/
|
|
272
|
-
export function getBlockDepth(block) {
|
|
273
|
-
return block.sourceHeading?.depth ?? 0;
|
|
274
|
-
}
|
|
275
|
-
// ============================================
|
|
276
|
-
// Internal helpers
|
|
277
|
-
// ============================================
|
|
278
|
-
/**
|
|
279
|
-
* Extract the plain text from a block's body contents (excluding heading text).
|
|
280
|
-
*/
|
|
281
|
-
function getBlockBodyText(block) {
|
|
282
|
-
if (!block.contents || block.contents.length === 0)
|
|
283
|
-
return '';
|
|
284
|
-
// Join with newlines to preserve paragraph/list-item boundaries.
|
|
285
|
-
// splitIntoPhrases uses these newlines as natural split points.
|
|
286
|
-
return block.contents
|
|
287
|
-
.map((node) => extractPlainText(node))
|
|
288
|
-
.join('\n')
|
|
289
|
-
.trim();
|
|
290
|
-
}
|
|
291
|
-
/** Maximum words per caption phrase. Long sentences get split at this point. */
|
|
292
|
-
const MAX_PHRASE_WORDS = 12;
|
|
293
|
-
/**
|
|
294
|
-
* Split text into caption-sized phrases.
|
|
295
|
-
*
|
|
296
|
-
* Splits on:
|
|
297
|
-
* 1. Newlines (paragraph/list-item boundaries from markdown)
|
|
298
|
-
* 2. Sentence endings (.!?) followed by whitespace
|
|
299
|
-
* 3. Long fragments (> MAX_PHRASE_WORDS) at clause boundaries (commas, semicolons, dashes)
|
|
300
|
-
*
|
|
301
|
-
* Merges very short fragments (< 15 chars) with the previous phrase.
|
|
302
|
-
*/
|
|
303
|
-
function splitIntoSentences(text) {
|
|
304
|
-
// First split on newlines (each paragraph/list item becomes separate)
|
|
305
|
-
const lines = text
|
|
306
|
-
.split(/\n+/)
|
|
307
|
-
.map((s) => s.trim())
|
|
308
|
-
.filter((s) => s.length > 0);
|
|
309
|
-
// Then split each line on sentence boundaries
|
|
310
|
-
const sentenceRe = /(?<=[.!?])\s+/;
|
|
311
|
-
const fragments = [];
|
|
312
|
-
for (const line of lines) {
|
|
313
|
-
const sentences = line
|
|
314
|
-
.split(sentenceRe)
|
|
315
|
-
.map((s) => s.trim())
|
|
316
|
-
.filter((s) => s.length > 0);
|
|
317
|
-
fragments.push(...sentences);
|
|
318
|
-
}
|
|
319
|
-
if (fragments.length === 0)
|
|
320
|
-
return [];
|
|
321
|
-
// Split long fragments at clause boundaries
|
|
322
|
-
const split = [];
|
|
323
|
-
for (const frag of fragments) {
|
|
324
|
-
const words = frag.split(/\s+/);
|
|
325
|
-
if (words.length > MAX_PHRASE_WORDS) {
|
|
326
|
-
// Try to split at comma, semicolon, or dash near the midpoint
|
|
327
|
-
const mid = Math.floor(frag.length / 2);
|
|
328
|
-
const clauseRe = /[,;]\s+|\s+—\s+|\s+-\s+/g;
|
|
329
|
-
let bestSplit = -1;
|
|
330
|
-
let bestDist = Infinity;
|
|
331
|
-
let match;
|
|
332
|
-
while ((match = clauseRe.exec(frag)) !== null) {
|
|
333
|
-
const dist = Math.abs(match.index - mid);
|
|
334
|
-
if (dist < bestDist) {
|
|
335
|
-
bestDist = dist;
|
|
336
|
-
bestSplit = match.index + match[0].length;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
if (bestSplit > 0 && bestSplit < frag.length - 5) {
|
|
340
|
-
split.push(frag.slice(0, bestSplit).trim());
|
|
341
|
-
split.push(frag.slice(bestSplit).trim());
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
split.push(frag);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
split.push(frag);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
// Merge very short fragments (< 15 chars) with the previous phrase
|
|
352
|
-
const merged = [split[0]];
|
|
353
|
-
for (let i = 1; i < split.length; i++) {
|
|
354
|
-
if (split[i].length < 15 && merged.length > 0) {
|
|
355
|
-
merged[merged.length - 1] += ' ' + split[i];
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
merged.push(split[i]);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
return merged;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Walk a parsed HTML sub-tree depth-first for an `<img>` with a `src`.
|
|
365
|
-
* Used to surface images that the WYSIWYG editor serialized as raw HTML
|
|
366
|
-
* (e.g. when an image was resized — markdown's `` shorthand
|
|
367
|
-
* has no width syntax, so resized images round-trip as `<img src width>`).
|
|
368
|
-
*/
|
|
369
|
-
function findFirstHtmlImage(nodes) {
|
|
370
|
-
for (const node of nodes) {
|
|
371
|
-
if (node.type !== 'htmlElement')
|
|
372
|
-
continue;
|
|
373
|
-
if (node.tagName === 'img' && node.attributes.src) {
|
|
374
|
-
return { url: node.attributes.src, alt: node.attributes.alt };
|
|
375
|
-
}
|
|
376
|
-
const nested = findFirstHtmlImage(node.children);
|
|
377
|
-
if (nested)
|
|
378
|
-
return nested;
|
|
379
|
-
}
|
|
380
|
-
return undefined;
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Walk a MarkdownNode tree depth-first to find the first image reference,
|
|
384
|
-
* whether expressed as a markdown image node or a raw HTML `<img>` tag.
|
|
385
|
-
*/
|
|
386
|
-
function findFirstImage(node) {
|
|
387
|
-
if (node.type === 'image') {
|
|
388
|
-
const img = node;
|
|
389
|
-
return { url: img.url, alt: img.alt };
|
|
390
|
-
}
|
|
391
|
-
if (node.type === 'htmlBlock' || node.type === 'htmlInline') {
|
|
392
|
-
const html = node;
|
|
393
|
-
if (html.htmlChildren) {
|
|
394
|
-
const found = findFirstHtmlImage(html.htmlChildren);
|
|
395
|
-
if (found)
|
|
396
|
-
return found;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
if ('children' in node && Array.isArray(node.children)) {
|
|
400
|
-
for (const child of node.children) {
|
|
401
|
-
const found = findFirstImage(child);
|
|
402
|
-
if (found)
|
|
403
|
-
return found;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
return undefined;
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Build a StartBlockConfig from the document's first H1 heading and optional
|
|
410
|
-
* first image. Returns undefined if the document has no H1 heading.
|
|
411
|
-
*/
|
|
412
|
-
function buildStartBlock(markdownDoc, rootBlocks) {
|
|
413
|
-
// Find the first H1 block — it provides the cover title
|
|
414
|
-
const firstH1 = rootBlocks.find((b) => b.sourceHeading?.depth === 1);
|
|
415
|
-
if (!firstH1)
|
|
416
|
-
return undefined;
|
|
417
|
-
const title = firstH1.title ?? extractPlainText(firstH1.sourceHeading);
|
|
418
|
-
if (!title)
|
|
419
|
-
return undefined;
|
|
420
|
-
// Look for the first paragraph immediately after the H1 to use as subtitle
|
|
421
|
-
const subtitle = firstH1.contents?.[0]?.type === 'paragraph' ? extractPlainText(firstH1.contents[0]) : undefined;
|
|
422
|
-
// Scan the whole document for the first image to use as the hero
|
|
423
|
-
const firstImage = findFirstImage(markdownDoc);
|
|
424
|
-
const config = {
|
|
425
|
-
title,
|
|
426
|
-
...(subtitle ? { subtitle } : {}),
|
|
427
|
-
...(firstImage ? { heroSrc: firstImage.url, heroAlt: firstImage.alt ?? title } : {}),
|
|
428
|
-
ambientMotion: 'zoomIn',
|
|
429
|
-
};
|
|
430
|
-
return config;
|
|
431
|
-
}
|
|
432
|
-
//# sourceMappingURL=markdownToDoc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdownToDoc.js","sourceRoot":"","sources":["../../src/doc/markdownToDoc.ts"],"names":[],"mappings":"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"}
|