@bendyline/squisq 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (782) hide show
  1. package/dist/{Doc-BeSeH2iX.d.ts → Doc-BsMkmzH8.d.ts} +838 -268
  2. package/dist/{ImageEditDoc-BTIvw0oq.d.ts → ImageEditDoc-DvoeHMP9.d.ts} +11 -4
  3. package/dist/{chunk-ZTX4PFFT.js → chunk-2OIBZYKP.js} +75 -2
  4. package/dist/chunk-2OIBZYKP.js.map +1 -0
  5. package/dist/chunk-2UQOHYE2.js +45 -0
  6. package/dist/chunk-2UQOHYE2.js.map +1 -0
  7. package/dist/{chunk-B4EEON3N.js → chunk-4AKUQPEE.js} +536 -103
  8. package/dist/chunk-4AKUQPEE.js.map +1 -0
  9. package/dist/chunk-4ZFRZBU2.js +6582 -0
  10. package/dist/chunk-4ZFRZBU2.js.map +1 -0
  11. package/dist/{chunk-57CVQCFX.js → chunk-7MQGNR76.js} +79 -3
  12. package/dist/chunk-7MQGNR76.js.map +1 -0
  13. package/dist/{chunk-5WFRKURX.js → chunk-DLXZMS5K.js} +4 -2
  14. package/dist/chunk-DLXZMS5K.js.map +1 -0
  15. package/dist/{chunk-MYIH7FWD.js → chunk-FBKP5CAO.js} +1 -1
  16. package/dist/chunk-FBKP5CAO.js.map +1 -0
  17. package/dist/chunk-KZNXZ5SM.js +333 -0
  18. package/dist/chunk-KZNXZ5SM.js.map +1 -0
  19. package/dist/{chunk-WMOI7FN3.js → chunk-LRCV7N7F.js} +12 -2
  20. package/dist/{chunk-WMOI7FN3.js.map → chunk-LRCV7N7F.js.map} +1 -1
  21. package/dist/{chunk-3K5OG6KI.js → chunk-OH43RPTP.js} +403 -187
  22. package/dist/chunk-OH43RPTP.js.map +1 -0
  23. package/dist/{chunk-H3AXU4MJ.js → chunk-OKJOQXK4.js} +149 -2
  24. package/dist/chunk-OKJOQXK4.js.map +1 -0
  25. package/dist/chunk-PGGGKYWG.js +1 -0
  26. package/dist/chunk-PGGGKYWG.js.map +1 -0
  27. package/dist/{chunk-7UDSRZKG.js → chunk-Q3ROPT5H.js} +35 -14
  28. package/dist/chunk-Q3ROPT5H.js.map +1 -0
  29. package/dist/chunk-QE7TWGVT.js +178 -0
  30. package/dist/chunk-QE7TWGVT.js.map +1 -0
  31. package/dist/chunk-RUDYOTA6.js +345 -0
  32. package/dist/chunk-RUDYOTA6.js.map +1 -0
  33. package/dist/chunk-TVSGLUID.js +596 -0
  34. package/dist/chunk-TVSGLUID.js.map +1 -0
  35. package/dist/chunk-ZLQKNOZQ.js +1 -0
  36. package/dist/chunk-ZLQKNOZQ.js.map +1 -0
  37. package/dist/doc/index.d.ts +5 -10
  38. package/dist/doc/index.js +263 -7
  39. package/dist/doc/index.js.map +1 -1
  40. package/dist/generate/index.d.ts +106 -7
  41. package/dist/generate/index.js +16 -3
  42. package/dist/generate/index.js.map +1 -1
  43. package/dist/icons/index.d.ts +62 -10
  44. package/dist/icons/index.js +29 -9
  45. package/dist/icons/index.js.map +1 -1
  46. package/dist/icons/inlineIconMarker.d.ts +1 -0
  47. package/dist/icons/inlineIconMarker.js +15 -0
  48. package/dist/icons/inlineIconMarker.js.map +1 -0
  49. package/dist/imageEdit/index.d.ts +219 -11
  50. package/dist/imageEdit/index.js +56 -21
  51. package/dist/imageEdit/index.js.map +1 -1
  52. package/dist/index.d.ts +24 -13
  53. package/dist/index.js +680 -12
  54. package/dist/index.js.map +1 -1
  55. package/dist/inlineIconMarker-CiE8Hlvz.d.ts +59 -0
  56. package/dist/jsonForm/index.d.ts +189 -12
  57. package/dist/jsonForm/index.js +26 -11
  58. package/dist/jsonForm/index.js.map +1 -1
  59. package/dist/markdown/index.d.ts +474 -19
  60. package/dist/markdown/index.js +72 -33
  61. package/dist/markdown/index.js.map +1 -1
  62. package/dist/random/index.d.ts +51 -2
  63. package/dist/random/index.js +9 -1
  64. package/dist/random/index.js.map +1 -1
  65. package/dist/recommend/index.d.ts +39 -13
  66. package/dist/recommend/index.js +10 -14
  67. package/dist/recommend/index.js.map +1 -1
  68. package/dist/schemas/index.d.ts +208 -15
  69. package/dist/schemas/index.js +150 -11
  70. package/dist/schemas/index.js.map +1 -1
  71. package/dist/spatial/index.d.ts +116 -3
  72. package/dist/spatial/index.js +24 -2
  73. package/dist/spatial/index.js.map +1 -1
  74. package/dist/storage/index.d.ts +159 -10
  75. package/dist/storage/index.js +20 -6
  76. package/dist/storage/index.js.map +1 -1
  77. package/dist/story/index.d.ts +906 -40
  78. package/dist/story/index.js +124 -6
  79. package/dist/{themeLibrary-BHjJ0Qx6.d.ts → themeLibrary-DQQKuRMx.d.ts} +1 -1
  80. package/dist/timing/index.d.ts +109 -4
  81. package/dist/timing/index.js +23 -2
  82. package/dist/timing/index.js.map +1 -1
  83. package/dist/transform/index.d.ts +213 -6
  84. package/dist/transform/index.js +26 -3
  85. package/dist/transform/index.js.map +1 -1
  86. package/dist/{types-BdZkdJ3z.d.ts → types-DlAZ7MW4.d.ts} +115 -1
  87. package/dist/versions/index.d.ts +123 -24
  88. package/dist/versions/index.js +34 -27
  89. package/dist/versions/index.js.map +1 -1
  90. package/package.json +6 -1
  91. package/src/__tests__/animationUtils.test.ts +40 -0
  92. package/src/__tests__/annotationCoercion.test.ts +243 -0
  93. package/src/__tests__/applyRenderStyle.test.ts +146 -0
  94. package/src/__tests__/atmosphereLayers.test.ts +108 -0
  95. package/src/__tests__/attrTokens.test.ts +162 -0
  96. package/src/__tests__/customTemplateSample.test.ts +83 -0
  97. package/src/__tests__/customTemplatesFrontmatter.test.ts +205 -0
  98. package/src/__tests__/customThemesFrontmatter.test.ts +118 -0
  99. package/src/__tests__/diagramBlock.test.ts +122 -0
  100. package/src/__tests__/diagramLayout.test.ts +134 -0
  101. package/src/__tests__/drawing.test.ts +109 -0
  102. package/src/__tests__/drawingBlock.test.ts +124 -0
  103. package/src/__tests__/drawingLayout.test.ts +171 -0
  104. package/src/__tests__/geohash.test.ts +6 -5
  105. package/src/__tests__/getLayers.test.ts +6 -2
  106. package/src/__tests__/getLayersFallback.test.ts +103 -0
  107. package/src/__tests__/imageEditExportSvg.test.ts +70 -0
  108. package/src/__tests__/imageEditVersions.test.ts +72 -0
  109. package/src/__tests__/inlineIconMarker.test.ts +36 -0
  110. package/src/__tests__/layoutBlock.test.ts +83 -0
  111. package/src/__tests__/layoutLayout.test.ts +169 -0
  112. package/src/__tests__/markdown.test.ts +23 -0
  113. package/src/__tests__/markdownSanitize.test.ts +64 -0
  114. package/src/__tests__/markdownToDoc.test.ts +223 -2
  115. package/src/__tests__/mediaAnnotations.test.ts +64 -0
  116. package/src/__tests__/mediaSchedule.test.ts +118 -0
  117. package/src/__tests__/pandocAttrParse.test.ts +187 -0
  118. package/src/__tests__/resolveDocTheme.test.ts +55 -0
  119. package/src/__tests__/rootExports.test.ts +43 -0
  120. package/src/__tests__/shapeGeometry.test.ts +89 -0
  121. package/src/__tests__/shapeVocabulary.test.ts +133 -0
  122. package/src/__tests__/structuredData.test.ts +179 -0
  123. package/src/__tests__/templateAnnotationParse.test.ts +108 -0
  124. package/src/__tests__/templateMetadata.test.ts +21 -0
  125. package/src/__tests__/templates.test.ts +145 -4
  126. package/src/__tests__/themeCompile.test.ts +42 -0
  127. package/src/__tests__/themeValidator.test.ts +6 -0
  128. package/src/__tests__/transformV2.test.ts +137 -0
  129. package/src/__tests__/transitionNormalize.test.ts +61 -0
  130. package/src/__tests__/validateDoc.test.ts +100 -0
  131. package/src/doc/customTemplatesFrontmatter.ts +308 -0
  132. package/src/doc/customThemesFrontmatter.ts +90 -0
  133. package/src/doc/docToMarkdown.ts +73 -4
  134. package/src/doc/getLayers.ts +40 -17
  135. package/src/doc/index.ts +35 -1
  136. package/src/doc/markdownToDoc.ts +333 -12
  137. package/src/doc/mediaAnnotations.ts +118 -0
  138. package/src/doc/resolveDocTheme.ts +55 -0
  139. package/src/doc/structuredData.ts +230 -0
  140. package/src/doc/templateInputs.ts +240 -0
  141. package/src/doc/templates/__tests__/customTemplate.test.ts +151 -0
  142. package/src/doc/templates/__tests__/customTemplateRegistry.test.ts +110 -0
  143. package/src/doc/templates/accentImage.ts +30 -6
  144. package/src/doc/templates/captionUtils.ts +23 -0
  145. package/src/doc/templates/comparisonBar.ts +26 -18
  146. package/src/doc/templates/coverBlock.ts +7 -4
  147. package/src/doc/templates/customTemplate.ts +45 -0
  148. package/src/doc/templates/dataTable.ts +37 -19
  149. package/src/doc/templates/dateEvent.ts +41 -20
  150. package/src/doc/templates/definitionCard.ts +26 -18
  151. package/src/doc/templates/diagramBlock.ts +204 -0
  152. package/src/doc/templates/diagramLayout.ts +159 -0
  153. package/src/doc/templates/drawingBlock.ts +325 -0
  154. package/src/doc/templates/drawingLayout.ts +539 -0
  155. package/src/doc/templates/factCard.ts +51 -25
  156. package/src/doc/templates/fallbackBlock.ts +123 -0
  157. package/src/doc/templates/featureBlock.ts +20 -13
  158. package/src/doc/templates/fullBleedQuote.ts +18 -8
  159. package/src/doc/templates/imageWithCaption.ts +22 -9
  160. package/src/doc/templates/index.ts +215 -46
  161. package/src/doc/templates/layoutBlock.ts +43 -0
  162. package/src/doc/templates/layoutLayout.ts +243 -0
  163. package/src/doc/templates/listBlock.ts +56 -30
  164. package/src/doc/templates/mapBlock.ts +15 -12
  165. package/src/doc/templates/metadata.ts +120 -0
  166. package/src/doc/templates/persistentLayers.ts +129 -11
  167. package/src/doc/templates/photoGrid.ts +23 -12
  168. package/src/doc/templates/pullQuote.ts +30 -12
  169. package/src/doc/templates/quoteBlock.ts +54 -29
  170. package/src/doc/templates/sectionHeader.ts +25 -11
  171. package/src/doc/templates/statHighlight.ts +39 -22
  172. package/src/doc/templates/titleBlock.ts +59 -21
  173. package/src/doc/templates/tokens/__tests__/resolveTokens.test.ts +221 -0
  174. package/src/doc/templates/tokens/resolveTokens.ts +0 -0
  175. package/src/doc/templates/twoColumn.ts +48 -30
  176. package/src/doc/templates/videoPullQuote.ts +22 -12
  177. package/src/doc/templates/videoWithCaption.ts +13 -8
  178. package/src/doc/utils/animationUtils.ts +267 -3
  179. package/src/doc/utils/applyRenderStyle.ts +113 -0
  180. package/src/doc/utils/imageTreatment.ts +70 -0
  181. package/src/doc/utils/shapeGeometry.ts +464 -0
  182. package/src/doc/utils/themeUtils.ts +75 -1
  183. package/src/doc/validate.ts +476 -0
  184. package/src/generate/slideshowGenerator.ts +7 -0
  185. package/src/icons/index.ts +8 -0
  186. package/src/icons/inlineIconMarker.ts +73 -0
  187. package/src/imageEdit/export.ts +85 -2
  188. package/src/imageEdit/index.ts +1 -0
  189. package/src/imageEdit/persistence.ts +51 -0
  190. package/src/index.ts +2 -0
  191. package/src/markdown/annotationCoercion.ts +295 -0
  192. package/src/markdown/attrTokens.ts +222 -0
  193. package/src/markdown/convert.ts +229 -26
  194. package/src/markdown/index.ts +36 -0
  195. package/src/markdown/sanitize.ts +298 -0
  196. package/src/markdown/stringify.ts +84 -3
  197. package/src/markdown/types.ts +66 -0
  198. package/src/markdown/utils.ts +49 -1
  199. package/src/recommend/templates.ts +24 -0
  200. package/src/schemas/BlockTemplates.ts +133 -4
  201. package/src/schemas/CustomTemplates.ts +74 -0
  202. package/src/schemas/Doc.ts +353 -29
  203. package/src/schemas/ImageEditDoc.ts +11 -4
  204. package/src/schemas/Media.ts +169 -0
  205. package/src/schemas/Theme.ts +23 -1
  206. package/src/schemas/Transitions.ts +224 -0
  207. package/src/schemas/colorUtils.ts +33 -0
  208. package/src/schemas/fontStacks.ts +5 -2
  209. package/src/schemas/index.ts +3 -0
  210. package/src/schemas/themeCompile.ts +23 -4
  211. package/src/schemas/themeValidator.ts +49 -11
  212. package/src/schemas/themes/cinematic.json +69 -12
  213. package/src/schemas/themes/documentary.json +58 -11
  214. package/src/schemas/themes/gezellig.json +60 -11
  215. package/src/schemas/themes/magazine.json +54 -9
  216. package/src/schemas/themes/morning-light.json +52 -9
  217. package/src/schemas/themes/standard-dark.json +48 -13
  218. package/src/schemas/themes/standard.json +44 -12
  219. package/src/schemas/themes/tech-dark.json +65 -12
  220. package/src/spatial/Geohash.ts +52 -21
  221. package/src/transform/applyTransform.ts +43 -4
  222. package/src/transform/index.ts +1 -0
  223. package/src/transform/registry.ts +44 -13
  224. package/src/transform/styles/dataDriven.ts +2 -1
  225. package/src/transform/styles/documentary.ts +2 -1
  226. package/src/transform/styles/magazine.ts +3 -1
  227. package/src/transform/styles/minimal.ts +2 -1
  228. package/src/transform/styles/narrative.ts +3 -1
  229. package/src/transform/templateSelector.ts +87 -11
  230. package/src/transform/types.ts +35 -2
  231. package/dist/__tests__/animationUtils.test.d.ts +0 -2
  232. package/dist/__tests__/animationUtils.test.d.ts.map +0 -1
  233. package/dist/__tests__/animationUtils.test.js +0 -60
  234. package/dist/__tests__/animationUtils.test.js.map +0 -1
  235. package/dist/__tests__/colorUtils.test.d.ts +0 -2
  236. package/dist/__tests__/colorUtils.test.d.ts.map +0 -1
  237. package/dist/__tests__/colorUtils.test.js +0 -94
  238. package/dist/__tests__/colorUtils.test.js.map +0 -1
  239. package/dist/__tests__/contentContainer.test.d.ts +0 -2
  240. package/dist/__tests__/contentContainer.test.d.ts.map +0 -1
  241. package/dist/__tests__/contentContainer.test.js +0 -234
  242. package/dist/__tests__/contentContainer.test.js.map +0 -1
  243. package/dist/__tests__/contentExtractor.test.d.ts +0 -2
  244. package/dist/__tests__/contentExtractor.test.d.ts.map +0 -1
  245. package/dist/__tests__/contentExtractor.test.js +0 -151
  246. package/dist/__tests__/contentExtractor.test.js.map +0 -1
  247. package/dist/__tests__/coverBlock.test.d.ts +0 -2
  248. package/dist/__tests__/coverBlock.test.d.ts.map +0 -1
  249. package/dist/__tests__/coverBlock.test.js +0 -197
  250. package/dist/__tests__/coverBlock.test.js.map +0 -1
  251. package/dist/__tests__/dataTable.test.d.ts +0 -2
  252. package/dist/__tests__/dataTable.test.d.ts.map +0 -1
  253. package/dist/__tests__/dataTable.test.js +0 -110
  254. package/dist/__tests__/dataTable.test.js.map +0 -1
  255. package/dist/__tests__/geohash.test.d.ts +0 -2
  256. package/dist/__tests__/geohash.test.d.ts.map +0 -1
  257. package/dist/__tests__/geohash.test.js +0 -87
  258. package/dist/__tests__/geohash.test.js.map +0 -1
  259. package/dist/__tests__/getLayers.test.d.ts +0 -2
  260. package/dist/__tests__/getLayers.test.d.ts.map +0 -1
  261. package/dist/__tests__/getLayers.test.js +0 -191
  262. package/dist/__tests__/getLayers.test.js.map +0 -1
  263. package/dist/__tests__/haversine.test.d.ts +0 -2
  264. package/dist/__tests__/haversine.test.d.ts.map +0 -1
  265. package/dist/__tests__/haversine.test.js +0 -56
  266. package/dist/__tests__/haversine.test.js.map +0 -1
  267. package/dist/__tests__/iconResolve.test.d.ts +0 -2
  268. package/dist/__tests__/iconResolve.test.d.ts.map +0 -1
  269. package/dist/__tests__/iconResolve.test.js +0 -99
  270. package/dist/__tests__/iconResolve.test.js.map +0 -1
  271. package/dist/__tests__/imageEditState.test.d.ts +0 -2
  272. package/dist/__tests__/imageEditState.test.d.ts.map +0 -1
  273. package/dist/__tests__/imageEditState.test.js +0 -61
  274. package/dist/__tests__/imageEditState.test.js.map +0 -1
  275. package/dist/__tests__/imageEditVersions.test.d.ts +0 -2
  276. package/dist/__tests__/imageEditVersions.test.d.ts.map +0 -1
  277. package/dist/__tests__/imageEditVersions.test.js +0 -141
  278. package/dist/__tests__/imageEditVersions.test.js.map +0 -1
  279. package/dist/__tests__/inferDocumentTitle.test.d.ts +0 -2
  280. package/dist/__tests__/inferDocumentTitle.test.d.ts.map +0 -1
  281. package/dist/__tests__/inferDocumentTitle.test.js +0 -42
  282. package/dist/__tests__/inferDocumentTitle.test.js.map +0 -1
  283. package/dist/__tests__/jsonForm.chooseControl.test.d.ts +0 -2
  284. package/dist/__tests__/jsonForm.chooseControl.test.d.ts.map +0 -1
  285. package/dist/__tests__/jsonForm.chooseControl.test.js +0 -74
  286. package/dist/__tests__/jsonForm.chooseControl.test.js.map +0 -1
  287. package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts +0 -2
  288. package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts.map +0 -1
  289. package/dist/__tests__/jsonForm.evaluateWhen.test.js +0 -51
  290. package/dist/__tests__/jsonForm.evaluateWhen.test.js.map +0 -1
  291. package/dist/__tests__/jsonForm.inferSchema.test.d.ts +0 -2
  292. package/dist/__tests__/jsonForm.inferSchema.test.d.ts.map +0 -1
  293. package/dist/__tests__/jsonForm.inferSchema.test.js +0 -23
  294. package/dist/__tests__/jsonForm.inferSchema.test.js.map +0 -1
  295. package/dist/__tests__/jsonForm.pointer.test.d.ts +0 -2
  296. package/dist/__tests__/jsonForm.pointer.test.d.ts.map +0 -1
  297. package/dist/__tests__/jsonForm.pointer.test.js +0 -94
  298. package/dist/__tests__/jsonForm.pointer.test.js.map +0 -1
  299. package/dist/__tests__/localForageAdapter.test.d.ts +0 -8
  300. package/dist/__tests__/localForageAdapter.test.d.ts.map +0 -1
  301. package/dist/__tests__/localForageAdapter.test.js +0 -130
  302. package/dist/__tests__/localForageAdapter.test.js.map +0 -1
  303. package/dist/__tests__/markdown.test.d.ts +0 -2
  304. package/dist/__tests__/markdown.test.d.ts.map +0 -1
  305. package/dist/__tests__/markdown.test.js +0 -715
  306. package/dist/__tests__/markdown.test.js.map +0 -1
  307. package/dist/__tests__/markdownIcons.test.d.ts +0 -2
  308. package/dist/__tests__/markdownIcons.test.d.ts.map +0 -1
  309. package/dist/__tests__/markdownIcons.test.js +0 -93
  310. package/dist/__tests__/markdownIcons.test.js.map +0 -1
  311. package/dist/__tests__/markdownToDoc.test.d.ts +0 -2
  312. package/dist/__tests__/markdownToDoc.test.d.ts.map +0 -1
  313. package/dist/__tests__/markdownToDoc.test.js +0 -458
  314. package/dist/__tests__/markdownToDoc.test.js.map +0 -1
  315. package/dist/__tests__/recommendTemplates.test.d.ts +0 -2
  316. package/dist/__tests__/recommendTemplates.test.d.ts.map +0 -1
  317. package/dist/__tests__/recommendTemplates.test.js +0 -158
  318. package/dist/__tests__/recommendTemplates.test.js.map +0 -1
  319. package/dist/__tests__/scopedContentContainer.test.d.ts +0 -2
  320. package/dist/__tests__/scopedContentContainer.test.d.ts.map +0 -1
  321. package/dist/__tests__/scopedContentContainer.test.js +0 -74
  322. package/dist/__tests__/scopedContentContainer.test.js.map +0 -1
  323. package/dist/__tests__/seededRandom.test.d.ts +0 -2
  324. package/dist/__tests__/seededRandom.test.d.ts.map +0 -1
  325. package/dist/__tests__/seededRandom.test.js +0 -125
  326. package/dist/__tests__/seededRandom.test.js.map +0 -1
  327. package/dist/__tests__/slideshowGenerator.test.d.ts +0 -2
  328. package/dist/__tests__/slideshowGenerator.test.d.ts.map +0 -1
  329. package/dist/__tests__/slideshowGenerator.test.js +0 -114
  330. package/dist/__tests__/slideshowGenerator.test.js.map +0 -1
  331. package/dist/__tests__/storage.test.d.ts +0 -2
  332. package/dist/__tests__/storage.test.d.ts.map +0 -1
  333. package/dist/__tests__/storage.test.js +0 -51
  334. package/dist/__tests__/storage.test.js.map +0 -1
  335. package/dist/__tests__/surface.test.d.ts +0 -2
  336. package/dist/__tests__/surface.test.d.ts.map +0 -1
  337. package/dist/__tests__/surface.test.js +0 -57
  338. package/dist/__tests__/surface.test.js.map +0 -1
  339. package/dist/__tests__/templateAnnotationParse.test.d.ts +0 -2
  340. package/dist/__tests__/templateAnnotationParse.test.d.ts.map +0 -1
  341. package/dist/__tests__/templateAnnotationParse.test.js +0 -42
  342. package/dist/__tests__/templateAnnotationParse.test.js.map +0 -1
  343. package/dist/__tests__/templates.test.d.ts +0 -2
  344. package/dist/__tests__/templates.test.d.ts.map +0 -1
  345. package/dist/__tests__/templates.test.js +0 -298
  346. package/dist/__tests__/templates.test.js.map +0 -1
  347. package/dist/__tests__/themeCompile.test.d.ts +0 -2
  348. package/dist/__tests__/themeCompile.test.d.ts.map +0 -1
  349. package/dist/__tests__/themeCompile.test.js +0 -134
  350. package/dist/__tests__/themeCompile.test.js.map +0 -1
  351. package/dist/__tests__/themeValidator.test.d.ts +0 -2
  352. package/dist/__tests__/themeValidator.test.d.ts.map +0 -1
  353. package/dist/__tests__/themeValidator.test.js +0 -107
  354. package/dist/__tests__/themeValidator.test.js.map +0 -1
  355. package/dist/__tests__/timing.test.d.ts +0 -2
  356. package/dist/__tests__/timing.test.d.ts.map +0 -1
  357. package/dist/__tests__/timing.test.js +0 -131
  358. package/dist/__tests__/timing.test.js.map +0 -1
  359. package/dist/__tests__/versions.test.d.ts +0 -2
  360. package/dist/__tests__/versions.test.d.ts.map +0 -1
  361. package/dist/__tests__/versions.test.js +0 -339
  362. package/dist/__tests__/versions.test.js.map +0 -1
  363. package/dist/chunk-3K5OG6KI.js.map +0 -1
  364. package/dist/chunk-57CVQCFX.js.map +0 -1
  365. package/dist/chunk-5WFRKURX.js.map +0 -1
  366. package/dist/chunk-7UDSRZKG.js.map +0 -1
  367. package/dist/chunk-B4EEON3N.js.map +0 -1
  368. package/dist/chunk-H3AXU4MJ.js.map +0 -1
  369. package/dist/chunk-KSWJR66U.js +0 -3706
  370. package/dist/chunk-KSWJR66U.js.map +0 -1
  371. package/dist/chunk-MYIH7FWD.js.map +0 -1
  372. package/dist/chunk-ZTX4PFFT.js.map +0 -1
  373. package/dist/doc/audioMapping.d.ts +0 -36
  374. package/dist/doc/audioMapping.d.ts.map +0 -1
  375. package/dist/doc/audioMapping.js +0 -350
  376. package/dist/doc/audioMapping.js.map +0 -1
  377. package/dist/doc/docToMarkdown.d.ts +0 -41
  378. package/dist/doc/docToMarkdown.d.ts.map +0 -1
  379. package/dist/doc/docToMarkdown.js +0 -88
  380. package/dist/doc/docToMarkdown.js.map +0 -1
  381. package/dist/doc/getLayers.d.ts +0 -65
  382. package/dist/doc/getLayers.d.ts.map +0 -1
  383. package/dist/doc/getLayers.js +0 -114
  384. package/dist/doc/getLayers.js.map +0 -1
  385. package/dist/doc/index.d.ts.map +0 -1
  386. package/dist/doc/markdownToDoc.d.ts +0 -75
  387. package/dist/doc/markdownToDoc.d.ts.map +0 -1
  388. package/dist/doc/markdownToDoc.js +0 -432
  389. package/dist/doc/markdownToDoc.js.map +0 -1
  390. package/dist/doc/templates/accentImage.d.ts +0 -59
  391. package/dist/doc/templates/accentImage.d.ts.map +0 -1
  392. package/dist/doc/templates/accentImage.js +0 -275
  393. package/dist/doc/templates/accentImage.js.map +0 -1
  394. package/dist/doc/templates/captionUtils.d.ts +0 -20
  395. package/dist/doc/templates/captionUtils.d.ts.map +0 -1
  396. package/dist/doc/templates/captionUtils.js +0 -29
  397. package/dist/doc/templates/captionUtils.js.map +0 -1
  398. package/dist/doc/templates/comparisonBar.d.ts +0 -13
  399. package/dist/doc/templates/comparisonBar.d.ts.map +0 -1
  400. package/dist/doc/templates/comparisonBar.js +0 -145
  401. package/dist/doc/templates/comparisonBar.js.map +0 -1
  402. package/dist/doc/templates/coverBlock.d.ts +0 -51
  403. package/dist/doc/templates/coverBlock.d.ts.map +0 -1
  404. package/dist/doc/templates/coverBlock.js +0 -153
  405. package/dist/doc/templates/coverBlock.js.map +0 -1
  406. package/dist/doc/templates/dataTable.d.ts +0 -14
  407. package/dist/doc/templates/dataTable.d.ts.map +0 -1
  408. package/dist/doc/templates/dataTable.js +0 -73
  409. package/dist/doc/templates/dataTable.js.map +0 -1
  410. package/dist/doc/templates/dateEvent.d.ts +0 -15
  411. package/dist/doc/templates/dateEvent.d.ts.map +0 -1
  412. package/dist/doc/templates/dateEvent.js +0 -114
  413. package/dist/doc/templates/dateEvent.js.map +0 -1
  414. package/dist/doc/templates/definitionCard.d.ts +0 -13
  415. package/dist/doc/templates/definitionCard.d.ts.map +0 -1
  416. package/dist/doc/templates/definitionCard.js +0 -117
  417. package/dist/doc/templates/definitionCard.js.map +0 -1
  418. package/dist/doc/templates/factCard.d.ts +0 -15
  419. package/dist/doc/templates/factCard.d.ts.map +0 -1
  420. package/dist/doc/templates/factCard.js +0 -104
  421. package/dist/doc/templates/factCard.js.map +0 -1
  422. package/dist/doc/templates/featureBlock.d.ts +0 -18
  423. package/dist/doc/templates/featureBlock.d.ts.map +0 -1
  424. package/dist/doc/templates/featureBlock.js +0 -180
  425. package/dist/doc/templates/featureBlock.js.map +0 -1
  426. package/dist/doc/templates/fullBleedQuote.d.ts +0 -25
  427. package/dist/doc/templates/fullBleedQuote.d.ts.map +0 -1
  428. package/dist/doc/templates/fullBleedQuote.js +0 -67
  429. package/dist/doc/templates/fullBleedQuote.js.map +0 -1
  430. package/dist/doc/templates/imageWithCaption.d.ts +0 -13
  431. package/dist/doc/templates/imageWithCaption.d.ts.map +0 -1
  432. package/dist/doc/templates/imageWithCaption.js +0 -146
  433. package/dist/doc/templates/imageWithCaption.js.map +0 -1
  434. package/dist/doc/templates/index.d.ts +0 -129
  435. package/dist/doc/templates/index.d.ts.map +0 -1
  436. package/dist/doc/templates/index.js +0 -478
  437. package/dist/doc/templates/index.js.map +0 -1
  438. package/dist/doc/templates/listBlock.d.ts +0 -13
  439. package/dist/doc/templates/listBlock.d.ts.map +0 -1
  440. package/dist/doc/templates/listBlock.js +0 -109
  441. package/dist/doc/templates/listBlock.js.map +0 -1
  442. package/dist/doc/templates/mapBlock.d.ts +0 -17
  443. package/dist/doc/templates/mapBlock.d.ts.map +0 -1
  444. package/dist/doc/templates/mapBlock.js +0 -115
  445. package/dist/doc/templates/mapBlock.js.map +0 -1
  446. package/dist/doc/templates/persistentLayers.d.ts +0 -39
  447. package/dist/doc/templates/persistentLayers.d.ts.map +0 -1
  448. package/dist/doc/templates/persistentLayers.js +0 -447
  449. package/dist/doc/templates/persistentLayers.js.map +0 -1
  450. package/dist/doc/templates/photoGrid.d.ts +0 -20
  451. package/dist/doc/templates/photoGrid.d.ts.map +0 -1
  452. package/dist/doc/templates/photoGrid.js +0 -175
  453. package/dist/doc/templates/photoGrid.js.map +0 -1
  454. package/dist/doc/templates/pullQuote.d.ts +0 -13
  455. package/dist/doc/templates/pullQuote.d.ts.map +0 -1
  456. package/dist/doc/templates/pullQuote.js +0 -113
  457. package/dist/doc/templates/pullQuote.js.map +0 -1
  458. package/dist/doc/templates/quoteBlock.d.ts +0 -15
  459. package/dist/doc/templates/quoteBlock.d.ts.map +0 -1
  460. package/dist/doc/templates/quoteBlock.js +0 -101
  461. package/dist/doc/templates/quoteBlock.js.map +0 -1
  462. package/dist/doc/templates/sectionHeader.d.ts +0 -14
  463. package/dist/doc/templates/sectionHeader.d.ts.map +0 -1
  464. package/dist/doc/templates/sectionHeader.js +0 -97
  465. package/dist/doc/templates/sectionHeader.js.map +0 -1
  466. package/dist/doc/templates/statHighlight.d.ts +0 -27
  467. package/dist/doc/templates/statHighlight.d.ts.map +0 -1
  468. package/dist/doc/templates/statHighlight.js +0 -114
  469. package/dist/doc/templates/statHighlight.js.map +0 -1
  470. package/dist/doc/templates/titleBlock.d.ts +0 -24
  471. package/dist/doc/templates/titleBlock.d.ts.map +0 -1
  472. package/dist/doc/templates/titleBlock.js +0 -103
  473. package/dist/doc/templates/titleBlock.js.map +0 -1
  474. package/dist/doc/templates/twoColumn.d.ts +0 -15
  475. package/dist/doc/templates/twoColumn.d.ts.map +0 -1
  476. package/dist/doc/templates/twoColumn.js +0 -225
  477. package/dist/doc/templates/twoColumn.js.map +0 -1
  478. package/dist/doc/templates/videoPullQuote.d.ts +0 -20
  479. package/dist/doc/templates/videoPullQuote.d.ts.map +0 -1
  480. package/dist/doc/templates/videoPullQuote.js +0 -122
  481. package/dist/doc/templates/videoPullQuote.js.map +0 -1
  482. package/dist/doc/templates/videoWithCaption.d.ts +0 -20
  483. package/dist/doc/templates/videoWithCaption.d.ts.map +0 -1
  484. package/dist/doc/templates/videoWithCaption.js +0 -107
  485. package/dist/doc/templates/videoWithCaption.js.map +0 -1
  486. package/dist/doc/utils/animationUtils.d.ts +0 -34
  487. package/dist/doc/utils/animationUtils.d.ts.map +0 -1
  488. package/dist/doc/utils/animationUtils.js +0 -110
  489. package/dist/doc/utils/animationUtils.js.map +0 -1
  490. package/dist/doc/utils/themeUtils.d.ts +0 -64
  491. package/dist/doc/utils/themeUtils.d.ts.map +0 -1
  492. package/dist/doc/utils/themeUtils.js +0 -136
  493. package/dist/doc/utils/themeUtils.js.map +0 -1
  494. package/dist/generate/contentExtractor.d.ts +0 -112
  495. package/dist/generate/contentExtractor.d.ts.map +0 -1
  496. package/dist/generate/contentExtractor.js +0 -638
  497. package/dist/generate/contentExtractor.js.map +0 -1
  498. package/dist/generate/index.d.ts.map +0 -1
  499. package/dist/generate/slideshowGenerator.d.ts +0 -72
  500. package/dist/generate/slideshowGenerator.d.ts.map +0 -1
  501. package/dist/generate/slideshowGenerator.js +0 -159
  502. package/dist/generate/slideshowGenerator.js.map +0 -1
  503. package/dist/generate/templateMapper.d.ts +0 -23
  504. package/dist/generate/templateMapper.d.ts.map +0 -1
  505. package/dist/generate/templateMapper.js +0 -114
  506. package/dist/generate/templateMapper.js.map +0 -1
  507. package/dist/icons/iconData.d.ts +0 -26
  508. package/dist/icons/iconData.d.ts.map +0 -1
  509. package/dist/icons/iconData.js +0 -12
  510. package/dist/icons/iconData.js.map +0 -1
  511. package/dist/icons/index.d.ts.map +0 -1
  512. package/dist/icons/resolve.d.ts +0 -61
  513. package/dist/icons/resolve.d.ts.map +0 -1
  514. package/dist/icons/resolve.js +0 -130
  515. package/dist/icons/resolve.js.map +0 -1
  516. package/dist/imageEdit/ImageEditVersionManager.d.ts +0 -31
  517. package/dist/imageEdit/ImageEditVersionManager.d.ts.map +0 -1
  518. package/dist/imageEdit/ImageEditVersionManager.js +0 -39
  519. package/dist/imageEdit/ImageEditVersionManager.js.map +0 -1
  520. package/dist/imageEdit/export.d.ts +0 -33
  521. package/dist/imageEdit/export.d.ts.map +0 -1
  522. package/dist/imageEdit/export.js +0 -253
  523. package/dist/imageEdit/export.js.map +0 -1
  524. package/dist/imageEdit/index.d.ts.map +0 -1
  525. package/dist/imageEdit/persistence.d.ts +0 -15
  526. package/dist/imageEdit/persistence.d.ts.map +0 -1
  527. package/dist/imageEdit/persistence.js +0 -49
  528. package/dist/imageEdit/persistence.js.map +0 -1
  529. package/dist/imageEdit/state.d.ts +0 -42
  530. package/dist/imageEdit/state.d.ts.map +0 -1
  531. package/dist/imageEdit/state.js +0 -98
  532. package/dist/imageEdit/state.js.map +0 -1
  533. package/dist/imageEdit/versionPaths.d.ts +0 -27
  534. package/dist/imageEdit/versionPaths.d.ts.map +0 -1
  535. package/dist/imageEdit/versionPaths.js +0 -57
  536. package/dist/imageEdit/versionPaths.js.map +0 -1
  537. package/dist/imageEdit/versions.d.ts +0 -67
  538. package/dist/imageEdit/versions.d.ts.map +0 -1
  539. package/dist/imageEdit/versions.js +0 -161
  540. package/dist/imageEdit/versions.js.map +0 -1
  541. package/dist/index.d.ts.map +0 -1
  542. package/dist/jsonForm/chooseControl.d.ts +0 -20
  543. package/dist/jsonForm/chooseControl.d.ts.map +0 -1
  544. package/dist/jsonForm/chooseControl.js +0 -82
  545. package/dist/jsonForm/chooseControl.js.map +0 -1
  546. package/dist/jsonForm/evaluateWhen.d.ts +0 -12
  547. package/dist/jsonForm/evaluateWhen.d.ts.map +0 -1
  548. package/dist/jsonForm/evaluateWhen.js +0 -65
  549. package/dist/jsonForm/evaluateWhen.js.map +0 -1
  550. package/dist/jsonForm/index.d.ts.map +0 -1
  551. package/dist/jsonForm/inferSchema.d.ts +0 -12
  552. package/dist/jsonForm/inferSchema.d.ts.map +0 -1
  553. package/dist/jsonForm/inferSchema.js +0 -15
  554. package/dist/jsonForm/inferSchema.js.map +0 -1
  555. package/dist/jsonForm/pointer.d.ts +0 -26
  556. package/dist/jsonForm/pointer.d.ts.map +0 -1
  557. package/dist/jsonForm/pointer.js +0 -102
  558. package/dist/jsonForm/pointer.js.map +0 -1
  559. package/dist/jsonForm/types.d.ts +0 -120
  560. package/dist/jsonForm/types.d.ts.map +0 -1
  561. package/dist/jsonForm/types.js +0 -10
  562. package/dist/jsonForm/types.js.map +0 -1
  563. package/dist/markdown/convert.d.ts +0 -81
  564. package/dist/markdown/convert.d.ts.map +0 -1
  565. package/dist/markdown/convert.js +0 -975
  566. package/dist/markdown/convert.js.map +0 -1
  567. package/dist/markdown/htmlParse.d.ts +0 -26
  568. package/dist/markdown/htmlParse.d.ts.map +0 -1
  569. package/dist/markdown/htmlParse.js +0 -195
  570. package/dist/markdown/htmlParse.js.map +0 -1
  571. package/dist/markdown/index.d.ts.map +0 -1
  572. package/dist/markdown/parse.d.ts +0 -27
  573. package/dist/markdown/parse.d.ts.map +0 -1
  574. package/dist/markdown/parse.js +0 -90
  575. package/dist/markdown/parse.js.map +0 -1
  576. package/dist/markdown/stringify.d.ts +0 -32
  577. package/dist/markdown/stringify.d.ts.map +0 -1
  578. package/dist/markdown/stringify.js +0 -108
  579. package/dist/markdown/stringify.js.map +0 -1
  580. package/dist/markdown/types.d.ts +0 -531
  581. package/dist/markdown/types.d.ts.map +0 -1
  582. package/dist/markdown/types.js +0 -17
  583. package/dist/markdown/types.js.map +0 -1
  584. package/dist/markdown/utils.d.ts +0 -118
  585. package/dist/markdown/utils.d.ts.map +0 -1
  586. package/dist/markdown/utils.js +0 -308
  587. package/dist/markdown/utils.js.map +0 -1
  588. package/dist/random/SeededRandom.d.ts +0 -50
  589. package/dist/random/SeededRandom.d.ts.map +0 -1
  590. package/dist/random/SeededRandom.js +0 -115
  591. package/dist/random/SeededRandom.js.map +0 -1
  592. package/dist/random/index.d.ts.map +0 -1
  593. package/dist/recommend/index.d.ts.map +0 -1
  594. package/dist/recommend/templates.d.ts +0 -39
  595. package/dist/recommend/templates.d.ts.map +0 -1
  596. package/dist/recommend/templates.js +0 -235
  597. package/dist/recommend/templates.js.map +0 -1
  598. package/dist/schemas/BlockTemplates.d.ts +0 -638
  599. package/dist/schemas/BlockTemplates.d.ts.map +0 -1
  600. package/dist/schemas/BlockTemplates.js +0 -72
  601. package/dist/schemas/BlockTemplates.js.map +0 -1
  602. package/dist/schemas/Doc.d.ts +0 -503
  603. package/dist/schemas/Doc.d.ts.map +0 -1
  604. package/dist/schemas/Doc.js +0 -90
  605. package/dist/schemas/Doc.js.map +0 -1
  606. package/dist/schemas/ImageEditDoc.d.ts +0 -81
  607. package/dist/schemas/ImageEditDoc.d.ts.map +0 -1
  608. package/dist/schemas/ImageEditDoc.js +0 -20
  609. package/dist/schemas/ImageEditDoc.js.map +0 -1
  610. package/dist/schemas/LayoutStrategy.d.ts +0 -84
  611. package/dist/schemas/LayoutStrategy.d.ts.map +0 -1
  612. package/dist/schemas/LayoutStrategy.js +0 -123
  613. package/dist/schemas/LayoutStrategy.js.map +0 -1
  614. package/dist/schemas/MediaProvider.d.ts +0 -65
  615. package/dist/schemas/MediaProvider.d.ts.map +0 -1
  616. package/dist/schemas/MediaProvider.js +0 -13
  617. package/dist/schemas/MediaProvider.js.map +0 -1
  618. package/dist/schemas/Theme.d.ts +0 -233
  619. package/dist/schemas/Theme.d.ts.map +0 -1
  620. package/dist/schemas/Theme.js +0 -129
  621. package/dist/schemas/Theme.js.map +0 -1
  622. package/dist/schemas/Types.d.ts +0 -14
  623. package/dist/schemas/Types.d.ts.map +0 -1
  624. package/dist/schemas/Types.js +0 -5
  625. package/dist/schemas/Types.js.map +0 -1
  626. package/dist/schemas/Viewport.d.ts +0 -74
  627. package/dist/schemas/Viewport.d.ts.map +0 -1
  628. package/dist/schemas/Viewport.js +0 -63
  629. package/dist/schemas/Viewport.js.map +0 -1
  630. package/dist/schemas/colorUtils.d.ts +0 -51
  631. package/dist/schemas/colorUtils.d.ts.map +0 -1
  632. package/dist/schemas/colorUtils.js +0 -154
  633. package/dist/schemas/colorUtils.js.map +0 -1
  634. package/dist/schemas/fontStacks.d.ts +0 -57
  635. package/dist/schemas/fontStacks.d.ts.map +0 -1
  636. package/dist/schemas/fontStacks.js +0 -227
  637. package/dist/schemas/fontStacks.js.map +0 -1
  638. package/dist/schemas/index.d.ts.map +0 -1
  639. package/dist/schemas/themeCompile.d.ts +0 -45
  640. package/dist/schemas/themeCompile.d.ts.map +0 -1
  641. package/dist/schemas/themeCompile.js +0 -160
  642. package/dist/schemas/themeCompile.js.map +0 -1
  643. package/dist/schemas/themeLibrary.d.ts +0 -37
  644. package/dist/schemas/themeLibrary.d.ts.map +0 -1
  645. package/dist/schemas/themeLibrary.js +0 -49
  646. package/dist/schemas/themeLibrary.js.map +0 -1
  647. package/dist/schemas/themeValidator.d.ts +0 -26
  648. package/dist/schemas/themeValidator.d.ts.map +0 -1
  649. package/dist/schemas/themeValidator.js +0 -352
  650. package/dist/schemas/themeValidator.js.map +0 -1
  651. package/dist/schemas/themes/bold.json +0 -48
  652. package/dist/schemas/themes/cinematic.json +0 -54
  653. package/dist/schemas/themes/documentary.json +0 -49
  654. package/dist/schemas/themes/gezellig.json +0 -44
  655. package/dist/schemas/themes/index.d.ts +0 -26
  656. package/dist/schemas/themes/index.d.ts.map +0 -1
  657. package/dist/schemas/themes/index.js +0 -49
  658. package/dist/schemas/themes/index.js.map +0 -1
  659. package/dist/schemas/themes/magazine.json +0 -44
  660. package/dist/schemas/themes/minimalist.json +0 -45
  661. package/dist/schemas/themes/morning-light.json +0 -42
  662. package/dist/schemas/themes/standard-dark.json +0 -50
  663. package/dist/schemas/themes/standard.json +0 -42
  664. package/dist/schemas/themes/tech-dark.json +0 -48
  665. package/dist/schemas/themes/warm-earth.json +0 -50
  666. package/dist/spatial/Geohash.d.ts +0 -85
  667. package/dist/spatial/Geohash.d.ts.map +0 -1
  668. package/dist/spatial/Geohash.js +0 -142
  669. package/dist/spatial/Geohash.js.map +0 -1
  670. package/dist/spatial/Haversine.d.ts +0 -24
  671. package/dist/spatial/Haversine.d.ts.map +0 -1
  672. package/dist/spatial/Haversine.js +0 -48
  673. package/dist/spatial/Haversine.js.map +0 -1
  674. package/dist/spatial/index.d.ts.map +0 -1
  675. package/dist/storage/ContentContainer.d.ts +0 -87
  676. package/dist/storage/ContentContainer.d.ts.map +0 -1
  677. package/dist/storage/ContentContainer.js +0 -131
  678. package/dist/storage/ContentContainer.js.map +0 -1
  679. package/dist/storage/LocalForageAdapter.d.ts +0 -36
  680. package/dist/storage/LocalForageAdapter.d.ts.map +0 -1
  681. package/dist/storage/LocalForageAdapter.js +0 -82
  682. package/dist/storage/LocalForageAdapter.js.map +0 -1
  683. package/dist/storage/LocalStorageAdapter.d.ts +0 -16
  684. package/dist/storage/LocalStorageAdapter.d.ts.map +0 -1
  685. package/dist/storage/LocalStorageAdapter.js +0 -50
  686. package/dist/storage/LocalStorageAdapter.js.map +0 -1
  687. package/dist/storage/MediaProviderFromContainer.d.ts +0 -21
  688. package/dist/storage/MediaProviderFromContainer.d.ts.map +0 -1
  689. package/dist/storage/MediaProviderFromContainer.js +0 -79
  690. package/dist/storage/MediaProviderFromContainer.js.map +0 -1
  691. package/dist/storage/MemoryStorageAdapter.d.ts +0 -15
  692. package/dist/storage/MemoryStorageAdapter.d.ts.map +0 -1
  693. package/dist/storage/MemoryStorageAdapter.js +0 -34
  694. package/dist/storage/MemoryStorageAdapter.js.map +0 -1
  695. package/dist/storage/ScopedContentContainer.d.ts +0 -44
  696. package/dist/storage/ScopedContentContainer.d.ts.map +0 -1
  697. package/dist/storage/ScopedContentContainer.js +0 -94
  698. package/dist/storage/ScopedContentContainer.js.map +0 -1
  699. package/dist/storage/Storage.d.ts +0 -23
  700. package/dist/storage/Storage.d.ts.map +0 -1
  701. package/dist/storage/Storage.js +0 -9
  702. package/dist/storage/Storage.js.map +0 -1
  703. package/dist/storage/index.d.ts.map +0 -1
  704. package/dist/timing/index.d.ts.map +0 -1
  705. package/dist/timing/narrationTiming.d.ts +0 -54
  706. package/dist/timing/narrationTiming.d.ts.map +0 -1
  707. package/dist/timing/narrationTiming.js +0 -190
  708. package/dist/timing/narrationTiming.js.map +0 -1
  709. package/dist/timing/readingTime.d.ts +0 -54
  710. package/dist/timing/readingTime.d.ts.map +0 -1
  711. package/dist/timing/readingTime.js +0 -49
  712. package/dist/timing/readingTime.js.map +0 -1
  713. package/dist/transform/applyTransform.d.ts +0 -22
  714. package/dist/transform/applyTransform.d.ts.map +0 -1
  715. package/dist/transform/applyTransform.js +0 -68
  716. package/dist/transform/applyTransform.js.map +0 -1
  717. package/dist/transform/blockAnalyzer.d.ts +0 -48
  718. package/dist/transform/blockAnalyzer.d.ts.map +0 -1
  719. package/dist/transform/blockAnalyzer.js +0 -135
  720. package/dist/transform/blockAnalyzer.js.map +0 -1
  721. package/dist/transform/index.d.ts.map +0 -1
  722. package/dist/transform/registry.d.ts +0 -19
  723. package/dist/transform/registry.d.ts.map +0 -1
  724. package/dist/transform/registry.js +0 -41
  725. package/dist/transform/registry.js.map +0 -1
  726. package/dist/transform/styles/dataDriven.d.ts +0 -4
  727. package/dist/transform/styles/dataDriven.d.ts.map +0 -1
  728. package/dist/transform/styles/dataDriven.js +0 -15
  729. package/dist/transform/styles/dataDriven.js.map +0 -1
  730. package/dist/transform/styles/documentary.d.ts +0 -4
  731. package/dist/transform/styles/documentary.d.ts.map +0 -1
  732. package/dist/transform/styles/documentary.js +0 -15
  733. package/dist/transform/styles/documentary.js.map +0 -1
  734. package/dist/transform/styles/index.d.ts +0 -6
  735. package/dist/transform/styles/index.d.ts.map +0 -1
  736. package/dist/transform/styles/index.js +0 -6
  737. package/dist/transform/styles/index.js.map +0 -1
  738. package/dist/transform/styles/magazine.d.ts +0 -4
  739. package/dist/transform/styles/magazine.d.ts.map +0 -1
  740. package/dist/transform/styles/magazine.js +0 -15
  741. package/dist/transform/styles/magazine.js.map +0 -1
  742. package/dist/transform/styles/minimal.d.ts +0 -4
  743. package/dist/transform/styles/minimal.d.ts.map +0 -1
  744. package/dist/transform/styles/minimal.js +0 -15
  745. package/dist/transform/styles/minimal.js.map +0 -1
  746. package/dist/transform/styles/narrative.d.ts +0 -4
  747. package/dist/transform/styles/narrative.d.ts.map +0 -1
  748. package/dist/transform/styles/narrative.js +0 -15
  749. package/dist/transform/styles/narrative.js.map +0 -1
  750. package/dist/transform/templateSelector.d.ts +0 -30
  751. package/dist/transform/templateSelector.d.ts.map +0 -1
  752. package/dist/transform/templateSelector.js +0 -218
  753. package/dist/transform/templateSelector.js.map +0 -1
  754. package/dist/transform/timingAllocator.d.ts +0 -21
  755. package/dist/transform/timingAllocator.d.ts.map +0 -1
  756. package/dist/transform/timingAllocator.js +0 -111
  757. package/dist/transform/timingAllocator.js.map +0 -1
  758. package/dist/transform/types.d.ts +0 -86
  759. package/dist/transform/types.d.ts.map +0 -1
  760. package/dist/transform/types.js +0 -9
  761. package/dist/transform/types.js.map +0 -1
  762. package/dist/versions/DocumentVersionManager.d.ts +0 -31
  763. package/dist/versions/DocumentVersionManager.d.ts.map +0 -1
  764. package/dist/versions/DocumentVersionManager.js +0 -33
  765. package/dist/versions/DocumentVersionManager.js.map +0 -1
  766. package/dist/versions/index.d.ts.map +0 -1
  767. package/dist/versions/operations.d.ts +0 -44
  768. package/dist/versions/operations.d.ts.map +0 -1
  769. package/dist/versions/operations.js +0 -190
  770. package/dist/versions/operations.js.map +0 -1
  771. package/dist/versions/paths.d.ts +0 -29
  772. package/dist/versions/paths.d.ts.map +0 -1
  773. package/dist/versions/paths.js +0 -66
  774. package/dist/versions/paths.js.map +0 -1
  775. package/dist/versions/timestamp.d.ts +0 -22
  776. package/dist/versions/timestamp.d.ts.map +0 -1
  777. package/dist/versions/timestamp.js +0 -44
  778. package/dist/versions/timestamp.js.map +0 -1
  779. package/dist/versions/types.d.ts +0 -92
  780. package/dist/versions/types.d.ts.map +0 -1
  781. package/dist/versions/types.js +0 -11
  782. package/dist/versions/types.js.map +0 -1
