@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,975 +0,0 @@
1
- /**
2
- * mdast ↔ Squisq Markdown Node Conversion
3
- *
4
- * Converts between the remark/mdast AST format and the squisq
5
- * MarkdownDocument JSON format. This is the bridge layer that allows
6
- * us to use the battle-tested unified/remark ecosystem for parsing
7
- * and serialization while exposing our own clean, well-typed interfaces.
8
- *
9
- * The conversion is designed for perfect round-tripping:
10
- * toMdast(fromMdast(tree)) should produce an equivalent mdast tree.
11
- */
12
- import { parseHtmlToNodes } from './htmlParse.js';
13
- import { resolveIcon } from '../icons/resolve.js';
14
- // ============================================
15
- // Position conversion
16
- // ============================================
17
- function convertPosition(pos) {
18
- if (!pos)
19
- return undefined;
20
- return {
21
- start: {
22
- line: pos.start.line,
23
- column: pos.start.column,
24
- ...(pos.start.offset != null ? { offset: pos.start.offset } : {}),
25
- },
26
- end: {
27
- line: pos.end.line,
28
- column: pos.end.column,
29
- ...(pos.end.offset != null ? { offset: pos.end.offset } : {}),
30
- },
31
- };
32
- }
33
- function toMdastPosition(pos) {
34
- return {
35
- start: {
36
- line: pos.start.line,
37
- column: pos.start.column,
38
- ...(pos.start.offset != null ? { offset: pos.start.offset } : {}),
39
- },
40
- end: {
41
- line: pos.end.line,
42
- column: pos.end.column,
43
- ...(pos.end.offset != null ? { offset: pos.end.offset } : {}),
44
- },
45
- };
46
- }
47
- /** Conditionally include position in node. */
48
- function posField(pos) {
49
- return pos ? { position: pos } : {};
50
- }
51
- function mdastPosField(pos) {
52
- return pos ? { position: toMdastPosition(pos) } : {};
53
- }
54
- // ============================================
55
- // mdast → Squisq (fromMdast)
56
- // ============================================
57
- /**
58
- * Extract plain text content from an mdast node tree.
59
- * Used for directive labels.
60
- */
61
- function extractText(node) {
62
- if (node.value != null)
63
- return node.value;
64
- if (node.children) {
65
- return node.children.map(extractText).join('');
66
- }
67
- return '';
68
- }
69
- // ============================================
70
- // Template annotation helpers
71
- // ============================================
72
- /**
73
- * Regex matching a trailing `{[templateName key=value …]}` annotation.
74
- * Captures the content between `{[` and `]}`.
75
- *
76
- * The trailing `[\s\]\}]*` tolerates accidental doubled `]}` that users
77
- * sometimes type when learning the syntax (e.g. `{[foo]}]}`). It does
78
- * not allow trailing word characters, so a non-trailing annotation like
79
- * `## The {[chart]} section` still doesn't match.
80
- */
81
- const TEMPLATE_ANNOTATION_RE = /\s*\{\[([^\]]+)\]\}[\s\]}]*$/;
82
- /**
83
- * Extract a `{[templateName key=value …]}` annotation from a heading's
84
- * inline children. Mutates the children array in-place: strips the
85
- * annotation text from the last text node (or removes the node entirely).
86
- *
87
- * @returns The parsed annotation, or null if none found.
88
- */
89
- function extractTemplateAnnotation(children) {
90
- // Walk backwards to find the last text node
91
- for (let i = children.length - 1; i >= 0; i--) {
92
- const child = children[i];
93
- if (child.type === 'text') {
94
- const match = child.value.match(TEMPLATE_ANNOTATION_RE);
95
- if (match) {
96
- const inner = match[1].trim();
97
- const annotation = parseAnnotationTokens(inner);
98
- // Strip the matched portion from the text
99
- const stripped = child.value.slice(0, match.index).replace(/\s+$/, '');
100
- if (stripped) {
101
- child.value = stripped;
102
- }
103
- else {
104
- // Remove the now-empty text node
105
- children.splice(i, 1);
106
- }
107
- return annotation;
108
- }
109
- // Only check the last text node (trailing position)
110
- break;
111
- }
112
- // If the last child isn't a text node, there's no annotation
113
- break;
114
- }
115
- return null;
116
- }
117
- /**
118
- * Parse the inner content of a `{[…]}` annotation into template + params.
119
- *
120
- * Input: `"chart colorScheme=blue size=large"`
121
- * Output: `{ template: 'chart', params: { colorScheme: 'blue', size: 'large' } }`
122
- */
123
- function parseAnnotationTokens(inner) {
124
- const tokens = inner.split(/\s+/);
125
- const params = {};
126
- // If the first token contains '=', there's no template name —
127
- // the annotation is purely key-value (e.g., `{[audio=intro.mp3]}`).
128
- const firstIsParam = tokens[0].indexOf('=') > 0;
129
- const template = firstIsParam ? undefined : tokens[0];
130
- const startIdx = firstIsParam ? 0 : 1;
131
- for (let i = startIdx; i < tokens.length; i++) {
132
- const eqIdx = tokens[i].indexOf('=');
133
- if (eqIdx > 0) {
134
- params[tokens[i].slice(0, eqIdx)] = tokens[i].slice(eqIdx + 1);
135
- }
136
- }
137
- const result = {};
138
- if (template) {
139
- result.template = template;
140
- }
141
- if (Object.keys(params).length > 0) {
142
- result.params = params;
143
- }
144
- return result;
145
- }
146
- /**
147
- * Serialize a HeadingTemplateAnnotation back to `{[templateName key=value …]}` text.
148
- */
149
- function serializeTemplateAnnotation(annotation) {
150
- const parts = [];
151
- if (annotation.template) {
152
- parts.push(annotation.template);
153
- }
154
- if (annotation.params) {
155
- for (const [key, value] of Object.entries(annotation.params)) {
156
- parts.push(`${key}=${value}`);
157
- }
158
- }
159
- return `{[${parts.join(' ')}]}`;
160
- }
161
- /**
162
- * Convert an mdast Root node to a MarkdownDocument.
163
- *
164
- * @param root - The mdast root node (from remark-parse)
165
- * @param options - Conversion options
166
- * @returns A MarkdownDocument
167
- */
168
- export function fromMdast(root, options) {
169
- const doParseHtml = options?.parseHtml !== false;
170
- return {
171
- type: 'document',
172
- children: convertBlockChildren(root.children ?? [], doParseHtml),
173
- ...posField(convertPosition(root.position)),
174
- };
175
- }
176
- function convertBlockChildren(children, parseHtml) {
177
- const result = [];
178
- for (const child of children) {
179
- const node = convertBlockNode(child, parseHtml);
180
- if (node)
181
- result.push(node);
182
- }
183
- return result;
184
- }
185
- function convertInlineChildren(children, parseHtml,
186
- /** When false, skip the inline-icon split. Headings opt out so the
187
- * `extractTemplateAnnotation` pass still sees the trailing
188
- * `{[…]}` in raw text form; the caller runs `splitInlineIcons`
189
- * itself afterward on the remaining children. */
190
- applyIconSplit = true) {
191
- const result = [];
192
- for (const child of children) {
193
- const node = convertInlineNode(child, parseHtml);
194
- if (node)
195
- result.push(node);
196
- }
197
- const mentioned = coalesceMentions(result);
198
- return applyIconSplit ? splitInlineIcons(mentioned) : mentioned;
199
- }
200
- /**
201
- * Walk an inline-children list and split each text node on `{[token]}`
202
- * occurrences whose tokens resolve to known FontAwesome icons. Returns
203
- * a new array — unresolved tokens are left as literal text so authors
204
- * can write `{[notathing]}` verbatim if they really mean to.
205
- *
206
- * Exposed for the heading code path, which first strips the trailing
207
- * template annotation and then runs this on what remains.
208
- */
209
- export function splitInlineIcons(nodes) {
210
- // First pass: reassemble `text + textDirective + text` patterns
211
- // formed when a qualified token like `{[fa-solid:user]}` was split
212
- // by remark-directive's colon recognition. We collapse those triples
213
- // back into a single text node containing the original token so the
214
- // regex below can match.
215
- const recombined = recombineDirectiveTokens(nodes);
216
- const out = [];
217
- for (const node of recombined) {
218
- if (node.type !== 'text') {
219
- out.push(node);
220
- continue;
221
- }
222
- out.push(...splitTextOnIcons(node.value, node.position));
223
- }
224
- return out;
225
- }
226
- /**
227
- * When the user types `{[fa-solid:user]}`, remark's directive plugin
228
- * sees `:user` and emits a `textDirective` node. The result is a
229
- * three-node sequence `text("…{[fa-solid") + textDirective("user") +
230
- * text("]}…")`. This helper detects that shape and stitches the three
231
- * back into one text node so downstream icon detection works on the
232
- * authored token.
233
- */
234
- function recombineDirectiveTokens(nodes) {
235
- const out = [];
236
- for (let i = 0; i < nodes.length; i++) {
237
- const cur = nodes[i];
238
- const next = nodes[i + 1];
239
- const after = nodes[i + 2];
240
- if (cur?.type === 'text' &&
241
- next?.type === 'textDirective' &&
242
- after?.type === 'text' &&
243
- /\{\[[a-zA-Z0-9_-]+$/.test(cur.value) &&
244
- /^\]\}/.test(after.value)) {
245
- const directive = next;
246
- const directiveName = directive.name ?? '';
247
- const merged = {
248
- type: 'text',
249
- value: cur.value + ':' + directiveName + after.value,
250
- ...(cur.position ? { position: cur.position } : {}),
251
- };
252
- out.push(merged);
253
- i += 2;
254
- continue;
255
- }
256
- out.push(cur);
257
- }
258
- return out;
259
- }
260
- const ICON_TOKEN_RE = /\{\[([a-zA-Z0-9_:-]+)\]\}/g;
261
- function splitTextOnIcons(value, position) {
262
- if (!value)
263
- return [];
264
- ICON_TOKEN_RE.lastIndex = 0;
265
- let lastIndex = 0;
266
- let match;
267
- const out = [];
268
- while ((match = ICON_TOKEN_RE.exec(value)) !== null) {
269
- const token = match[1];
270
- const icon = resolveIcon(token);
271
- if (!icon)
272
- continue; // leave the literal `{[…]}` in place
273
- if (match.index > lastIndex) {
274
- out.push({
275
- type: 'text',
276
- value: value.slice(lastIndex, match.index),
277
- ...(position ? { position } : {}),
278
- });
279
- }
280
- const iconNode = {
281
- type: 'inlineIcon',
282
- token,
283
- family: icon.family,
284
- name: icon.name,
285
- ...(position ? { position } : {}),
286
- };
287
- out.push(iconNode);
288
- lastIndex = match.index + match[0].length;
289
- }
290
- if (lastIndex === 0) {
291
- // No matches — return the original text node unchanged.
292
- return [{ type: 'text', value, ...(position ? { position } : {}) }];
293
- }
294
- if (lastIndex < value.length) {
295
- out.push({
296
- type: 'text',
297
- value: value.slice(lastIndex),
298
- ...(position ? { position } : {}),
299
- });
300
- }
301
- return out;
302
- }
303
- /**
304
- * Post-process an inline-children list to collapse `text('@') + link(scheme:id)`
305
- * pairs into a single `mention` node. The wire format `@[Display](scheme:id)`
306
- * comes back from remark as two adjacent nodes — we merge them so consumers
307
- * see a single atomic mention. A plain link whose URL doesn't have `scheme:id`
308
- * shape, or that isn't immediately preceded by `@`, is left alone so ordinary
309
- * links keep working.
310
- */
311
- function coalesceMentions(inlines) {
312
- const out = [];
313
- for (const cur of inlines) {
314
- const prev = out[out.length - 1];
315
- if (cur.type === 'link' &&
316
- typeof cur.url === 'string' &&
317
- prev &&
318
- prev.type === 'text' &&
319
- prev.value.endsWith('@')) {
320
- const schemeMatch = cur.url.match(/^([a-z][a-z0-9+.-]*):(.+)$/i);
321
- if (schemeMatch && schemeMatch[1] && schemeMatch[2]) {
322
- const targetKind = schemeMatch[1];
323
- const targetId = schemeMatch[2];
324
- const displayName = extractInlineText(cur.children);
325
- if (prev.value === '@') {
326
- out.pop();
327
- }
328
- else {
329
- prev.value = prev.value.slice(0, -1);
330
- }
331
- out.push({
332
- type: 'mention',
333
- targetKind,
334
- targetId,
335
- displayName,
336
- ...(cur.position ? { position: cur.position } : {}),
337
- });
338
- continue;
339
- }
340
- }
341
- out.push(cur);
342
- }
343
- return out;
344
- }
345
- /** Plain-text of an inline children list — used to pull the display name
346
- * out of a mention link's children. */
347
- function extractInlineText(nodes) {
348
- let out = '';
349
- for (const n of nodes) {
350
- if (n.type === 'text' || n.type === 'inlineCode')
351
- out += n.value;
352
- else if ('children' in n && Array.isArray(n.children)) {
353
- out += extractInlineText(n.children);
354
- }
355
- }
356
- return out;
357
- }
358
- function convertBlockNode(node, parseHtml) {
359
- const pos = convertPosition(node.position);
360
- switch (node.type) {
361
- case 'heading': {
362
- // Defer icon splitting so `extractTemplateAnnotation` sees the
363
- // trailing `{[name]}` as plain text and can decide whether it's
364
- // a template annotation. Anything that's NOT the template still
365
- // needs to become an icon node, so we run `splitInlineIcons` on
366
- // what's left after the template extraction.
367
- const headingChildren = convertInlineChildren(node.children ?? [], parseHtml, false);
368
- const annotation = extractTemplateAnnotation(headingChildren);
369
- const finalChildren = splitInlineIcons(headingChildren);
370
- const result = {
371
- type: 'heading',
372
- depth: (node.depth ?? 1),
373
- children: finalChildren,
374
- ...posField(pos),
375
- };
376
- if (annotation) {
377
- result.templateAnnotation = annotation;
378
- }
379
- return result;
380
- }
381
- case 'paragraph':
382
- return {
383
- type: 'paragraph',
384
- children: convertInlineChildren(node.children ?? [], parseHtml),
385
- ...posField(pos),
386
- };
387
- case 'blockquote':
388
- return {
389
- type: 'blockquote',
390
- children: convertBlockChildren(node.children ?? [], parseHtml),
391
- ...posField(pos),
392
- };
393
- case 'list':
394
- return {
395
- type: 'list',
396
- ordered: node.ordered ?? false,
397
- ...(node.start != null ? { start: node.start } : {}),
398
- ...(node.spread != null ? { spread: node.spread } : {}),
399
- children: (node.children ?? []).map((item) => convertListItem(item, parseHtml)),
400
- ...posField(pos),
401
- };
402
- case 'code':
403
- return {
404
- type: 'code',
405
- ...(node.lang != null ? { lang: node.lang } : {}),
406
- ...(node.meta != null ? { meta: node.meta } : {}),
407
- value: node.value ?? '',
408
- ...posField(pos),
409
- };
410
- case 'thematicBreak':
411
- return {
412
- type: 'thematicBreak',
413
- ...posField(pos),
414
- };
415
- case 'table':
416
- return {
417
- type: 'table',
418
- ...(node.align
419
- ? { align: node.align.map((a) => a) }
420
- : {}),
421
- children: (node.children ?? []).map((row, i) => convertTableRow(row, i === 0, parseHtml)),
422
- ...posField(pos),
423
- };
424
- case 'html':
425
- return {
426
- type: 'htmlBlock',
427
- rawHtml: node.value ?? '',
428
- htmlChildren: parseHtml ? parseHtmlToNodes(node.value ?? '') : [],
429
- ...posField(pos),
430
- };
431
- case 'math':
432
- return {
433
- type: 'math',
434
- value: node.value ?? '',
435
- ...(node.meta != null ? { meta: node.meta } : {}),
436
- ...posField(pos),
437
- };
438
- case 'definition':
439
- return {
440
- type: 'definition',
441
- identifier: node.identifier ?? '',
442
- ...(node.label != null ? { label: node.label } : {}),
443
- url: node.url ?? '',
444
- ...(node.title != null ? { title: node.title } : {}),
445
- ...posField(pos),
446
- };
447
- case 'footnoteDefinition':
448
- return {
449
- type: 'footnoteDefinition',
450
- identifier: node.identifier ?? '',
451
- ...(node.label != null ? { label: node.label } : {}),
452
- children: convertBlockChildren(node.children ?? [], parseHtml),
453
- ...posField(pos),
454
- };
455
- case 'containerDirective': {
456
- const allChildren = node.children ?? [];
457
- let label;
458
- let contentChildren = allChildren;
459
- // Extract directive label (first paragraph with directiveLabel flag)
460
- if (allChildren.length > 0 &&
461
- allChildren[0].type === 'paragraph' &&
462
- allChildren[0].data?.directiveLabel === true) {
463
- label = extractText(allChildren[0]);
464
- contentChildren = allChildren.slice(1);
465
- }
466
- return {
467
- type: 'containerDirective',
468
- name: node.name ?? '',
469
- ...(label ? { label } : {}),
470
- ...(node.attributes && Object.keys(node.attributes).length > 0
471
- ? { attributes: node.attributes }
472
- : {}),
473
- children: convertBlockChildren(contentChildren, parseHtml),
474
- ...posField(pos),
475
- };
476
- }
477
- case 'leafDirective':
478
- return {
479
- type: 'leafDirective',
480
- name: node.name ?? '',
481
- ...(node.attributes && Object.keys(node.attributes).length > 0
482
- ? { attributes: node.attributes }
483
- : {}),
484
- children: convertInlineChildren(node.children ?? [], parseHtml),
485
- ...posField(pos),
486
- };
487
- case 'yaml':
488
- // YAML frontmatter nodes are handled separately in parse.ts — skip silently
489
- return null;
490
- default:
491
- // Unknown block node — skip with a warning
492
- if (typeof console !== 'undefined') {
493
- console.warn(`[squisq/markdown] Unknown mdast block node type: "${node.type}"`);
494
- }
495
- return null;
496
- }
497
- }
498
- function convertListItem(node, parseHtml) {
499
- const pos = convertPosition(node.position);
500
- return {
501
- type: 'listItem',
502
- ...(node.checked != null ? { checked: node.checked } : {}),
503
- ...(node.spread != null ? { spread: node.spread } : {}),
504
- children: convertBlockChildren(node.children ?? [], parseHtml),
505
- ...posField(pos),
506
- };
507
- }
508
- function convertTableRow(node, isHeader, parseHtml) {
509
- const pos = convertPosition(node.position);
510
- return {
511
- type: 'tableRow',
512
- children: (node.children ?? []).map((cell) => convertTableCell(cell, isHeader, parseHtml)),
513
- ...posField(pos),
514
- };
515
- }
516
- function convertTableCell(node, isHeader, parseHtml) {
517
- const pos = convertPosition(node.position);
518
- return {
519
- type: 'tableCell',
520
- ...(isHeader ? { isHeader: true } : {}),
521
- children: convertInlineChildren(node.children ?? [], parseHtml),
522
- ...posField(pos),
523
- };
524
- }
525
- function convertInlineNode(node, parseHtml) {
526
- const pos = convertPosition(node.position);
527
- switch (node.type) {
528
- case 'text':
529
- return {
530
- type: 'text',
531
- value: node.value ?? '',
532
- ...posField(pos),
533
- };
534
- case 'emphasis':
535
- return {
536
- type: 'emphasis',
537
- children: convertInlineChildren(node.children ?? [], parseHtml),
538
- ...posField(pos),
539
- };
540
- case 'strong':
541
- return {
542
- type: 'strong',
543
- children: convertInlineChildren(node.children ?? [], parseHtml),
544
- ...posField(pos),
545
- };
546
- case 'delete':
547
- return {
548
- type: 'delete',
549
- children: convertInlineChildren(node.children ?? [], parseHtml),
550
- ...posField(pos),
551
- };
552
- case 'inlineCode':
553
- return {
554
- type: 'inlineCode',
555
- value: node.value ?? '',
556
- ...posField(pos),
557
- };
558
- case 'link':
559
- return {
560
- type: 'link',
561
- url: node.url ?? '',
562
- ...(node.title != null ? { title: node.title } : {}),
563
- children: convertInlineChildren(node.children ?? [], parseHtml),
564
- ...posField(pos),
565
- };
566
- case 'image':
567
- return {
568
- type: 'image',
569
- url: node.url ?? '',
570
- ...(node.alt != null ? { alt: node.alt } : {}),
571
- ...(node.title != null ? { title: node.title } : {}),
572
- ...posField(pos),
573
- };
574
- case 'break':
575
- return {
576
- type: 'break',
577
- ...posField(pos),
578
- };
579
- case 'html':
580
- return {
581
- type: 'htmlInline',
582
- rawHtml: node.value ?? '',
583
- htmlChildren: parseHtml ? parseHtmlToNodes(node.value ?? '') : [],
584
- ...posField(pos),
585
- };
586
- case 'inlineMath':
587
- return {
588
- type: 'inlineMath',
589
- value: node.value ?? '',
590
- ...posField(pos),
591
- };
592
- case 'footnoteReference':
593
- return {
594
- type: 'footnoteReference',
595
- identifier: node.identifier ?? '',
596
- ...(node.label != null ? { label: node.label } : {}),
597
- ...posField(pos),
598
- };
599
- case 'linkReference':
600
- return {
601
- type: 'linkReference',
602
- identifier: node.identifier ?? '',
603
- ...(node.label != null ? { label: node.label } : {}),
604
- referenceType: (node.referenceType ?? 'full'),
605
- children: convertInlineChildren(node.children ?? [], parseHtml),
606
- ...posField(pos),
607
- };
608
- case 'imageReference':
609
- return {
610
- type: 'imageReference',
611
- identifier: node.identifier ?? '',
612
- ...(node.label != null ? { label: node.label } : {}),
613
- referenceType: (node.referenceType ?? 'full'),
614
- ...(node.alt != null ? { alt: node.alt } : {}),
615
- ...posField(pos),
616
- };
617
- case 'textDirective':
618
- return {
619
- type: 'textDirective',
620
- name: node.name ?? '',
621
- ...(node.attributes && Object.keys(node.attributes).length > 0
622
- ? { attributes: node.attributes }
623
- : {}),
624
- children: convertInlineChildren(node.children ?? [], parseHtml),
625
- ...posField(pos),
626
- };
627
- default:
628
- if (typeof console !== 'undefined') {
629
- console.warn(`[squisq/markdown] Unknown mdast inline node type: "${node.type}"`);
630
- }
631
- return null;
632
- }
633
- }
634
- // ============================================
635
- // Squisq → mdast (toMdast)
636
- // ============================================
637
- /**
638
- * Convert a MarkdownDocument back to an mdast Root node.
639
- *
640
- * @param doc - A MarkdownDocument
641
- * @returns An mdast Root node suitable for remark-stringify
642
- */
643
- export function toMdast(doc) {
644
- return {
645
- type: 'root',
646
- children: doc.children.map((n) => blockToMdast(n)),
647
- ...mdastPosField(doc.position),
648
- };
649
- }
650
- function blockToMdast(node) {
651
- switch (node.type) {
652
- case 'heading': {
653
- const mdastChildren = inlineChildrenToMdast(node.children);
654
- if (node.templateAnnotation) {
655
- const suffix = serializeTemplateAnnotation(node.templateAnnotation);
656
- // Append to last text node, or create a new one
657
- const lastChild = mdastChildren[mdastChildren.length - 1];
658
- if (lastChild && lastChild.type === 'text') {
659
- lastChild.value = (lastChild.value ?? '') + ' ' + suffix;
660
- }
661
- else {
662
- mdastChildren.push({ type: 'text', value: ' ' + suffix });
663
- }
664
- }
665
- return {
666
- type: 'heading',
667
- depth: node.depth,
668
- children: mdastChildren,
669
- ...mdastPosField(node.position),
670
- };
671
- }
672
- case 'paragraph':
673
- return {
674
- type: 'paragraph',
675
- children: inlineChildrenToMdast(node.children),
676
- ...mdastPosField(node.position),
677
- };
678
- case 'blockquote':
679
- return {
680
- type: 'blockquote',
681
- children: node.children.map(blockToMdast),
682
- ...mdastPosField(node.position),
683
- };
684
- case 'list':
685
- return {
686
- type: 'list',
687
- ordered: node.ordered,
688
- ...(node.start != null ? { start: node.start } : {}),
689
- ...(node.spread != null ? { spread: node.spread } : {}),
690
- children: node.children.map(listItemToMdast),
691
- ...mdastPosField(node.position),
692
- };
693
- case 'code':
694
- return {
695
- type: 'code',
696
- ...(node.lang != null ? { lang: node.lang } : {}),
697
- ...(node.meta != null ? { meta: node.meta } : {}),
698
- value: node.value,
699
- ...mdastPosField(node.position),
700
- };
701
- case 'thematicBreak':
702
- return {
703
- type: 'thematicBreak',
704
- ...mdastPosField(node.position),
705
- };
706
- case 'table':
707
- return {
708
- type: 'table',
709
- ...(node.align ? { align: node.align } : {}),
710
- children: node.children.map(tableRowToMdast),
711
- ...mdastPosField(node.position),
712
- };
713
- case 'htmlBlock':
714
- return {
715
- type: 'html',
716
- value: node.rawHtml,
717
- ...mdastPosField(node.position),
718
- };
719
- case 'math':
720
- return {
721
- type: 'math',
722
- value: node.value,
723
- ...(node.meta != null ? { meta: node.meta } : {}),
724
- ...mdastPosField(node.position),
725
- };
726
- case 'definition':
727
- return {
728
- type: 'definition',
729
- identifier: node.identifier,
730
- ...(node.label != null ? { label: node.label } : {}),
731
- url: node.url,
732
- ...(node.title != null ? { title: node.title } : {}),
733
- ...mdastPosField(node.position),
734
- };
735
- case 'footnoteDefinition':
736
- return {
737
- type: 'footnoteDefinition',
738
- identifier: node.identifier,
739
- ...(node.label != null ? { label: node.label } : {}),
740
- children: node.children.map(blockToMdast),
741
- ...mdastPosField(node.position),
742
- };
743
- case 'containerDirective': {
744
- const children = [];
745
- // Reinject label as first paragraph with directiveLabel flag
746
- if (node.label) {
747
- children.push({
748
- type: 'paragraph',
749
- data: { directiveLabel: true },
750
- children: [{ type: 'text', value: node.label }],
751
- });
752
- }
753
- children.push(...node.children.map(blockToMdast));
754
- return {
755
- type: 'containerDirective',
756
- name: node.name,
757
- ...(node.attributes ? { attributes: node.attributes } : {}),
758
- children,
759
- ...mdastPosField(node.position),
760
- };
761
- }
762
- case 'leafDirective':
763
- return {
764
- type: 'leafDirective',
765
- name: node.name,
766
- ...(node.attributes ? { attributes: node.attributes } : {}),
767
- children: inlineChildrenToMdast(node.children),
768
- ...mdastPosField(node.position),
769
- };
770
- case 'definitionList':
771
- // Definition lists don't map to standard mdast.
772
- // Convert to HTML as fallback.
773
- return {
774
- type: 'html',
775
- value: definitionListToHtml(node),
776
- ...mdastPosField(node.position),
777
- };
778
- default:
779
- return { type: 'html', value: '' };
780
- }
781
- }
782
- function listItemToMdast(item) {
783
- return {
784
- type: 'listItem',
785
- ...(item.checked != null ? { checked: item.checked } : {}),
786
- ...(item.spread != null ? { spread: item.spread } : {}),
787
- children: item.children.map(blockToMdast),
788
- ...mdastPosField(item.position),
789
- };
790
- }
791
- function tableRowToMdast(row) {
792
- return {
793
- type: 'tableRow',
794
- children: row.children.map(tableCellToMdast),
795
- ...mdastPosField(row.position),
796
- };
797
- }
798
- function tableCellToMdast(cell) {
799
- return {
800
- type: 'tableCell',
801
- children: inlineChildrenToMdast(cell.children),
802
- ...mdastPosField(cell.position),
803
- };
804
- }
805
- /**
806
- * Serialize an array of inline nodes to mdast, flat-mapping the result so
807
- * a single `mention` expands to two mdast nodes (`text('@')` + `link`).
808
- * Use in place of `.map(inlineToMdast)` wherever we walk a children array.
809
- */
810
- function inlineChildrenToMdast(nodes) {
811
- const out = [];
812
- for (const n of nodes) {
813
- if (n.type === 'mention') {
814
- out.push({ type: 'text', value: '@' });
815
- out.push({
816
- type: 'link',
817
- url: `${n.targetKind}:${n.targetId}`,
818
- children: [{ type: 'text', value: n.displayName }],
819
- ...mdastPosField(n.position),
820
- });
821
- }
822
- else {
823
- out.push(inlineToMdast(n));
824
- }
825
- }
826
- return out;
827
- }
828
- function inlineToMdast(node) {
829
- switch (node.type) {
830
- case 'text':
831
- return {
832
- type: 'text',
833
- value: node.value,
834
- ...mdastPosField(node.position),
835
- };
836
- case 'emphasis':
837
- return {
838
- type: 'emphasis',
839
- children: inlineChildrenToMdast(node.children),
840
- ...mdastPosField(node.position),
841
- };
842
- case 'strong':
843
- return {
844
- type: 'strong',
845
- children: inlineChildrenToMdast(node.children),
846
- ...mdastPosField(node.position),
847
- };
848
- case 'delete':
849
- return {
850
- type: 'delete',
851
- children: inlineChildrenToMdast(node.children),
852
- ...mdastPosField(node.position),
853
- };
854
- case 'inlineCode':
855
- return {
856
- type: 'inlineCode',
857
- value: node.value,
858
- ...mdastPosField(node.position),
859
- };
860
- case 'link':
861
- return {
862
- type: 'link',
863
- url: node.url,
864
- ...(node.title != null ? { title: node.title } : {}),
865
- children: inlineChildrenToMdast(node.children),
866
- ...mdastPosField(node.position),
867
- };
868
- case 'image':
869
- return {
870
- type: 'image',
871
- url: node.url,
872
- ...(node.alt != null ? { alt: node.alt } : {}),
873
- ...(node.title != null ? { title: node.title } : {}),
874
- ...mdastPosField(node.position),
875
- };
876
- case 'break':
877
- return {
878
- type: 'break',
879
- ...mdastPosField(node.position),
880
- };
881
- case 'htmlInline':
882
- return {
883
- type: 'html',
884
- value: node.rawHtml,
885
- ...mdastPosField(node.position),
886
- };
887
- case 'inlineMath':
888
- return {
889
- type: 'inlineMath',
890
- value: node.value,
891
- ...mdastPosField(node.position),
892
- };
893
- case 'footnoteReference':
894
- return {
895
- type: 'footnoteReference',
896
- identifier: node.identifier,
897
- ...(node.label != null ? { label: node.label } : {}),
898
- ...mdastPosField(node.position),
899
- };
900
- case 'linkReference':
901
- return {
902
- type: 'linkReference',
903
- identifier: node.identifier,
904
- ...(node.label != null ? { label: node.label } : {}),
905
- referenceType: node.referenceType,
906
- children: inlineChildrenToMdast(node.children),
907
- ...mdastPosField(node.position),
908
- };
909
- case 'imageReference':
910
- return {
911
- type: 'imageReference',
912
- identifier: node.identifier,
913
- ...(node.label != null ? { label: node.label } : {}),
914
- referenceType: node.referenceType,
915
- ...(node.alt != null ? { alt: node.alt } : {}),
916
- ...mdastPosField(node.position),
917
- };
918
- case 'textDirective':
919
- return {
920
- type: 'textDirective',
921
- name: node.name,
922
- ...(node.attributes ? { attributes: node.attributes } : {}),
923
- children: inlineChildrenToMdast(node.children),
924
- ...mdastPosField(node.position),
925
- };
926
- case 'mention':
927
- // Fallback: when `inlineToMdast` is called directly (not via
928
- // `inlineChildrenToMdast`), collapse the mention to just the link
929
- // form. The `@` prefix is lost, but the id+name still round-trip.
930
- // Normal call sites go through `inlineChildrenToMdast` and get
931
- // the proper text('@') + link pair.
932
- return {
933
- type: 'link',
934
- url: `${node.targetKind}:${node.targetId}`,
935
- children: [{ type: 'text', value: node.displayName }],
936
- ...mdastPosField(node.position),
937
- };
938
- case 'inlineIcon':
939
- // Serialize back to the authored token so source round-trips
940
- // byte-stable. The token already carries the qualified form when
941
- // required (the parser preserved it verbatim).
942
- return {
943
- type: 'text',
944
- value: `{[${node.token}]}`,
945
- ...mdastPosField(node.position),
946
- };
947
- default:
948
- return { type: 'text', value: '' };
949
- }
950
- }
951
- // ============================================
952
- // Helpers
953
- // ============================================
954
- /**
955
- * Convert a MarkdownDefinitionList to an HTML <dl> string.
956
- * Fallback for serialization since mdast doesn't support definition lists.
957
- */
958
- function definitionListToHtml(list) {
959
- let html = '<dl>\n';
960
- for (const child of list.children) {
961
- if (child.type === 'definitionTerm') {
962
- // Extract plain text from inline children
963
- const text = child.children
964
- .map((c) => c.value ?? '')
965
- .join('');
966
- html += ` <dt>${text}</dt>\n`;
967
- }
968
- else if (child.type === 'definitionDescription') {
969
- html += ` <dd>...</dd>\n`;
970
- }
971
- }
972
- html += '</dl>';
973
- return html;
974
- }
975
- //# sourceMappingURL=convert.js.map