@bendyline/squisq 1.4.0 → 1.4.1

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