@@ -14,9 +14,15 @@
14
14
  "warning": "#ff5252"
15
15
  },
16
16
  "typography": {
17
- "bodyFont": { "stackId": "ibm-plex-sans" },
18
- "titleFont": { "stackId": "jetbrains-mono" },
19
- "monoFont": { "stackId": "jetbrains-mono" },
17
+ "bodyFont": {
18
+ "stackId": "ibm-plex-sans"
19
+ },
20
+ "titleFont": {
21
+ "stackId": "jetbrains-mono"
22
+ },
23
+ "monoFont": {
24
+ "stackId": "jetbrains-mono"
25
+ },
20
26
  "titleWeight": "bold",
21
27
  "titleScale": 0.9,
22
28
  "lineHeight": 1.5
@@ -25,24 +31,71 @@
25
31
  "textShadow": true,
26
32
  "overlayOpacity": 0.55,
27
33
  "animationSpeed": 0.9,
28
- "borderRadius": 2
34
+ "borderRadius": 2,
35
+ "imageTreatment": {
36
+ "type": "cool",
37
+ "strength": 0.45
38
+ }
29
39
  },
30
40
  "renderStyle": {
31
41
  "name": "tech-dark",
32
42
  "defaultTextAnimation": "typewriter",
33
43
  "defaultImageAnimation": "slowZoom",
34
44
  "ambientMotion": true,
35
- "defaultTransition": { "type": "dissolve", "duration": 0.4 },
45
+ "defaultTransition": {
46
+ "type": "dissolve",
47
+ "duration": 0.4
48
+ },
36
49
  "templateHints": {
37
- "statHighlight": { "entrance": "dramatic" }
50
+ "statHighlight": {
51
+ "entrance": "dramatic"
52
+ }
38
53
  }
39
54
  },
