@bendyline/squisq 1.3.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-Ch4tc3vv.d.ts → Doc-BeSeH2iX.d.ts} +118 -41
- package/dist/ImageEditDoc-BTIvw0oq.d.ts +84 -0
- package/dist/{chunk-CYQHG27J.js → chunk-2TMAWB4Y.js} +74 -1
- package/dist/chunk-2TMAWB4Y.js.map +1 -0
- package/dist/{chunk-OASJKWO5.js → chunk-3K5OG6KI.js} +92 -7
- package/dist/chunk-3K5OG6KI.js.map +1 -0
- package/dist/chunk-57CVQCFX.js +193 -0
- package/dist/chunk-57CVQCFX.js.map +1 -0
- package/dist/{chunk-QM5PKNPW.js → chunk-5WFRKURX.js} +1 -1
- package/dist/chunk-5WFRKURX.js.map +1 -0
- package/dist/chunk-B4EEON3N.js +1317 -0
- package/dist/chunk-B4EEON3N.js.map +1 -0
- package/dist/chunk-DBS6RIFL.js +81 -0
- package/dist/chunk-DBS6RIFL.js.map +1 -0
- package/dist/{chunk-MIBRIRGJ.js → chunk-FR2RBTKO.js} +3 -3
- package/dist/{chunk-MIBRIRGJ.js.map → chunk-FR2RBTKO.js.map} +1 -1
- package/dist/chunk-H3AXU4MJ.js +179 -0
- package/dist/chunk-H3AXU4MJ.js.map +1 -0
- package/dist/chunk-JELIRVDP.js +24 -0
- package/dist/chunk-JELIRVDP.js.map +1 -0
- package/dist/chunk-K32VJONL.js +193 -0
- package/dist/chunk-K32VJONL.js.map +1 -0
- package/dist/{chunk-6BAVXFYC.js → chunk-KSWJR66U.js} +218 -42
- package/dist/chunk-KSWJR66U.js.map +1 -0
- package/dist/{chunk-TSG2OSE6.js → chunk-MYIH7FWD.js} +3 -3
- package/dist/chunk-MYIH7FWD.js.map +1 -0
- package/dist/chunk-VLJJHDAC.js +218 -0
- package/dist/chunk-VLJJHDAC.js.map +1 -0
- package/dist/chunk-WMOI7FN3.js +182 -0
- package/dist/chunk-WMOI7FN3.js.map +1 -0
- package/dist/chunk-ZTX4PFFT.js +520 -0
- package/dist/chunk-ZTX4PFFT.js.map +1 -0
- 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 +87 -0
- package/dist/icons/index.js +17 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/imageEdit/index.d.ts +216 -0
- package/dist/imageEdit/index.js +54 -0
- package/dist/imageEdit/index.js.map +1 -0
- package/dist/index.d.ts +21 -9
- package/dist/index.js +461 -8
- package/dist/index.js.map +1 -1
- package/dist/jsonForm/index.d.ts +191 -0
- package/dist/jsonForm/index.js +27 -0
- package/dist/jsonForm/index.js.map +1 -0
- 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 +42 -0
- package/dist/recommend/index.js +10 -0
- package/dist/recommend/index.js.map +1 -0
- package/dist/schemas/index.d.ts +188 -10
- package/dist/schemas/index.js +120 -7
- 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 -9
- package/dist/storage/index.js +20 -5
- package/dist/storage/index.js.map +1 -1
- package/dist/story/index.d.ts +53 -13
- package/dist/story/index.js +12 -4
- package/dist/themeLibrary-BHjJ0Qx6.d.ts +40 -0
- 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/{types-CkNttVSF.d.ts → types-BdZkdJ3z.d.ts} +17 -2
- package/dist/types-D98li1gV.d.ts +93 -0
- package/dist/versions/index.d.ts +128 -0
- package/dist/versions/index.js +35 -0
- package/dist/versions/index.js.map +1 -0
- package/package.json +28 -1
- package/src/__tests__/colorUtils.test.ts +112 -0
- package/src/__tests__/getLayers.test.ts +32 -7
- package/src/__tests__/iconResolve.test.ts +122 -0
- package/src/__tests__/imageEditState.test.ts +74 -0
- package/src/__tests__/imageEditVersions.test.ts +169 -0
- package/src/__tests__/inferDocumentTitle.test.ts +50 -0
- package/src/__tests__/jsonForm.chooseControl.test.ts +86 -0
- package/src/__tests__/jsonForm.evaluateWhen.test.ts +59 -0
- package/src/__tests__/jsonForm.inferSchema.test.ts +25 -0
- package/src/__tests__/jsonForm.pointer.test.ts +103 -0
- package/src/__tests__/markdownIcons.test.ts +104 -0
- package/src/__tests__/markdownToDoc.test.ts +19 -4
- package/src/__tests__/recommendTemplates.test.ts +183 -0
- package/src/__tests__/scopedContentContainer.test.ts +89 -0
- package/src/__tests__/slideshowGenerator.test.ts +1 -1
- package/src/__tests__/templateAnnotationParse.test.ts +42 -0
- package/src/__tests__/templates.test.ts +93 -9
- package/src/__tests__/themeCompile.test.ts +156 -0
- package/src/__tests__/themeValidator.test.ts +125 -0
- package/src/__tests__/versions.test.ts +415 -0
- package/src/doc/audioMapping.ts +55 -11
- package/src/doc/getLayers.ts +32 -21
- package/src/doc/markdownToDoc.ts +45 -7
- package/src/doc/templates/featureBlock.ts +202 -0
- package/src/doc/templates/fullBleedQuote.ts +13 -0
- package/src/doc/templates/index.ts +50 -16
- package/src/doc/templates/listBlock.ts +24 -5
- package/src/doc/templates/statHighlight.ts +13 -0
- package/src/doc/templates/titleBlock.ts +9 -0
- package/src/doc/utils/themeUtils.ts +8 -7
- package/src/generate/slideshowGenerator.ts +1 -1
- package/src/generate/templateMapper.ts +2 -2
- package/src/icons/iconData.ts +31 -0
- package/src/icons/index.ts +18 -0
- package/src/icons/resolve.ts +139 -0
- package/src/imageEdit/ImageEditVersionManager.ts +73 -0
- package/src/imageEdit/export.ts +326 -0
- package/src/imageEdit/index.ts +71 -0
- package/src/imageEdit/persistence.ts +62 -0
- package/src/imageEdit/state.ts +112 -0
- package/src/imageEdit/versionPaths.ts +57 -0
- package/src/imageEdit/versions.ts +231 -0
- package/src/index.ts +4 -0
- package/src/jsonForm/chooseControl.ts +88 -0
- package/src/jsonForm/evaluateWhen.ts +59 -0
- package/src/jsonForm/index.ts +22 -0
- package/src/jsonForm/inferSchema.ts +25 -0
- package/src/jsonForm/pointer.ts +109 -0
- package/src/jsonForm/types.ts +167 -0
- package/src/markdown/convert.ts +145 -5
- package/src/markdown/index.ts +3 -0
- package/src/markdown/types.ts +19 -2
- package/src/markdown/utils.ts +159 -0
- package/src/recommend/index.ts +16 -0
- package/src/recommend/templates.ts +273 -0
- package/src/schemas/BlockTemplates.ts +50 -7
- package/src/schemas/ImageEditDoc.ts +95 -0
- package/src/schemas/Theme.ts +98 -31
- package/src/schemas/colorUtils.ts +186 -0
- package/src/schemas/fontStacks.ts +257 -0
- package/src/schemas/index.ts +12 -0
- package/src/schemas/themeCompile.ts +203 -0
- package/src/schemas/themeLibrary.ts +18 -597
- package/src/schemas/themeValidator.ts +388 -0
- package/src/schemas/themes/bold.json +48 -0
- package/src/schemas/themes/cinematic.json +54 -0
- package/src/schemas/themes/documentary.json +49 -0
- package/src/schemas/themes/gezellig.json +44 -0
- package/src/schemas/themes/index.ts +53 -0
- package/src/schemas/themes/magazine.json +44 -0
- package/src/schemas/themes/minimalist.json +45 -0
- package/src/schemas/themes/morning-light.json +42 -0
- package/src/schemas/themes/standard-dark.json +50 -0
- package/src/schemas/themes/standard.json +42 -0
- package/src/schemas/themes/tech-dark.json +48 -0
- package/src/schemas/themes/warm-earth.json +50 -0
- package/src/storage/ScopedContentContainer.ts +113 -0
- package/src/storage/index.ts +1 -0
- package/src/versions/DocumentVersionManager.ts +70 -0
- package/src/versions/index.ts +54 -0
- package/src/versions/operations.ts +230 -0
- package/src/versions/paths.ts +66 -0
- package/src/versions/timestamp.ts +48 -0
- package/src/versions/types.ts +91 -0
- 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__/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 -167
- 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__/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__/markdownToDoc.test.d.ts +0 -2
- package/dist/__tests__/markdownToDoc.test.d.ts.map +0 -1
- package/dist/__tests__/markdownToDoc.test.js +0 -447
- package/dist/__tests__/markdownToDoc.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__/templates.test.d.ts +0 -2
- package/dist/__tests__/templates.test.d.ts.map +0 -1
- package/dist/__tests__/templates.test.js +0 -217
- package/dist/__tests__/templates.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/chunk-6BAVXFYC.js.map +0 -1
- package/dist/chunk-7GF6RDED.js +0 -82
- package/dist/chunk-7GF6RDED.js.map +0 -1
- package/dist/chunk-CYQHG27J.js.map +0 -1
- package/dist/chunk-F22AE6BY.js +0 -121
- package/dist/chunk-F22AE6BY.js.map +0 -1
- package/dist/chunk-FIQR4AJG.js +0 -517
- package/dist/chunk-FIQR4AJG.js.map +0 -1
- package/dist/chunk-OASJKWO5.js.map +0 -1
- package/dist/chunk-QM5PKNPW.js.map +0 -1
- package/dist/chunk-TSG2OSE6.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 -315
- 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 -103
- 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 -398
- 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/fullBleedQuote.d.ts +0 -13
- package/dist/doc/templates/fullBleedQuote.d.ts.map +0 -1
- package/dist/doc/templates/fullBleedQuote.js +0 -55
- 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 -105
- package/dist/doc/templates/index.d.ts.map +0 -1
- package/dist/doc/templates/index.js +0 -445
- 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 -92
- 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 -15
- package/dist/doc/templates/statHighlight.d.ts.map +0 -1
- package/dist/doc/templates/statHighlight.js +0 -102
- package/dist/doc/templates/statHighlight.js.map +0 -1
- package/dist/doc/templates/titleBlock.d.ts +0 -13
- package/dist/doc/templates/titleBlock.d.ts.map +0 -1
- package/dist/doc/templates/titleBlock.js +0 -95
- 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 -135
- 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/index.d.ts.map +0 -1
- package/dist/markdown/convert.d.ts +0 -71
- package/dist/markdown/convert.d.ts.map +0 -1
- package/dist/markdown/convert.js +0 -845
- 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 -516
- 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 -78
- package/dist/markdown/utils.d.ts.map +0 -1
- package/dist/markdown/utils.js +0 -153
- 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/schemas/BlockTemplates.d.ts +0 -600
- 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/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 -194
- package/dist/schemas/Theme.d.ts.map +0 -1
- package/dist/schemas/Theme.js +0 -97
- 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/index.d.ts.map +0 -1
- package/dist/schemas/themeLibrary.d.ts +0 -41
- package/dist/schemas/themeLibrary.d.ts.map +0 -1
- package/dist/schemas/themeLibrary.js +0 -597
- package/dist/schemas/themeLibrary.js.map +0 -1
- 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/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/themeLibrary-CEo2D4b6.d.ts +0 -44
- 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
|
@@ -1,6 +1,175 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { j as ColorScheme, s as Doc, B as Block } from '../Doc-BeSeH2iX.js';
|
|
2
|
+
import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
|
|
3
|
+
import '../types-BdZkdJ3z.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Transform Types
|
|
7
|
+
*
|
|
8
|
+
* Defines the type system for doc block transforms — algorithms that take
|
|
9
|
+
* an existing Doc and produce a new Doc with blocks optimized for visual
|
|
10
|
+
* presentation. Transforms are read-only on the input and deterministic.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** Identifier for a registered transform style. */
|
|
14
|
+
type TransformStyleId = string;
|
|
15
|
+
/** Summary info for UI dropdowns (mirrors getThemeSummaries pattern). */
|
|
16
|
+
interface TransformStyleSummary {
|
|
17
|
+
id: TransformStyleId;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
}
|
|
21
|
+
/** Declarative configuration controlling how a style transforms content. */
|
|
22
|
+
interface TransformStyleConfig {
|
|
23
|
+
/** Unique style identifier. */
|
|
24
|
+
id: TransformStyleId;
|
|
25
|
+
/** Human-readable name for UI display. */
|
|
26
|
+
name: string;
|
|
27
|
+
/** Short description for UI tooltips. */
|
|
28
|
+
description: string;
|
|
29
|
+
/**
|
|
30
|
+
* Minimum confidence for extracted elements to become template blocks (0–1).
|
|
31
|
+
* Higher values = fewer but higher-quality transformations.
|
|
32
|
+
*/
|
|
33
|
+
minConfidence: number;
|
|
34
|
+
/**
|
|
35
|
+
* Maximum fraction of blocks that get transformed (0–1).
|
|
36
|
+
* 0.2 = light touch, 0.8 = aggressive restructuring.
|
|
37
|
+
*/
|
|
38
|
+
transformRatio: number;
|
|
39
|
+
/** Which extraction types this style prefers, in priority order. */
|
|
40
|
+
preferredTypes: ExtractionType[];
|
|
41
|
+
/** Color schemes to rotate through on template blocks. */
|
|
42
|
+
colorSchemes: ColorScheme[];
|
|
43
|
+
/** Whether to insert sectionHeader blocks between groups. */
|
|
44
|
+
insertSectionHeaders: boolean;
|
|
45
|
+
/** Whether to interleave imageWithCaption blocks when images are available. */
|
|
46
|
+
interleaveImages: boolean;
|
|
47
|
+
/** Target density of template blocks per section. */
|
|
48
|
+
blocksPerSection: {
|
|
49
|
+
min: number;
|
|
50
|
+
max: number;
|
|
51
|
+
};
|
|
52
|
+
/** Transition style preference for transformed blocks. */
|
|
53
|
+
transitionStyle: 'cut' | 'fade' | 'dissolve' | 'mixed';
|
|
54
|
+
}
|
|
55
|
+
/** Image metadata for image interleaving. */
|
|
56
|
+
interface TransformImage {
|
|
57
|
+
/** Image source path or URL. */
|
|
58
|
+
src: string;
|
|
59
|
+
/** Alt text for accessibility. */
|
|
60
|
+
alt?: string;
|
|
61
|
+
/** Photo credit. */
|
|
62
|
+
credit?: string;
|
|
63
|
+
/** License identifier. */
|
|
64
|
+
license?: string;
|
|
65
|
+
}
|
|
66
|
+
/** Options passed to `applyTransform()`. */
|
|
67
|
+
interface TransformOptions {
|
|
68
|
+
/** Deterministic seed. Default: hash of doc.articleId. */
|
|
69
|
+
seed?: number;
|
|
70
|
+
/** Available images for image interleaving / accent images. */
|
|
71
|
+
images?: TransformImage[];
|
|
72
|
+
/** Theme ID to embed in the output Doc. */
|
|
73
|
+
themeId?: string;
|
|
74
|
+
/** Override specific style config values. */
|
|
75
|
+
overrides?: Partial<TransformStyleConfig>;
|
|
76
|
+
}
|
|
77
|
+
/** Result of applying a transform. */
|
|
78
|
+
interface TransformResult {
|
|
79
|
+
/** The transformed Doc. Input doc is NOT mutated. */
|
|
80
|
+
doc: Doc;
|
|
81
|
+
/** Statistics about what changed. */
|
|
82
|
+
stats: {
|
|
83
|
+
totalInputBlocks: number;
|
|
84
|
+
transformedBlocks: number;
|
|
85
|
+
insertedBlocks: number;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Apply Transform
|
|
91
|
+
*
|
|
92
|
+
* Main entry point for the transform module. Takes a Doc and a style,
|
|
93
|
+
* analyzes block content, selects extractions to promote, and returns
|
|
94
|
+
* a new Doc with blocks optimized for visual presentation.
|
|
95
|
+
*
|
|
96
|
+
* The input Doc is never mutated — a fresh Doc is always returned.
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Apply a transform style to a Doc, producing a new Doc with blocks
|
|
101
|
+
* optimized for visual presentation.
|
|
102
|
+
*
|
|
103
|
+
* @param doc - The source Doc (not mutated).
|
|
104
|
+
* @param styleId - Registered transform style id (e.g. 'documentary', 'magazine').
|
|
105
|
+
* @param options - Optional seed, images, theme override.
|
|
106
|
+
* @returns TransformResult with the new Doc and stats.
|
|
107
|
+
*/
|
|
108
|
+
declare function applyTransform(doc: Doc, styleId: TransformStyleId, options?: TransformOptions): TransformResult;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Transform Style Registry
|
|
112
|
+
*
|
|
113
|
+
* Central registry of built-in transform styles. Follows the same pattern
|
|
114
|
+
* as themeLibrary.ts — a record of configs with lookup/summary helpers.
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
/** Default style used when no id is provided. */
|
|
118
|
+
declare const DEFAULT_TRANSFORM_STYLE_ID = "documentary";
|
|
119
|
+
/**
|
|
120
|
+
* Resolve a transform style by id.
|
|
121
|
+
* Returns the default style if the id is not found.
|
|
122
|
+
*/
|
|
123
|
+
declare function resolveTransformStyle(id: string): TransformStyleConfig;
|
|
124
|
+
/** Get all registered style ids. */
|
|
125
|
+
declare function getTransformStyleIds(): string[];
|
|
126
|
+
/** Get summary info for all styles (for UI dropdowns). */
|
|
127
|
+
declare function getTransformStyleSummaries(): TransformStyleSummary[];
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Block Analyzer
|
|
131
|
+
*
|
|
132
|
+
* Walks Doc blocks, extracts plain text from their markdown contents,
|
|
133
|
+
* and runs the content extractor on each block to identify stats, dates,
|
|
134
|
+
* quotes, etc. that can be promoted to visual template blocks.
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
/** An image found in a block's markdown contents. */
|
|
138
|
+
interface BlockImage {
|
|
139
|
+
/** Image URL (relative or absolute). */
|
|
140
|
+
src: string;
|
|
141
|
+
/** Alt text. */
|
|
142
|
+
alt: string;
|
|
143
|
+
/** Index of the source block in the analyzed array. */
|
|
144
|
+
sourceBlockIndex: number;
|
|
145
|
+
}
|
|
146
|
+
/** A block enriched with extraction analysis. */
|
|
147
|
+
interface AnalyzedBlock {
|
|
148
|
+
/** The original block. */
|
|
149
|
+
block: Block;
|
|
150
|
+
/** Plain text extracted from the block's contents. */
|
|
151
|
+
plainText: string;
|
|
152
|
+
/** Content extractions found in the block's text. */
|
|
153
|
+
extractions: ExtractedElement[];
|
|
154
|
+
/** Whether this block has child blocks. */
|
|
155
|
+
hasChildren: boolean;
|
|
156
|
+
/** Word count of the block's body text. */
|
|
157
|
+
bodyWordCount: number;
|
|
158
|
+
/** Images found in this block's markdown contents. */
|
|
159
|
+
images: BlockImage[];
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Collect all unique images from all blocks in a Doc.
|
|
163
|
+
* Returns them as TransformImages for use in the transform pipeline.
|
|
164
|
+
*/
|
|
165
|
+
declare function extractDocImages(blocks: Block[]): TransformImage[];
|
|
166
|
+
/**
|
|
167
|
+
* Analyze all blocks in a Doc, extracting text and running content extraction.
|
|
168
|
+
*
|
|
169
|
+
* @param blocks - The Doc's block array (may be nested via children).
|
|
170
|
+
* @param options - Extraction options (minConfidence, types filter).
|
|
171
|
+
* @returns Analyzed blocks with extractions, in flattened order.
|
|
172
|
+
*/
|
|
173
|
+
declare function analyzeBlocks(blocks: Block[], options?: ExtractionOptions): AnalyzedBlock[];
|
|
174
|
+
|
|
175
|
+
export { type AnalyzedBlock, type BlockImage, DEFAULT_TRANSFORM_STYLE_ID, type TransformImage, type TransformOptions, type TransformResult, type TransformStyleConfig, type TransformStyleId, type TransformStyleSummary, analyzeBlocks, applyTransform, extractDocImages, getTransformStyleIds, getTransformStyleSummaries, resolveTransformStyle };
|
package/dist/transform/index.js
CHANGED
|
@@ -1,4 +1,491 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import {
|
|
2
|
+
extractContent,
|
|
3
|
+
mapElementToBlock,
|
|
4
|
+
stripMarkdown
|
|
5
|
+
} from "../chunk-FR2RBTKO.js";
|
|
6
|
+
import {
|
|
7
|
+
SeededRandom,
|
|
8
|
+
hashString
|
|
9
|
+
} from "../chunk-FVTQSNR7.js";
|
|
10
|
+
import {
|
|
11
|
+
isTemplateBlock
|
|
12
|
+
} from "../chunk-5WFRKURX.js";
|
|
13
|
+
import {
|
|
14
|
+
extractPlainText,
|
|
15
|
+
getChildren
|
|
16
|
+
} from "../chunk-H3AXU4MJ.js";
|
|
17
|
+
|
|
18
|
+
// src/transform/styles/documentary.ts
|
|
19
|
+
var documentaryStyle = {
|
|
20
|
+
id: "documentary",
|
|
21
|
+
name: "Documentary",
|
|
22
|
+
description: "Conservative \u2014 highlights only the strongest stats, dates, and quotes",
|
|
23
|
+
minConfidence: 0.5,
|
|
24
|
+
transformRatio: 0.3,
|
|
25
|
+
preferredTypes: ["stat", "date", "quote", "fact"],
|
|
26
|
+
colorSchemes: ["blue", "green", "purple"],
|
|
27
|
+
insertSectionHeaders: false,
|
|
28
|
+
interleaveImages: true,
|
|
29
|
+
blocksPerSection: { min: 1, max: 3 },
|
|
30
|
+
transitionStyle: "fade"
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// src/transform/styles/magazine.ts
|
|
34
|
+
var magazineStyle = {
|
|
35
|
+
id: "magazine",
|
|
36
|
+
name: "Magazine",
|
|
37
|
+
description: "Visual variety with pull quotes, facts, and rich image layouts",
|
|
38
|
+
minConfidence: 0.4,
|
|
39
|
+
transformRatio: 0.6,
|
|
40
|
+
preferredTypes: ["quote", "fact", "list", "definition", "stat", "impactLine"],
|
|
41
|
+
colorSchemes: ["blue", "green", "purple", "orange", "red"],
|
|
42
|
+
insertSectionHeaders: true,
|
|
43
|
+
interleaveImages: true,
|
|
44
|
+
blocksPerSection: { min: 2, max: 5 },
|
|
45
|
+
transitionStyle: "dissolve"
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/transform/styles/dataDriven.ts
|
|
49
|
+
var dataDrivenStyle = {
|
|
50
|
+
id: "data-driven",
|
|
51
|
+
name: "Data-Driven",
|
|
52
|
+
description: "Aggressively highlights statistics, comparisons, and timelines",
|
|
53
|
+
minConfidence: 0.3,
|
|
54
|
+
transformRatio: 0.8,
|
|
55
|
+
preferredTypes: ["stat", "comparison", "date", "list", "fact"],
|
|
56
|
+
colorSchemes: ["blue", "orange", "green", "purple", "red"],
|
|
57
|
+
insertSectionHeaders: true,
|
|
58
|
+
interleaveImages: false,
|
|
59
|
+
blocksPerSection: { min: 2, max: 6 },
|
|
60
|
+
transitionStyle: "cut"
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// src/transform/styles/narrative.ts
|
|
64
|
+
var narrativeStyle = {
|
|
65
|
+
id: "narrative",
|
|
66
|
+
name: "Narrative",
|
|
67
|
+
description: "Story-driven with timeline events, quotes, and impact moments",
|
|
68
|
+
minConfidence: 0.4,
|
|
69
|
+
transformRatio: 0.5,
|
|
70
|
+
preferredTypes: ["date", "quote", "impactLine", "fact", "stat"],
|
|
71
|
+
colorSchemes: ["blue", "purple", "green"],
|
|
72
|
+
insertSectionHeaders: true,
|
|
73
|
+
interleaveImages: true,
|
|
74
|
+
blocksPerSection: { min: 1, max: 4 },
|
|
75
|
+
transitionStyle: "fade"
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/transform/styles/minimal.ts
|
|
79
|
+
var minimalStyle = {
|
|
80
|
+
id: "minimal",
|
|
81
|
+
name: "Minimal",
|
|
82
|
+
description: "Light touch \u2014 only the strongest highlights, mostly text",
|
|
83
|
+
minConfidence: 0.6,
|
|
84
|
+
transformRatio: 0.2,
|
|
85
|
+
preferredTypes: ["stat", "quote"],
|
|
86
|
+
colorSchemes: ["blue", "green"],
|
|
87
|
+
insertSectionHeaders: false,
|
|
88
|
+
interleaveImages: false,
|
|
89
|
+
blocksPerSection: { min: 1, max: 2 },
|
|
90
|
+
transitionStyle: "fade"
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// src/transform/registry.ts
|
|
94
|
+
var TRANSFORM_STYLES = {
|
|
95
|
+
[documentaryStyle.id]: documentaryStyle,
|
|
96
|
+
[magazineStyle.id]: magazineStyle,
|
|
97
|
+
[dataDrivenStyle.id]: dataDrivenStyle,
|
|
98
|
+
[narrativeStyle.id]: narrativeStyle,
|
|
99
|
+
[minimalStyle.id]: minimalStyle
|
|
100
|
+
};
|
|
101
|
+
var DEFAULT_TRANSFORM_STYLE_ID = "documentary";
|
|
102
|
+
function resolveTransformStyle(id) {
|
|
103
|
+
return TRANSFORM_STYLES[id] ?? TRANSFORM_STYLES[DEFAULT_TRANSFORM_STYLE_ID];
|
|
104
|
+
}
|
|
105
|
+
function getTransformStyleIds() {
|
|
106
|
+
return Object.keys(TRANSFORM_STYLES);
|
|
107
|
+
}
|
|
108
|
+
function getTransformStyleSummaries() {
|
|
109
|
+
return Object.values(TRANSFORM_STYLES).map(({ id, name, description }) => ({
|
|
110
|
+
id,
|
|
111
|
+
name,
|
|
112
|
+
description
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/transform/blockAnalyzer.ts
|
|
117
|
+
function contentsToPlainText(contents) {
|
|
118
|
+
return contents.map((node) => extractPlainText(node)).join("\n");
|
|
119
|
+
}
|
|
120
|
+
function collectImages(node) {
|
|
121
|
+
const results = [];
|
|
122
|
+
if ("type" in node && node.type === "image" && "url" in node) {
|
|
123
|
+
const img = node;
|
|
124
|
+
if (img.url) {
|
|
125
|
+
results.push({ src: img.url, alt: img.alt ?? "" });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
for (const child of getChildren(node)) {
|
|
129
|
+
results.push(...collectImages(child));
|
|
130
|
+
}
|
|
131
|
+
return results;
|
|
132
|
+
}
|
|
133
|
+
function extractBlockImages(block, blockIndex) {
|
|
134
|
+
if (!block.contents || block.contents.length === 0) return [];
|
|
135
|
+
const images = [];
|
|
136
|
+
for (const node of block.contents) {
|
|
137
|
+
for (const img of collectImages(node)) {
|
|
138
|
+
images.push({ ...img, sourceBlockIndex: blockIndex });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return images;
|
|
142
|
+
}
|
|
143
|
+
function extractDocImages(blocks) {
|
|
144
|
+
const seen = /* @__PURE__ */ new Set();
|
|
145
|
+
const images = [];
|
|
146
|
+
function walk(blockList) {
|
|
147
|
+
for (const block of blockList) {
|
|
148
|
+
if (block.contents) {
|
|
149
|
+
for (const node of block.contents) {
|
|
150
|
+
for (const img of collectImages(node)) {
|
|
151
|
+
if (!seen.has(img.src)) {
|
|
152
|
+
seen.add(img.src);
|
|
153
|
+
images.push({ src: img.src, alt: img.alt });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (block.children) {
|
|
159
|
+
walk(block.children);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
walk(blocks);
|
|
164
|
+
return images;
|
|
165
|
+
}
|
|
166
|
+
function collectLeafBlocks(blocks) {
|
|
167
|
+
const result = [];
|
|
168
|
+
for (const block of blocks) {
|
|
169
|
+
if (block.children && block.children.length > 0) {
|
|
170
|
+
if (!block.contents || block.contents.length === 0) {
|
|
171
|
+
result.push(block);
|
|
172
|
+
}
|
|
173
|
+
result.push(...collectLeafBlocks(block.children));
|
|
174
|
+
} else {
|
|
175
|
+
result.push(block);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
function analyzeBlocks(blocks, options) {
|
|
181
|
+
const flat = collectLeafBlocks(blocks);
|
|
182
|
+
const results = [];
|
|
183
|
+
for (const block of flat) {
|
|
184
|
+
let plainText = "";
|
|
185
|
+
if (block.contents && block.contents.length > 0) {
|
|
186
|
+
plainText = contentsToPlainText(block.contents);
|
|
187
|
+
} else if (block.title) {
|
|
188
|
+
plainText = block.title;
|
|
189
|
+
}
|
|
190
|
+
const stripped = stripMarkdown(plainText);
|
|
191
|
+
const bodyWordCount = stripped.split(/\s+/).filter((w) => w.length > 0).length;
|
|
192
|
+
const extraction = extractContent(stripped, options);
|
|
193
|
+
const images = extractBlockImages(block, results.length);
|
|
194
|
+
results.push({
|
|
195
|
+
block,
|
|
196
|
+
plainText: stripped,
|
|
197
|
+
extractions: extraction.elements,
|
|
198
|
+
hasChildren: !!(block.children && block.children.length > 0),
|
|
199
|
+
bodyWordCount,
|
|
200
|
+
images
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return results;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/transform/templateSelector.ts
|
|
207
|
+
var ACCENT_POSITIONS = [
|
|
208
|
+
"left-strip",
|
|
209
|
+
"right-strip",
|
|
210
|
+
"bottom-strip",
|
|
211
|
+
"corner-inset"
|
|
212
|
+
];
|
|
213
|
+
var AMBIENT_MOTIONS = [
|
|
214
|
+
"zoomIn",
|
|
215
|
+
"zoomOut",
|
|
216
|
+
"panLeft",
|
|
217
|
+
"panRight"
|
|
218
|
+
];
|
|
219
|
+
function selectAndBuild(analyzed, config, images, seed) {
|
|
220
|
+
const rng = new SeededRandom(seed);
|
|
221
|
+
const candidates = collectCandidates(analyzed, config);
|
|
222
|
+
const maxTransforms = Math.max(1, Math.floor(analyzed.length * config.transformRatio));
|
|
223
|
+
const selected = candidates.slice(0, maxTransforms);
|
|
224
|
+
const result = buildBlockSequence(analyzed, selected, config, images, rng);
|
|
225
|
+
return result;
|
|
226
|
+
}
|
|
227
|
+
function collectCandidates(analyzed, config) {
|
|
228
|
+
const candidates = [];
|
|
229
|
+
for (let i = 0; i < analyzed.length; i++) {
|
|
230
|
+
const ab = analyzed[i];
|
|
231
|
+
if (ab.bodyWordCount < 5) continue;
|
|
232
|
+
for (const element of ab.extractions) {
|
|
233
|
+
if (element.confidence < config.minConfidence) continue;
|
|
234
|
+
candidates.push({
|
|
235
|
+
element,
|
|
236
|
+
sourceBlock: ab.block,
|
|
237
|
+
sourceIndex: i
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
const typeRank = new Map(config.preferredTypes.map((t, i) => [t, i]));
|
|
242
|
+
const maxRank = config.preferredTypes.length;
|
|
243
|
+
candidates.sort((a, b) => {
|
|
244
|
+
const rankA = typeRank.get(a.element.type) ?? maxRank;
|
|
245
|
+
const rankB = typeRank.get(b.element.type) ?? maxRank;
|
|
246
|
+
if (rankA !== rankB) return rankA - rankB;
|
|
247
|
+
return b.element.confidence - a.element.confidence;
|
|
248
|
+
});
|
|
249
|
+
const seenTexts = /* @__PURE__ */ new Set();
|
|
250
|
+
const deduplicated = [];
|
|
251
|
+
for (const candidate of candidates) {
|
|
252
|
+
const key = candidate.element.text.trim().toLowerCase();
|
|
253
|
+
if (seenTexts.has(key)) continue;
|
|
254
|
+
seenTexts.add(key);
|
|
255
|
+
deduplicated.push(candidate);
|
|
256
|
+
}
|
|
257
|
+
return deduplicated;
|
|
258
|
+
}
|
|
259
|
+
function buildBlockSequence(analyzed, selected, config, images, rng) {
|
|
260
|
+
const blockExtractions = /* @__PURE__ */ new Map();
|
|
261
|
+
for (const sel of selected) {
|
|
262
|
+
const list = blockExtractions.get(sel.sourceIndex) ?? [];
|
|
263
|
+
list.push(sel);
|
|
264
|
+
blockExtractions.set(sel.sourceIndex, list);
|
|
265
|
+
}
|
|
266
|
+
for (const [idx, list] of blockExtractions) {
|
|
267
|
+
const diverse = [];
|
|
268
|
+
const usedTypes = /* @__PURE__ */ new Set();
|
|
269
|
+
for (const sel of list) {
|
|
270
|
+
if (usedTypes.has(sel.element.type)) continue;
|
|
271
|
+
usedTypes.add(sel.element.type);
|
|
272
|
+
diverse.push(sel);
|
|
273
|
+
if (diverse.length >= config.blocksPerSection.max) break;
|
|
274
|
+
}
|
|
275
|
+
blockExtractions.set(idx, diverse);
|
|
276
|
+
}
|
|
277
|
+
const blocks = [];
|
|
278
|
+
let transformedCount = 0;
|
|
279
|
+
let insertedCount = 0;
|
|
280
|
+
let colorIndex = 0;
|
|
281
|
+
let blockIdCounter = 0;
|
|
282
|
+
let imageIndex = 0;
|
|
283
|
+
let accentPositionIndex = 0;
|
|
284
|
+
let elementsSinceImage = 0;
|
|
285
|
+
let prevTemplateType = "";
|
|
286
|
+
const totalTransformed = Array.from(blockExtractions.values()).reduce(
|
|
287
|
+
(sum, list) => sum + list.length,
|
|
288
|
+
0
|
|
289
|
+
);
|
|
290
|
+
const imageInterval = config.interleaveImages && images.length > 0 && totalTransformed > 0 ? Math.max(2, Math.floor(totalTransformed / (images.length + 1))) : Infinity;
|
|
291
|
+
for (let i = 0; i < analyzed.length; i++) {
|
|
292
|
+
const ab = analyzed[i];
|
|
293
|
+
const extractions = blockExtractions.get(i);
|
|
294
|
+
if (!extractions || extractions.length === 0) {
|
|
295
|
+
blocks.push(ab.block);
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
if (config.insertSectionHeaders && ab.block.title) {
|
|
299
|
+
const headerBlock = {
|
|
300
|
+
template: "sectionHeader",
|
|
301
|
+
id: `transform-header-${blockIdCounter++}`,
|
|
302
|
+
duration: ab.block.duration > 0 ? Math.min(3, ab.block.duration * 0.2) : 3,
|
|
303
|
+
audioSegment: ab.block.audioSegment,
|
|
304
|
+
title: ab.block.title,
|
|
305
|
+
colorScheme: config.colorSchemes[colorIndex % config.colorSchemes.length]
|
|
306
|
+
};
|
|
307
|
+
blocks.push(headerBlock);
|
|
308
|
+
insertedCount++;
|
|
309
|
+
}
|
|
310
|
+
for (const sel of extractions) {
|
|
311
|
+
const colorScheme = config.colorSchemes[colorIndex % config.colorSchemes.length];
|
|
312
|
+
let accentImage;
|
|
313
|
+
if (images.length > 0 && config.interleaveImages) {
|
|
314
|
+
const img = images[imageIndex % images.length];
|
|
315
|
+
accentImage = {
|
|
316
|
+
src: img.src,
|
|
317
|
+
alt: img.alt ?? "",
|
|
318
|
+
position: ACCENT_POSITIONS[accentPositionIndex % ACCENT_POSITIONS.length],
|
|
319
|
+
ambientMotion: rng.pick(AMBIENT_MOTIONS) ?? "zoomIn",
|
|
320
|
+
credit: img.credit,
|
|
321
|
+
license: img.license
|
|
322
|
+
};
|
|
323
|
+
accentPositionIndex++;
|
|
324
|
+
}
|
|
325
|
+
const templateBlock = mapElementToBlock(sel.element, {
|
|
326
|
+
id: `transform-${blockIdCounter++}`,
|
|
327
|
+
duration: ab.block.duration > 0 ? ab.block.duration / extractions.length : 6,
|
|
328
|
+
audioSegment: ab.block.audioSegment,
|
|
329
|
+
colorScheme,
|
|
330
|
+
accentImage,
|
|
331
|
+
sourceStartTime: sel.element.sourcePosition
|
|
332
|
+
});
|
|
333
|
+
if (config.transitionStyle !== "cut") {
|
|
334
|
+
templateBlock.transition = {
|
|
335
|
+
type: config.transitionStyle === "mixed" ? rng.pick(["fade", "dissolve"]) ?? "fade" : config.transitionStyle,
|
|
336
|
+
duration: 0.5
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
if (templateBlock.template === prevTemplateType) {
|
|
340
|
+
colorIndex++;
|
|
341
|
+
}
|
|
342
|
+
prevTemplateType = templateBlock.template;
|
|
343
|
+
blocks.push(templateBlock);
|
|
344
|
+
transformedCount++;
|
|
345
|
+
colorIndex++;
|
|
346
|
+
elementsSinceImage++;
|
|
347
|
+
if (config.interleaveImages && imageIndex < images.length && elementsSinceImage >= imageInterval) {
|
|
348
|
+
const img = images[imageIndex];
|
|
349
|
+
const imageBlock = {
|
|
350
|
+
template: "imageWithCaption",
|
|
351
|
+
id: `transform-img-${blockIdCounter++}`,
|
|
352
|
+
duration: 4,
|
|
353
|
+
audioSegment: ab.block.audioSegment,
|
|
354
|
+
imageSrc: img.src,
|
|
355
|
+
imageAlt: img.alt ?? "",
|
|
356
|
+
ambientMotion: rng.pick(AMBIENT_MOTIONS) ?? "zoomIn"
|
|
357
|
+
};
|
|
358
|
+
blocks.push(imageBlock);
|
|
359
|
+
imageIndex++;
|
|
360
|
+
insertedCount++;
|
|
361
|
+
elementsSinceImage = 0;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return { blocks, transformedCount, insertedCount };
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// src/transform/timingAllocator.ts
|
|
369
|
+
var MIN_BLOCK_DURATION = 3;
|
|
370
|
+
var MAX_BLOCK_DURATION = 20;
|
|
371
|
+
var DEFAULT_BLOCK_DURATION = 6;
|
|
372
|
+
function allocateTiming(blocks, totalDuration) {
|
|
373
|
+
if (blocks.length === 0) return [];
|
|
374
|
+
const effectiveDuration = totalDuration > 0 ? totalDuration : estimateDefaultDuration(blocks);
|
|
375
|
+
const durations = blocks.map((block) => {
|
|
376
|
+
if (!isTemplateBlock(block) && block.duration > 0) {
|
|
377
|
+
return block.duration;
|
|
378
|
+
}
|
|
379
|
+
if (isTemplateBlock(block) && block.duration > 0) {
|
|
380
|
+
return block.duration;
|
|
381
|
+
}
|
|
382
|
+
return DEFAULT_BLOCK_DURATION;
|
|
383
|
+
});
|
|
384
|
+
const rawTotal = durations.reduce((sum, d) => sum + d, 0);
|
|
385
|
+
if (rawTotal > 0 && effectiveDuration > 0) {
|
|
386
|
+
const scale = effectiveDuration / rawTotal;
|
|
387
|
+
for (let i = 0; i < durations.length; i++) {
|
|
388
|
+
durations[i] = clampDuration(durations[i] * scale);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
let currentTime = 0;
|
|
392
|
+
const result = [];
|
|
393
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
394
|
+
const block = blocks[i];
|
|
395
|
+
const duration = durations[i];
|
|
396
|
+
if (isTemplateBlock(block)) {
|
|
397
|
+
const outputBlock = {
|
|
398
|
+
...block,
|
|
399
|
+
startTime: currentTime,
|
|
400
|
+
duration,
|
|
401
|
+
title: getTemplateTitle(block)
|
|
402
|
+
};
|
|
403
|
+
result.push(outputBlock);
|
|
404
|
+
} else {
|
|
405
|
+
result.push({
|
|
406
|
+
...block,
|
|
407
|
+
startTime: currentTime,
|
|
408
|
+
duration
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
currentTime += duration;
|
|
412
|
+
}
|
|
413
|
+
return result;
|
|
414
|
+
}
|
|
415
|
+
function clampDuration(d) {
|
|
416
|
+
return Math.max(MIN_BLOCK_DURATION, Math.min(MAX_BLOCK_DURATION, d));
|
|
417
|
+
}
|
|
418
|
+
function estimateDefaultDuration(blocks) {
|
|
419
|
+
let totalSeconds = 0;
|
|
420
|
+
for (const block of blocks) {
|
|
421
|
+
if (!isTemplateBlock(block) && block.duration > 0) {
|
|
422
|
+
totalSeconds += block.duration;
|
|
423
|
+
} else {
|
|
424
|
+
totalSeconds += DEFAULT_BLOCK_DURATION;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return Math.max(totalSeconds, blocks.length * MIN_BLOCK_DURATION);
|
|
428
|
+
}
|
|
429
|
+
function getTemplateTitle(block) {
|
|
430
|
+
if ("title" in block && typeof block.title === "string") {
|
|
431
|
+
return block.title;
|
|
432
|
+
}
|
|
433
|
+
if ("stat" in block && typeof block.stat === "string") {
|
|
434
|
+
return block.stat;
|
|
435
|
+
}
|
|
436
|
+
if ("fact" in block && typeof block.fact === "string") {
|
|
437
|
+
return block.fact;
|
|
438
|
+
}
|
|
439
|
+
if ("quote" in block && typeof block.quote === "string") {
|
|
440
|
+
return block.quote.slice(0, 60);
|
|
441
|
+
}
|
|
442
|
+
return void 0;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// src/transform/applyTransform.ts
|
|
446
|
+
function applyTransform(doc, styleId, options) {
|
|
447
|
+
const baseConfig = resolveTransformStyle(styleId);
|
|
448
|
+
const config = options?.overrides ? { ...baseConfig, ...options.overrides, id: baseConfig.id } : baseConfig;
|
|
449
|
+
const seed = options?.seed ?? hashString(doc.articleId || "transform");
|
|
450
|
+
const images = options?.images ?? extractDocImages(doc.blocks);
|
|
451
|
+
const analyzed = analyzeBlocks(doc.blocks, {
|
|
452
|
+
minConfidence: config.minConfidence,
|
|
453
|
+
types: config.preferredTypes
|
|
454
|
+
});
|
|
455
|
+
const hasContent = analyzed.some((ab) => ab.bodyWordCount >= 5);
|
|
456
|
+
if (!hasContent) {
|
|
457
|
+
return {
|
|
458
|
+
doc: { ...doc },
|
|
459
|
+
stats: {
|
|
460
|
+
totalInputBlocks: doc.blocks.length,
|
|
461
|
+
transformedBlocks: 0,
|
|
462
|
+
insertedBlocks: 0
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
const selection = selectAndBuild(analyzed, config, images, seed);
|
|
467
|
+
const timedBlocks = allocateTiming(selection.blocks, doc.duration);
|
|
468
|
+
const transformedDoc = {
|
|
469
|
+
...doc,
|
|
470
|
+
blocks: timedBlocks,
|
|
471
|
+
themeId: options?.themeId ?? doc.themeId
|
|
472
|
+
};
|
|
473
|
+
return {
|
|
474
|
+
doc: transformedDoc,
|
|
475
|
+
stats: {
|
|
476
|
+
totalInputBlocks: doc.blocks.length,
|
|
477
|
+
transformedBlocks: selection.transformedCount,
|
|
478
|
+
insertedBlocks: selection.insertedCount
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
export {
|
|
483
|
+
DEFAULT_TRANSFORM_STYLE_ID,
|
|
484
|
+
analyzeBlocks,
|
|
485
|
+
applyTransform,
|
|
486
|
+
extractDocImages,
|
|
487
|
+
getTransformStyleIds,
|
|
488
|
+
getTransformStyleSummaries,
|
|
489
|
+
resolveTransformStyle
|
|
490
|
+
};
|
|
4
491
|
//# sourceMappingURL=index.js.map
|