40
55
  "colorSchemes": {
41
- "blue": { "bg": "#0d1b2a", "text": "#00b0ff", "accent": "#40c4ff" },
42
- "green": { "bg": "#0d1b0d", "text": "#00e676", "accent": "#69f0ae" },
43
- "purple": { "bg": "#1a0d2e", "text": "#d500f9", "accent": "#ea80fc" },
44
- "red": { "bg": "#2e0d0d", "text": "#ff5252", "accent": "#ff8a80" },
45
- "orange": { "bg": "#2e1a0d", "text": "#ff9100", "accent": "#ffab40" },
46
- "teal": { "bg": "#0d2e2e", "text": "#1de9b6", "accent": "#64ffda" }
56
+ "blue": {
57
+ "bg": "#0d1b2a",
58
+ "text": "#00b0ff",
59
+ "accent": "#40c4ff"
60
+ },
61
+ "green": {
62
+ "bg": "#0d1b0d",
63
+ "text": "#00e676",
64
+ "accent": "#69f0ae"
65
+ },
66
+ "purple": {
67
+ "bg": "#1a0d2e",
68
+ "text": "#d500f9",
69
+ "accent": "#ea80fc"
70
+ },
71
+ "red": {
72
+ "bg": "#2e0d0d",
73
+ "text": "#ff5252",
74
+ "accent": "#ff8a80"
75
+ },
76
+ "orange": {
77
+ "bg": "#2e1a0d",
78
+ "text": "#ff9100",
79
+ "accent": "#ffab40"
80
+ },
81
+ "teal": {
82
+ "bg": "#0d2e2e",
83
+ "text": "#1de9b6",
84
+ "accent": "#64ffda"
85
+ }
86
+ },
87
+ "persistentLayers": {
88
+ "topLayers": [
89
+ {
90
+ "template": "patternBackground",
91
+ "config": {
92
+ "type": "patternBackground",
93
+ "pattern": "grid",
94
+ "color": "#00e5ff",
95
+ "opacity": 0.04,
96
+ "scale": 1.5
97
+ }
98
+ }
99
+ ]
47
100
  }
48
101
  }
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import ngeohash from 'ngeohash';
18
+ import { haversineDistance } from './Haversine.js';
18
19
 
19
20
  /**
20
21
  * Encode latitude/longitude to a geohash string.
@@ -64,9 +65,7 @@ export function getNeighbors(hash: string): string[] {
64
65
  * // => ['c23n', 'c23p', 'c23q', 'c23j', 'c23m', 'c23k', 'c23h', 'c23e', 'c23s']
65
66
  */
66
67
  export function getGeohash4Neighbors(geohash4: string): string[] {
67
- if (geohash4.length !== 4) {
68
- throw new Error(`getGeohash4Neighbors requires 4-char geohash, got: ${geohash4}`);
69
- }
68
+ if (geohash4.length !== 4) return [];
70
69
  const neighbors = getNeighbors(geohash4);
71
70
  return [geohash4, ...neighbors];
72
71
  }
@@ -92,18 +91,20 @@ export function getGeohashPrefix(geohash: string, precision: number): string {
92
91
  * performance issues.
93
92
  */
94
93
  export function geohashToHierarchicalPath(geohash4: string): string {
95
- if (geohash4.length !== 4) {
96
- throw new Error(`geohashToHierarchicalPath requires 4-char geohash, got: ${geohash4}`);
97
- }
94
+ if (geohash4.length !== 4) return '';
98
95
  const [c1, c2, c3, c4] = geohash4.split('');
99
96
  return `${c1}/${c2}/${c3}/${c4}`;
100
97
  }
101
98
 
102
99
  /**
103
- * Compute all geohash cells along the path between two geohash cells.
104
- * Interpolates lat/lng points between the centers of `from` and `to`,
105
- * encoding each to a geohash at the given precision, and returns the
106
- * deduplicated list of intermediate cells (excluding `from` and `to`).
100
+ * Compute all geohash cells along the great-circle path between two geohash cells.
101
+ * Samples points along the spherical arc from `from` to `to`, encoding each to a
102
+ * geohash at the given precision, and returns the deduplicated list of intermediate
103
+ * cells (excluding `from` and `to`).
104
+ *
105
+ * Uses spherical linear interpolation (SLERP) via 3D unit vectors, which correctly
106
+ * handles antimeridian crossings and polar paths — both of which flat lat/lng
107
+ * interpolation gets wrong.
107
108
  */
108
109
  export function getGeohashPath(from: string, to: string, precision = 4): string[] {
109
110
  if (from === to) return [];
@@ -111,15 +112,34 @@ export function getGeohashPath(from: string, to: string, precision = 4): string[
111
112
  const fromCenter = decodeGeohash(from);
112
113
  const toCenter = decodeGeohash(to);
113
114
 
114
- // Compute approximate distance to determine step count
115
- const dLat = Math.abs(toCenter.lat - fromCenter.lat);
116
- const dLng = Math.abs(toCenter.lng - fromCenter.lng);
117
- // Rough km: 1 degree lat ≈ 111km, 1 degree lng ≈ 111km * cos(midLat)
118
- const midLatRad = ((fromCenter.lat + toCenter.lat) / 2) * (Math.PI / 180);
119
- const approxKm = Math.sqrt((dLat * 111) ** 2 + (dLng * 111 * Math.cos(midLatRad)) ** 2);
115
+ // Use haversine for accurate great-circle distance (step sizing)
116
+ const distKm = haversineDistance(
117
+ { lat: fromCenter.lat, lng: fromCenter.lng },
118
+ { lat: toCenter.lat, lng: toCenter.lng },
119
+ );
120
120
 
121
121
  // Step every ~15km to avoid skipping any geohash4 cell (~39x19km)
122
- const steps = Math.max(2, Math.ceil(approxKm / 15));
122
+ const steps = Math.max(2, Math.ceil(distKm / 15));
123
+
124
+ // Convert endpoints to unit Cartesian vectors for SLERP
125
+ const φ1 = (fromCenter.lat * Math.PI) / 180;
126
+ const λ1 = (fromCenter.lng * Math.PI) / 180;
127
+ const φ2 = (toCenter.lat * Math.PI) / 180;
128
+ const λ2 = (toCenter.lng * Math.PI) / 180;
129
+
130
+ const x1 = Math.cos(φ1) * Math.cos(λ1);
131
+ const y1 = Math.cos(φ1) * Math.sin(λ1);
132
+ const z1 = Math.sin(φ1);
133
+ const x2 = Math.cos(φ2) * Math.cos(λ2);
134
+ const y2 = Math.cos(φ2) * Math.sin(λ2);
135
+ const z2 = Math.sin(φ2);
136
+
137
+ // Central angle between the two points
138
+ const dot = Math.max(-1, Math.min(1, x1 * x2 + y1 * y2 + z1 * z2));
139
+ const d = Math.acos(dot);
140
+ // Near-antipodal fallback: sin(d)≈0 means the great circle is undefined.
141
+ // Extremely unlikely for geohash path use; fall back to linear lat/lng.
142
+ const useLinear = Math.abs(Math.sin(d)) < 1e-10;
123
143
 
124
144
  const seen = new Set<string>();
125
145
  seen.add(from);
@@ -128,8 +148,20 @@ export function getGeohashPath(from: string, to: string, precision = 4): string[
128
148
  const path: string[] = [];
129
149
  for (let i = 1; i < steps; i++) {
130
150
  const t = i / steps;
131
- const lat = fromCenter.lat + t * (toCenter.lat - fromCenter.lat);
132
- const lng = fromCenter.lng + t * (toCenter.lng - fromCenter.lng);
151
+ let lat: number;
152
+ let lng: number;
153
+ if (useLinear) {
154
+ lat = fromCenter.lat + t * (toCenter.lat - fromCenter.lat);
155
+ lng = fromCenter.lng + t * (toCenter.lng - fromCenter.lng);
156
+ } else {
157
+ const A = Math.sin((1 - t) * d) / Math.sin(d);
158
+ const B = Math.sin(t * d) / Math.sin(d);
159
+ const x = A * x1 + B * x2;
160
+ const y = A * y1 + B * y2;
161
+ const z = A * z1 + B * z2;
162
+ lat = (Math.atan2(z, Math.sqrt(x * x + y * y)) * 180) / Math.PI;
163
+ lng = (Math.atan2(y, x) * 180) / Math.PI;
164
+ }
133
165
  const hash = encodeGeohash(lat, lng, precision);
134
166
  if (!seen.has(hash)) {
135
167
  seen.add(hash);
@@ -163,6 +195,5 @@ export function geohashOverlapsBounds(
163
195
  );
164
196
  }
165
197
 
166
- // haversineDistance is now in shared/spatial/Haversine.ts (canonical location).
167
198
  // Re-export for backwards compatibility with existing imports.
168
- export { haversineDistance } from './Haversine.js';
199
+ export { haversineDistance };
@@ -9,6 +9,7 @@
9
9
  */
10
10
 
11
11
  import type { Doc } from '../schemas/Doc.js';
12
+ import type { DocBlock, TitleBlockInput, SectionHeaderInput } from '../schemas/BlockTemplates.js';
12
13
  import type { TransformStyleId, TransformOptions, TransformResult } from './types.js';
13
14
  import { resolveTransformStyle } from './registry.js';
14
15
  import { analyzeBlocks, extractDocImages } from './blockAnalyzer.js';
@@ -62,14 +63,43 @@ export function applyTransform(
62
63
  // 2. Select extractions and build template blocks
63
64
  const selection = selectAndBuild(analyzed, config, images, seed);
64
65
 
66
+ // 2b. Pacing bookends: an opening title beat and/or a closing beat.
67
+ let paced: DocBlock[] = selection.blocks;
68
+ let pacingInserted = 0;
69
+ const docTitle = firstTitle(doc);
70
+ if (config.pacing?.intro && docTitle && !doc.startBlock) {
71
+ const intro: TitleBlockInput = {
72
+ template: 'title',
73
+ id: 'transform-intro',
74
+ duration: 4,
75
+ audioSegment: 0,
76
+ title: docTitle,
77
+ };
78
+ paced = [intro, ...paced];
79
+ pacingInserted++;
80
+ }
81
+ if (config.pacing?.outro && docTitle) {
82
+ const outro: SectionHeaderInput = {
83
+ template: 'sectionHeader',
84
+ id: 'transform-outro',
85
+ duration: 3,
86
+ audioSegment: 0,
87
+ title: docTitle,
88
+ colorScheme: config.colorSchemes[0],
89
+ };
90
+ paced = [...paced, outro];
91
+ pacingInserted++;
92
+ }
93
+
65
94
  // 3. Allocate timing across the new block sequence
66
- const timedBlocks = allocateTiming(selection.blocks, doc.duration);
95
+ const timedBlocks = allocateTiming(paced, doc.duration);
67
96
 
68
- // 4. Assemble the output Doc
97
+ // 4. Assemble the output Doc. A style's suggested theme applies only
98
+ // when neither the caller nor the doc declares one.
69
99
  const transformedDoc: Doc = {
70
100
  ...doc,
71
101
  blocks: timedBlocks,
72
- themeId: options?.themeId ?? doc.themeId,
102
+ themeId: options?.themeId ?? doc.themeId ?? config.suggestedThemeId,
73
103
  };
74
104
 
75
105
  return {
@@ -77,7 +107,16 @@ export function applyTransform(
77
107
  stats: {
78
108
  totalInputBlocks: doc.blocks.length,
79
109
  transformedBlocks: selection.transformedCount,
80
- insertedBlocks: selection.insertedCount,
110
+ insertedBlocks: selection.insertedCount + pacingInserted,
81
111
  },
82
112
  };
83
113
  }
114
+
115
+ /** First non-empty block title (the doc's working title). */
116
+ function firstTitle(doc: Doc): string | undefined {
117
+ if (doc.startBlock?.title) return doc.startBlock.title;
118
+ for (const block of doc.blocks) {
119
+ if (block.title) return block.title;
120
+ }
121
+ return undefined;
122
+ }
@@ -1,4 +1,5 @@
1
1
  export { applyTransform } from './applyTransform.js';
2
+ export { registerTransformStyle, unregisterTransformStyle } from './registry.js';
2
3
 
3
4
  export {
4
5
  resolveTransformStyle,
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Transform Style Registry
3
3
  *
4
- * Central registry of built-in transform styles. Follows the same pattern
5
- * as themeLibrary.ts a record of configs with lookup/summary helpers.
4
+ * Central registry of built-in transform styles plus a dynamic
5
+ * registration API. Follows the same pattern as themeLibrary.ts /
6
+ * `registerTheme` — registered styles take precedence over built-ins,
7
+ * unknown ids fall back to the default.
6
8
  */
7
9
 
8
10
  import type { TransformStyleConfig, TransformStyleSummary } from './types.js';
@@ -12,7 +14,7 @@ import { dataDrivenStyle } from './styles/dataDriven.js';
12
14
  import { narrativeStyle } from './styles/narrative.js';
13
15
  import { minimalStyle } from './styles/minimal.js';
14
16
 
15
- /** All registered transform styles, keyed by id. */
17
+ /** All built-in transform styles, keyed by id. */
16
18
  const TRANSFORM_STYLES: Record<string, TransformStyleConfig> = {
17
19
  [documentaryStyle.id]: documentaryStyle,
18
20
  [magazineStyle.id]: magazineStyle,
@@ -21,27 +23,56 @@ const TRANSFORM_STYLES: Record<string, TransformStyleConfig> = {
21
23
  [minimalStyle.id]: minimalStyle,
22
24
  };
23
25
 
26
+ /**
27
+ * Id aliases: the data-driven style's file/export are named `dataDriven`
28
+ * but its registered id is hyphenated — accept both.
29
+ */
30
+ const STYLE_ALIASES: Record<string, string> = {
31
+ dataDriven: 'data-driven',
32
+ };
33
+
34
+ /** Host-registered custom styles (registered ids win over built-ins). */
35
+ const registeredStyles = new Map<string, TransformStyleConfig>();
36
+
24
37
  /** Default style used when no id is provided. */
25
38
  export const DEFAULT_TRANSFORM_STYLE_ID = 'documentary';
26
39
 
27
40
  /**
28
- * Resolve a transform style by id.
29
- * Returns the default style if the id is not found.
41
+ * Register (or replace) a custom transform style at runtime. Hosts use
42
+ * this the same way they use `registerTheme` to add product-specific
43
+ * styles without forking the registry.
44
+ */
45
+ export function registerTransformStyle(style: TransformStyleConfig): void {
46
+ registeredStyles.set(style.id, style);
47
+ }
48
+
49
+ /** Remove a previously registered custom style. */
50
+ export function unregisterTransformStyle(id: string): void {
51
+ registeredStyles.delete(id);
52
+ }
53
+
54
+ /**
55
+ * Resolve a transform style by id. Registered styles win over built-ins;
56
+ * aliases are honored; unknown ids fall back to the default style.
30
57
  */
31
58
  export function resolveTransformStyle(id: string): TransformStyleConfig {
32
- return TRANSFORM_STYLES[id] ?? TRANSFORM_STYLES[DEFAULT_TRANSFORM_STYLE_ID];
59
+ const canonical = STYLE_ALIASES[id] ?? id;
60
+ return (
61
+ registeredStyles.get(canonical) ??
62
+ TRANSFORM_STYLES[canonical] ??
63
+ TRANSFORM_STYLES[DEFAULT_TRANSFORM_STYLE_ID]
64
+ );
33
65
  }
34
66
 
35
- /** Get all registered style ids. */
67
+ /** Get all known style ids (built-ins plus registered). */
36
68
  export function getTransformStyleIds(): string[] {
37
- return Object.keys(TRANSFORM_STYLES);
69
+ return Array.from(new Set([...Object.keys(TRANSFORM_STYLES), ...registeredStyles.keys()]));
38
70
  }
39
71
 
40
72
  /** Get summary info for all styles (for UI dropdowns). */
41
73
  export function getTransformStyleSummaries(): TransformStyleSummary[] {
42
- return Object.values(TRANSFORM_STYLES).map(({ id, name, description }) => ({
43
- id,
44
- name,
45
- description,
46
- }));
74
+ return getTransformStyleIds().map((id) => {
75
+ const { name, description } = resolveTransformStyle(id);
76
+ return { id, name, description };
77
+ });
47
78
  }
@@ -11,6 +11,7 @@ export const dataDrivenStyle: TransformStyleConfig = {
11
11
  colorSchemes: ['blue', 'orange', 'green', 'purple', 'red'],
12
12
  insertSectionHeaders: true,
13
13
  interleaveImages: false,
14
- blocksPerSection: { min: 2, max: 6 },
14
+ blocksPerSection: { max: 6 },
15
15
  transitionStyle: 'cut',
16
+ suggestedThemeId: 'tech-dark',
16
17
  };
@@ -11,6 +11,7 @@ export const documentaryStyle: TransformStyleConfig = {
11
11
  colorSchemes: ['blue', 'green', 'purple'],
12
12
  insertSectionHeaders: false,
13
13
  interleaveImages: true,
14
- blocksPerSection: { min: 1, max: 3 },
14
+ blocksPerSection: { max: 3 },
15
15
  transitionStyle: 'fade',
16
+ suggestedThemeId: 'documentary',
16
17
  };
@@ -11,6 +11,8 @@ export const magazineStyle: TransformStyleConfig = {
11
11
  colorSchemes: ['blue', 'green', 'purple', 'orange', 'red'],
12
12
  insertSectionHeaders: true,
13
13
  interleaveImages: true,
14
- blocksPerSection: { min: 2, max: 5 },
14
+ blocksPerSection: { max: 5 },
15
15
  transitionStyle: 'dissolve',
16
+ suggestedThemeId: 'magazine',
17
+ templateMap: { quote: 'pullQuote', impactLine: 'fullBleedQuote' },
16
18
  };
@@ -11,6 +11,7 @@ export const minimalStyle: TransformStyleConfig = {
11
11
  colorSchemes: ['blue', 'green'],
12
12
  insertSectionHeaders: false,
13
13
  interleaveImages: false,
14
- blocksPerSection: { min: 1, max: 2 },
14
+ blocksPerSection: { max: 2 },
15
15
  transitionStyle: 'fade',
16
+ suggestedThemeId: 'minimalist',
16
17
  };
@@ -11,6 +11,8 @@ export const narrativeStyle: TransformStyleConfig = {
11
11
  colorSchemes: ['blue', 'purple', 'green'],
12
12
  insertSectionHeaders: true,
13
13
  interleaveImages: true,
14
- blocksPerSection: { min: 1, max: 4 },
14
+ blocksPerSection: { max: 4 },
15
15
  transitionStyle: 'fade',
16
+ suggestedThemeId: 'cinematic',
17
+ pacing: { intro: true, outro: true },
16
18
  };
@@ -6,13 +6,16 @@
6
6
  * variety. Ported and generalized from qualla-internal's TemplateSelector.
7
7
  */
8
8
 
9
- import type { Block } from '../schemas/Doc.js';
9
+ import type { Block, TransitionType } from '../schemas/Doc.js';
10
10
  import type {
11
11
  TemplateBlock,
12
12
  AccentImage,
13
13
  AccentPosition,
14
14
  ImageWithCaptionInput,
15
15
  SectionHeaderInput,
16
+ QuoteBlockInput,
17
+ FullBleedQuoteInput,
18
+ StatHighlightInput,
16
19
  } from '../schemas/BlockTemplates.js';
17
20
  import type { ExtractedElement } from '../generate/contentExtractor.js';
18
21
  import type { TransformStyleConfig, TransformImage } from './types.js';
@@ -73,8 +76,17 @@ export function selectAndBuild(
73
76
  // 1. Collect all extractions across all blocks, filtered by config
74
77
  const candidates = collectCandidates(analyzed, config);
75
78
 
76
- // 2. Determine how many blocks to transform
77
- const maxTransforms = Math.max(1, Math.floor(analyzed.length * config.transformRatio));
79
+ // 2. Determine how many blocks to transform. `transformRatio` scales
80
+ // with block count; an optional duration-based budget (slides per
81
+ // minute) caps runaway promotion on long dense documents.
82
+ const ratioCap = Math.max(1, Math.floor(analyzed.length * config.transformRatio));
83
+ const slidesPerMinute = config.budget?.slidesPerMinute;
84
+ const totalDurationSeconds = analyzed.reduce((sum, ab) => sum + (ab.block.duration || 0), 0);
85
+ const budgetCap =
86
+ slidesPerMinute && totalDurationSeconds > 0
87
+ ? Math.max(1, Math.round((totalDurationSeconds / 60) * slidesPerMinute))
88
+ : Infinity;
89
+ const maxTransforms = Math.min(ratioCap, budgetCap);
78
90
  const selected = candidates.slice(0, maxTransforms);
79
91
 
80
92
  // 3. Build the output block sequence
@@ -233,7 +245,7 @@ function buildBlockSequence(
233
245
  accentPositionIndex++;
234
246
  }
235
247
 
236
- const templateBlock = mapElementToBlock(sel.element, {
248
+ let templateBlock = mapElementToBlock(sel.element, {
237
249
  id: `transform-${blockIdCounter++}`,
238
250
  duration: ab.block.duration > 0 ? ab.block.duration / extractions.length : 6,
239
251
  audioSegment: ab.block.audioSegment,
@@ -242,15 +254,24 @@ function buildBlockSequence(
242
254
  sourceStartTime: sel.element.sourcePosition,
243
255
  });
244
256
 
257
+ // Style-level extraction→template remap (v2 contract). Only known
258
+ // text-compatible pairings translate; image-backed targets consume
259
+ // the accent image as their background. Unknown pairings keep the
260
+ // default mapping.
261
+ const remapTarget = config.templateMap?.[sel.element.data.type];
262
+ if (remapTarget && remapTarget !== templateBlock.template) {
263
+ const translated = translateTemplateBlock(templateBlock, remapTarget);
264
+ if (translated) templateBlock = translated;
265
+ }
266
+
245
267
  // Apply transition based on style
246
268
  if (config.transitionStyle !== 'cut') {
247
- (
248
- templateBlock as TemplateBlock & { transition?: { type: string; duration: number } }
249
- ).transition = {
250
- type:
251
- config.transitionStyle === 'mixed'
252
- ? (rng.pick(['fade', 'dissolve']) ?? 'fade')
253
- : config.transitionStyle,
269
+ const transitionType: TransitionType =
270
+ config.transitionStyle === 'mixed'
271
+ ? (rng.pick<TransitionType>(['fade', 'dissolve']) ?? 'fade')
272
+ : config.transitionStyle;
273
+ templateBlock.transition = {
274
+ type: transitionType,
254
275
  duration: 0.5,
255
276
  };
256
277
  }
@@ -292,3 +313,58 @@ function buildBlockSequence(
292
313
 
293
314
  return { blocks, transformedCount, insertedCount };
294
315
  }
316
+
317
+ /**
318
+ * Translate a mapped template block into a style-requested target
319
+ * template. Only text-compatible pairings are supported; returns null
320
+ * (keep the default) for unknown pairs or when a required input —
321
+ * a background image for `pullQuote` — is unavailable.
322
+ */
323
+ function translateTemplateBlock(block: TemplateBlock, target: string): TemplateBlock | null {
324
+ const base = {
325
+ id: block.id,
326
+ duration: block.duration,
327
+ audioSegment: block.audioSegment,
328
+ sourceStartTime: block.sourceStartTime,
329
+ sourceDuration: block.sourceDuration,
330
+ };
331
+
332
+ if (block.template === 'quote') {
333
+ const quote = block as QuoteBlockInput;
334
+ if (target === 'fullBleedQuote') {
335
+ return { ...base, template: 'fullBleedQuote', text: quote.quote };
336
+ }
337
+ if (target === 'pullQuote') {
338
+ // pullQuote requires a full-bleed background image — reuse the
339
+ // accent image the selector already assigned to this block.
340
+ const bg = quote.accentImage;
341
+ if (!bg) return null;
342
+ return {
343
+ ...base,
344
+ template: 'pullQuote',
345
+ text: quote.quote,
346
+ attribution: quote.attribution,
347
+ backgroundImage: { src: bg.src, alt: bg.alt, credit: bg.credit, license: bg.license },
348
+ };
349
+ }
350
+ return null;
351
+ }
352
+
353
+ if (block.template === 'fullBleedQuote' && target === 'quote') {
354
+ const fbq = block as FullBleedQuoteInput;
355
+ return { ...base, template: 'quote', quote: fbq.text };
356
+ }
357
+
358
+ if (block.template === 'statHighlight' && target === 'factCard') {
359
+ const stat = block as StatHighlightInput;
360
+ return {
361
+ ...base,
362
+ template: 'factCard',
363
+ fact: stat.stat,
364
+ explanation: stat.description,
365
+ accentImage: stat.accentImage,
366
+ };
367
+ }
368
+
369
+ return null;
370
+ }
@@ -57,11 +57,44 @@ export interface TransformStyleConfig {
57
57
  /** Whether to interleave imageWithCaption blocks when images are available. */
58
58
  interleaveImages: boolean;
59
59
 
60
- /** Target density of template blocks per section. */
61
- blocksPerSection: { min: number; max: number };
60
+ /** Maximum template blocks promoted per source section. */
61
+ blocksPerSection: { max: number };
62
62
 
63
63
  /** Transition style preference for transformed blocks. */
64
64
  transitionStyle: 'cut' | 'fade' | 'dissolve' | 'mixed';
65
+
66
+ /**
67
+ * Per-style extraction→template remapping. Falls back to the fixed
68
+ * default map in `generate/templateMapper.ts` for unmapped types.
69
+ * Only text-compatible targets are honored (see
70
+ * `translateTemplateBlock`) — an unknown pairing keeps the default.
71
+ */
72
+ templateMap?: Partial<Record<ExtractionType, string>>;
73
+
74
+ /**
75
+ * Theme this style pairs best with. Consumers (CLI, editor preview)
76
+ * apply it only when the doc doesn't already declare a `themeId`.
77
+ */
78
+ suggestedThemeId?: string;
79
+
80
+ /** Optional opening/closing beats added around the transformed doc. */
81
+ pacing?: {
82
+ /** Prepend a `title` block built from the doc's title. */
83
+ intro?: boolean;
84
+ /** Append a closing beat (best unused quote/impact line, else a sectionHeader). */
85
+ outro?: boolean;
86
+ };
87
+
88
+ /**
89
+ * Duration-based slide budget (folded in from the deprecated
90
+ * `generateSlideshow`): caps promoted template blocks at roughly
91
+ * `slidesPerMinute` of doc duration (default: uncapped — only
92
+ * `transformRatio` applies).
93
+ */
94
+ budget?: {
95
+ /** Target promoted blocks per minute of content (e.g. 5). */
96
+ slidesPerMinute?: number;
97
+ };
65
98
  }
66
99
 
67
100
  // ── Transform options ────────────────────────────────────────────
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=animationUtils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"animationUtils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/animationUtils.test.ts"],"names":[],"mappings":""}